diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..ea2712c09 --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/NOTICE b/NOTICE new file mode 100644 index 000000000..f6698b235 --- /dev/null +++ b/NOTICE @@ -0,0 +1,17 @@ +JSON Editor Online +http://jsoneditoronline.org + +Copyright (C) 2011-2012 Jos de Jong + + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/backup/v0.9.1.tar.gz b/backup/v0.9.1.tar.gz new file mode 100644 index 000000000..5e9b9dd05 Binary files /dev/null and b/backup/v0.9.1.tar.gz differ diff --git a/backup/v0.9.10.tar.gz b/backup/v0.9.10.tar.gz new file mode 100644 index 000000000..6590da15e Binary files /dev/null and b/backup/v0.9.10.tar.gz differ diff --git a/backup/v0.9.2.tar.gz b/backup/v0.9.2.tar.gz new file mode 100644 index 000000000..1b6c0f353 Binary files /dev/null and b/backup/v0.9.2.tar.gz differ diff --git a/backup/v0.9.3.tar.gz b/backup/v0.9.3.tar.gz new file mode 100644 index 000000000..15ce9f403 Binary files /dev/null and b/backup/v0.9.3.tar.gz differ diff --git a/backup/v0.9.4.tar.gz b/backup/v0.9.4.tar.gz new file mode 100644 index 000000000..c55fa58ea Binary files /dev/null and b/backup/v0.9.4.tar.gz differ diff --git a/backup/v0.9.5.tar.gz b/backup/v0.9.5.tar.gz new file mode 100644 index 000000000..6c095db51 Binary files /dev/null and b/backup/v0.9.5.tar.gz differ diff --git a/backup/v0.9.6.tar.gz b/backup/v0.9.6.tar.gz new file mode 100644 index 000000000..dad9cb9e7 Binary files /dev/null and b/backup/v0.9.6.tar.gz differ diff --git a/backup/v0.9.7.tar.gz b/backup/v0.9.7.tar.gz new file mode 100644 index 000000000..445eed87f Binary files /dev/null and b/backup/v0.9.7.tar.gz differ diff --git a/backup/v0.9.8.tar.gz b/backup/v0.9.8.tar.gz new file mode 100644 index 000000000..cd8561aa5 Binary files /dev/null and b/backup/v0.9.8.tar.gz differ diff --git a/backup/v0.9.9.tar.gz b/backup/v0.9.9.tar.gz new file mode 100644 index 000000000..62cda5850 Binary files /dev/null and b/backup/v0.9.9.tar.gz differ diff --git a/backup/v1.0.tar.gz b/backup/v1.0.tar.gz new file mode 100644 index 000000000..b4627caca Binary files /dev/null and b/backup/v1.0.tar.gz differ diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 000000000..92a556ba2 --- /dev/null +++ b/changelog.txt @@ -0,0 +1,64 @@ +JSON EDITOR ONLINE CHANGELOG +http://jsoneditoronline.org + + +2012-04-21, version 1.0 + +- values are no longer aligned in one global column, but placed directly right + from the field. Having field and value close together improves readability, + especially in case of deeply nested data. +- values are colorized by their type: strings are green, values read, booleans + blue, and null is purple. +- font is changed to a monotype font for better readability. +- special characters like \t are now handled nicely. +- overall performance and memory usage improved. +- when clicking on whitespace, focus is set to the closest field or value. +- some other small interface tweaks. +- fixed a bug with casting a value from type auto to string and vice versa + (the value was not casted at all). + + +2012-03-01, version 0.9.10 + +- nicer looking select box for the field types, with icons. +- improved drag and drop: better visualized, and now working in all browers. +- previous values will be restored after changing the type of a field. When + changing the type back, the previous value or childs will be restored. +- when hovering buttons (fieldtype, duplicate, delete, add) or when dragging + a field, corresponding field including its childs is highlighted. This makes + it easier to see what part of the data will be edited. +- errors are now displayed in a message window on top of the page instead of + an alert which pops up. +- fixed a bug with displaying enters in fields. +- fixed a bug where the last trailing enter was removed when setting json + in the editor. +- added a fix to get around Internet Explorer 8 issues with vertical scrollbars. + + +2012-01-29, version 0.9.9 + +- fields can be duplicated +- support for drag and drop: + - fields in the editor itself can be moved via drag and drop + - fields can be exported from the editor as JSON + - external JSON can be dropped inside the editor +- when changing type from array to object and vice versa, childs will be + maintained instead of removed. +- updated interface. Works now in IE8 too. + + +2012-01-16, version 0.9.8 + +- improved the performance of expanding a node with all its childs. + + +2012-01-09, version 0.9.7 + +- added functionallity to expand/collapse a node and all its childs. Click + the expand button of a node while holding Ctrl down. +- small interface improvements + + +2011-11-28, version 0.9.6 + +- first fully usable version of the JSON editor diff --git a/couchdbeditor.html b/couchdbeditor.html new file mode 100644 index 000000000..9d4459f5a --- /dev/null +++ b/couchdbeditor.html @@ -0,0 +1,100 @@ + + + + CouchDB Document Editor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

CouchDB Document Editor

+ + + + + + + + + + + +
Document Url:
+
+ + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 000000000..50363bb7d Binary files /dev/null and b/favicon.ico differ diff --git a/img/add_gray.png b/img/add_gray.png new file mode 100644 index 000000000..3329303a8 Binary files /dev/null and b/img/add_gray.png differ diff --git a/img/add_green.png b/img/add_green.png new file mode 100644 index 000000000..7b69518a2 Binary files /dev/null and b/img/add_green.png differ diff --git a/img/array_blue.png b/img/array_blue.png new file mode 100644 index 000000000..0478f9eb7 Binary files /dev/null and b/img/array_blue.png differ diff --git a/img/array_gray.png b/img/array_gray.png new file mode 100644 index 000000000..93eb1fe22 Binary files /dev/null and b/img/array_gray.png differ diff --git a/img/auto_blue.png b/img/auto_blue.png new file mode 100644 index 000000000..ebf503f48 Binary files /dev/null and b/img/auto_blue.png differ diff --git a/img/auto_gray.png b/img/auto_gray.png new file mode 100644 index 000000000..1bf840119 Binary files /dev/null and b/img/auto_gray.png differ diff --git a/img/delete_gray.png b/img/delete_gray.png new file mode 100644 index 000000000..adb85d55d Binary files /dev/null and b/img/delete_gray.png differ diff --git a/img/delete_red.png b/img/delete_red.png new file mode 100644 index 000000000..7bd8b2de8 Binary files /dev/null and b/img/delete_red.png differ diff --git a/img/dots_blue.gif b/img/dots_blue.gif new file mode 100644 index 000000000..04c905948 Binary files /dev/null and b/img/dots_blue.gif differ diff --git a/img/dots_blue.xcf b/img/dots_blue.xcf new file mode 100644 index 000000000..23d1e5f68 Binary files /dev/null and b/img/dots_blue.xcf differ diff --git a/img/dots_gray.gif b/img/dots_gray.gif new file mode 100644 index 000000000..b2cf46b1d Binary files /dev/null and b/img/dots_gray.gif differ diff --git a/img/dots_gray.xcf b/img/dots_gray.xcf new file mode 100644 index 000000000..ede5d0e10 Binary files /dev/null and b/img/dots_gray.xcf differ diff --git a/img/dots_lightgray.gif b/img/dots_lightgray.gif new file mode 100644 index 000000000..612eb1788 Binary files /dev/null and b/img/dots_lightgray.gif differ diff --git a/img/dots_lightgray.xcf b/img/dots_lightgray.xcf new file mode 100644 index 000000000..b00bdc731 Binary files /dev/null and b/img/dots_lightgray.xcf differ diff --git a/img/duplicate_blue.png b/img/duplicate_blue.png new file mode 100644 index 000000000..ae56d1ac5 Binary files /dev/null and b/img/duplicate_blue.png differ diff --git a/img/duplicate_gray.png b/img/duplicate_gray.png new file mode 100644 index 000000000..3f1def332 Binary files /dev/null and b/img/duplicate_gray.png differ diff --git a/img/empty_blue.png b/img/empty_blue.png new file mode 100644 index 000000000..1213a961c Binary files /dev/null and b/img/empty_blue.png differ diff --git a/img/empty_gray.png b/img/empty_gray.png new file mode 100644 index 000000000..fe51379d7 Binary files /dev/null and b/img/empty_gray.png differ diff --git a/img/images.html b/img/images.html new file mode 100644 index 000000000..9b2fb3679 --- /dev/null +++ b/img/images.html @@ -0,0 +1,122 @@ + + + + + + + + + +
+

+
+

+ + +
×

+
×

+ + +

+

+ + +
A

+
A

+ + +
{ }

+
{ }

+ + +
[ ]

+
[ ]

+ + +
"

+
"

+ + +

+

+ + + diff --git a/img/license.txt b/img/license.txt new file mode 100644 index 000000000..7f8e694d7 --- /dev/null +++ b/img/license.txt @@ -0,0 +1 @@ +The treeDown and treeRight icons are copied from the Chromium Developer Tools. diff --git a/img/object_blue.png b/img/object_blue.png new file mode 100644 index 000000000..4b660743f Binary files /dev/null and b/img/object_blue.png differ diff --git a/img/object_gray.png b/img/object_gray.png new file mode 100644 index 000000000..791d28cee Binary files /dev/null and b/img/object_gray.png differ diff --git a/img/string_blue.png b/img/string_blue.png new file mode 100644 index 000000000..3442ece3e Binary files /dev/null and b/img/string_blue.png differ diff --git a/img/string_gray.png b/img/string_gray.png new file mode 100644 index 000000000..31d15c75b Binary files /dev/null and b/img/string_gray.png differ diff --git a/img/treeDownTriangleBlack.png b/img/treeDownTriangleBlack.png new file mode 100644 index 000000000..f79758533 Binary files /dev/null and b/img/treeDownTriangleBlack.png differ diff --git a/img/treeLeftTriangleBlack.png b/img/treeLeftTriangleBlack.png new file mode 100644 index 000000000..7e8d04526 Binary files /dev/null and b/img/treeLeftTriangleBlack.png differ diff --git a/img/treeRightTriangleBlack.png b/img/treeRightTriangleBlack.png new file mode 100644 index 000000000..9b4c2f10b Binary files /dev/null and b/img/treeRightTriangleBlack.png differ diff --git a/index.html b/index.html new file mode 100644 index 000000000..3ced6dcfd --- /dev/null +++ b/index.html @@ -0,0 +1,146 @@ + + + + + + + JSON Editor Online - Edit and format JSON data online + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+ + + + +
+
+ + + + + + + diff --git a/index_no_ads.html b/index_no_ads.html new file mode 100644 index 000000000..996c120eb --- /dev/null +++ b/index_no_ads.html @@ -0,0 +1,149 @@ + + + + + + + JSON Editor Online - Edit and format JSON data online + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+ + + + +
+
+ + + + + + + diff --git a/interface.css b/interface.css new file mode 100644 index 000000000..96285a783 --- /dev/null +++ b/interface.css @@ -0,0 +1,139 @@ +body, html { + font-family: arial, sans; + font-size: 11pt; + + width: 100%; + height: 100%; + margin: 0px; + padding: 0px; + + overflow: hidden; +} + +h1 { + font-size: 18px; + padding: 10px 15px; + margin: 0px; +} + +span.header-light { + color: gray; +} + +#header { + width: 100%; + height: 40px; + overflow: hidden; + + background-color: #4D4D4D; + color: white; +} + +#auto { + width: 100%; + height: 100%; + + margin: -40px 0px -24px 0px; + padding: 40px 0px 24px 0px; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + + overflow: hidden; +} + +#contents { + width: 100%; + height: 100%; + + overflow: hidden; +} + +#jsonformatter, #jsoneditor { + float: left; + height: 100%; + width: 400px; + + padding: 15px; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +#splitter { + float: left; + height: 100%; + cursor: col-resize; +} + +#footer { + width: 100%; + height: 23px; + font-size: 10pt; + + overflow: hidden; + color: #BFBFBF; + border-top: 1px solid lightgray; + text-align: center; + background-color: #F5F5F5; +} +#footer-inner { + margin: 4px; +} + +a.header { + color: white; + text-decoration: none; +} +a.footer, a.hideAds { + color: #BFBFBF; + text-decoration: none; +} +a.footer:hover, a.hideAds:hover { + color: red; + text-decoration: underline; +} + +#ad { + float: left; + padding: 15px 0px 15px 0px; + position: relative; +} + +div.hideAds { + text-align: center; + color: #BFBFBF; + font-size: 10pt; + + position: absolute; + left: 0px; + top: 10px; + width: 160px; +} + +div.adSpace { + height: 15px; +} + +a.hideAds { + text-decoration: underline; +} + +div.error { + color: red; + background-color: #FFC0CB; + border: 1px solid red; + border-radius: 3px; + padding: 5px; + margin: 5px; +} + +button.convert { + width: 32px; + height: 32px; + cursor: default; +} diff --git a/interface.js b/interface.js new file mode 100644 index 000000000..9beb7fce3 --- /dev/null +++ b/interface.js @@ -0,0 +1,284 @@ +/** + * @file interface.js + * + * @brief + * JsonEditor is an editor to display and edit JSON data in a treeview. + * + * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+ + * + * @license + * This json editor is open sourced with the intention to use the editor as + * a component in your own application. Not to just copy and monetize the editor + * as it is. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + * + * Copyright (C) 2011-2012 Jos de Jong, http://jsoneditoronline.org + * + * @author Jos de Jong, + * @date 2012-04-21 + */ + + +var editor = null; +var formatter = null; + +var main = {}; + +main.formatterToEditor = function() { + try { + editor.set(formatter.get()); + } + catch (err) { + main.showError(err); + } +} + +main.editorToFormatter = function () { + try { + formatter.set(editor.get()); + } + catch (err) { + main.showError(err); + } +} + +main.eventParams = {}; +main.onMouseDown = function (event) { + var leftButtonDown = event.which ? (event.which == 1) : (event.button == 1); + if (!leftButtonDown) { + return; + } + + if (!main.eventParams.mousedown) { + main.eventParams.mousedown = true; + main.eventParams.mousemove = + JSONEditor.Events.addEventListener(document, 'mousemove', main.onMouseMove); + main.eventParams.mouseup = + JSONEditor.Events.addEventListener(document, 'mouseup', main.onMouseUp); + main.eventParams.screenX = event.screenX; + main.eventParams.splitterFraction = main.splitterFraction; + } + JSONEditor.Events.preventDefault(event); +} + +main.onMouseMove = function (event) { + var width = (window.innerWidth || document.body.offsetWidth || + document.documentElement.offsetWidth); + + var diff = event.screenX - main.eventParams.screenX; + + main.splitterFraction = main.eventParams.splitterFraction + diff / width; + if (main.splitterFraction < 0.1) { + main.splitterFraction = 0.1; + } + if (main.splitterFraction > 0.9) { + main.splitterFraction = 0.9; + } + + main.resize(); + + JSONEditor.Events.preventDefault(event); +} + +main.onMouseUp = function (event) { + if (main.eventParams.mousedown) { + JSONEditor.Events.removeEventListener(document, 'mousemove', main.eventParams.mousemove); + JSONEditor.Events.removeEventListener(document, 'mouseup', main.eventParams.mouseup); + main.eventParams.mousemove = undefined; + main.eventParams.mouseup = undefined; + main.eventParams.mousedown = false; + } + JSONEditor.Events.preventDefault(event); +} + +main.load = function() { + var json = { + "Name": "John Smith", + "Age": 32, + "Employed": true, + "Address": { + "Street": "701 First Ave.", + "City": "Sunnyvale, CA 95125", + "Country": "United States" + }, + "Children": [ + { + "Name": "Richard", + "Age": 7 + }, + { + "Name": "Susan", + "Age": 4 + }, + { + "Name": "James", + "Age": 3 + } + ] + }; + +// try { // TODO + // formatter + var container = document.getElementById("jsonformatter"); + formatter = new JSONFormatter(container); + formatter.set(json); + formatter.onError = function (err) { + main.showError(err); + } + + // editor + var container = document.getElementById("jsoneditor"); + editor = new JSONEditor(container); + editor.set(json); + try { // TODO: remove + + // splitter + var domSplitter = document.getElementById('splitter'); + domSplitter.innerHTML = + '


' + + '
' + + '
' + + ''; + JSONEditor.Events.addEventListener(domSplitter, "mousedown", main.onMouseDown); + + // resize + JSONEditor.Events.addEventListener(window, 'resize', main.resize); + + // TODO: implement a focus method + formatter.textarea.focus(); + + // TODO: a nicer method to check for changes + var formatterLastContent; + var editorLastContent; + function checkChange () { + try { + // check for change in formatter + var formatterJSON = formatter.get(); + var formatterContent = JSON.stringify(formatterJSON); + if (formatterContent != formatterLastContent) { + formatterLastContent = formatterContent; + editorLastContent = formatterContent; + editor.set(formatterJSON); + } + else { + // check for change in editor + var editorJSON = editor.get(); + var editorContent = JSON.stringify(editorJSON); + if (editorContent != editorLastContent) { + editorLastContent = editorContent; + formatterLastContent = editorContent; + formatter.set(editorJSON); + } + } + } + catch (err) { + main.showError(err); + } + + setTimeout(checkChange, 1000); + } + /* TODO: use checkChange + checkChange(); + */ + } catch (err) { + var msg = err.message || err; + main.showError('Error: ' + msg); + } + +} + +main.splitterFraction = 0.5; + +main.resize = function() { + var domEditor = document.getElementById('jsoneditor'); + var domFormatter = document.getElementById('jsonformatter'); + var domSplitter = document.getElementById('splitter'); + var domAd = document.getElementById('ad'); + + var width = window.innerWidth || document.body.offsetWidth || document.documentElement.offsetWidth; + var height = window.innerHeight || document.body.offsetHeight || document.documentElement.offsetHeight; + var adWidth = domAd ? domAd.clientWidth : 0; + var splitterWidth = domSplitter.clientWidth; + if (adWidth) { + width -= (adWidth + 15); // Not so nice, +15 here for the margin + } + + var splitterLeft = width * main.splitterFraction; + + // resize formatter + domFormatter.style.width = (splitterLeft) + 'px'; + + // resize editor + domEditor.style.left = (splitterLeft + splitterWidth) + 'px'; + domEditor.style.width = (width - splitterLeft - splitterWidth) + 'px'; + //editor.onResize(); // TODO +} + +main.errorFrame = undefined; +main.showError = function (message) { + if (!main.errorFrame) { + var width = 500; + var top = 5; + var windowWidth = document.body.offsetWidth || window.innerWidth; + main.errorFrame = document.createElement('div'); + main.errorFrame.style.position = 'absolute'; + main.errorFrame.style.left = (windowWidth - width) / 2 + 'px'; + main.errorFrame.style.width = width + 'px'; + main.errorFrame.style.top = top + 'px'; + document.body.appendChild(main.errorFrame); + } + + var error = document.createElement('div'); + error.className = 'error'; + error.style.position = 'relative'; + main.errorFrame.appendChild(error); + + var table = document.createElement('table'); + table.style.width = '100%'; + error.appendChild(table); + var tbody = document.createElement('tbody'); + table.appendChild(tbody); + var tr = document.createElement('tr'); + tbody.appendChild(tr); + + var tdMessage = document.createElement('td'); + tdMessage.innerHTML = message; + tr.appendChild(tdMessage); + + var tdClose = document.createElement('td'); + tdClose.style.textAlign = 'right'; + tdClose.style.verticalAlign = 'top'; + tr.appendChild(tdClose); + + var closeDiv = document.createElement('button'); + closeDiv.innerHTML = '×'; + closeDiv.title = 'Close error message'; + tdClose.appendChild(closeDiv); + closeDiv.onclick = function (event) { + if (error.parentNode) { + error.parentNode.removeChild(error); + } + + if (main.errorFrame.childNodes.length == 0) { + main.errorFrame.parentNode.removeChild(main.errorFrame); + main.errorFrame = undefined; + } + } +} + +main.hideAds = function() { + var domAd = document.getElementById("ad"); + domAd.parentNode.removeChild(domAd); + main.resize(); +} diff --git a/json2.js b/json2.js new file mode 100644 index 000000000..2dbf60d39 --- /dev/null +++ b/json2.js @@ -0,0 +1,487 @@ +/* + http://www.JSON.org/json2.js + 2011-10-19 + + Public Domain. + + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + + See http://www.JSON.org/js.html + + + This code should be minified before deployment. + See http://javascript.crockford.com/jsmin.html + + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO + NOT CONTROL. + + + This file creates a global JSON object containing two methods: stringify + and parse. + + JSON.stringify(value, replacer, space) + value any JavaScript value, usually an object or array. + + replacer an optional parameter that determines how object + values are stringified for objects. It can be a + function or an array of strings. + + space an optional parameter that specifies the indentation + of nested structures. If it is omitted, the text will + be packed without extra whitespace. If it is a number, + it will specify the number of spaces to indent at each + level. If it is a string (such as '\t' or ' '), + it contains the characters used to indent at each level. + + This method produces a JSON text from a JavaScript value. + + When an object value is found, if the object contains a toJSON + method, its toJSON method will be called and the result will be + stringified. A toJSON method does not serialize: it returns the + value represented by the name/value pair that should be serialized, + or undefined if nothing should be serialized. The toJSON method + will be passed the key associated with the value, and this will be + bound to the value + + For example, this would serialize Dates as ISO strings. + + Date.prototype.toJSON = function (key) { + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + return this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z'; + }; + + You can provide an optional replacer method. It will be passed the + key and value of each member, with this bound to the containing + object. The value that is returned from your method will be + serialized. If your method returns undefined, then the member will + be excluded from the serialization. + + If the replacer parameter is an array of strings, then it will be + used to select the members to be serialized. It filters the results + such that only members with keys listed in the replacer array are + stringified. + + Values that do not have JSON representations, such as undefined or + functions, will not be serialized. Such values in objects will be + dropped; in arrays they will be replaced with null. You can use + a replacer function to replace those with JSON values. + JSON.stringify(undefined) returns undefined. + + The optional space parameter produces a stringification of the + value that is filled with line breaks and indentation to make it + easier to read. + + If the space parameter is a non-empty string, then that string will + be used for indentation. If the space parameter is a number, then + the indentation will be that many spaces. + + Example: + + text = JSON.stringify(['e', {pluribus: 'unum'}]); + // text is '["e",{"pluribus":"unum"}]' + + + text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); + // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' + + text = JSON.stringify([new Date()], function (key, value) { + return this[key] instanceof Date ? + 'Date(' + this[key] + ')' : value; + }); + // text is '["Date(---current time---)"]' + + + JSON.parse(text, reviver) + This method parses a JSON text to produce an object or array. + It can throw a SyntaxError exception. + + The optional reviver parameter is a function that can filter and + transform the results. It receives each of the keys and values, + and its return value is used instead of the original value. + If it returns what it received, then the structure is not modified. + If it returns undefined then the member is deleted. + + Example: + + // Parse the text. Values that look like ISO date strings will + // be converted to Date objects. + + myData = JSON.parse(text, function (key, value) { + var a; + if (typeof value === 'string') { + a = +/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); + if (a) { + return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], + +a[5], +a[6])); + } + } + return value; + }); + + myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { + var d; + if (typeof value === 'string' && + value.slice(0, 5) === 'Date(' && + value.slice(-1) === ')') { + d = new Date(value.slice(5, -1)); + if (d) { + return d; + } + } + return value; + }); + + + This is a reference implementation. You are free to copy, modify, or + redistribute. +*/ + +/*jslint evil: true, regexp: true */ + +/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, + call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, + getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, + lastIndex, length, parse, prototype, push, replace, slice, stringify, + test, toJSON, toString, valueOf +*/ + + +// Create a JSON object only if one does not already exist. We create the +// methods in a closure to avoid creating global variables. + +var JSON; +if (!JSON) { + JSON = {}; +} + +(function () { + 'use strict'; + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + if (typeof Date.prototype.toJSON !== 'function') { + + Date.prototype.toJSON = function (key) { + + return isFinite(this.valueOf()) + ? this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' + : null; + }; + + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can safely slap some quotes around it. +// Otherwise we must also replace the offending characters with safe escape +// sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' + ? c + : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + + function str(key, holder) { + +// Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + +// If the value has a toJSON method, call it to obtain a replacement value. + + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + +// If we were called with a replacer function, then call the replacer to +// obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + +// What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + +// JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + +// If the value is a boolean or null, convert it to a string. Note: +// typeof null does not produce 'null'. The case is included here in +// the remote chance that this gets fixed someday. + + return String(value); + +// If the type is 'object', we might be dealing with an object or an array or +// null. + + case 'object': + +// Due to a specification blunder in ECMAScript, typeof null is 'object', +// so watch out for that case. + + if (!value) { + return 'null'; + } + +// Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + +// Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + +// The value is an array. Stringify every element. Use null as a placeholder +// for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + +// Join all of the elements together, separated with commas, and wrap them in +// brackets. + + v = partial.length === 0 + ? '[]' + : gap + ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' + : '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + +// If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + +// Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + +// Join all of the member texts together, separated with commas, +// and wrap them in braces. + + v = partial.length === 0 + ? '{}' + : gap + ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' + : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + +// If the JSON object does not yet have a stringify method, give it one. + + if (typeof JSON.stringify !== 'function') { + JSON.stringify = function (value, replacer, space) { + +// The stringify method takes a value and an optional replacer, and an optional +// space parameter, and returns a JSON text. The replacer can be a function +// that can replace values, or an array of strings that will select the keys. +// A default replacer method can be provided. Use of the space parameter can +// produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + +// If the space parameter is a number, make an indent string containing that +// many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + +// If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + +// If there is a replacer, it must be a function or an array. +// Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + +// Make a fake root object containing our value under the key of ''. +// Return the result of stringifying the value. + + return str('', {'': value}); + }; + } + + +// If the JSON object does not yet have a parse method, give it one. + + if (typeof JSON.parse !== 'function') { + JSON.parse = function (text, reviver) { + +// The parse method takes a text and an optional reviver function, and returns +// a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + +// The walk method is used to recursively walk the resulting structure so +// that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + +// Parsing happens in four stages. In the first stage, we replace certain +// Unicode characters with escape sequences. JavaScript handles many characters +// incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + +// In the second stage, we run the text against regular expressions that look +// for non-JSON patterns. We are especially concerned with '()' and 'new' +// because they can cause invocation, and '=' because it can cause mutation. +// But just to be safe, we want to reject all unexpected forms. + +// We split the second stage into 4 regexp operations in order to work around +// crippling inefficiencies in IE's and Safari's regexp engines. First we +// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we +// replace all simple value tokens with ']' characters. Third, we delete all +// open brackets that follow a colon or comma or that begin the text. Finally, +// we look to see that the remaining characters are only whitespace or ']' or +// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + +// In the third stage we use the eval function to compile the text into a +// JavaScript structure. The '{' operator is subject to a syntactic ambiguity +// in JavaScript: it can begin a block or an object literal. We wrap the text +// in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + +// In the optional fourth stage, we recursively walk the new structure, passing +// each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' + ? walk({'': j}, '') + : j; + } + +// If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + } +}()); diff --git a/jsoneditor-min.js b/jsoneditor-min.js new file mode 100644 index 000000000..79150fa2f --- /dev/null +++ b/jsoneditor-min.js @@ -0,0 +1,91 @@ +/* + + This json editor is open sourced with the intention to use the editor as + a component in your own application. Not to just copy and monetize the editor + as it is. + + Licensed under the Apache License, Version 2.0 (the "License"); you may not + use this file except in compliance with the License. You may obtain a copy + of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and limitations under + the License. + + Copyright (c) 2011-2012 Jos de Jong, http://jsoneditoronline.org + + @author Jos de Jong, + @date 2012-04-21 +*/ +if(!Array.prototype.indexOf)Array.prototype.indexOf=function(a){for(var b=0;bb+d&&(e=void 0);e&&e.parent&&e.parent.moveBefore(this,e)}else if(e=(d=this.append?this.append.getDom(): +this.dom.tr)?d.nextSibling:void 0){for(var d=JSONEditor.getAbsoluteTop(e),b=void 0,e=e.nextSibling,g=JSONEditor.getAbsoluteTop(e),g=e?g-d:0;e&&f>c+g;)b=JSONEditor.getNodeFromTarget(e),e=e.nextSibling,g=JSONEditor.getAbsoluteTop(e),g=e?g-d:0;b&&b.parent&&b.parent.moveBefore(this,b)}JSONEditor.Events.preventDefault(a)}; +JSONEditor.Node.prototype._onDragEnd=function(a){a=a||window.event;document.body.style.cursor=this.oldCursor;delete JSONEditor.freezeHighlight;delete this.oldCursor;this.setHighlight(!1);this.mousemove&&(JSONEditor.Events.removeEventListener(document,"mousemove",this.mousemove),delete this.mousemove);this.mouseup&&(JSONEditor.Events.removeEventListener(document,"mouseup",this.mouseup),delete this.mouseup);JSONEditor.Events.preventDefault(a)}; +JSONEditor.Node.prototype._createDomDragArea=function(){if(this.parent){var a=document.createElement("button");a.className="jsoneditor-dragarea";return a}};JSONEditor.Node.prototype._createDomField=function(){return document.createElement("div")}; +JSONEditor.Node.prototype.setHighlight=function(a){if(!JSONEditor.freezeHighlight&&this.dom.tr){this.dom.tr.className="jsoneditor-tr"+(a?" jsoneditor-tr-highlight":"");this.append&&this.append.setHighlight(a);var b=this.childs;if(b)for(var c=0,d=b.length;c0?a:0,f=c.length;a0?a:0;for(f=c.length;a/g,">").replace(/ /g," ");a=JSON.stringify(a);return a.substring(1,a.length-1)};JSONEditor.Node.prototype._unescape=function(a){return JSON.parse('"'+a+'"').replace(/</g,"<").replace(/>/g,">").replace(/ /g," ")}; +JSONEditor.Node.prototype._stripHTML=function(a){return a.replace(/<(?:.|\n)*?>/gm,"")};JSONEditor.AppendNode=function(){this.dom={}};JSONEditor.AppendNode.prototype=new JSONEditor.Node;function newTd(a){var b=document.createElement("td");b.className=a||"";return b} +JSONEditor.AppendNode.prototype.getDom=function(){if(this.dom.tr)return this.dom.tr;var a=document.createElement("tr");a.appendChild(newTd("jsoneditor-td"));a.node=this;var b=document.createElement("td");a.appendChild(b);b.className="jsoneditor-td";var c=document.createElement("button");c.className="jsoneditor-append";c.title="Append a field";this.dom.append=c;b.appendChild(c);a.appendChild(newTd("jsoneditor-td jsoneditor-td-edit"));a.appendChild(newTd("jsoneditor-td jsoneditor-td-edit"));a.appendChild(newTd("jsoneditor-td jsoneditor-td-edit")); +this.dom.tr=a;this.dom.td=b;this.updateDom();return a};JSONEditor.AppendNode.prototype.updateDom=function(){var a=this.dom.td;if(a)a.style.paddingLeft=this.getLevel()*24+26+"px"};JSONEditor.AppendNode.prototype.onEvent=function(a){var b=a.type;if((a.target||a.srcElement)==this.dom.append)switch(b){case "click":a=new JSONEditor.Node({field:"field",value:"value"});this.parent.appendChild(a);this.parent.setHighlight(!1);a.focus();break;case "mouseover":this.parent.setHighlight(!0);break;case "mouseout":this.parent.setHighlight(!1)}}; +JSONEditor.prototype._createFrame=function(){this.container.innerHTML="";this.frame=document.createElement("div");this.frame.className="jsoneditor-frame";this.container.appendChild(this.frame);var a=this,b=function(a){var a=a||window.event,b=JSONEditor.getNodeFromTarget(a.target||a.srcElement);if(b)b.onEvent(a)};this.frame.onclick=b;this.frame.onchange=b;this.frame.onfocus=b;this.frame.onblur=b;this.frame.onkeyup=b;this.frame.oncut=b;this.frame.onpaste=b;this.frame.onmousedown=b;this.frame.onmouseup= +b;this.frame.onmouseover=b;this.frame.onmouseout=b;this.head=document.createElement("table");this.head.className="jsoneditor-menu";b=document.createElement("tbody");this.head.appendChild(b);var c=document.createElement("tr");b.appendChild(c);b=document.createElement("td");b.className="jsoneditor-menu";c.appendChild(b);a=this;c=document.createElement("button");c.innerHTML="Expand All";c.onclick=function(){a.expandAll()};b.appendChild(c);c=document.createElement("button");c.innerHTML="Collapse All"; +c.onclick=function(){a.collapseAll()};b.appendChild(c);this.frame.appendChild(this.head)}; +JSONEditor.prototype._createTable=function(){var a=document.createElement("div");a.className="jsoneditor-content-outer";this.content=document.createElement("div");this.content.className="jsoneditor-content";a.appendChild(this.content);this.table=document.createElement("table");this.table.className="jsoneditor-table";this.content.appendChild(this.table);if(JSONEditor.getInternetExplorerVersion()==8)this.content.style.overflow="scroll";var b;this.colgroupContent=document.createElement("colgroup");b= +document.createElement("col");b.width="24px";this.colgroupContent.appendChild(b);b=document.createElement("col");this.colgroupContent.appendChild(b);b=document.createElement("col");b.width="24px";this.colgroupContent.appendChild(b);b=document.createElement("col");b.width="24px";this.colgroupContent.appendChild(b);b=document.createElement("col");b.width="24px";this.colgroupContent.appendChild(b);this.table.appendChild(this.colgroupContent);this.tbody=document.createElement("tbody");this.table.appendChild(this.tbody); +this.frame.appendChild(a)};JSONEditor.getNodeFromTarget=function(a){for(;a;){if(a.node)return a.node;a=a.parentNode}}; +JSONFormatter=function(a){if(!JSON)throw Error("Your browser does not support JSON. \n\nPlease install the newest version of your browser.\n(all modern browsers support JSON).");this.container=a;this.width=a.clientWidth;this.height=a.clientHeight;this.frame=document.createElement("div");this.frame.className="jsoneditor-frame";this.head=document.createElement("table");this.head.className="jsoneditor-menu";a=document.createElement("tbody");this.head.appendChild(a);var b=document.createElement("tr"); +a.appendChild(b);a=document.createElement("td");a.className="jsoneditor-menu";b.appendChild(a);b=document.createElement("button");b.innerHTML="Format";b.title="Format JSON data, with proper indentation and line feeds";b.className="jsoneditor-button";a.appendChild(b);var c=document.createElement("button");c.innerHTML="Compact";c.title="Compact JSON data, remove all whitespaces";c.className="jsoneditor-button";a.appendChild(c);this.frame.appendChild(this.head);this.content=document.createElement("div"); +this.content.className="jsonformatter-content";this.frame.appendChild(this.content);this.textarea=document.createElement("textarea");this.textarea.className="jsonformatter-textarea";this.textarea.spellcheck=!1;this.content.appendChild(this.textarea);var d=this.textarea,f=this;b.onclick=function(){try{d.value=JSON.stringify(JSON.parse(d.value),null," ")}catch(a){f.onError(a)}};c.onclick=function(){try{d.value=JSON.stringify(JSON.parse(d.value))}catch(a){f.onError(a)}};this.container.appendChild(this.frame)}; +JSONFormatter.prototype.onError=function(){};JSONFormatter.prototype._checkChange=function(){var a=this.textarea.value;if(a!=this.lastContent&&(this.lastContent=a,formatter.onChangeCallback))formatter.onChangeCallback()};JSONFormatter.prototype.set=function(a){this.textarea.value=JSON.stringify(a,null," ")};JSONFormatter.prototype.get=function(){return JSON.parse(this.textarea.value)};JSONEditor.Events={}; +JSONEditor.Events.addEventListener=function(a,b,c,d){return a.addEventListener?(d===void 0&&(d=!1),b==="mousewheel"&&navigator.userAgent.indexOf("Firefox")>=0&&(b="DOMMouseScroll"),a.addEventListener(b,c,d),c):(d=function(){return c.call(a,window.event)},a.attachEvent("on"+b,d),d)}; +JSONEditor.Events.removeEventListener=function(a,b,c,d){a.removeEventListener?(d===void 0&&(d=!1),b==="mousewheel"&&navigator.userAgent.indexOf("Firefox")>=0&&(b="DOMMouseScroll"),a.removeEventListener(b,c,d)):a.detachEvent("on"+b,c)};JSONEditor.Events.stopPropagation=function(a){if(!a)a=window.event;a.stopPropagation?a.stopPropagation():a.cancelBubble=!0};JSONEditor.Events.preventDefault=function(a){if(!a)a=window.event;a.preventDefault?a.preventDefault():a.returnValue=!1}; +JSONEditor.getAbsoluteLeft=function(a){for(var b=0;a!=null;)b+=a.offsetLeft,b-=a.scrollLeft,a=a.offsetParent;!document.body.scrollLeft&&window.pageXOffset&&(b-=window.pageXOffset);return b};JSONEditor.getAbsoluteTop=function(a){for(var b=0;a!=null;)b+=a.offsetTop,b-=a.scrollTop,a=a.offsetParent;!document.body.scrollTop&&window.pageYOffset&&(b-=window.pageYOffset);return b};JSONEditor.addClassName=function(a,b){var c=a.className;if(c.indexOf(b)==-1)c+=" "+b,a.className=c}; +JSONEditor.removeClassName=function(a,b){var c=a.className;if(c.indexOf(b)!=-1)c=c.replace(b,""),c=c.replace(/ /g,""),a.className=c};JSONEditor.stripFormatting=function(a){for(var a=a.childNodes,b=0,c=a.length;b + * @date 2012-04-21 + */ + + +// Internet Explorer 8 and older does not support Array.indexOf, +// so we define it here in that case +// http://soledadpenades.com/2007/05/17/arrayindexof-in-internet-explorer/ +if(!Array.prototype.indexOf) { + Array.prototype.indexOf = function(obj){ + for(var i = 0; i < this.length; i++){ + if(this[i] == obj){ + return i; + } + } + return -1; + } +} + +// define variable JSON, needed for correct error handling on IE7 and older +var JSON; + +/** + * JSONEditor + * @param {HTML DOM} container Container element + * @param {Object or Array} json JSON object + */ +JSONEditor = function (container, json) { + // check availability of JSON parser (not available in IE7 and older) + if (!JSON) { + throw new Error ('Your browser does not support JSON. \n\n' + + 'Please install the newest version of your browser.\n' + + '(all modern browsers support JSON).'); + } + + if (!container) { + throw new Error('No container element provided.'); + } + this.container = container; + + this._createFrame(); + this._createTable(); + + this.set(json || {}); +} + +// node currently being edited +JSONEditor.focusNode = undefined; + +/** + * Set JSON object in editor + * @param {Object} json + */ +JSONEditor.prototype.set = function (json) { + this.content.removeChild(this.table); // Take the table offline + + // replace the root node + var node = new JSONEditor.Node({ + 'value': json + }); + this._setRoot(node); + + // expand + var recurse = false; + this.node.expand(recurse); + + this.content.appendChild(this.table); // Put the table online again +} + +/** + * Get JSON object from editor + * @return {Object} json + */ +JSONEditor.prototype.get = function () { + // remove focus from currently edited node + if (JSONEditor.focusNode) { + JSONEditor.focusNode.blur(); + } + + if (this.node) { + return this.node.getValue(); + } + else { + return {}; + } +} + +/** + * Remove the root node from the editor + */ +JSONEditor.prototype.clear = function () { + if (this.node) { + this.node.collapse(); + this.tbody.removeChild(this.node.getDom()); + delete this.node; + } +} + +/** + * Set the root node for the json editor + * @param {JSONEditor.Node} node + */ +JSONEditor.prototype._setRoot = function (node) { + this.clear(); + + this.node = node; + this.tbody.appendChild(node.getDom()); +} + +/** + * Expand all nodes + */ +JSONEditor.prototype.expandAll = function () { + if (this.node) { + this.content.removeChild(this.table); // Take the table offline + this.node.expand(); + this.content.appendChild(this.table); // Put the table online again + } +} + +/** + * Collapse all nodes + */ +JSONEditor.prototype.collapseAll = function () { + if (this.node) { + this.content.removeChild(this.table); // Take the table offline + this.node.collapse(); + this.content.appendChild(this.table); // Put the table online again + } +} + +/** + * Create a new Node + * @param {Object} params Can contain parameters: field, fieldEditable, value. + */ +JSONEditor.Node = function (params) { + this.dom = {}; + this.expanded = false; + + if(params && (params instanceof Object)) { + this.setField(params.field, params.fieldEditable); + this.setValue(params.value); + } + else { + this.setField(); + this.setValue(); + } +} + +JSONEditor.Node.prototype.setField = function(field, fieldEditable) { + this.field = field; + this.fieldEditable = (fieldEditable == true); +} + +JSONEditor.Node.prototype.getField = function() { + if (this.field === undefined) { + this.field = this._getDomField(); + } + + return this.field; +} + +JSONEditor.Node.prototype.setValue = function(value) { + // first clear all current childs (if any) + var childs = this.childs; + if (childs) { + while (childs.length) { + this.removeChild(childs[0]); + } + } + + // TODO: remove the DOM of this Node + + this.type = this._getType(value); + if (this.type == 'array') { + // array + this.childs = []; + for (var i = 0, iMax = value.length; i < iMax; i++) { + var child = new JSONEditor.Node({ + // 'field': i, // TODO: cleanup + 'value': value[i] + }); + this.appendChild(child); + } + this.value = ''; + } + else if (this.type == 'object') { + // object + this.childs = []; + for (var childField in value) { + if (value.hasOwnProperty(childField)) { + var child = new JSONEditor.Node({ + 'field': childField, + 'value': value[childField] + }); + this.appendChild(child); + } + } + this.value = ''; + } + else { + // value + this.childs = undefined; + this.value = value; + /* TODO + if (typeof(value) == 'string') { + var escValue = JSON.stringify(value); + this.value = escValue.substring(1, escValue.length - 1); + console.log('check', value, this.value); + } + else { + this.value = value; + } + */ + } +} + +JSONEditor.Node.prototype.getValue = function() { + //this._getDomValue(); // TODO: cleanup + + if (this.type == 'array') { + var arr = []; + var childs = this.childs; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + arr.push(childs[i].getValue()); + } + return arr; + } + else if (this.type == 'object') { + var obj = {}; + var childs = this.childs; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + obj[child.getField()] = child.getValue(); + } + return obj; + } + else { + if (this.value === undefined) { + this.value = this._getDomValue(); + } + + return this.value; + } +} + +/** + * Get the nesting level of this node + */ +JSONEditor.Node.prototype.getLevel = function() { + return (this.parent ? this.parent.getLevel() + 1 : 0); +} + +/** + * Create a clone of a node + * The complete state of a clone is copied, including whether it is expanded or + * not. The DOM elements are not cloned. + * @return {JSONEditor.Node} clone + */ +JSONEditor.Node.prototype.clone = function() { + var clone = new JSONEditor.Node(); + clone.type = this.type; + clone.field = this.field; + clone.fieldHTML = this.fieldHTML; + clone.fieldEditable = this.fieldEditable; + clone.value = this.value; + clone.valueHTML = this.valueHTML; + clone.expanded = this.expanded; + + if (this.childs) { + // an object or array + var childs = this.childs; + var cloneChilds = []; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + var childClone = childs[i].clone(); + childClone.parent = clone; + cloneChilds.push(childClone); + } + clone.childs = cloneChilds; + } + else { + // a value + clone.childs = undefined; + } + + return clone; +} + +/** + * Expand this node and optionally its childs. + * @param {boolean} recurse Optional recursion, true by default. When + * true, all childs will be expanded recursively + */ +JSONEditor.Node.prototype.expand = function(recurse) { + if (!this.childs) { + return; + } + + // set this node expanded + this.expanded = true; + if (this.dom.expand) { + this.dom.expand.className = 'jsoneditor-expanded'; + } + + this.showChilds(); + + var childs = this.childs; + if (recurse != false) { + for (var i = 0, iMax = childs.length; i < iMax; i++) { + childs[i].expand(recurse); + } + } +} + + +/** + * Collapse this node and optionally its childs. + * @param {Number} recurse Optional recursion, true by default. When + * true, all childs will be collapsed recursively + */ +JSONEditor.Node.prototype.collapse = function(recurse) { + if (!this.childs) { + return; + } + + this.hideChilds(); + + // collapse childs in case of recurse + var childs = this.childs; + if (recurse != false) { + for (var i = 0, iMax = childs.length; i < iMax; i++) { + childs[i].collapse(recurse); + } + } + + // make this node collapsed + if (this.dom.expand) { + this.dom.expand.className = 'jsoneditor-collapsed'; + } + this.expanded = false; +} + +/** + * Recursively show all childs when they are expanded + */ +JSONEditor.Node.prototype.showChilds = function() { + var childs = this.childs; + if (!childs) { + return; + } + if (!this.expanded) { + return; + } + + var tr = this.dom.tr; + var table = tr.parentNode; + if (table) { + // show row with append button + var append = this.getAppend(); + var nextTr = tr.nextSibling; + if (nextTr) { + table.insertBefore(append, nextTr); + } + else { + table.appendChild(append); + } + + // show childs + for (var i = 0, iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + table.insertBefore(child.getDom(), append); + child.showChilds(); + } + } +} + +/** + * Hide the node with all its childs + */ +JSONEditor.Node.prototype.hide = function() { + var tr = this.dom.tr; + var table = tr ? tr.parentNode : undefined; + if (table) { + table.removeChild(tr); + } + this.hideChilds(); +} + + +/** + * Recursively hide all childs + */ +JSONEditor.Node.prototype.hideChilds = function() { + var childs = this.childs; + if (!childs) { + return; + } + if (!this.expanded) { + return; + } + + // hide append row + var append = this.getAppend(); + if (append.parentNode) { + append.parentNode.removeChild(append); + } + + // hide childs + for (var i = 0, iMax = childs.length; i < iMax; i++) { + childs[i].hide(); + } +} + + +/** + * Add a new child to the node. + * Only applicable when Node value is of type array or object + * @param {JSONEditor.Node} node + */ +JSONEditor.Node.prototype.appendChild = function(node) { + if (this.type == 'array' || this.type == 'object') { + // adjust the link to the parent + node.parent = this; + node.fieldEditable = (this.type == 'object'); + if (this.type == 'array') { + node.index = this.childs.length; + } + this.childs.push(node); + + if (this.expanded) { + // insert into the DOM, before the appendRow + var newtr = node.getDom(); + var appendTr = this.getAppend(); + var table = appendTr ? appendTr.parentNode : undefined; + if (appendTr && table) { + table.insertBefore(newtr, appendTr); + } + + this._updateStatus(node.index); + + node.showChilds(); + } + + node.updateDom(); + } +} + + +/** + * Move an existing child from its current parent to this node + * Only applicable when Node value is of type array or object + * @param {JSONEditor.Node} node + * @param {JSONEditor.Node} beforeNode + */ +JSONEditor.Node.prototype.moveBefore = function(node, beforeNode) { + if (this.type == 'array' || this.type == 'object') { + // create a temporary row, to prevent the scroll position from jumping when + // removing the node + var tbody = (this.dom.tr) ? this.dom.tr.parentNode : undefined; + if (tbody) { + var trTemp = document.createElement('tr'); + trTemp.style.height = tbody.clientHeight + 'px' + tbody.appendChild(trTemp); + } + + var parent = node.parent; + if (parent) { + parent.removeChild(node); + } + if (beforeNode instanceof JSONEditor.AppendNode) { + this.appendChild(node); + } + else { + this.insertBefore(node, beforeNode); + } + + if (tbody) { + tbody.removeChild(trTemp); + } + } +} + + +/** + * Insert a new child before a given node + * Only applicable when Node value is of type array or object + * @param {JSONEditor.Node} node + * @param {JSONEditor.Node} beforeNode + */ +JSONEditor.Node.prototype.insertBefore = function(node, beforeNode) { + if (this.type == 'array' || this.type == 'object') { + if (beforeNode == this.append) { + // append to the child nodes + + // adjust the link to the parent + node.parent = this; + node.fieldEditable = (this.type == 'object'); + this.childs.push(node); + } + else { + // insert before a child node + var index = this.childs.indexOf(beforeNode); + if (index == -1) { + throw new Error('Node not found'); + } + + // adjust the link to the parent + node.parent = this; + node.fieldEditable = (this.type == 'object'); + //node.index = index; // TODO: redundant? + this.childs.splice(index, 0, node); + } + + if (this.expanded) { + // insert into the DOM + var newTr = node.getDom(); + var nextTr = beforeNode.getDom(); + var table = nextTr ? nextTr.parentNode : undefined; + if (nextTr && table) { + table.insertBefore(newTr, nextTr); + } + + node.showChilds(); + } + + node.updateDom(); + this._updateStatus(index); + } +} + +/** + * Set focus to the value of this node + */ +JSONEditor.Node.prototype.focus = function() { + if (this.dom.tr && this.dom.tr.parentNode) { + if (this.fieldEditable) { + var domField = this.dom.field; + if (domField) { + domField.focus(); + } + } + else { + var domValue = this.dom.value; + if (domValue) { + domValue.focus(); + } + } + } +} + +/** + * Remove focus from the value or field of this node + */ +JSONEditor.Node.prototype.blur = function() { + this._getDomValue(true); + this._getDomField(true); +} + + +/** + * Duplicate given child node + * new structure will be added right before the cloned node + * @param {JSONEditor.Node} node the childNode to be duplicated + */ +JSONEditor.Node.prototype._duplicate = function(node) { + var clone = node.clone(); + + /* TODO: adjust the field name (to prevent equal field names) + if (this.type == 'object') { + } + */ + + // TODO: insert after instead of insert before + this.insertBefore(clone, node); +} + +/** + * Check if given node is a child. The method will check recursively to find + * this node. + * @param {JSONEditor.Node} node + */ +JSONEditor.Node.prototype.containsNode = function(node) { + if (this == node) { + return true; + } + + var childs = this.childs; + if (childs) { + for (var i = 0, iMax = childs.length; i < iMax; i++) { + if (childs[i].containsNode(node)) { + return true; + } + } + } + + return false; +} + +/** + * Move given node into this node + * @param {JSONEditor.Node} node the childNode to be moved + * @param {JSONEditor.Node} beforeNode node will be inserted before given + * node. If no beforeNode is given, + * the node is appended at the end + */ +JSONEditor.Node.prototype._move = function(node, beforeNode) { + if (node == beforeNode) { + // nothing to do... + return; + } + + // check if this node is not a child of the node to be moved here + if (node.containsNode(this)) { + throw new Error('Cannot move a field into a child of itself'); + } + + // remove the original node + if (node.parent) { + node.parent.removeChild(node); + } + + // create a clone of the node + var clone = node.clone(); + node.clearDom(); + + // insert or append the node + if (beforeNode) { + this.insertBefore(clone, beforeNode); + } + else { + this.appendChild(clone); + } + + /* TODO: adjust the field name (to prevent equal field names) + if (this.type == 'object') { + } + */ +} + +/** + * Remove a child from the node. + * Only applicable when Node value is of type array or object + * @param {JSONEditor.Node} node The child node to be removed; + * @return {JSONEditor.Node} node The removed node on success, else undefined + */ +JSONEditor.Node.prototype.removeChild = function(node) { + if (this.childs) { + var index = this.childs.indexOf(node); + + if (index != -1) { + node.hide(); + + var node = this.childs.splice(index, 1)[0]; + + this._updateStatus(index); + + return node; + } + } + + return undefined; +} + + +/** + * change the type of the value of this Node + * @param {String} newType + */ +JSONEditor.Node.prototype._changeType = function ( newType) { + var oldType = this.type; + + if ((newType == 'string' || newType == 'auto') && + (oldType == 'string' || oldType == 'auto')) { + // this is an easy change + this.type = newType; + } + else { + // change from array to object, or from string/auto to object/array + + var table = this.dom.tr ? this.dom.tr.parentNode : undefined; + var lastTr; + if (this.expanded) { + lastTr = this.getAppend(); + } + else { + lastTr = this.getDom(); + } + var nextTr = (lastTr && lastTr.parentNode) ? lastTr.nextSibling : undefined; + + // hide current field and all its childs + this.hide(); + this.clearDom(); + + // adjust the field and the value + this.type = newType; + + // adjust childs + if (newType == 'object') { + if (!this.childs) { + this.childs = []; + } + + var childs = this.childs; + var fieldEditable = true; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + child.clearDom(); + delete child.index; + child.fieldEditable = true; + if (child.field == undefined) { + child.field = i; + } + } + + if (oldType == 'string' || oldType == 'auto') { + this.expanded = true; + } + } + else if (newType == 'array') { + if (!this.childs) { + this.childs = []; + } + + var childs = this.childs; + var fieldEditable = false; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + child.clearDom(); + child.fieldEditable = false; + child.index = i; + } + this._updateStatus(); + + if (oldType == 'string' || oldType == 'auto') { + this.expanded = true; + } + } + else { + + + this.expanded = false; + } + + // create new DOM + if (table) { + if (nextTr) { + table.insertBefore(this.getDom(), nextTr); + } + else { + table.appendChild(this.getDom()); + } + } + this.showChilds(); + + } + + if (newType == 'auto' || newType == 'string') { + // cast value to the correct type + if (newType == 'string') { + this.value = String(this.value); + } + else { + this.value = this._stringCast(String(this.value)); + } + + this.focus(); + } + + // TODO: test if things are updated twice... + this.updateDom(); +} + +/** + * Retrieve value from DOM + * @param {boolean} silent. If true (default), no errors will be thrown in + * case of invalid data + */ +JSONEditor.Node.prototype._getDomValue = function(silent) { + if (this.dom.value && this.type != 'array' && this.type != 'object') { + this.valueHTML = this.dom.value.innerHTML; + } + + if (this.valueHTML != undefined) { + try { + // retrieve the value + if (this.type == 'string') { + this.value = this._unescape(this._stripHTML(this.valueHTML)); + } + else { + var value = this._unescape(this._stripHTML(this.valueHTML)); + this.value = this._stringCast(value); + } + } + catch (err) { + this.value = undefined; + if (silent != true) { + throw err; + } + } + } +} + +/** + * Update: + * - the text color of the value, depending on the type of the value + * - the height of the field, depending on the width + * - background color in case it is empty + */ +JSONEditor.Node.prototype._updateDomValue = function () { + var domValue = this.dom.value; + if (domValue) { + // set text color depending on value type + var v = this.value; + var t = (this.type == 'auto') ? typeof(v) : this.type; + var color = ''; + if (t == 'string') { + color = 'green'; + } + else if (t == 'number') { + color = 'red'; + } + else if (t == 'boolean') { + color = 'blue'; + } + else if (this.type == 'object' || this.type == 'array') { + // note: typeof(null)=="object", therefore check this.type instead of t + color = ''; + } + else if (v === null) { + color = 'purple'; + } + else if (v === undefined) { + // invalid value + color = 'green'; + } + domValue.style.color = color; + + // make backgound color lightgray when empty + var isEmpty = (String(this.value) == '' && this.type != 'array' && this.type != 'object'); + if (isEmpty) { + JSONEditor.addClassName(domValue, 'jsoneditor-empty'); + } + else { + JSONEditor.removeClassName(domValue, 'jsoneditor-empty'); + } + + // strip formatting from the contents of the editable div + JSONEditor.stripFormatting(domValue); + } +} + +/** + * Update: + * - the text color of the field, depending on the text + * - the height of the field, depending on the width + * - background color in case it is empty + */ +JSONEditor.Node.prototype._updateDomField = function () { + var domField = this.dom.field; + if (domField) { + // make backgound color lightgray when empty + var isEmpty = (String(this.field) == ''); + if (isEmpty) { + JSONEditor.addClassName(domField, 'jsoneditor-empty'); + } + else { + JSONEditor.removeClassName(domField, 'jsoneditor-empty'); + } + + // strip formatting from the contents of the editable div + JSONEditor.stripFormatting(domField); + } +} + +/** + * Retrieve field from DOM + * @param {boolean} silent. If true (default), no errors will be thrown in + * case of invalid data + */ +JSONEditor.Node.prototype._getDomField = function(silent) { + if (this.dom.field && this.fieldEditable) { + this.fieldHTML = this.dom.field.innerHTML; + } + + if (this.fieldHTML != undefined) { + try { + this.field = this._unescape(this._stripHTML(this.fieldHTML)); + } + catch (err) { + this.field = undefined; + if (silent != true) { + throw err; + } + } + } +} + +/** + * Clear the dom of the node + */ +JSONEditor.Node.prototype.clearDom = function() { + // TODO: hide the node first? + //this.hide(); + // TOOD: recursively clear dom? + + this.dom = {}; +} + +/** + * Get the HTML DOM TR element of the node. + * The dom will be generated when not yet created + * @return {HTML DOM TR} tr + */ +JSONEditor.Node.prototype.getDom = function() { + var dom = this.dom; + if (dom.tr) { + return dom.tr; + } + + // create row + dom.tr = document.createElement('tr'); + dom.tr.className = 'jsoneditor-tr'; + dom.tr.node = this; + + // create dragable area + var tdDrag = document.createElement('td'); + tdDrag.className = 'jsoneditor-td'; + tdDrag.title = 'Move field (drag and drop)'; + dom.drag = this._createDomDragArea(); + if (dom.drag) { + tdDrag.appendChild(dom.drag); + } + dom.tr.appendChild(tdDrag); + + // create tree and field + var tdField = document.createElement('td'); + tdField.className = 'jsoneditor-td'; + dom.tr.appendChild(tdField); + dom.expand = this._createDomExpandButton(); + dom.field = this._createDomField(); + dom.value = this._createDomValue(); + dom.tree = this._createDomTree(dom.expand, dom.field, dom.value); + tdField.appendChild(dom.tree); + + // create type select box + var tdType = document.createElement('td'); + tdType.className = 'jsoneditor-td jsoneditor-td-edit'; + dom.tr.appendChild(tdType); + dom.type = this._createDomTypeButton(); + tdType.appendChild(dom.type); + + // create duplicate button + var tdDuplicate = document.createElement('td'); + tdDuplicate.className = 'jsoneditor-td jsoneditor-td-edit'; + dom.tr.appendChild(tdDuplicate); + dom.duplicate = this._createDomDuplicateButton(); + if (dom.duplicate) { + tdDuplicate.appendChild(dom.duplicate); + } + + // create remove button + var tdRemove = document.createElement('td'); + tdRemove.className = 'jsoneditor-td jsoneditor-td-edit'; + dom.tr.appendChild(tdRemove); + dom.remove = this._createDomRemoveButton(); + if (dom.remove) { + tdRemove.appendChild(dom.remove); + } + + this._updateStatus(); + this.updateDom(); + + return dom.tr; +} + +/** + * DragStart event, fired on mousedown on the dragarea at the left side of a Node + */ +JSONEditor.Node.prototype._onDragStart = function (event) { + var event = event || window.event; + + // remove focus from currently edited node + if (JSONEditor.focusNode) { + JSONEditor.focusNode.blur(); + } + + var node = this; + if (!this.mousemove) { + this.mousemove = JSONEditor.Events.addEventListener(document, 'mousemove', + function (event) { + node._onDrag(event); + }); + } + + if (!this.mouseup) { + this.mouseup = JSONEditor.Events.addEventListener(document, 'mouseup', + function (event ) { + node._onDragEnd(event); + }); + } + + /* TODO: correct highlighting when the TypeDropDown is visible (And has highlighting locked) + if (JSONEditor.freezeHighlight) { + console.log('heee'); + JSONEditor.freezeHighlight = false; + this.setHighlight(true); + } + */ + JSONEditor.freezeHighlight = true; + this.oldCursor = document.body.style.cursor; + document.body.style.cursor = 'move'; + + JSONEditor.Events.preventDefault(event); +} + +/** + * Drag event, fired when moving the mouse while dragging a Node + */ +JSONEditor.Node.prototype._onDrag = function (event) { + var event = event || window.event; + var trThis = this.dom.tr; + + // TODO: add an ESC option, which resets to the original position + + var topThis = JSONEditor.getAbsoluteTop(trThis); + var heightThis = trThis.offsetHeight; + var mouseY = event.pageY || (event.clientY + document.body.scrollTop); + + if (mouseY < topThis) { + // move up + var trPrev = trThis.previousSibling; + var topPrev = JSONEditor.getAbsoluteTop(trPrev); + var nodePrev = JSONEditor.getNodeFromTarget(trPrev); + while (trPrev && mouseY < topPrev) { + nodePrev = JSONEditor.getNodeFromTarget(trPrev); + trPrev = trPrev.previousSibling; + topPrev = JSONEditor.getAbsoluteTop(trPrev); + } + + if (nodePrev) { + trPrev = nodePrev.dom.tr; + topPrev = JSONEditor.getAbsoluteTop(trPrev); + if (mouseY > topPrev + heightThis) { + nodePrev = undefined; + } + } + + if (nodePrev && nodePrev.parent) { + nodePrev.parent.moveBefore(this, nodePrev); + } + } + else { + // move down + var trLast = this.append ? this.append.getDom() : this.dom.tr; + var trFirst = trLast ? trLast.nextSibling : undefined; + if (trFirst) { + var topFirst = JSONEditor.getAbsoluteTop(trFirst); + + var nodeNext = undefined; + var trNext = trFirst.nextSibling; + var topNext = JSONEditor.getAbsoluteTop(trNext); + var heightNext = trNext ? (topNext - topFirst) : 0; + while (trNext && mouseY > topThis + heightNext) { + nodeNext = JSONEditor.getNodeFromTarget(trNext); + trNext = trNext.nextSibling; + topNext = JSONEditor.getAbsoluteTop(trNext); + heightNext = trNext ? (topNext - topFirst) : 0; + } + + if (nodeNext && nodeNext.parent) { + nodeNext.parent.moveBefore(this, nodeNext); + } + } + } + JSONEditor.Events.preventDefault(event); +} + +/** + * Drag event, fired on mouseup after having dragged a node + */ +JSONEditor.Node.prototype._onDragEnd = function (event) { + var event = event || window.event; + + document.body.style.cursor = this.oldCursor; + delete JSONEditor.freezeHighlight; + delete this.oldCursor; + this.setHighlight(false); + + if (this.mousemove) { + JSONEditor.Events.removeEventListener(document, 'mousemove', this.mousemove); + delete this.mousemove; + } + if (this.mouseup) { + JSONEditor.Events.removeEventListener(document, 'mouseup', this.mouseup); + delete this.mouseup; + } + + JSONEditor.Events.preventDefault(event); +} + +/** + * Create a drag area, displayed at the left side of the node + */ +JSONEditor.Node.prototype._createDomDragArea = function () { + if (!this.parent) { + return undefined; + } + + var node = this; + var domDrag = document.createElement('button'); + domDrag.className = 'jsoneditor-dragarea'; + + return domDrag; +} + +/** + * Create an editable field + * @param {Object} structure + */ +JSONEditor.Node.prototype._createDomField = function () { + var domField = document.createElement('div'); + + return domField; +} + +/** + * Set highlighting for this node and all its childs. + * Only applied to the currently visible (expanded childs) + * @param {Boolean} highlight + */ +JSONEditor.Node.prototype.setHighlight = function (highlight) { + if (JSONEditor.freezeHighlight) { + return; + } + + if (this.dom.tr) { + this.dom.tr.className = 'jsoneditor-tr' + (highlight ? ' jsoneditor-tr-highlight' : ''); + + if (this.append) { + this.append.setHighlight(highlight); + } + + var childs = this.childs; + if (childs) { + for (var i = 0, iMax = childs.length; i < iMax; i++) { + childs[i].setHighlight(highlight); + } + } + } +} + +/** + * Update the HTML DOM + */ +// TODO: merge updateDom and _updateStatus +JSONEditor.Node.prototype.updateDom = function () { + // update level indentation + var domTree = this.dom.tree; + if (domTree) { + domTree.style.marginLeft = this.getLevel() * 24 + 'px'; + } + + // update field + var domField = this.dom.field; + if (domField) { + if (this.fieldEditable == true) { + // parent is an object + domField.contentEditable = 'true'; + domField.spellcheck = false; + domField.className = 'jsoneditor-field'; + } + else { + // parent is an array this is the root node + domField.className = 'jsoneditor-readonly'; + } + + var field; + if (this.index != undefined) { + field = this.index; + } + else if (this.field != undefined) { + field = this.field; + } + else if (this.type == 'array' || this.type == 'object') { + field = this.type; + } + else { + field = 'field'; + } + domField.innerHTML = this._escape(field); + } + + // update field and value + this._updateDomField(); + this._updateDomValue(); + + // update childs recursively + if (this.childs) { + var childs = this.childs; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + childs[i].updateDom(); + } + } + + // update row with append button + if (this.append) { + this.append.updateDom(); + } +} + +/** + * Update the title of the given structure. + * Only applicable when structure is an array or object + * @param {Number} startIndex Optional. Index of the first child to be updated + * Only applicable in case of array + */ +JSONEditor.Node.prototype._updateStatus = function (startIndex) { + var domValue = this.dom.value; + var childs = this.childs; + if (domValue && childs) { + var count = childs.length; + if (this.type == 'array') { + domValue.innerHTML = '[' + count + ']'; + + // update the field indexes of the childs + for (var i = (startIndex > 0 ? startIndex : 0), iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + child.index = i; + var childField = child.dom.field; + if (childField) { + childField.innerHTML = i; + } + } + } + else if (this.type == 'object') { + domValue.innerHTML = '{' + count + '}'; + + for (var i = (startIndex > 0 ? startIndex : 0), iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + if (child.index != undefined) { + delete child.index; // TODO: this should be done when changing type only? + + if (child.field == undefined) { + child.field = 'field'; + } + child.updateDom(); + } + } + } + + domValue.title = this.type + ' containing ' + count + ' items'; + } +} + +/** + * Create an editable value + * @param {JSON} value + */ +JSONEditor.Node.prototype._createDomValue = function () { + var domValue; + + if (this.type == 'array') { + domValue = document.createElement('div'); + domValue.className = 'jsoneditor-readonly'; + domValue.innerHTML = '[...]'; + } + else if (this.type == 'object') { + domValue = document.createElement('div'); + domValue.className = 'jsoneditor-readonly'; + domValue.innerHTML = '{...}'; + } + else if (this.type == 'string') { + domValue = document.createElement('div'); + domValue.contentEditable = 'true'; + domValue.spellcheck = false; + domValue.className = 'jsoneditor-value'; + domValue.innerHTML = this._escape(this.value); + } + else { + domValue = document.createElement('div'); + domValue.contentEditable = 'true'; + domValue.spellcheck = false; + domValue.className = 'jsoneditor-value'; + domValue.innerHTML = this._escape(this.value); + } + + // TODO: in FF spellcheck of editable divs is done via the body. quite ugly + // document.body.spellcheck = false; + + return domValue; +} + +/** + * Create an expand/collapse button + */ +JSONEditor.Node.prototype._createDomExpandButton = function () { + var node = this; + + // create expand button + var expand = document.createElement('button'); + var expandable = (this.type == 'array' || this.type == 'object'); + if (expandable) { + expand.className = this.expanded ? 'jsoneditor-expanded' : 'jsoneditor-collapsed'; + expand.title = + 'Click to expand/collapse this field. \n' + + 'Ctrl+Click to expand/collapse including all childs.'; + } + else { + expand.className = 'jsoneditor-invisible'; + expand.title = ''; + } + + return expand; +} + + +/** + * Create a DOM tree element, containing the expand/collapse button + * @param {HTML Element} domExpand + * @param {HTML Element} domField + * @param {HTML Element} domValue + */ +JSONEditor.Node.prototype._createDomTree = function (domExpand, domField, domValue) { + var dom = this.dom; + var domTree = document.createElement('table'); + var tbody = document.createElement('tbody'); + domTree.style.borderCollapse = 'collapse'; + domTree.appendChild(tbody); + var tr = document.createElement('tr'); + tbody.appendChild(tr); + + // create expand button + var tdExpand = document.createElement('td'); + tdExpand.className = 'jsoneditor-td-tree'; + tr.appendChild(tdExpand); + tdExpand.appendChild(domExpand); + dom.tdExpand = tdExpand; + + // add the field + var tdField = document.createElement('td'); + tdField.className = 'jsoneditor-td-tree'; + tr.appendChild(tdField); + tdField.appendChild(domField); + dom.tdField = tdField; + + // add a separator + // TODO: format correctly. Hide in case of array/object + var tdSeparator = document.createElement('td'); + tdSeparator.className = 'jsoneditor-td-tree'; + tr.appendChild(tdSeparator); + if (this.type != 'object' && this.type != 'array') { + tdSeparator.appendChild(document.createTextNode(':')); + tdSeparator.className = 'jsoneditor-separator'; + } + dom.tdSeparator = tdSeparator; + + // add the value + var tdValue = document.createElement('td'); + tdValue.className = 'jsoneditor-td-tree'; + tr.appendChild(tdValue); + tdValue.appendChild(domValue); + dom.tdValue = tdValue; + + return domTree; +} + +/** + * Handle an event. The event is catched centrally by the editor + * @param {HTML Event} event + */ +JSONEditor.Node.prototype.onEvent = function (event) { + var type = event.type; + var target = event.target || event.srcElement; + var dom = this.dom; + var node = this; + var expandable = (this.type == 'array' || this.type == 'object'); + + // value events + var domValue = dom.value; + if (target == domValue) { + switch (type) { + case 'focus': + JSONEditor.focusNode = this; + break; + + case 'change': + case 'blur': + case 'keyup': + this._getDomValue(true); + this._updateDomValue(); + break; + + case 'cut': + case 'paste': + setTimeout(function () { + node._getDomValue(true); + node._updateDomValue(); + }, 1); + break; + } + } + + // field events + var domField = dom.field; + if (target == domField) { + switch (type) { + case 'focus': + JSONEditor.focusNode = this; + break; + + case 'change': + case 'blur': + case 'keyup': + this._getDomField(true); + this._updateDomField(); + break; + + case 'cut': + case 'paste': + setTimeout(function () { + node._getDomField(true); + node._updateDomField(); + }, 1); + break; + } + } + + // drag events + var domDrag = dom.drag; + if (target == domDrag) { + switch (type) { + case 'mousedown': + this._onDragStart(event); + break; + case 'mouseover': + this.setHighlight(true); + break; + case 'mouseout': + this.setHighlight(false); + break; + } + } + + // expand events + var domExpand = dom.expand; + if (target == domExpand) { + if (type == 'click') { + if (expandable) { + this._onExpand(event); + } + } + } + + // duplicate button + var domDuplicate = dom.duplicate; + if (target == domDuplicate) { + switch (type) { + case 'click': + this.parent._duplicate(this); + break; + case 'mouseover': + this.setHighlight(true); + break; + case 'mouseout': + this.setHighlight(false); + break; + } + } + + // remove button + var domRemove = dom.remove; + if (target == domRemove) { + switch (type) { + case 'click': + this.parent.removeChild(this); + break; + case 'mouseover': + this.setHighlight(true); + break; + case 'mouseout': + this.setHighlight(false); + break; + } + } + + // type button + var domType = dom.type; + if (target == domType) { + switch (type) { + case 'click': + this._onTypeButton(event); + break; + case 'mouseover': + this.setHighlight(true); + break; + case 'mouseout': + this.setHighlight(false); + break; + } + } + + // focus + // when clicked in whitespace left or right from the field or value, set focus + var domTree = dom.tree; + if (target == domTree.parentNode) { + switch (type) { + case 'click': + var left = (event.offsetX != undefined) ? + (event.offsetX < (this.getLevel() + 1) * 24) : + (event.clientX < JSONEditor.getAbsoluteLeft(dom.tdSeparator));// for FF + if (left || expandable) { + // node is expandable when it is an object or array + if (domField) { + JSONEditor.setEndOfContenteditable(domField); + domField.focus(); + } + } + else { + if (domValue) { + JSONEditor.setEndOfContenteditable(domValue); + domValue.focus(); + } + } + break; + } + } + + if ((target == dom.tdExpand && !expandable) || target == dom.tdField || target == dom.tdSeparator) { + switch (type) { + case 'click': + if (domField) { + JSONEditor.setEndOfContenteditable(domField); + domField.focus(); + } + break; + } + } + +} + +/** + * Handle the expand event, when clicked on the expand button + */ +JSONEditor.Node.prototype._onExpand = function (event) { + var event = event || window.event; + var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all + + if (recurse) { + // Take the table offline + var table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this + var frame = table.parentNode; + var scrollTop = frame.scrollTop; + frame.removeChild(table); + } + + if (this.expanded) { + this.collapse(recurse); + } + else { + this.expand(recurse); + } + + if (recurse) { + // Put the table online again + frame.appendChild(table); + frame.scrollTop = scrollTop; + } +} + +JSONEditor.Node.types = [ + {'value': 'array', 'className': 'jsoneditor-option-array', 'title': 'Field type "array". An array contains an ordered collection of values.'}, + {'value': 'auto', 'className': 'jsoneditor-option-auto', 'title': 'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.'}, + {'value': 'object', 'className': 'jsoneditor-option-object', 'title': 'Field type "object". An object contains an unordered set of key/value pairs.'}, + {'value': 'string', 'className': 'jsoneditor-option-string', 'title': 'Field type "string". Field type is not determined from the value, but always returned as string.'} +]; + +/** + * Create a DOM select box containing the node type + * @return {HTML DOM} domType + */ +JSONEditor.Node.prototype._createDomTypeButton = function () { + var node = this; + var domType = document.createElement('button'); + domType.className = 'jsoneditor-type-' + node.type; + domType.title = 'Change field type'; + + return domType; +} + + +JSONEditor.Node.prototype._onTypeButton = function (event) { + JSONEditor.Events.stopPropagation(event); + + var domType = this.dom.type; + + var node = this; + var x = JSONEditor.getAbsoluteLeft(domType); + var y = JSONEditor.getAbsoluteTop(domType) + domType.clientHeight; + var callback = function (value) { + node._changeType(value); + domType.className = 'jsoneditor-type-' + node.type; + } + JSONEditor.showDropDownList({ + 'x': x, + 'y': y, + 'node': node, + 'value': node.type, + 'values': JSONEditor.Node.types, + 'className': 'jsoneditor-select', + 'optionSelectedClassName': 'jsoneditor-option-selected', + 'optionClassName': 'jsoneditor-option', + 'callback': callback + }); +} + +JSONEditor.showDropDownList = function (params) { + /* + console.log(params); // TODO + var value = prompt('select a value', params.value); + if (value) { + callback(value); + }*/ + + var select = document.createElement('div'); + select.className = params.className || ''; + select.style.position = 'absolute'; + select.style.left = (params.x || 0) + 'px'; + select.style.top = (params.y || 0) + 'px'; + for (var i = 0; i < params.values.length; i++) { + var v = params.values[i]; + var text = v.value || String(v); + var className = 'jsoneditor-option ' + (v.className || ''); + var selected = (text == params.value); + if (selected) { + className += ' ' + params.optionSelectedClassName; + } + var option = document.createElement('div'); + option.className = className; + if (v.title) { + option.title = v.title; + } + option.innerHTML = text; + option.onmousedown = function (value) { + return function (event) { + params.callback(value); + }; + }(v.value); + select.appendChild(option); + } + + document.body.appendChild(select); + params.node.setHighlight(true); + JSONEditor.freezeHighlight = true; + + // TODO: change to onclick? -> but be sure to remove existing dropdown first + var onmousedown = JSONEditor.Events.addEventListener(document, 'mousedown', function (event) { + JSONEditor.freezeHighlight = false; + params.node.setHighlight(false); + document.body.removeChild(select); + JSONEditor.Events.removeEventListener(document, 'mousedown', onmousedown); + }); +} + +/** + * Create a table row with an append button. + * @return {HTML DOM} buttonAppend or undefined when unapplicable + */ +JSONEditor.Node.prototype.getAppend = function () { + if (!this.append) { + this.append = new JSONEditor.AppendNode(); + this.append.parent = this; + } + return this.append.getDom(); +} + +/** + * Create a remove button. Returns undefined when the structure cannot + * be removed + * @return {HTML DOM} removeButton, or undefined when unapplicable + */ +JSONEditor.Node.prototype._createDomRemoveButton = function () { + if (this.parent && (this.parent.type == 'array' || this.parent.type == 'object')) { + var buttonRemove = document.createElement('button'); + buttonRemove.className = 'jsoneditor-remove'; + buttonRemove.title = 'Remove field (including all its childs)'; + + return buttonRemove; + } + else { + return undefined; + } +} + +/** + * Create a duplicate button. + * If the Node is the root node, no duplicate button is available and undefined + * will be returned + * @return {HTML DOM} buttonDuplicate + */ +JSONEditor.Node.prototype._createDomDuplicateButton = function () { + if (this.parent && (this.parent.type == 'array' || this.parent.type == 'object')) { + var buttonDupliate = document.createElement('button'); + buttonDupliate.className = 'jsoneditor-duplicate'; + buttonDupliate.title = 'Duplicate field (including all childs)'; + + return buttonDupliate; + } + else { + return undefined; + } +} + +/** + * get the type of a value + * @param {any type} value + * @return {String} type Can be 'object', 'array', 'string', 'auto' + */ +JSONEditor.Node.prototype._getType = function(value) { + if (value instanceof Array) { + return 'array'; + } + if (value instanceof Object) { + return 'object'; + } + if (typeof(value) == 'string' && typeof(this._stringCast(value)) != 'string') { + return 'string'; + } + + return 'auto'; +} + +/** + * cast contents of a string to the correct type. This can be a string, + * a number, a boolean, etc + * @param {String} str + * @return {String} castedStr + */ +JSONEditor.Node.prototype._stringCast = function(str) { + var lower = str.toLowerCase(), + num = Number(str), // will nicely fail with '123ab' + numFloat = parseFloat(str); // will nicely fail with ' ' + + if (str == '') { + return ''; + } + else if (lower == 'null') { + return null; + } + else if (lower == 'true') { + return true; + } + else if (lower == 'false') { + return false; + } + else if (!isNaN(num) && !isNaN(numFloat)) { + return num; + } + else { + return str; + } +} + +/** + * escape a text + * @param {HTML DOM} text + * @return {String} escapedText + */ +JSONEditor.Node.prototype._escape = function (text) { + var htmlEscaped = String(text).replace(//g, '>').replace(/ /g, ' '); + var json = JSON.stringify(htmlEscaped); + var escapedText = json.substring(1, json.length - 1); + return escapedText; +} + +/** + * unescape a string. + * @param {String} escapedText + * @return {String} text + */ +JSONEditor.Node.prototype._unescape = function (escapedText) { + var json = '"' + escapedText + '"'; + var htmlEscaped = JSON.parse(json); + var text = htmlEscaped.replace(/</g, '<').replace(/>/g, '>').replace(/ /g, ' '); + return text; +} + +/** + * Strip html tags from a string + * @param {String} html + * @return {String} text + */ +JSONEditor.Node.prototype._stripHTML = function (html) { + // remove HTML tags + // code from nickf, http://stackoverflow.com/a/822464/1262753 + return html.replace(/<(?:.|\n)*?>/gm, ''); +} + +/** + * Create a new AppendNode. This is a special node which is created at the + * end of the list with childs for an object or array + */ +JSONEditor.AppendNode = function () { + this.dom = {}; +} + +JSONEditor.AppendNode.prototype = new JSONEditor.Node(); + +/** + * Helper + */ +function newTd(className) { + var td = document.createElement('td'); + td.className = className || ''; + return td; +} + +/** + * Return a table row with an append button. + * @return {HTML DOM} dom TR element + */ +JSONEditor.AppendNode.prototype.getDom = function () { + if (this.dom.tr) { + return this.dom.tr; + } + + // a row for the append button + var trAppend = document.createElement('tr'); + trAppend.appendChild(newTd('jsoneditor-td')); + trAppend.node = this; + + var tdAppend = document.createElement('td'); + trAppend.appendChild(tdAppend); + tdAppend.className = 'jsoneditor-td'; + + var buttonAppend = document.createElement('button'); + buttonAppend.className = 'jsoneditor-append'; + buttonAppend.title = 'Append a field'; + this.dom.append = buttonAppend; + + tdAppend.appendChild(buttonAppend); + + trAppend.appendChild(newTd('jsoneditor-td jsoneditor-td-edit')); + trAppend.appendChild(newTd('jsoneditor-td jsoneditor-td-edit')); + trAppend.appendChild(newTd('jsoneditor-td jsoneditor-td-edit')); + + this.dom.tr = trAppend; + this.dom.td = tdAppend; + + this.updateDom(); + + return trAppend; +} + +/** + * Update the HTML dom of the Node + */ +JSONEditor.AppendNode.prototype.updateDom = function () { + var tdAppend = this.dom.td; + if (tdAppend) { + tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px'; + // TODO: not so nice hard coded offset + } +} + +/** + * Handle an event. The event is catched centrally by the editor + * @param {HTML Event} event + */ +JSONEditor.AppendNode.prototype.onEvent = function (event) { + var type = event.type; + var target = event.target || event.srcElement; + var dom = this.dom; + var node = this; + + var domAppend = dom.append; + if (target == domAppend) { + switch (type) { + case 'click': + var newNode = new JSONEditor.Node({ + 'field': 'field', + 'value': 'value' + }); + this.parent.appendChild(newNode); + this.parent.setHighlight(false); + newNode.focus(); + break; + + case 'mouseover': + this.parent.setHighlight(true); + break; + + case 'mouseout': + this.parent.setHighlight(false); + } + } +} + +/** + * Create main frame + */ +JSONEditor.prototype._createFrame = function () { + // create the frame + this.container.innerHTML = ''; + this.frame = document.createElement('div'); + this.frame.className = 'jsoneditor-frame'; + this.container.appendChild(this.frame); + + // create one global event listener to handle all events from all nodes + var editor = this; + var onEvent = function (event) { + var event = event || window.event; + var target = event.target || event.srcElement; + var node = JSONEditor.getNodeFromTarget(target); + if (node) { + node.onEvent(event); + } + } + this.frame.onclick = onEvent; + this.frame.onchange = onEvent; + this.frame.onfocus = onEvent; + this.frame.onblur = onEvent; + this.frame.onkeyup = onEvent; + this.frame.oncut = onEvent; + this.frame.onpaste = onEvent; + this.frame.onmousedown = onEvent; + this.frame.onmouseup = onEvent; + this.frame.onmouseover = onEvent; + this.frame.onmouseout = onEvent; + + // create menu table + this.head = document.createElement('table'); + this.head.className = 'jsoneditor-menu'; + var tbody = document.createElement('tbody'); + this.head.appendChild(tbody); + var tr = document.createElement('tr'); + tbody.appendChild(tr); + var td = document.createElement('td'); + td.className = 'jsoneditor-menu'; + tr.appendChild(td); + + // create expand all button + var editor = this; + var expandAll = document.createElement('button'); + expandAll.innerHTML = 'Expand All'; + expandAll.onclick = function () { + editor.expandAll(); + } + td.appendChild(expandAll); + + // create expand all button + var collapseAll = document.createElement('button'); + collapseAll.innerHTML = 'Collapse All'; + collapseAll.onclick = function () { + editor.collapseAll(); + } + td.appendChild(collapseAll); + + this.frame.appendChild(this.head); +} + + +/** + * Create main table + */ +JSONEditor.prototype._createTable = function () { + var contentOuter = document.createElement('div'); + contentOuter.className = 'jsoneditor-content-outer'; + + this.content = document.createElement('div'); + this.content.className = 'jsoneditor-content'; + contentOuter.appendChild(this.content); + + this.table = document.createElement('table'); + this.table.className = 'jsoneditor-table'; + this.content.appendChild(this.table); + + // IE8 does not handle overflow='auto' correctly. + // Therefore, set overflow to 'scroll' + var ieVersion = JSONEditor.getInternetExplorerVersion(); + if (ieVersion == 8) { + this.content.style.overflow = 'scroll'; + } + + // create colgroup where the first two columns don't have a fixed + // width, and the edit columns do have a fixed width + var col; + this.colgroupContent = document.createElement('colgroup'); + col = document.createElement('col'); + col.width = "24px"; + this.colgroupContent.appendChild(col); + col = document.createElement('col'); + this.colgroupContent.appendChild(col); + col = document.createElement('col'); + col.width = "24px"; + this.colgroupContent.appendChild(col); + col = document.createElement('col'); + col.width = "24px"; + this.colgroupContent.appendChild(col); + col = document.createElement('col'); + col.width = "24px"; + this.colgroupContent.appendChild(col); + this.table.appendChild(this.colgroupContent); + + this.tbody = document.createElement('tbody'); + this.table.appendChild(this.tbody); + + /* TODO: remove + // TODO: replace header with a fixed bar (like the formatter has) + // create header column + var tr, th; + tr = document.createElement('tr'); + th = document.createElement('th'); + th.className = 'jsoneditor-th'; + var editor = this; + var expandAll = document.createElement('button'); + expandAll.innerHTML = 'Expand All'; + expandAll.onclick = function () { + editor.expandAll(); + } + th.appendChild(expandAll); + var collapseAll = document.createElement('button'); + collapseAll.innerHTML = 'Collapse All'; + collapseAll.onclick = function () { + editor.collapseAll(); + } + th.appendChild(collapseAll); + th.colSpan = 5; + tr.appendChild(th); + this.tbody.appendChild(tr); + */ + + this.frame.appendChild(contentOuter); +} + +/** + * Find the node from an event target + * @param {HTML DOM} event target + * @return {JSONEditor.Node} node or undefined when not found + */ +JSONEditor.getNodeFromTarget = function (target) { + while (target) { + if (target.node) { + return target.node; + } + target = target.parentNode; + } + + return undefined; +} + + +JSONFormatter = function (container) { + // check availability of JSON parser (not available in IE7 and older) + if (!JSON) { + throw new Error('Your browser does not support JSON. \n\n' + + 'Please install the newest version of your browser.\n' + + '(all modern browsers support JSON).'); + } + + this.container = container; + + this.width = container.clientWidth; + this.height = container.clientHeight; + + this.frame = document.createElement('div'); + this.frame.className = "jsoneditor-frame"; + + // create menu table + this.head = document.createElement('table'); + this.head.className = 'jsoneditor-menu'; + var tbody = document.createElement('tbody'); + this.head.appendChild(tbody); + var tr = document.createElement('tr'); + tbody.appendChild(tr); + var td = document.createElement('td'); + td.className = 'jsoneditor-menu'; + tr.appendChild(td); + + // create format button + var buttonFormat = document.createElement('button'); + buttonFormat.innerHTML = 'Format'; + buttonFormat.title = 'Format JSON data, with proper indentation and line feeds'; + buttonFormat.className = 'jsoneditor-button'; + td.appendChild(buttonFormat); + + // create compact button + var buttonCompact = document.createElement('button'); + buttonCompact.innerHTML = 'Compact'; + buttonCompact.title = 'Compact JSON data, remove all whitespaces'; + buttonCompact.className = 'jsoneditor-button'; + td.appendChild(buttonCompact); + this.frame.appendChild(this.head); + + this.content = document.createElement('div'); + this.content.className = 'jsonformatter-content'; + this.frame.appendChild(this.content); + + this.textarea = document.createElement('textarea'); + this.textarea.className = "jsonformatter-textarea"; + this.textarea.spellcheck = false; + this.content.appendChild(this.textarea); + + var formatter = this; + var textarea = this.textarea; + var onChange = function () { + formatter._checkChange(); + }; + /* TODO: register onchange + this.textarea.onchange = onChange; + this.textarea.onkeyup = onChange; + this.textarea.oncut = onChange; + this.textarea.oncopy = onChange; + this.textarea.onpaste = onChange; + this.textarea.onchange = function () { + console.log('onchange'); + } + this.textarea.ondomcharacterdatamodified = function () { + console.log('DOMCharacterDataModified'); + } + this.textarea.ondomattrmodified = function () { + console.log('DOMAttrModified'); + } + addEventListener(this.textarea, 'DOMAttrModified', function (event) { + console.log('DOMAttrModified', event); + }); + addEventListener(this.textarea, 'DOMCharacterDataModified', function (event) { + console.log('DOMCharacterDataModified', event); + }); + */ + + var me = this; + buttonFormat.onclick = function () { + try { + textarea.value = JSON.stringify(JSON.parse(textarea.value), null, ' '); + } + catch (err) { + me.onError(err); + } + }; + buttonCompact.onclick = function () { + try { + textarea.value = JSON.stringify(JSON.parse(textarea.value)); + } + catch (err) { + me.onError(err); + } + }; + + this.container.appendChild(this.frame); +} + +/** + * This method is executed on error. + * It can be overwritten for each instance of the JSONFormatter + * @param {String} err + */ +JSONFormatter.prototype.onError = function(err) { + // action should be implemented for the instance +} + +/** + * Check if the contents are changed + */ +JSONFormatter.prototype._checkChange = function() { + var content = this.textarea.value; + + if (content != this.lastContent) { + this.lastContent = content; + if (formatter.onChangeCallback) { + formatter.onChangeCallback(); + } + } +} + +/** + * Set json data in the formatter + * @param {JSON} json + */ +JSONFormatter.prototype.set = function(json) { + this.textarea.value = JSON.stringify(json, null, ' '); +} + +/** + * Get json data from the formatter + * @return {JSON} json + */ +JSONFormatter.prototype.get = function() { + return JSON.parse(this.textarea.value); +} + +/** + * Set a callback method for the onchange event + * @return {function} callback + */ +/* TODO: setOnChangeCallback +JSONFormatter.prototype.setOnChangeCallback = function(callback) { + this.onChangeCallback = callback; + console.log(this.onChangeCallback, callback) +} +*/ + + +// create namespace for event methods +JSONEditor.Events = {}; + +/** + * Add and event listener. Works for all browsers + * @param {DOM Element} element An html element + * @param {string} action The action, for example "click", + * without the prefix "on" + * @param {function} listener The callback function to be executed + * @param {boolean} useCapture + * @return {function} the created event listener + */ +JSONEditor.Events.addEventListener = function (element, action, listener, useCapture) { + if (element.addEventListener) { + if (useCapture === undefined) + useCapture = false; + + if (action === "mousewheel" && navigator.userAgent.indexOf("Firefox") >= 0) { + action = "DOMMouseScroll"; // For Firefox + } + + element.addEventListener(action, listener, useCapture); + return listener; + } else { + // IE browsers + var f = function () { + return listener.call(element, window.event); + }; + element.attachEvent("on" + action, f); + return f; + } +}; + +/** + * Remove an event listener from an element + * @param {DOM element} element An html dom element + * @param {string} action The name of the event, for example "mousedown" + * @param {function} listener The listener function + * @param {boolean} useCapture + */ +JSONEditor.Events.removeEventListener = function(element, action, listener, useCapture) { + if (element.removeEventListener) { + // non-IE browsers + if (useCapture === undefined) + useCapture = false; + + if (action === "mousewheel" && navigator.userAgent.indexOf("Firefox") >= 0) { + action = "DOMMouseScroll"; // For Firefox + } + + element.removeEventListener(action, listener, useCapture); + } else { + // IE browsers + element.detachEvent("on" + action, listener); + } +}; + + +/** + * Stop event propagation + */ +JSONEditor.Events.stopPropagation = function (event) { + if (!event) + var event = window.event; + + if (event.stopPropagation) { + event.stopPropagation(); // non-IE browsers + } + else { + event.cancelBubble = true; // IE browsers + } +} + + +/** + * Cancels the event if it is cancelable, without stopping further propagation of the event. + */ +JSONEditor.Events.preventDefault = function (event) { + if (!event) + var event = window.event; + + if (event.preventDefault) { + event.preventDefault(); // non-IE browsers + } + else { + event.returnValue = false; // IE browsers + } +} + + + +/** + * Retrieve the absolute left value of a DOM element + * @param {DOM element} elem A dom element, for example a div + * @return {number} left The absolute left position of this element + * in the browser page. + */ +JSONEditor.getAbsoluteLeft = function (elem) { + var left = 0; + while( elem != null ) { + left += elem.offsetLeft; + left -= elem.scrollLeft; + elem = elem.offsetParent; + } + if (!document.body.scrollLeft && window.pageXOffset) { + // FF + left -= window.pageXOffset; + } + return left; +}; + +/** + * Retrieve the absolute top value of a DOM element + * @param {DOM element} elem A dom element, for example a div + * @return {number} top The absolute top position of this element + * in the browser page. + */ +JSONEditor.getAbsoluteTop = function (elem) { + var top = 0; + while( elem != null ) { + top += elem.offsetTop; + top -= elem.scrollTop; + elem = elem.offsetParent; + } + if (!document.body.scrollTop && window.pageYOffset) { + // FF + top -= window.pageYOffset; + } + return top; +}; + +/** + * add a className to the given elements style + */ +JSONEditor.addClassName = function(elem, className) { + var c = elem.className; + if (c.indexOf(className) == -1) { + c += ' ' + className; + elem.className = c; + } +} + +/** + * add a className to the given elements style + */ +JSONEditor.removeClassName = function(elem, className) { + var c = elem.className; + if (c.indexOf(className) != -1) { + c = c.replace(className, ''); // remove classname + c = c.replace(/ /g, ''); // remove double spaces + elem.className = c; + } +} + +/** + * Strip the formatting from the contents of a div + * the formatting from the div itself is not stripped, only from its childs. + * @param {HTML Div Element} divElement + */ +JSONEditor.stripFormatting = function (divElement) { + var childs = divElement.childNodes; + for (var i = 0, iMax = childs.length; i < iMax; i++) { + var child = childs[i]; + + // remove the style + if (child.style) { + // TODO: test if child.attributes does contain style + child.removeAttribute('style'); + } + + // remove all attributes + var attributes = child.attributes; + if (attributes) { + for (var j = 0, jMax = attributes.length; j < jMax; j++) { + var attribute = attributes[j]; + if (attribute.specified == true) { + child.removeAttribute(attribute.name); + } + } + } + + // recursively strip childs + JSONEditor.stripFormatting(child); + } +} + +/** + * Set focus to the end of an editable div + * code from Nico Burns + * http://stackoverflow.com/users/140293/nico-burns + * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity + */ +JSONEditor.setEndOfContenteditable = function (contentEditableElement) { + var range, selection; + if(document.createRange) {//Firefox, Chrome, Opera, Safari, IE 9+ + range = document.createRange();//Create a range (a range is a like the selection but invisible) + range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range + range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start + selection = window.getSelection();//get the selection object (allows you to change selection) + selection.removeAllRanges();//remove any selections already made + selection.addRange(range);//make the range you have just created the visible selection + } + else if(document.selection) {//IE 8 and lower + range = document.body.createTextRange();//Create a range (a range is a like the selection but invisible) + range.moveToElementText(contentEditableElement);//Select the entire contents of the element with the range + range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start + range.select();//Select the range (make it the visible selection + } +} + +/** + * Returns the version of Internet Explorer or a -1 + * (indicating the use of another browser). + * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx + * @return {Number} Internet Explorer version, or -1 in case of an other browser + */ +JSONEditor.getInternetExplorerVersion = function() { + var rv = -1; // Return value assumes failure. + if (navigator.appName == 'Microsoft Internet Explorer') + { + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) + rv = parseFloat( RegExp.$1 ); + } + return rv; +} + +JSONEditor.ieVersion = JSONEditor.getInternetExplorerVersion(); diff --git a/minify.sh b/minify.sh new file mode 100755 index 000000000..717386627 --- /dev/null +++ b/minify.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +compiler="/home/jos/Dropbox/Jos/programming/javascript/tools/compiler.jar" +file="jsoneditor.js" +minifiedFile="jsoneditor-min.js" + +echo "Minifying file $file..." + +java -jar $compiler --js $file --js_output_file $minifiedFile + +echo "Minified file saved as $minifiedFile" diff --git a/package.sh b/package.sh new file mode 100755 index 000000000..9c56dc7b4 --- /dev/null +++ b/package.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +sh minify.sh + +package="jsoneditoronline.zip" +files="index.html jsoneditor.js jsoneditor-min.js jsoneditor.css favicon.ico changelog.txt img LICENSE NOTICE" + +rm $package + +# create zip file +zip -r $package $files diff --git a/test/largefile.json b/test/largefile.json new file mode 100644 index 000000000..8f3a18077 --- /dev/null +++ b/test/largefile.json @@ -0,0 +1,12605 @@ +{ + "version": "1.0", + "encoding": "UTF-8", + "feed": { + "xmlns$app": "http://www.w3.org/2007/app", + "xmlns": "http://www.w3.org/2005/Atom", + "xmlns$media": "http://search.yahoo.com/mrss/", + "xmlns$openSearch": "http://a9.com/-/spec/opensearch/1.1/", + "xmlns$gd": "http://schemas.google.com/g/2005", + "xmlns$gml": "http://www.opengis.net/gml", + "xmlns$yt": "http://gdata.youtube.com/schemas/2007", + "xmlns$georss": "http://www.georss.org/georss", + "gd$etag": "W/\"A0MHRHo6fSp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:videos" + }, + "updated": { + "$t": "2012-04-16T06:57:15.415Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + } + ], + "title": { + "$t": "YouTube Videos matching query: football -soccer" + }, + "logo": { + "$t": "http://www.youtube.com/img/pic_youtubelogo_123x63.gif" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com" + }, + { + "rel": "http://schemas.google.com/g/2005#feed", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos?v=2" + }, + { + "rel": "http://schemas.google.com/g/2005#batch", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/batch?v=2" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos?alt=json&q=football+-soccer&start-index=1&max-results=50&orderby=published&v=2" + }, + { + "rel": "service", + "type": "application/atomsvc+xml", + "href": "https://gdata.youtube.com/feeds/api/videos?alt=atom-service&v=2" + }, + { + "rel": "next", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos?alt=json&q=football+-soccer&start-index=51&max-results=50&orderby=published&v=2" + } + ], + "author": [ + { + "name": { + "$t": "YouTube" + }, + "uri": { + "$t": "http://www.youtube.com/" + } + } + ], + "generator": { + "$t": "YouTube data API", + "version": "2.1", + "uri": "http://gdata.youtube.com" + }, + "openSearch$totalResults": { + "$t": 17775 + }, + "openSearch$startIndex": { + "$t": 1 + }, + "openSearch$itemsPerPage": { + "$t": 50 + }, + "entry": [ + { + "gd$etag": "W/\"DUYGQH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:ZUHnx_yGfYg" + }, + "published": { + "$t": "2012-04-16T06:18:41.000Z" + }, + "updated": { + "$t": "2012-04-16T06:18:41.000Z" + }, + "app$control": { + "yt$state": { + "$t": "Syndication of this video was restricted by its owner.", + "name": "restricted", + "reasonCode": "limitedSyndication" + } + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "friendshipunited" + } + ], + "title": { + "$t": "FRIENDSHIP UNITED (Prima Lingkar Asri)" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/ZUHnx_yGfYg?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=ZUHnx_yGfYg&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg/related?v=2" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg?v=2" + } + ], + "author": [ + { + "name": { + "$t": "ClarissaScolastica" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/ClarissaScolastica" + }, + "yt$userId": { + "$t": "PxqMFmq9hESdd7fL8uyY6g" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "denied" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/ZUHnx_yGfYg/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/ZUHnx_yGfYg?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 139, + "yt$format": 5 + } + ], + "media$credit": [ + { + "$t": "clarissascolastica", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "ClarissaScolastica" + } + ], + "media$description": { + "$t": "We are Friendship United,We are team football in Prima Lingkar Asri (Indonesia),Thanks for watching my video. \"We're not born winners,we're not born losers,we're born choosers!\" Go follow on twitter crew #FriendshipUnited ( @rezaocta16 , @ossaaay , @clariscolastica , @raga_yohanes , @dinabiil , @Evan_julio , @mkafi8 , @dirgabijaksono , @gitchaw , @albrin , @santonyvardy , @andryrivaldy )", + "type": "plain" + }, + "media$keywords": { + "$t": "friendshipunited" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=ZUHnx_yGfYg&feature=youtube_gdata_player" + }, + "media$restriction": [ + { + "$t": "UM US VI", + "type": "country", + "relationship": "deny" + } + ], + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:09.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:34.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:09.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/ZUHnx_yGfYg/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:44.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "FRIENDSHIP UNITED (Prima Lingkar Asri)", + "type": "plain" + }, + "yt$duration": { + "seconds": "139" + }, + "yt$uploaded": { + "$t": "2012-04-16T06:18:41.000Z" + }, + "yt$videoid": { + "$t": "ZUHnx_yGfYg" + } + }, + "yt$recorded": { + "$t": "2012-04-16" + } + }, + { + "gd$etag": "W/\"DUcGQX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:S0KcBLqEoas" + }, + "published": { + "$t": "2012-04-16T06:17:00.000Z" + }, + "updated": { + "$t": "2012-04-16T06:17:00.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Animals", + "label": "Pets & Animals" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "perro" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "footbal" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "playas de tijuana" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "pelota" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "perrita" + } + ], + "title": { + "$t": "Gina jugando football" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/S0KcBLqEoas?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=S0KcBLqEoas&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=S0KcBLqEoas" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas?v=2" + } + ], + "author": [ + { + "name": { + "$t": "elizabethortegaco" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/elizabethortegaco" + }, + "yt$userId": { + "$t": "cjAHg7F2kL_ECS8lgJ0nRw" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/S0KcBLqEoas/comments?v=2", + "countHint": 0 + } + }, + "yt$location": { + "$t": "playas tijuana" + }, + "media$group": { + "media$category": [ + { + "$t": "Animals", + "label": "Pets & Animals", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/S0KcBLqEoas?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 59, + "yt$format": 5 + }, + { + "url": "rtsp://v7.cache8.c.youtube.com/CiILENy73wIaGQmroYS6BJxCSxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 59, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache3.c.youtube.com/CiILENy73wIaGQmroYS6BJxCSxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 59, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "elizabethortegaco", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "elizabethortegaco" + } + ], + "media$description": { + "$t": "perrita Gina jugando football con unos ninios frente al cafe aquamarino y el horno 320 en el malecon de playas de tijuana, ella queria que le patearan la pelota!!!", + "type": "plain" + }, + "media$keywords": { + "$t": "perro, footbal, playas de tijuana, pelota, perrita" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=S0KcBLqEoas&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/S0KcBLqEoas/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:29.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/S0KcBLqEoas/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/S0KcBLqEoas/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/S0KcBLqEoas/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:14.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/S0KcBLqEoas/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:29.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/S0KcBLqEoas/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:44.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Gina jugando football", + "type": "plain" + }, + "yt$duration": { + "seconds": "59" + }, + "yt$uploaded": { + "$t": "2012-04-16T06:17:00.000Z" + }, + "yt$videoid": { + "$t": "S0KcBLqEoas" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "1" + } + }, + { + "gd$etag": "W/\"DE4DQH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:ScT3ehz70yU" + }, + "published": { + "$t": "2012-04-16T06:16:11.000Z" + }, + "updated": { + "$t": "2012-04-16T06:16:11.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Entertainment", + "label": "Entertainment" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Joe" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Jonas" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Demi" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Lovato" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Dallas" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Selena" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "love" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "jealous" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "sister" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "hate" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "player" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "loser" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "movie" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "series" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "short" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "story" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "one" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "shot" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Rated" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "jemi" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "onetruemedia" + } + ], + "title": { + "$t": "Under The Stars (Movie-One) Episode- 12 (JEMI)" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/ScT3ehz70yU?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=ScT3ehz70yU&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=ScT3ehz70yU" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU?v=2" + } + ], + "author": [ + { + "name": { + "$t": "TheBlurify" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/TheBlurify" + }, + "yt$userId": { + "$t": "m80cE4ZVd6-7C8TVoTpnWw" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/ScT3ehz70yU/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Entertainment", + "label": "Entertainment", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/ScT3ehz70yU?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 17, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache1.c.youtube.com/CiILENy73wIaGQkl0_scevfESRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 17, + "yt$format": 1 + }, + { + "url": "rtsp://v3.cache8.c.youtube.com/CiILENy73wIaGQkl0_scevfESRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 17, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "theblurify", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "TheBlurify" + } + ], + "media$description": { + "$t": "Story Here! =========== PLEASE CHECK OUT THE VIDEO I POSTED ABOUT MY NEW STORY IF YOU HAVEN'T YET!!! =========== *Knock knock!* I heard a voice as I jumped back in surprise. *Wow, did I scare you?*Sam asked with a light chuckle. I shook my head. He wore a pair of navy blue shorts and his torso remained bare. He had a good tanned body from what I quickly glanced at, not wanting to make it obvious. He was skinny but lean and toned. Not a bad view, if you asked me.*We're going down for a swim,* He informed. His hands rested on his waist and a towel over his shoulder. *Do you want to go?* His smile was lose and with caution. I guess he knew I wasn't about to fall for his charming toothy smile and decided to play it safe. *No, thanks.* I replied. I knew the rest wouldn't make it very welcoming for me to join. Sam nodded and began walking back. *Ok.* He smiled. *I'll be there if you change your mind.* I managed to show a smile of gratitude. The least I could do was give him credit for being nice and putting an effort to make me feel good about being here and not like a burden. *Thank you.* The rest left soon after which pretty much left me alone. There was a lake a short walks away, from what I remembered, so I'm sure they were all there. It was killing me not to just swallow my pride and go for a swim. Having the days heat wash away and feel the cool water against my skin, but at the same time, I was sure as hell not about to strip down to my bikini and have Lauren or Maggie ...", + "type": "plain" + }, + "media$keywords": { + "$t": "Joe, Jonas, Demi, Lovato, Dallas, Selena, love, jealous, sister, hate, player, loser, movie, series, short, story, one, shot, Rated, jemi, onetruemedia" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=ScT3ehz70yU&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/ScT3ehz70yU/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:08.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/ScT3ehz70yU/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/ScT3ehz70yU/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/ScT3ehz70yU/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:04.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/ScT3ehz70yU/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:08.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/ScT3ehz70yU/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:12.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Under The Stars (Movie-One) Episode- 12 (JEMI)", + "type": "plain" + }, + "yt$duration": { + "seconds": "17" + }, + "yt$uploaded": { + "$t": "2012-04-16T06:16:11.000Z" + }, + "yt$videoid": { + "$t": "ScT3ehz70yU" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "2" + } + }, + { + "gd$etag": "W/\"DEADSH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:CRw7iiAfHPU" + }, + "published": { + "$t": "2012-04-16T06:12:59.000Z" + }, + "updated": { + "$t": "2012-04-16T06:12:59.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "zaccagni" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "gubbio" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "zurla_entertainment" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "inverness" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "scotland" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "scozia" + } + ], + "title": { + "$t": "Football match in Inverness, Scotland (rigori scozzesi)" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/CRw7iiAfHPU?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=CRw7iiAfHPU&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=CRw7iiAfHPU" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU?v=2" + } + ], + "author": [ + { + "name": { + "$t": "zaccaimano" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/zaccaimano" + }, + "yt$userId": { + "$t": "kkb0S3rhe-LttdSqgG6LMA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/CRw7iiAfHPU/comments?v=2", + "countHint": 0 + } + }, + "georss$where": { + "gml$Point": { + "gml$pos": { + "$t": "57.4777717590332 -4.224720001220703" + } + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/CRw7iiAfHPU?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 107, + "yt$format": 5 + }, + { + "url": "rtsp://v3.cache2.c.youtube.com/CiILENy73wIaGQn1HB8gijscCRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 107, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache1.c.youtube.com/CiILENy73wIaGQn1HB8gijscCRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 107, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "zaccaimano", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "zaccaimano" + } + ], + "media$description": { + "$t": "The final penalties", + "type": "plain" + }, + "media$keywords": { + "$t": "zaccagni, gubbio, zurla_entertainment, inverness, scotland, scozia" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=CRw7iiAfHPU&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:53.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:26.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:53.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/CRw7iiAfHPU/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:20.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Football match in Inverness, Scotland (rigori scozzesi)", + "type": "plain" + }, + "yt$duration": { + "seconds": "107" + }, + "yt$uploaded": { + "$t": "2012-04-16T06:12:59.000Z" + }, + "yt$videoid": { + "$t": "CRw7iiAfHPU" + } + }, + "yt$recorded": { + "$t": "2012-04-06" + } + }, + { + "gd$etag": "W/\"DEEFRH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:5EjeJpLY7S0" + }, + "published": { + "$t": "2012-04-16T06:10:15.000Z" + }, + "updated": { + "$t": "2012-04-16T06:10:15.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "UNO" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "omavs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Nebraska-Omaha" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "UNO Mavericks sports" + } + ], + "title": { + "$t": "PlayersSuingUNO.wmv" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/5EjeJpLY7S0?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=5EjeJpLY7S0&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=5EjeJpLY7S0" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0?v=2" + } + ], + "author": [ + { + "name": { + "$t": "UNOMavsBlog" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/UNOMavsBlog" + }, + "yt$userId": { + "$t": "64HM5pIt74M5HIavzb1L3w" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/5EjeJpLY7S0/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/5EjeJpLY7S0?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 321, + "yt$format": 5 + }, + { + "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQkt7diSJt5I5BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 321, + "yt$format": 1 + }, + { + "url": "rtsp://v7.cache6.c.youtube.com/CiILENy73wIaGQkt7diSJt5I5BMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 321, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "unomavsblog", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "UNOMavsBlog" + } + ], + "media$description": { + "$t": "Campus reaction to the news that former football players and recruits are suing UNO for information to determine if they were mislead about the football program.", + "type": "plain" + }, + "media$keywords": { + "$t": "UNO, omavs, Nebraska-Omaha, UNO Mavericks sports" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=5EjeJpLY7S0&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/default.jpg", + "height": 90, + "width": 120, + "time": "00:02:40.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:20.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/2.jpg", + "height": 90, + "width": 120, + "time": "00:02:40.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/5EjeJpLY7S0/3.jpg", + "height": 90, + "width": 120, + "time": "00:04:00.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "PlayersSuingUNO.wmv", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "321" + }, + "yt$uploaded": { + "$t": "2012-04-16T06:10:15.000Z" + }, + "yt$videoid": { + "$t": "5EjeJpLY7S0" + } + } + }, + { + "gd$etag": "W/\"Dk8AQH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:0A15f4B1T9U" + }, + "published": { + "$t": "2012-04-16T05:40:41.000Z" + }, + "updated": { + "$t": "2012-04-16T05:40:41.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Kerala" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "messi" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "play" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "(അവന്റെഒരുതോഴി)" + } + ], + "title": { + "$t": "Kerala messi football play (അവന്റെഒരുതോഴി)" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/0A15f4B1T9U?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=0A15f4B1T9U&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=0A15f4B1T9U" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U?v=2" + } + ], + "author": [ + { + "name": { + "$t": "kottayamvideo" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/kottayamvideo" + }, + "yt$userId": { + "$t": "VYK-aGk1mi9IZDwEMmwGHg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/0A15f4B1T9U/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/0A15f4B1T9U?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 27, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQnVT3WAf3kN0BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 27, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache1.c.youtube.com/CiILENy73wIaGQnVT3WAf3kN0BMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 27, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "kottayamvideo", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "kottayamvideo" + } + ], + "media$description": { + "$t": "American football is a sport played between two teams of eleven with the objective of scoring points by advancing the ball into the opposing team's end zone. Known in the United States simply as football, it may also be referred to informally as gridiron football,[1][2] and even more rare, the \"pigskin\".[3] The ball can be advanced by running with it or throwing it to a teammate. Points can be scored by carrying the ball over the opponent's goal line, catching a pass thrown over that goal line, kicking the ball through the opponent's goal posts or tackling an opposing ball carrier in his own end zone. In the United States, the major forms are high school football, college football and professional football. Each of these are played under slightly different rules.[4] High school football is governed by the National Federation of State High School Associations and college football by the National Collegiate Athletic Association and National Association of Intercollegiate Athletics. The major league for professional football is the National Football League.", + "type": "plain" + }, + "media$keywords": { + "$t": "Kerala, messi, football, play, (അവന്റെഒരുതോഴി)" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=0A15f4B1T9U&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/0A15f4B1T9U/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:13.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/0A15f4B1T9U/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/0A15f4B1T9U/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/0A15f4B1T9U/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:06.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/0A15f4B1T9U/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:13.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/0A15f4B1T9U/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:20.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Kerala messi football play (അവന്റെഒരുതോഴി)", + "type": "plain" + }, + "yt$duration": { + "seconds": "27" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:40:41.000Z" + }, + "yt$videoid": { + "$t": "0A15f4B1T9U" + } + } + }, + { + "gd$etag": "W/\"DkAASX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:7hg2BvLQvuw" + }, + "published": { + "$t": "2012-04-16T05:39:08.000Z" + }, + "updated": { + "$t": "2012-04-16T05:39:08.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "mobile" + } + ], + "title": { + "$t": "#39 Jorge Batres SBU" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/7hg2BvLQvuw?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=7hg2BvLQvuw&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=7hg2BvLQvuw" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw?v=2" + } + ], + "author": [ + { + "name": { + "$t": "SBUFBVideosDept" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/SBUFBVideosDept" + }, + "yt$userId": { + "$t": "isxkO3iSNLZUpjYqPGOvPQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "allowed" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/7hg2BvLQvuw/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/7hg2BvLQvuw?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 149, + "yt$format": 5 + }, + { + "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQnsvtDyBjYY7hMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 149, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQnsvtDyBjYY7hMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 149, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "sbufbvideosdept", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "SBUFBVideosDept" + } + ], + "media$description": { + "$t": "Jorge Batres, SBU's kicker/punter gives a few words about the upcoming 2012 football season.", + "type": "plain" + }, + "media$keywords": { + "$t": "mobile" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=7hg2BvLQvuw&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:14.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:37.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:14.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/7hg2BvLQvuw/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:51.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "#39 Jorge Batres SBU", + "type": "plain" + }, + "yt$duration": { + "seconds": "149" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:39:08.000Z" + }, + "yt$videoid": { + "$t": "7hg2BvLQvuw" + } + } + }, + { + "gd$etag": "W/\"DkAFR347eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:O_IJnyUbSDY" + }, + "published": { + "$t": "2012-04-16T05:38:36.000Z" + }, + "updated": { + "$t": "2012-04-16T05:38:36.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Homer" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "LA" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Relay for Life" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Glory Gals" + } + ], + "title": { + "$t": "Relay for Life - Homer, LA 2012" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/O_IJnyUbSDY?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=O_IJnyUbSDY&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=O_IJnyUbSDY" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY?v=2" + } + ], + "author": [ + { + "name": { + "$t": "HomerMessenger" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/HomerMessenger" + }, + "yt$userId": { + "$t": "b37co3tL2mrGD96aUNl80A" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/O_IJnyUbSDY/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/O_IJnyUbSDY?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 252, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQk2SBslnwnyOxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 252, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache8.c.youtube.com/CiILENy73wIaGQk2SBslnwnyOxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 252, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "homermessenger", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "HomerMessenger" + } + ], + "media$description": { + "$t": "Footage from the Luminaries Ceremony - Relay for Life 2012 - Homer, LA at Homer High School Football Stadium", + "type": "plain" + }, + "media$keywords": { + "$t": "Homer, LA, Relay for Life, Glory Gals" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=O_IJnyUbSDY&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/default.jpg", + "height": 90, + "width": 120, + "time": "00:02:06", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:03", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/2.jpg", + "height": 90, + "width": 120, + "time": "00:02:06", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/O_IJnyUbSDY/3.jpg", + "height": 90, + "width": 120, + "time": "00:03:09", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Relay for Life - Homer, LA 2012", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "252" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:38:36.000Z" + }, + "yt$videoid": { + "$t": "O_IJnyUbSDY" + } + } + }, + { + "gd$etag": "W/\"DkMERn47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:t-afuUNb0Uo" + }, + "published": { + "$t": "2012-04-16T05:33:27.000Z" + }, + "updated": { + "$t": "2012-04-16T05:33:27.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "highlights!" + } + ], + "title": { + "$t": "highlights!.wmv" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/t-afuUNb0Uo?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=t-afuUNb0Uo&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=t-afuUNb0Uo" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo?v=2" + } + ], + "author": [ + { + "name": { + "$t": "edgarraguilar8" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/edgarraguilar8" + }, + "yt$userId": { + "$t": "uJk4jnk3B900MyfYn6gz5g" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/t-afuUNb0Uo/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/t-afuUNb0Uo?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 571, + "yt$format": 5 + }, + { + "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQlK0VtDuZ_mtxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 571, + "yt$format": 1 + }, + { + "url": "rtsp://v1.cache4.c.youtube.com/CiILENy73wIaGQlK0VtDuZ_mtxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 571, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "edgarraguilar8", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "edgarraguilar8" + } + ], + "media$description": { + "$t": "some of what i thought were some of my best plays in high school football!! mostly clips from my junior year because unfortunately my sophmore and senior year i got hurt and my seasons ended early. .", + "type": "plain" + }, + "media$keywords": { + "$t": "highlights!" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=t-afuUNb0Uo&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/default.jpg", + "height": 90, + "width": 120, + "time": "00:04:45.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/1.jpg", + "height": 90, + "width": 120, + "time": "00:02:22.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/2.jpg", + "height": 90, + "width": 120, + "time": "00:04:45.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/t-afuUNb0Uo/3.jpg", + "height": 90, + "width": 120, + "time": "00:07:08.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "highlights!.wmv", + "type": "plain" + }, + "yt$duration": { + "seconds": "571" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:33:27.000Z" + }, + "yt$videoid": { + "$t": "t-afuUNb0Uo" + } + } + }, + { + "gd$etag": "W/\"CU8CRX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:weMSc7VyDD4" + }, + "published": { + "$t": "2012-04-16T05:24:24.000Z" + }, + "updated": { + "$t": "2012-04-16T05:24:24.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Games", + "label": "Gaming" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Fer" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "dayz" + } + ], + "title": { + "$t": "Runescape-Dragon Claws Giveaway" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/weMSc7VyDD4?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=weMSc7VyDD4&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=weMSc7VyDD4" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4?v=2" + } + ], + "author": [ + { + "name": { + "$t": "TyroneAloneWithMeth" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/TyroneAloneWithMeth" + }, + "yt$userId": { + "$t": "nMLRKdVQ7P-p_cEipgO1fA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/weMSc7VyDD4/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Games", + "label": "Gaming", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/weMSc7VyDD4?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 38, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQk-DHK1cxLjwRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 38, + "yt$format": 1 + }, + { + "url": "rtsp://v1.cache1.c.youtube.com/CiILENy73wIaGQk-DHK1cxLjwRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 38, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "tyronealonewithmeth", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "TyroneAloneWithMeth" + } + ], + "media$description": { + "$t": "Message for more info EXTRA TAGS: tehnoobshow thepwnageninja herzantix tehnoobshoow Penny the Penguin funny runescape rs free zezima animal skychi account twixalex crush hilarious dark arm3 sladeakakevin crushman90 runescape boss kalphite dragon king black chaos elemental queen parody Lord of the rings sisterhood traveling pants moby dick war of worlds lion boy series starr parody hilarious rs retard runescape. twixalex crushman michael weird upside down cheese popper kids kid wheelchair dude green blue yellow are all colors of the rainbow skittles rule skittle commercial delicious cookie sprinkles dramatic prarie dog stick figures on crack 1 2 3 4 5 are all numbers of the rainbow wtf did i just say number of the rainbow thats kind of stupid in a funny way with balony pk vid video f2p p2p bank free account extra tags: KIDS RANQE PURPLE 0WNZ ZEZIMA N0VALYFE PHAT LURE OWNAGE RUNESCAPE WILDY WILDERNESS ELVEMAGE ELVEMAGE RUNESCAPE PKING RUN3 4RR0WPK OWNAGE MAIKEL PRO I MAHATMA I EVO BLOODHOUN34 KIDS RANQE KRAZYFAKEN RUNESCAPE PKER RUNESCAPE PKING INTIATE PURE 99 STR MAGE RANGE OBBY MAUL WICKED MAUL FIRE CAPE P00NAGE I KASOY I ELF MAGE PKA OBBY MAUL MAULER EDGEVILLE POONAGEkids ranqe elvemage purple 0wnz bloodhoun34 runescape pking wild pker ownage zezima phat lure KIDS RANQE PURPLE 0WNZ ZEZIMA N0VALYFE PHAT LURE OWNAGE RUNESCAPE WILDY WILDERNESS ELVEMAGE ELVEMAGE RUNESCAPE PKING RUN3 4RR0WPK OWNAGE MAIKEL PRO I MAHATMA I EVO BLOODHOUN34 KIDS RANQE KRAZYFAKEN RUNESCAPE PKER ...", + "type": "plain" + }, + "media$keywords": { + "$t": "Fer, dayz" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=weMSc7VyDD4&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/weMSc7VyDD4/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:19", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/weMSc7VyDD4/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/weMSc7VyDD4/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/weMSc7VyDD4/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:09.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/weMSc7VyDD4/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:19", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/weMSc7VyDD4/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:28.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Runescape-Dragon Claws Giveaway", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "38" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:24:24.000Z" + }, + "yt$videoid": { + "$t": "weMSc7VyDD4" + } + } + }, + { + "gd$etag": "W/\"CUAFRX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:3lMygQpMEEs" + }, + "published": { + "$t": "2012-04-16T05:21:54.000Z" + }, + "updated": { + "$t": "2012-04-16T05:21:54.000Z" + }, + "app$control": { + "yt$state": { + "$t": "Syndication of this video was restricted by its owner.", + "name": "restricted", + "reasonCode": "limitedSyndication" + } + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + } + ], + "title": { + "$t": "Football 14.02.2012" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/3lMygQpMEEs?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=3lMygQpMEEs&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs/related?v=2" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Jarom Nowak" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/rZyYP-Lh0-Kkl5aFG85ktw" + }, + "yt$userId": { + "$t": "rZyYP-Lh0-Kkl5aFG85ktw" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "denied" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/3lMygQpMEEs/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/3lMygQpMEEs?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 409, + "yt$format": 5 + } + ], + "media$credit": [ + { + "$t": "rZyYP-Lh0-Kkl5aFG85ktw", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Jarom Nowak" + } + ], + "media$description": { + "$t": "Deathmatch 14.04.2012", + "type": "plain" + }, + "media$keywords": { + "$t": "Football" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=3lMygQpMEEs&feature=youtube_gdata_player" + }, + "media$restriction": [ + { + "$t": "DE", + "type": "country", + "relationship": "deny" + } + ], + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/3lMygQpMEEs/default.jpg", + "height": 90, + "width": 120, + "time": "00:03:24.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/3lMygQpMEEs/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/3lMygQpMEEs/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/3lMygQpMEEs/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:42.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/3lMygQpMEEs/2.jpg", + "height": 90, + "width": 120, + "time": "00:03:24.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/3lMygQpMEEs/3.jpg", + "height": 90, + "width": 120, + "time": "00:05:06.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Football 14.02.2012", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "409" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:21:54.000Z" + }, + "yt$videoid": { + "$t": "3lMygQpMEEs" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "7" + } + }, + { + "gd$etag": "W/\"CE4BSX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:rRW9R8Zclbk" + }, + "published": { + "$t": "2012-04-16T05:09:18.000Z" + }, + "updated": { + "$t": "2012-04-16T05:09:18.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "#Richmond#Tigers#MCG#AFL#" + } + ], + "title": { + "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/rRW9R8Zclbk?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=rRW9R8Zclbk&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=rRW9R8Zclbk" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk?v=2" + } + ], + "author": [ + { + "name": { + "$t": "RichmondTigers2011" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/RichmondTigers2011" + }, + "yt$userId": { + "$t": "po8qqWXXp6Fo00UGlbcTlg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/rRW9R8Zclbk/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/rRW9R8Zclbk?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 36, + "yt$format": 5 + }, + { + "url": "rtsp://v2.cache3.c.youtube.com/CiILENy73wIaGQm5lVzGR70VrRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 36, + "yt$format": 1 + }, + { + "url": "rtsp://v7.cache6.c.youtube.com/CiILENy73wIaGQm5lVzGR70VrRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 36, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "richmondtigers2011", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "RichmondTigers2011" + } + ], + "media$description": { + "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised written, spoken & photographed by Pete Dowe. www.richmondfc.com.au www.youtube.com www.youtube.com www.youtube.com #funny#Richmond#Tigers#Membership#Promo#MCG#Punt#Rd#Oval# #Melbourne#Cricket#Ground#AFL#Football#", + "type": "plain" + }, + "media$keywords": { + "$t": "#Richmond#Tigers#MCG#AFL#" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=rRW9R8Zclbk&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:18", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:09", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:18", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/rRW9R8Zclbk/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:27", + "yt$name": "end" + } + ], + "media$title": { + "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "36" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:09:18.000Z" + }, + "yt$videoid": { + "$t": "rRW9R8Zclbk" + } + } + }, + { + "gd$etag": "W/\"CEIGQX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:qjO8l5uNunE" + }, + "published": { + "$t": "2012-04-16T05:02:00.000Z" + }, + "updated": { + "$t": "2012-04-16T05:02:00.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "RJ Dill" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Kaleb Johnson" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Scarlet Nation" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Rutgers football" + } + ], + "title": { + "$t": "RJ Dill and Kaleb Johnson interviews" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/qjO8l5uNunE?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=qjO8l5uNunE&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=qjO8l5uNunE" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE?v=2" + } + ], + "author": [ + { + "name": { + "$t": "scarletnationtv" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/scarletnationtv" + }, + "yt$userId": { + "$t": "beUNBqGe0GbGCQpGJr4xVg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/qjO8l5uNunE/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/qjO8l5uNunE?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 104, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache5.c.youtube.com/CiILENy73wIaGQlxuo2bl7wzqhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 104, + "yt$format": 1 + }, + { + "url": "rtsp://v3.cache8.c.youtube.com/CiILENy73wIaGQlxuo2bl7wzqhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 104, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "scarletnationtv", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "scarletnationtv" + } + ], + "media$description": { + "$t": "Rutgers offensive tackles RJ Dill and Kaleb Johnson talk Rutgers football.", + "type": "plain" + }, + "media$keywords": { + "$t": "RJ Dill, Kaleb Johnson, Scarlet Nation, Rutgers football" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=qjO8l5uNunE&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/qjO8l5uNunE/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:52", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/qjO8l5uNunE/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/qjO8l5uNunE/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/qjO8l5uNunE/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:26", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/qjO8l5uNunE/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:52", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/qjO8l5uNunE/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:18", + "yt$name": "end" + } + ], + "media$title": { + "$t": "RJ Dill and Kaleb Johnson interviews", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "104" + }, + "yt$uploaded": { + "$t": "2012-04-16T05:02:00.000Z" + }, + "yt$videoid": { + "$t": "qjO8l5uNunE" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "3" + } + }, + { + "gd$etag": "W/\"C04HRH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:C6t6gKz_nqA" + }, + "published": { + "$t": "2012-04-16T04:52:15.000Z" + }, + "updated": { + "$t": "2012-04-16T04:52:15.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Education", + "label": "Education" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Larry" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "romano" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "park" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "saturday" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "league" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "cell" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "phone" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "usage" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "talking" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "and" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "catching" + } + ], + "title": { + "$t": "larry romano on the phone making a 1st down completion saturday football league" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/C6t6gKz_nqA?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=C6t6gKz_nqA&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=C6t6gKz_nqA" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA?v=2" + } + ], + "author": [ + { + "name": { + "$t": "namnamer" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/namnamer" + }, + "yt$userId": { + "$t": "Pg1Kgppp1H57d15BSZgA-w" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/C6t6gKz_nqA/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Education", + "label": "Education", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/C6t6gKz_nqA?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 289, + "yt$format": 5 + }, + { + "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQmgnv-sgHqrCxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 289, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache3.c.youtube.com/CiILENy73wIaGQmgnv-sgHqrCxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 289, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "namnamer", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "namnamer" + } + ], + "media$description": { + "$t": "It's illegal to talk on the phone while driving a car but driving down field... it's still legal in park football to talk while playing. not recommended unless you are a pro like Larry but...", + "type": "plain" + }, + "media$keywords": { + "$t": "Larry, romano, park, football, saturday, league, cell, phone, usage, talking, and, catching" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=C6t6gKz_nqA&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/default.jpg", + "height": 90, + "width": 120, + "time": "00:02:24.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:12.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/2.jpg", + "height": 90, + "width": 120, + "time": "00:02:24.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/C6t6gKz_nqA/3.jpg", + "height": 90, + "width": 120, + "time": "00:03:36.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "larry romano on the phone making a 1st down completion saturday football league", + "type": "plain" + }, + "yt$duration": { + "seconds": "289" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:52:15.000Z" + }, + "yt$videoid": { + "$t": "C6t6gKz_nqA" + } + } + }, + { + "gd$etag": "W/\"C04ERn47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:htHKUbXYw2M" + }, + "published": { + "$t": "2012-04-16T04:51:47.000Z" + }, + "updated": { + "$t": "2012-04-16T04:51:47.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Comedy", + "label": "Comedy" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "FF" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Jeffery" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "and" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Preston" + } + ], + "title": { + "$t": "FF introducing Jeffery and Preston Irving" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/htHKUbXYw2M?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=htHKUbXYw2M&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=htHKUbXYw2M" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M?v=2" + } + ], + "author": [ + { + "name": { + "$t": "thehuckabee182" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/thehuckabee182" + }, + "yt$userId": { + "$t": "rnahI2jjsVsjwX9OQCvPlA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/htHKUbXYw2M/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Comedy", + "label": "Comedy", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/htHKUbXYw2M?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 146, + "yt$format": 5 + }, + { + "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQljw9i1UcrRhhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 146, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQljw9i1UcrRhhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 146, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "thehuckabee182", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "thehuckabee182" + } + ], + "media$description": { + "$t": "A kickass trailer of an upcoming fantasy football film. Looks to be the funniest film ever. Introducing the characters Jeffery and Preston Irving.", + "type": "plain" + }, + "media$keywords": { + "$t": "FF, Jeffery, and, Preston" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=htHKUbXYw2M&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/htHKUbXYw2M/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:13", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/htHKUbXYw2M/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/htHKUbXYw2M/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/htHKUbXYw2M/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:36.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/htHKUbXYw2M/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:13", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/htHKUbXYw2M/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:49.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "FF introducing Jeffery and Preston Irving", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "146" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:51:47.000Z" + }, + "yt$videoid": { + "$t": "htHKUbXYw2M" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "3" + } + }, + { + "gd$etag": "W/\"C08NR347eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:QUxE8dfrSf8" + }, + "published": { + "$t": "2012-04-16T04:51:36.000Z" + }, + "updated": { + "$t": "2012-04-16T04:51:36.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "football" + } + ], + "title": { + "$t": "ThundersU16-2012-04-15.MPG" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/QUxE8dfrSf8?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=QUxE8dfrSf8&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=QUxE8dfrSf8" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8?v=2" + } + ], + "author": [ + { + "name": { + "$t": "8960Krogsager" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/8960Krogsager" + }, + "yt$userId": { + "$t": "OkaIPe6KmLmVNKzzuzT-tA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/QUxE8dfrSf8/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/QUxE8dfrSf8?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 47, + "yt$format": 5 + }, + { + "url": "rtsp://v2.cache1.c.youtube.com/CiILENy73wIaGQn_SevX8URMQRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 47, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQn_SevX8URMQRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 47, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "8960krogsager", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "8960Krogsager" + } + ], + "media$description": { + "$t": "U16 American Football Randers Thunder vs Herning Hawks: 6-0 15. april 2012", + "type": "plain" + }, + "media$keywords": { + "$t": "football" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=QUxE8dfrSf8&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:23.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:11.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:23.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/QUxE8dfrSf8/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:35.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "ThundersU16-2012-04-15.MPG", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "47" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:51:36.000Z" + }, + "yt$videoid": { + "$t": "QUxE8dfrSf8" + } + } + }, + { + "gd$etag": "W/\"C0UDQX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:q1-elpWAAoo" + }, + "published": { + "$t": "2012-04-16T04:41:10.000Z" + }, + "updated": { + "$t": "2012-04-16T04:41:10.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "college football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "tulsa golden hurricans" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "tulsa football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "GJ Kinne" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "wide receiver" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "quarter back" + } + ], + "title": { + "$t": "Landon Finton 2012 Football Highlights" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/q1-elpWAAoo?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=q1-elpWAAoo&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=q1-elpWAAoo" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Ryan Edwards" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/saGhMa5XGVHl02wfLNEy7g" + }, + "yt$userId": { + "$t": "saGhMa5XGVHl02wfLNEy7g" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/q1-elpWAAoo/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/q1-elpWAAoo?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 94, + "yt$format": 5 + }, + { + "url": "rtsp://v2.cache3.c.youtube.com/CiILENy73wIaGQmKAoCVlp5fqxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 94, + "yt$format": 1 + }, + { + "url": "rtsp://v1.cache1.c.youtube.com/CiILENy73wIaGQmKAoCVlp5fqxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 94, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "saGhMa5XGVHl02wfLNEy7g", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Ryan Edwards" + } + ], + "media$description": { + "$t": "7 year old Landon Finton football highlights", + "type": "plain" + }, + "media$keywords": { + "$t": "football, college football, tulsa golden hurricans, tulsa football, GJ Kinne, wide receiver, quarter back" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=q1-elpWAAoo&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/q1-elpWAAoo/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:47", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/q1-elpWAAoo/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/q1-elpWAAoo/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/q1-elpWAAoo/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:23.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/q1-elpWAAoo/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:47", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/q1-elpWAAoo/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:10.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Landon Finton 2012 Football Highlights", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "94" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:41:10.000Z" + }, + "yt$videoid": { + "$t": "q1-elpWAAoo" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "1" + } + }, + { + "gd$etag": "W/\"CkQBQn47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:3W1ya1FqhCU" + }, + "published": { + "$t": "2012-04-16T04:25:53.000Z" + }, + "updated": { + "$t": "2012-04-16T04:25:53.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Games", + "label": "Gaming" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "The" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Rumble" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Fish" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ザ・ランブルフィッシュ" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ATOMISWAVE" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "SAMMY" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ARCADE" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "CAB" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "GAME" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "FIGHTING" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "BEAT" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "UM" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "UP" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "KUNG" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "FU" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ca" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "HD" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": ".GAME" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "PLAY" + } + ], + "title": { + "$t": "The Rumble Fish ザ・ランブルフィッシュ game play atomiswave cab & pics HD" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/3W1ya1FqhCU?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=3W1ya1FqhCU&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=3W1ya1FqhCU" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU?v=2" + } + ], + "author": [ + { + "name": { + "$t": "dzzmoo1" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/dzzmoo1" + }, + "yt$userId": { + "$t": "DDLrqLjO1egeeRdx8X4s8A" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "moderated" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "denied" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/3W1ya1FqhCU/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Games", + "label": "Gaming", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/3W1ya1FqhCU?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 101, + "yt$format": 5 + }, + { + "url": "rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQklhGpRa3Jt3RMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 101, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache4.c.youtube.com/CiILENy73wIaGQklhGpRa3Jt3RMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 101, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "dzzmoo1", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "dzzmoo1" + } + ], + "media$description": { + "$t": "The Rumble Fish (ザ・ランブルフィッシュ?) is a 2D fighting game developed by Dimps and published by Sega Sammy Holdings. It was originally released in 2004 for the Atomiswave arcade platform and was later ported to the PlayStation 2 on March 17, 2005. A sequel, The Rumble Fish 2, has since been developed.Atomiswave game play and cab (HD) and pics part 0.2 Atomiswave games Demolish Fist (Sammy / Dimps) Dirty Pigskin Football (Play Mechanix) Dolphin Blue (Sammy) Extreme Hunting (Sammy) Extreme Hunting 2 Tournament Edition (Sega Amusement USA) Faster Than Speed (Sammy) Fist of the North Star (Hokuto No Ken) (Sega / ARC System Works) Guilty Gear Isuka (Sammy / ARC System Works) Guilty Gear X Version 1.5 (Sammy / ARC System Works) Hustle Tamaire Kyousou (Animal Basket) (Sammy) Knights of Valour: The Seven Spirits (Sammy / IGS) Maximum Speed (Sammy) Metal Slug 6 (Sega / SNK Playmore) Neo Geo Battle Coliseum (Sega / SNK Playmore) Ranger Mission (Sammy) Salaried Worker Golden Taro (Sammy) Samurai Shodown VI (Sega / SNK Playmore) Sega Bass Fishing Challenge (Sega Amusement USA) Sega Clay Challenge (Sega Amusement USA) Sports Shooting USA (Sammy) The King of Fighters Neowave (Sammy / SNK Playmore) The King of Fighters XI (Sega / SNK Playmore) The Rumble Fish (Sammy / Dimps) The Rumble Fish 2 (Sega / Dimps) Victory Furlong - Horse Racing (Sammy) [edit] Unreleased Chase 1929 (Sammy) Force Five (Sammy) Kenju (Sammy / DreamFactory) Premier Eleven (Sammy / Dimps) Sushi Bar (Sammy)", + "type": "plain" + }, + "media$keywords": { + "$t": "The, Rumble, Fish, ザ・ランブルフィッシュ, ATOMISWAVE, SAMMY, ARCADE, CAB, GAME, FIGHTING, BEAT, UM, UP, KUNG, FU, ca, HD, .GAME, PLAY" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=3W1ya1FqhCU&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:50.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:25.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:50.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/3W1ya1FqhCU/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:15.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "The Rumble Fish ザ・ランブルフィッシュ game play atomiswave cab & pics HD", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "101" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:25:53.000Z" + }, + "yt$videoid": { + "$t": "3W1ya1FqhCU" + } + }, + "yt$statistics": { + "favoriteCount": "2", + "viewCount": "27" + } + }, + { + "gd$etag": "W/\"A0IMSX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:U_Lw8ccft9U" + }, + "published": { + "$t": "2012-04-16T04:13:08.000Z" + }, + "updated": { + "$t": "2012-04-16T04:13:08.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Sport" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Tunisie" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Professionnalisme" + } + ], + "title": { + "$t": "Tunisia Sport (2/10) _ Football Professionnel en Tunisie 26-02-2010.MPG" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/U_Lw8ccft9U?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=U_Lw8ccft9U&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=U_Lw8ccft9U" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U?v=2" + } + ], + "author": [ + { + "name": { + "$t": "amoezaineb" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/amoezaineb" + }, + "yt$userId": { + "$t": "EKm4GFx69vsS69IMZJ1crQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/U_Lw8ccft9U/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/U_Lw8ccft9U?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 600, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache6.c.youtube.com/CiILENy73wIaGQnVtx_H8fDyUxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 600, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache5.c.youtube.com/CiILENy73wIaGQnVtx_H8fDyUxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 600, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "amoezaineb", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "amoezaineb" + } + ], + "media$description": { + "$t": "Épisode 2/10 : Professionnalisme/ compétence-habileté + mentalité-sérieux + éthique-responsabilité", + "type": "plain" + }, + "media$keywords": { + "$t": "Sport, Tunisie, Football, Professionnalisme" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=U_Lw8ccft9U&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/default.jpg", + "height": 90, + "width": 120, + "time": "00:05:00", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/1.jpg", + "height": 90, + "width": 120, + "time": "00:02:30", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/2.jpg", + "height": 90, + "width": 120, + "time": "00:05:00", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/U_Lw8ccft9U/3.jpg", + "height": 90, + "width": 120, + "time": "00:07:30", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Tunisia Sport (2/10) _ Football Professionnel en Tunisie 26-02-2010.MPG", + "type": "plain" + }, + "yt$duration": { + "seconds": "600" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:13:08.000Z" + }, + "yt$videoid": { + "$t": "U_Lw8ccft9U" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "1" + } + }, + { + "gd$etag": "W/\"Ak4GQH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:g6j2GbE95Hg" + }, + "published": { + "$t": "2012-04-16T04:08:03.000Z" + }, + "updated": { + "$t": "2012-04-16T06:48:41.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "el" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "football" + } + ], + "title": { + "$t": "el football.AVI" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/g6j2GbE95Hg?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=g6j2GbE95Hg&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=g6j2GbE95Hg" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg?v=2" + } + ], + "author": [ + { + "name": { + "$t": "louinex" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/louinex" + }, + "yt$userId": { + "$t": "PSot9M-Q0Da3Gq8SPGUOcA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/g6j2GbE95Hg/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/g6j2GbE95Hg?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 135, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQl45D2xGfaogxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 135, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache5.c.youtube.com/CiILENy73wIaGQl45D2xGfaogxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 135, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "louinex", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "louinex" + } + ], + "media$description": { + "$t": "", + "type": "plain" + }, + "media$keywords": { + "$t": "el, football" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=g6j2GbE95Hg&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:07.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:33.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:07.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/g6j2GbE95Hg/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:41.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "el football.AVI", + "type": "plain" + }, + "yt$duration": { + "seconds": "135" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:08:03.000Z" + }, + "yt$videoid": { + "$t": "g6j2GbE95Hg" + } + } + }, + { + "gd$etag": "W/\"Ak4BQH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:5xHBXPswmcw" + }, + "published": { + "$t": "2012-04-16T04:02:31.000Z" + }, + "updated": { + "$t": "2012-04-16T04:02:31.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Ramona" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + } + ], + "title": { + "$t": "Marc Sutton #78" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/5xHBXPswmcw?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=5xHBXPswmcw&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/5xHBXPswmcw/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/5xHBXPswmcw/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=5xHBXPswmcw" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/5xHBXPswmcw?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Ramonaramsfootball" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/Ramonaramsfootball" + }, + "yt$userId": { + "$t": "JE_miX30awxqh9o0Tv1nFw" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "denied" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/5xHBXPswmcw?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 386, + "yt$format": 5 + }, + { + "url": "rtsp://v4.cache4.c.youtube.com/CiILENy73wIaGQnMmTD7XMER5xMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 386, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache8.c.youtube.com/CiILENy73wIaGQnMmTD7XMER5xMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 386, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "ramonaramsfootball", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Ramonaramsfootball" + } + ], + "media$description": { + "$t": "Marc Sutton #78 Class of 2012, National Football Federation Award Winner, All Inland Empire First Team for 2 years, Position: Tackle Height:6'4\" Weight:265", + "type": "plain" + }, + "media$keywords": { + "$t": "Ramona, Football" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=5xHBXPswmcw&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/5xHBXPswmcw/default.jpg", + "height": 90, + "width": 120, + "time": "00:03:13", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/5xHBXPswmcw/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/5xHBXPswmcw/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/5xHBXPswmcw/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:36.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/5xHBXPswmcw/2.jpg", + "height": 90, + "width": 120, + "time": "00:03:13", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/5xHBXPswmcw/3.jpg", + "height": 90, + "width": 120, + "time": "00:04:49.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Marc Sutton #78", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "386" + }, + "yt$uploaded": { + "$t": "2012-04-16T04:02:31.000Z" + }, + "yt$videoid": { + "$t": "5xHBXPswmcw" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "3" + } + }, + { + "gd$etag": "W/\"AkACQn47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:mTkisZG6mcU" + }, + "published": { + "$t": "2012-04-16T03:59:23.000Z" + }, + "updated": { + "$t": "2012-04-16T03:59:23.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Nonprofit", + "label": "Nonprofits & Activism" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Rancho" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Cucamonga" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Middle" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "School" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Advanced" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Band" + } + ], + "title": { + "$t": "Joseph @ Colony High 10-2-11.mp4" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/mTkisZG6mcU?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=mTkisZG6mcU&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=mTkisZG6mcU" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU?v=2" + } + ], + "author": [ + { + "name": { + "$t": "majicmiracles" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/majicmiracles" + }, + "yt$userId": { + "$t": "nRO7en25sxio2jY7CiyDeQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/mTkisZG6mcU/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Nonprofit", + "label": "Nonprofits & Activism", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/mTkisZG6mcU?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 21, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQnFmbqRsSI5mRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 21, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQnFmbqRsSI5mRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 21, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "majicmiracles", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "majicmiracles" + } + ], + "media$description": { + "$t": "Football Game - Drumming from the Bleachers", + "type": "plain" + }, + "media$keywords": { + "$t": "Rancho, Cucamonga, Middle, School, Advanced, Band" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=mTkisZG6mcU&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/mTkisZG6mcU/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:10.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/mTkisZG6mcU/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/mTkisZG6mcU/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/mTkisZG6mcU/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:05.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/mTkisZG6mcU/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:10.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/mTkisZG6mcU/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:15.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Joseph @ Colony High 10-2-11.mp4", + "type": "plain" + }, + "yt$duration": { + "seconds": "21" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:59:23.000Z" + }, + "yt$videoid": { + "$t": "mTkisZG6mcU" + } + } + }, + { + "gd$etag": "W/\"AkQHRH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:XnRokBqZBrc" + }, + "published": { + "$t": "2012-04-16T03:52:15.000Z" + }, + "updated": { + "$t": "2012-04-16T03:52:15.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "aaronfootball2" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Outdoor Sports" + } + ], + "title": { + "$t": "Aaron Playing Football" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/XnRokBqZBrc?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=XnRokBqZBrc&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=XnRokBqZBrc" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc?v=2" + } + ], + "author": [ + { + "name": { + "$t": "lauraellen32" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/lauraellen32" + }, + "yt$userId": { + "$t": "hiO6pvzA3blJzKG_-UVaFQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/XnRokBqZBrc/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/XnRokBqZBrc?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 115, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache4.c.youtube.com/CiILENy73wIaGQm3BpkakGh0XhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 115, + "yt$format": 1 + }, + { + "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQm3BpkakGh0XhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 115, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "lauraellen32", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "lauraellen32" + } + ], + "media$description": { + "$t": "October 2011 - He's number 48", + "type": "plain" + }, + "media$keywords": { + "$t": "aaronfootball2, Outdoor Sports" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=XnRokBqZBrc&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/XnRokBqZBrc/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:57.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/XnRokBqZBrc/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/XnRokBqZBrc/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/XnRokBqZBrc/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:28.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/XnRokBqZBrc/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:57.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/XnRokBqZBrc/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:26.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Aaron Playing Football", + "type": "plain" + }, + "yt$duration": { + "seconds": "115" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:52:15.000Z" + }, + "yt$videoid": { + "$t": "XnRokBqZBrc" + } + } + }, + { + "gd$etag": "W/\"AkYAR347eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:Weto5t-jNrE" + }, + "published": { + "$t": "2012-04-16T03:49:06.000Z" + }, + "updated": { + "$t": "2012-04-16T03:49:06.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Diablos" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Spartans" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Mission" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Viejo" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "De" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "La" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Salle" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "High" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "School" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "2005" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "sports" + } + ], + "title": { + "$t": "Giacomo Vitko's HS Football Highlights Pt. 3" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/Weto5t-jNrE?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=Weto5t-jNrE&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=Weto5t-jNrE" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Me4678" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/Me4678" + }, + "yt$userId": { + "$t": "qCTTrmhVWvFLqKAU4k0zwQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/Weto5t-jNrE/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/Weto5t-jNrE?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 69, + "yt$format": 5 + }, + { + "url": "rtsp://v8.cache4.c.youtube.com/CiILENy73wIaGQmxNqPf5mjrWRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 69, + "yt$format": 1 + }, + { + "url": "rtsp://v1.cache2.c.youtube.com/CiILENy73wIaGQmxNqPf5mjrWRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 69, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "me4678", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Me4678" + } + ], + "media$description": { + "$t": "Mission Viejo DT-72 Vs De La Salle", + "type": "plain" + }, + "media$keywords": { + "$t": "Diablos, Spartans, Mission, Viejo, De, La, Salle, Football, High, School, 2005, sports" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=Weto5t-jNrE&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/Weto5t-jNrE/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:34.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/Weto5t-jNrE/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/Weto5t-jNrE/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/Weto5t-jNrE/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:17.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/Weto5t-jNrE/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:34.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/Weto5t-jNrE/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:51.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Giacomo Vitko's HS Football Highlights Pt. 3", + "type": "plain" + }, + "yt$duration": { + "seconds": "69" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:49:06.000Z" + }, + "yt$videoid": { + "$t": "Weto5t-jNrE" + } + } + }, + { + "gd$etag": "W/\"AkYDQX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:NS5e35tTD6k" + }, + "published": { + "$t": "2012-04-16T03:49:30.000Z" + }, + "updated": { + "$t": "2012-04-16T03:49:30.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Jed Brummett" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Carroll County Crushing Crows" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Indoor Football" + } + ], + "title": { + "$t": "Jed Brummett - Indoor Football April 15 2012 - 1st TD Pass Vs. Crushing Crows East" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/NS5e35tTD6k?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=NS5e35tTD6k&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=NS5e35tTD6k" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k?v=2" + } + ], + "author": [ + { + "name": { + "$t": "rodgerraven" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/rodgerraven" + }, + "yt$userId": { + "$t": "1dfHFnOQ87E2lcXt53TWXg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/NS5e35tTD6k/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/NS5e35tTD6k?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 16, + "yt$format": 5 + }, + { + "url": "rtsp://v3.cache4.c.youtube.com/CiILENy73wIaGQmpD1Ob314uNRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 16, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQmpD1Ob314uNRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 16, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "rodgerraven", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "rodgerraven" + } + ], + "media$description": { + "$t": "Crushing Crows North lost a tough fought game vs Crushing Crows East 20-12", + "type": "plain" + }, + "media$keywords": { + "$t": "Jed Brummett, Carroll County Crushing Crows, Indoor Football" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=NS5e35tTD6k&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/NS5e35tTD6k/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:08", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/NS5e35tTD6k/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/NS5e35tTD6k/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/NS5e35tTD6k/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:04", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/NS5e35tTD6k/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:08", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/NS5e35tTD6k/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:12", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Jed Brummett - Indoor Football April 15 2012 - 1st TD Pass Vs. Crushing Crows East", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "16" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:49:30.000Z" + }, + "yt$videoid": { + "$t": "NS5e35tTD6k" + } + } + }, + { + "gd$etag": "W/\"DU4GSH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:H6IjXIotjWI" + }, + "published": { + "$t": "2012-04-16T03:45:29.000Z" + }, + "updated": { + "$t": "2012-04-16T03:45:29.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Blake" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "First" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Pick" + } + ], + "title": { + "$t": "Blake First Tackle Football Pick vs Bulldogs 7-6 Win" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/H6IjXIotjWI?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=H6IjXIotjWI&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=H6IjXIotjWI" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI?v=2" + } + ], + "author": [ + { + "name": { + "$t": "BlakeLilFitzStaley" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/BlakeLilFitzStaley" + }, + "yt$userId": { + "$t": "XcJFG0qDgG0PzRMTwd6Wqg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/H6IjXIotjWI/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/H6IjXIotjWI?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 17, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache2.c.youtube.com/CiILENy73wIaGQlijS2KXCOiHxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 17, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache7.c.youtube.com/CiILENy73wIaGQlijS2KXCOiHxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 17, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "blakelilfitzstaley", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "BlakeLilFitzStaley" + } + ], + "media$description": { + "$t": "", + "type": "plain" + }, + "media$keywords": { + "$t": "Blake, First, Pick" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=H6IjXIotjWI&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/H6IjXIotjWI/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:08.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/H6IjXIotjWI/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/H6IjXIotjWI/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/H6IjXIotjWI/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:04.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/H6IjXIotjWI/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:08.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/H6IjXIotjWI/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:12.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Blake First Tackle Football Pick vs Bulldogs 7-6 Win", + "type": "plain" + }, + "yt$duration": { + "seconds": "17" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:45:29.000Z" + }, + "yt$videoid": { + "$t": "H6IjXIotjWI" + } + } + }, + { + "gd$etag": "W/\"DEMHQX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:7MckFDAUJXQ" + }, + "published": { + "$t": "2012-04-16T03:20:30.000Z" + }, + "updated": { + "$t": "2012-04-16T03:20:30.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Anatomy" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Final" + } + ], + "title": { + "$t": "Anatomy Final.mp4" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/7MckFDAUJXQ?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=7MckFDAUJXQ&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=7MckFDAUJXQ" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Jacobr158" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/Jacobr158" + }, + "yt$userId": { + "$t": "odOMv6k7vbnl_tZDBCs5kw" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/7MckFDAUJXQ/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/7MckFDAUJXQ?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 219, + "yt$format": 5 + }, + { + "url": "rtsp://v5.cache7.c.youtube.com/CiILENy73wIaGQl0JRQwFCTH7BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 219, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQl0JRQwFCTH7BMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 219, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "jacobr158", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Jacobr158" + } + ], + "media$description": { + "$t": "This video describes the muscles used in throwing a football how to improve them, and what throwing a football looks like.", + "type": "plain" + }, + "media$keywords": { + "$t": "Anatomy, Final" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=7MckFDAUJXQ&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:49.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:54.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:49.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/7MckFDAUJXQ/3.jpg", + "height": 90, + "width": 120, + "time": "00:02:44.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Anatomy Final.mp4", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "219" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:20:30.000Z" + }, + "yt$videoid": { + "$t": "7MckFDAUJXQ" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "2" + } + }, + { + "gd$etag": "W/\"DEMESX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:m_NVZ7A-h6E" + }, + "published": { + "$t": "2012-04-16T03:20:08.000Z" + }, + "updated": { + "$t": "2012-04-16T03:20:08.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + } + ], + "title": { + "$t": "shoe and football=swagg!!!" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/m_NVZ7A-h6E?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=m_NVZ7A-h6E&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=m_NVZ7A-h6E" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E?v=2" + } + ], + "author": [ + { + "name": { + "$t": "e3swagg" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/e3swagg" + }, + "yt$userId": { + "$t": "u9E1DgtYmsB_LGsvsX3rWQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/m_NVZ7A-h6E/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/m_NVZ7A-h6E?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 15, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQmhhz6wZ1XzmxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 15, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache1.c.youtube.com/CiILENy73wIaGQmhhz6wZ1XzmxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 15, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "e3swagg", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "e3swagg" + } + ], + "media$description": { + "$t": "my shoe and a football can talk. Lol", + "type": "plain" + }, + "media$keywords": {}, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=m_NVZ7A-h6E&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:07.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:03.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:07.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/m_NVZ7A-h6E/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:11.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "shoe and football=swagg!!!", + "type": "plain" + }, + "yt$duration": { + "seconds": "15" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:20:08.000Z" + }, + "yt$videoid": { + "$t": "m_NVZ7A-h6E" + } + } + }, + { + "gd$etag": "W/\"DEQMQX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:dxCDd9d85eQ" + }, + "published": { + "$t": "2012-04-16T03:19:40.000Z" + }, + "updated": { + "$t": "2012-04-16T03:19:40.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "lucy" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "camrae" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "012" + } + ], + "title": { + "$t": "Just us a finchel love story ep 1" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/dxCDd9d85eQ?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=dxCDd9d85eQ&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=dxCDd9d85eQ" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Mackenzie Clearwater" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/y5Xccjwl41lISaYrcAIi_A" + }, + "yt$userId": { + "$t": "y5Xccjwl41lISaYrcAIi_A" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/dxCDd9d85eQ/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/dxCDd9d85eQ?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 7, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache5.c.youtube.com/CiILENy73wIaGQnk5XzXd4MQdxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 7, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQnk5XzXd4MQdxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 7, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "y5Xccjwl41lISaYrcAIi_A", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Mackenzie Clearwater" + } + ], + "media$description": { + "$t": "Plot: Finn has a huge crush on Rachel but Finn and Rachel are best friends. Rachel and Sam are going out but Rachel likes Finn. Rachel is not that cool but finn is in the caption of the football team, Finn and Rachel have been best friends since they were 5 they are both 15 when they were little they they promised to be each other's first kiss On with the story At School f-hey Rach u want to come round tonight r-hey yer why not f- sweet r-ur such a nerd f- u bet ya r- oh god I cant be seen with a nerd latter (about to walk a way but finn stands in frount of her) f- realy well then (hugs her ) Q-awww how cute are u two final going out yay that means that Santana ows me $30 r- QUINN f- its great to know that our friends are making bets about our love life (btw Rachel and Quinn are friends) R-well where are very close friends F-(gets a bit sad at the word Friend ) Q- well it was just the glee culb R+F-we need to talk to them Q-(runs away) R- where is she going F- who cears R- where were we ill be at ur around 4 the end sorry it was short the next one will be longer no copy right intende", + "type": "plain" + }, + "media$keywords": { + "$t": "lucy, camrae, 012" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=dxCDd9d85eQ&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:03.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:01.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:03.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/dxCDd9d85eQ/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:05.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Just us a finchel love story ep 1", + "type": "plain" + }, + "yt$duration": { + "seconds": "7" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:19:40.000Z" + }, + "yt$videoid": { + "$t": "dxCDd9d85eQ" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "2" + } + }, + { + "gd$etag": "W/\"DEQHRH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:Yo8PPfYYzYo" + }, + "published": { + "$t": "2012-04-16T03:18:55.000Z" + }, + "updated": { + "$t": "2012-04-16T03:18:55.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Entertainment", + "label": "Entertainment" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "All Pro Football 2k8" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "2k sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "visual concepts" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "the catch" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Joe Montana" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Herman Moore" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "San Francisco 49ers" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Detroit Lions" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "NFL" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Google" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Yahoo" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "wikipedia" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "bing" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "PS3" + } + ], + "title": { + "$t": "All Pro Football 2K8 Spectacular Catch!!! Joe Montana to Herman Moore" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/Yo8PPfYYzYo?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=Yo8PPfYYzYo&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=Yo8PPfYYzYo" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo?v=2" + } + ], + "author": [ + { + "name": { + "$t": "tjglendinning" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/tjglendinning" + }, + "yt$userId": { + "$t": "1IFS_bkPOus2ZVbdZdPELQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/Yo8PPfYYzYo/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Entertainment", + "label": "Entertainment", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/Yo8PPfYYzYo?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 33, + "yt$format": 5 + }, + { + "url": "rtsp://v5.cache5.c.youtube.com/CiILENy73wIaGQmKzRj2PQ-PYhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 33, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache6.c.youtube.com/CiILENy73wIaGQmKzRj2PQ-PYhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 33, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "tjglendinning", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "tjglendinning" + } + ], + "media$description": { + "$t": "Awesome catch... The 2K Series of football games are still better than modern games in nearly all aspects. The graphics are not quite on par, but this game was made in 2007 and looks way better than Madden 10 or possibly even 11 graphically. The presentation is still top notch.", + "type": "plain" + }, + "media$keywords": { + "$t": "All Pro Football 2k8, 2k sports, visual concepts, the catch, Joe Montana, Herman Moore, San Francisco 49ers, Detroit Lions, NFL, Google, Yahoo, wikipedia, bing, PS3" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=Yo8PPfYYzYo&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:16.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:08.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:16.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/Yo8PPfYYzYo/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:24.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "All Pro Football 2K8 Spectacular Catch!!! Joe Montana to Herman Moore", + "type": "plain" + }, + "yt$duration": { + "seconds": "33" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:18:55.000Z" + }, + "yt$videoid": { + "$t": "Yo8PPfYYzYo" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "4" + } + }, + { + "gd$etag": "W/\"DEUBRH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:NMYpMDpId-E" + }, + "published": { + "$t": "2012-04-16T03:17:35.000Z" + }, + "updated": { + "$t": "2012-04-16T03:17:35.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Education", + "label": "Education" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Adult" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ABA" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Therapy" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Independent Leisure skills" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Scrapbooking" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Special needs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Autism" + } + ], + "title": { + "$t": "Leisure Skills: Scrapbooking" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/NMYpMDpId-E?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=NMYpMDpId-E&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NMYpMDpId-E/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=NMYpMDpId-E" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NMYpMDpId-E?v=2" + } + ], + "author": [ + { + "name": { + "$t": "ShapeOfBehavior" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/ShapeOfBehavior" + }, + "yt$userId": { + "$t": "tGXXyf0lq885PjT9avLtJA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "denied" + }, + { + "action": "commentVote", + "permission": "denied" + }, + { + "action": "videoRespond", + "permission": "denied" + }, + { + "action": "rate", + "permission": "denied" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Education", + "label": "Education", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/NMYpMDpId-E?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 16, + "yt$format": 5 + }, + { + "url": "rtsp://v4.cache4.c.youtube.com/CiILENy73wIaGQnhd0g6MCnGNBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 16, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQnhd0g6MCnGNBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 16, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "shapeofbehavior", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "ShapeOfBehavior" + } + ], + "media$description": { + "$t": "The Shape focuses on building leisure skills around patient preference and choice in the young adult program. This young adult likes football and he enjoys the floppy paper and the stickers allow the incoporation of more fine motor development. Building independent leisure skills promotes independence and is crticial for better quality of life.", + "type": "plain" + }, + "media$keywords": { + "$t": "Adult, ABA, Therapy, Independent Leisure skills, Scrapbooking, Special needs, Autism" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=NMYpMDpId-E&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/NMYpMDpId-E/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:08", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/NMYpMDpId-E/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/NMYpMDpId-E/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/NMYpMDpId-E/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:04", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/NMYpMDpId-E/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:08", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/NMYpMDpId-E/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:12", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Leisure Skills: Scrapbooking", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "16" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:17:35.000Z" + }, + "yt$videoid": { + "$t": "NMYpMDpId-E" + } + } + }, + { + "gd$etag": "W/\"DEUAQ347eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:NVEvZmggNKM" + }, + "published": { + "$t": "2012-04-16T03:17:22.000Z" + }, + "updated": { + "$t": "2012-04-16T03:17:22.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "JUSTIN" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "BIEBER" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ES" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "DEL" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "BARCA!!!" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "youtube" + } + ], + "title": { + "$t": "JUSTIN BIEBER ES DEL BARCA!!! - YouTube.flv" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/NVEvZmggNKM?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=NVEvZmggNKM&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=NVEvZmggNKM" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM?v=2" + } + ], + "author": [ + { + "name": { + "$t": "JUSTIN startpop" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/WZNMChP4aOldvORBIFIQTA" + }, + "yt$userId": { + "$t": "WZNMChP4aOldvORBIFIQTA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/NVEvZmggNKM/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/NVEvZmggNKM?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 169, + "yt$format": 5 + }, + { + "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQmjNCBoZi9RNRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 169, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQmjNCBoZi9RNRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 169, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "WZNMChP4aOldvORBIFIQTA", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "JUSTIN startpop" + } + ], + "media$description": { + "$t": "Justin Bieber jugando football con la camisera del barca vamosss Justin goo goo ...", + "type": "plain" + }, + "media$keywords": { + "$t": "JUSTIN, BIEBER, ES, DEL, BARCA!!!, youtube" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=NVEvZmggNKM&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/NVEvZmggNKM/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:24.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/NVEvZmggNKM/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/NVEvZmggNKM/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/NVEvZmggNKM/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:42.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/NVEvZmggNKM/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:24.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/NVEvZmggNKM/3.jpg", + "height": 90, + "width": 120, + "time": "00:02:06.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "JUSTIN BIEBER ES DEL BARCA!!! - YouTube.flv", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "169" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:17:22.000Z" + }, + "yt$videoid": { + "$t": "NVEvZmggNKM" + } + } + }, + { + "gd$etag": "W/\"D0QMQH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:fe9lRnedv2U" + }, + "published": { + "$t": "2012-04-16T03:03:01.000Z" + }, + "updated": { + "$t": "2012-04-16T03:03:01.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "talented freshmen" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "quarterback" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "highlights" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "valuable" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "nfl" + } + ], + "title": { + "$t": "Pano Tiatia 2011 Football Highlights" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/fe9lRnedv2U?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=fe9lRnedv2U&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=fe9lRnedv2U" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U?v=2" + } + ], + "author": [ + { + "name": { + "$t": "lstiax2" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/lstiax2" + }, + "yt$userId": { + "$t": "jWHn5L0Cf4y2XozrkEG8tA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "denied" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/fe9lRnedv2U/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/fe9lRnedv2U?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 234, + "yt$format": 5 + }, + { + "url": "rtsp://v4.cache8.c.youtube.com/CiILENy73wIaGQllv513RmXvfRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 234, + "yt$format": 1 + }, + { + "url": "rtsp://v5.cache8.c.youtube.com/CiILENy73wIaGQllv513RmXvfRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 234, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "lstiax2", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "lstiax2" + } + ], + "media$description": { + "$t": "Pano Tiatia, Freshmen #29 Running Back | Pineview High School, St. George, Utah Ran over 1500 yards in the season.", + "type": "plain" + }, + "media$keywords": { + "$t": "Football, sports, talented freshmen, quarterback, highlights, valuable, nfl" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=fe9lRnedv2U&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/fe9lRnedv2U/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:57", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/fe9lRnedv2U/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/fe9lRnedv2U/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/fe9lRnedv2U/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:58.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/fe9lRnedv2U/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:57", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/fe9lRnedv2U/3.jpg", + "height": 90, + "width": 120, + "time": "00:02:55.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Pano Tiatia 2011 Football Highlights", + "type": "plain" + }, + "yt$duration": { + "seconds": "234" + }, + "yt$uploaded": { + "$t": "2012-04-16T03:03:01.000Z" + }, + "yt$videoid": { + "$t": "fe9lRnedv2U" + } + } + }, + { + "gd$etag": "W/\"D0YDQH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:UF4a21RDJ78" + }, + "published": { + "$t": "2012-04-16T02:59:31.000Z" + }, + "updated": { + "$t": "2012-04-16T02:59:31.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Davis Rugby" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Davis High" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Rugby" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "DC Rugby" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Utah Rugby" + } + ], + "title": { + "$t": "Davis High Rugby vs Rocky Mtn Rugby Fight.wmv" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/UF4a21RDJ78?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=UF4a21RDJ78&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=UF4a21RDJ78" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78?v=2" + } + ], + "author": [ + { + "name": { + "$t": "JayGBarton1" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/JayGBarton1" + }, + "yt$userId": { + "$t": "jS-zBAq670xAB5vg0fbE4g" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/UF4a21RDJ78/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/UF4a21RDJ78?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 79, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQm_J0NU2xpeUBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 79, + "yt$format": 1 + }, + { + "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQm_J0NU2xpeUBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 79, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "jaygbarton1", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "JayGBarton1" + } + ], + "media$description": { + "$t": "Davis High Rugby in Davis County, Utah played a game at the Davis High Football field in Kaysville, Utah. Watch Davis High School play these boys... Davis worked them in this game it was exciting to see Davis Play these boys. Because of a fight the ref called the game a draw...", + "type": "plain" + }, + "media$keywords": { + "$t": "Davis Rugby, Davis High, Rugby, DC Rugby, Utah Rugby" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=UF4a21RDJ78&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/UF4a21RDJ78/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:39.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/UF4a21RDJ78/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/UF4a21RDJ78/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/UF4a21RDJ78/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:19.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/UF4a21RDJ78/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:39.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/UF4a21RDJ78/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:59.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Davis High Rugby vs Rocky Mtn Rugby Fight.wmv", + "type": "plain" + }, + "yt$duration": { + "seconds": "79" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:59:31.000Z" + }, + "yt$videoid": { + "$t": "UF4a21RDJ78" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "2" + } + }, + { + "gd$etag": "W/\"DkAHSX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:QSmB4X6WCwU" + }, + "published": { + "$t": "2012-04-16T02:52:18.000Z" + }, + "updated": { + "$t": "2012-04-16T02:52:18.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Nikki" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Rowe" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Isaac" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Govea" + } + ], + "title": { + "$t": "Nikki Rowe Football Isaac Govea 2010" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/QSmB4X6WCwU?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=QSmB4X6WCwU&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=QSmB4X6WCwU" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU?v=2" + } + ], + "author": [ + { + "name": { + "$t": "dan100295" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/dan100295" + }, + "yt$userId": { + "$t": "F4YOrtG8Jw1dp2U4IFh10Q" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/QSmB4X6WCwU/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/QSmB4X6WCwU?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 302, + "yt$format": 5 + }, + { + "url": "rtsp://v2.cache1.c.youtube.com/CiILENy73wIaGQkFC5Z-4YEpQRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 302, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQkFC5Z-4YEpQRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 302, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "dan100295", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "dan100295" + } + ], + "media$description": { + "$t": "#21 Isaac Govea Senior Year Highlights", + "type": "plain" + }, + "media$keywords": { + "$t": "Nikki, Rowe, Football, Isaac, Govea" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=QSmB4X6WCwU&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/default.jpg", + "height": 90, + "width": 120, + "time": "00:02:31", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:15.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/2.jpg", + "height": 90, + "width": 120, + "time": "00:02:31", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/QSmB4X6WCwU/3.jpg", + "height": 90, + "width": 120, + "time": "00:03:46.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Nikki Rowe Football Isaac Govea 2010", + "type": "plain" + }, + "yt$duration": { + "seconds": "302" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:52:18.000Z" + }, + "yt$videoid": { + "$t": "QSmB4X6WCwU" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "1" + } + }, + { + "gd$etag": "W/\"DkQHSX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:TWbTiYA-g4c" + }, + "published": { + "$t": "2012-04-16T02:45:38.000Z" + }, + "updated": { + "$t": "2012-04-16T02:45:38.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Highlights" + } + ], + "title": { + "$t": "JAKE SANDERS 2011 CARROLLTON FOOTBALL HIGHLIGHTS" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/TWbTiYA-g4c?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=TWbTiYA-g4c&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=TWbTiYA-g4c" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Collier Sanders" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/IfDpsBQG7sxYY6fW4VMXww" + }, + "yt$userId": { + "$t": "IfDpsBQG7sxYY6fW4VMXww" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/TWbTiYA-g4c/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/TWbTiYA-g4c?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 242, + "yt$format": 5 + }, + { + "url": "rtsp://v7.cache6.c.youtube.com/CiILENy73wIaGQmHgz6AidNmTRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 242, + "yt$format": 1 + }, + { + "url": "rtsp://v4.cache6.c.youtube.com/CiILENy73wIaGQmHgz6AidNmTRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 242, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "IfDpsBQG7sxYY6fW4VMXww", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Collier Sanders" + } + ], + "media$description": { + "$t": "Jake Sanders 2011 football highlights - Carrollton High School Trojans Class of 2014 6'6\" 320 lbs OT/OG", + "type": "plain" + }, + "media$keywords": { + "$t": "Football, Highlights" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=TWbTiYA-g4c&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/default.jpg", + "height": 90, + "width": 120, + "time": "00:02:01", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:00.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/2.jpg", + "height": 90, + "width": 120, + "time": "00:02:01", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/TWbTiYA-g4c/3.jpg", + "height": 90, + "width": 120, + "time": "00:03:01.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "JAKE SANDERS 2011 CARROLLTON FOOTBALL HIGHLIGHTS", + "type": "plain" + }, + "yt$duration": { + "seconds": "242" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:45:38.000Z" + }, + "yt$videoid": { + "$t": "TWbTiYA-g4c" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "4" + } + }, + { + "gd$etag": "W/\"DkYDSX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:A3nrRdjtPs8" + }, + "published": { + "$t": "2012-04-16T02:42:58.000Z" + }, + "updated": { + "$t": "2012-04-16T02:42:58.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "football" + } + ], + "title": { + "$t": "cardinals flag football" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/A3nrRdjtPs8?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=A3nrRdjtPs8&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=A3nrRdjtPs8" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Samantha roberts" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/FS184ENyxC4MsxogNYxYIw" + }, + "yt$userId": { + "$t": "FS184ENyxC4MsxogNYxYIw" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/A3nrRdjtPs8/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/A3nrRdjtPs8?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 6, + "yt$format": 5 + }, + { + "url": "rtsp://v6.cache1.c.youtube.com/CiILENy73wIaGQnPPu3YRet5AxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 6, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache8.c.youtube.com/CiILENy73wIaGQnPPu3YRet5AxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 6, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "FS184ENyxC4MsxogNYxYIw", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Samantha roberts" + } + ], + "media$description": { + "$t": "Cardinals Flagfootball", + "type": "plain" + }, + "media$keywords": { + "$t": "football" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=A3nrRdjtPs8&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:03", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:01.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:03", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/A3nrRdjtPs8/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:04.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "cardinals flag football", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "6" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:42:58.000Z" + }, + "yt$videoid": { + "$t": "A3nrRdjtPs8" + } + } + }, + { + "gd$etag": "W/\"CU4EQX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:_bKFFGfhx0k" + }, + "published": { + "$t": "2012-04-16T02:38:20.000Z" + }, + "updated": { + "$t": "2012-04-16T02:38:20.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Nonprofit", + "label": "Nonprofits & Activism" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "tshirt" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Battle" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "2010" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "10" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "30" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "11" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "31" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "40" + } + ], + "title": { + "$t": "T-Shirt Battle" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/_bKFFGfhx0k?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=_bKFFGfhx0k&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/_bKFFGfhx0k/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=_bKFFGfhx0k" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/_bKFFGfhx0k?v=2" + } + ], + "author": [ + { + "name": { + "$t": "3LittleNinjas" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/3LittleNinjas" + }, + "yt$userId": { + "$t": "aoZimlscjBchASOWVd1KtA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "moderated" + }, + { + "action": "commentVote", + "permission": "denied" + }, + { + "action": "videoRespond", + "permission": "denied" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/_bKFFGfhx0k/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Nonprofit", + "label": "Nonprofits & Activism", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/_bKFFGfhx0k?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 45, + "yt$format": 5 + }, + { + "url": "rtsp://v5.cache5.c.youtube.com/CiILENy73wIaGQlJx-FnFIWy_RMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 45, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQlJx-FnFIWy_RMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 45, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "3littleninjas", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "3LittleNinjas" + } + ], + "media$description": { + "$t": "Monster vs. Football vs. Boston Terrier vs. Eagles vs. Boston Terrier", + "type": "plain" + }, + "media$keywords": { + "$t": "tshirt, Battle, 2010, 10, 30, 11, 31, 40" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=_bKFFGfhx0k&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:22.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:11.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:22.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/_bKFFGfhx0k/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:33.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "T-Shirt Battle", + "type": "plain" + }, + "yt$duration": { + "seconds": "45" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:38:20.000Z" + }, + "yt$videoid": { + "$t": "_bKFFGfhx0k" + } + } + }, + { + "gd$etag": "W/\"CU8HRX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:JKGRaBGCXHI" + }, + "published": { + "$t": "2012-04-16T02:37:14.000Z" + }, + "updated": { + "$t": "2012-04-16T02:37:14.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "CO" + } + ], + "title": { + "$t": "Cross Over sencillo Football Skills" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/JKGRaBGCXHI?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=JKGRaBGCXHI&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=JKGRaBGCXHI" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI?v=2" + } + ], + "author": [ + { + "name": { + "$t": "XavierRojo1" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/XavierRojo1" + }, + "yt$userId": { + "$t": "i7lel-X-k9WhWCYBCReCbA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/JKGRaBGCXHI/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/JKGRaBGCXHI?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 9, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache2.c.youtube.com/CiILENy73wIaGQlyXIIRaJGhJBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 9, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache2.c.youtube.com/CiILENy73wIaGQlyXIIRaJGhJBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 9, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "xavierrojo1", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "XavierRojo1" + } + ], + "media$description": { + "$t": "Mi cross over sencillo", + "type": "plain" + }, + "media$keywords": { + "$t": "CO" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=JKGRaBGCXHI&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:04.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:02.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:04.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/JKGRaBGCXHI/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:06.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Cross Over sencillo Football Skills", + "type": "plain" + }, + "yt$duration": { + "seconds": "9" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:37:14.000Z" + }, + "yt$videoid": { + "$t": "JKGRaBGCXHI" + } + } + }, + { + "gd$etag": "W/\"CEABSX47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:8mTmvj_j-g8" + }, + "published": { + "$t": "2012-04-16T02:30:08.000Z" + }, + "updated": { + "$t": "2012-04-16T05:05:58.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "SBU" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Bearcats" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Weights" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "NCAA" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Samoa" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Samoans" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Jorge" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Batres" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Shedd" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Jameson" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Manuma" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Dro" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Ben" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Maligni" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Villa" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Athletes" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Strenght" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Conditioning" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "hodgetwins" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Work" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Big" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Muscle" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Iron" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Pump" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Protein" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Workout" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Curls" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Bench" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Squat" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Split" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Jerk" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Incline" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Massive" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Huge" + } + ], + "title": { + "$t": "SBU Football Grind Time Season." + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/8mTmvj_j-g8?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=8mTmvj_j-g8&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=8mTmvj_j-g8" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8?v=2" + } + ], + "author": [ + { + "name": { + "$t": "jbKicks10" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/jbKicks10" + }, + "yt$userId": { + "$t": "_LQBLfh5z9r3se1gQNsglA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/8mTmvj_j-g8/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/8mTmvj_j-g8?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 171, + "yt$format": 5 + }, + { + "url": "rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQkP-uM_vuZk8hMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 171, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache4.c.youtube.com/CiILENy73wIaGQkP-uM_vuZk8hMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 171, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "jbkicks10", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "jbKicks10" + } + ], + "media$description": { + "$t": "Sbu Football players on a off day getting better for the upcoming season. Family!", + "type": "plain" + }, + "media$keywords": { + "$t": "SBU, Football, Bearcats, Weights, NCAA, Samoa, Samoans, Jorge, Batres, Shedd, Jameson, Manuma, Dro, Ben, Maligni, Villa, Athletes, Sports, Strenght, Conditioning, hodgetwins, Work, Big, Muscle, Iron, Pump, Protein, Workout, Curls, Bench, Squat, Split, Jerk, Incline, Massive, Huge" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=8mTmvj_j-g8&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:25.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:42.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:25.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/8mTmvj_j-g8/3.jpg", + "height": 90, + "width": 120, + "time": "00:02:08.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "SBU Football Grind Time Season.", + "type": "plain" + }, + "yt$duration": { + "seconds": "171" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:30:08.000Z" + }, + "yt$videoid": { + "$t": "8mTmvj_j-g8" + } + }, + "gd$rating": { + "average": 5, + "max": 5, + "min": 1, + "numRaters": 1, + "rel": "http://schemas.google.com/g/2005#overall" + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "8" + }, + "yt$rating": { + "numDislikes": "0", + "numLikes": "1" + } + }, + { + "gd$etag": "W/\"CUMGRX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:GYQXHEMNrNs" + }, + "published": { + "$t": "2012-04-16T02:30:24.000Z" + }, + "updated": { + "$t": "2012-04-16T02:30:24.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Entertainment", + "label": "Entertainment" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "cosmos" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ranni" + } + ], + "title": { + "$t": "18th Cosmos Football Tournament Ranni" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/GYQXHEMNrNs?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=GYQXHEMNrNs&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=GYQXHEMNrNs" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs?v=2" + } + ], + "author": [ + { + "name": { + "$t": "nibis000" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/nibis000" + }, + "yt$userId": { + "$t": "bRZsdMalHparLXLqGO7FjA" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/GYQXHEMNrNs/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Entertainment", + "label": "Entertainment", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/GYQXHEMNrNs?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 54, + "yt$format": 5 + }, + { + "url": "rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQnbrA1DHBeEGRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 54, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache7.c.youtube.com/CiILENy73wIaGQnbrA1DHBeEGRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 54, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "nibis000", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "nibis000" + } + ], + "media$description": { + "$t": "www.cosmosranni.com Video By : Sibin Thomas n Lijo Varghese", + "type": "plain" + }, + "media$keywords": { + "$t": "cosmos, ranni" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=GYQXHEMNrNs&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:27", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:13.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:27", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/GYQXHEMNrNs/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:40.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "18th Cosmos Football Tournament Ranni", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "54" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:30:24.000Z" + }, + "yt$videoid": { + "$t": "GYQXHEMNrNs" + } + } + }, + { + "gd$etag": "W/\"CUcBQ347eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:BXEkcUrDT0w" + }, + "published": { + "$t": "2012-04-16T02:24:12.000Z" + }, + "updated": { + "$t": "2012-04-16T02:24:12.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Entertainment", + "label": "Entertainment" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ronaldo" + } + ], + "title": { + "$t": "Top five divers of world football" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/BXEkcUrDT0w?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=BXEkcUrDT0w&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=BXEkcUrDT0w" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w?v=2" + } + ], + "author": [ + { + "name": { + "$t": "pnirajan" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/pnirajan" + }, + "yt$userId": { + "$t": "CzVunAaNES51pCtAp8pFdg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/BXEkcUrDT0w/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Entertainment", + "label": "Entertainment", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/BXEkcUrDT0w?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 56, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache3.c.youtube.com/CiILENy73wIaGQlMT8NKcSRxBRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 56, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache1.c.youtube.com/CiILENy73wIaGQlMT8NKcSRxBRMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 56, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "pnirajan", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "pnirajan" + } + ], + "media$description": { + "$t": "ronaldo atlintop busquets", + "type": "plain" + }, + "media$keywords": { + "$t": "ronaldo" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=BXEkcUrDT0w&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:28", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:14", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:28", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/BXEkcUrDT0w/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:42", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Top five divers of world football", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "56" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:24:12.000Z" + }, + "yt$videoid": { + "$t": "BXEkcUrDT0w" + } + } + }, + { + "gd$etag": "W/\"CE4NQH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:s6uAgjYxL8w" + }, + "published": { + "$t": "2012-04-16T02:23:11.000Z" + }, + "updated": { + "$t": "2012-04-16T02:23:11.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Education", + "label": "Education" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "WPI" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Blimp" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Autonomous" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Flying" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "RC" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "RC Blimp" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "MQP" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Marcus Menghini" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Daniel Lanier" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Daniel Sarafconn" + } + ], + "title": { + "$t": "WPI Autonomous Blimp MQP Speed Test" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/s6uAgjYxL8w?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=s6uAgjYxL8w&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=s6uAgjYxL8w" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w?v=2" + } + ], + "author": [ + { + "name": { + "$t": "MazonDel" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/MazonDel" + }, + "yt$userId": { + "$t": "7nVP6VVh0wA2HdJMzUwUww" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/s6uAgjYxL8w/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Education", + "label": "Education", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/s6uAgjYxL8w?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 32, + "yt$format": 5 + }, + { + "url": "rtsp://v3.cache1.c.youtube.com/CiILENy73wIaGQnMLzE2goCrsxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 32, + "yt$format": 1 + }, + { + "url": "rtsp://v5.cache5.c.youtube.com/CiILENy73wIaGQnMLzE2goCrsxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 32, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "mazondel", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "MazonDel" + } + ], + "media$description": { + "$t": "Marcus Menghini (pilot) and Daniel Lanier (tether operator) take the blimp down to the WPI football field and do a speed run from one end to the other with an amusing ending. Estimated speed is about 8.2 MPH and 7.1 Knots. The goals and requirements of the project stipulated that the blimp was able to beat 5 knot speeds for up to 90 minutes.", + "type": "plain" + }, + "media$keywords": { + "$t": "WPI, Blimp, Autonomous, Flying, RC, RC Blimp, MQP, Marcus Menghini, Daniel Lanier, Daniel Sarafconn" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=s6uAgjYxL8w&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:16", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:08", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:16", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/s6uAgjYxL8w/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:24", + "yt$name": "end" + } + ], + "media$title": { + "$t": "WPI Autonomous Blimp MQP Speed Test", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "32" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:23:11.000Z" + }, + "yt$videoid": { + "$t": "s6uAgjYxL8w" + } + } + }, + { + "gd$etag": "W/\"CE4MQH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:n9laM0U_It4" + }, + "published": { + "$t": "2012-04-16T02:23:01.000Z" + }, + "updated": { + "$t": "2012-04-16T02:23:01.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Piermario Morosini" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "collapses on pitch" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Pescara vs Livorno 14/04/2012" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Serie PIERMARIO MOROSINI" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "SI ACCASCIATO zaslabl" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "atak serca die dies smierc" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "ZAWAL SERCA DIE DIES DIED" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Piermario Morosini collapses" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "on pitch and DIE Pescara" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "vs livorno" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "collapsing during game" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "14 april 2012" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Piermario Morosini dead" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "after collapsing on pitch" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Piermario Morosini RIP" + } + ], + "title": { + "$t": "DEATH OF Italian Football Player \"Piermario Morosini" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/n9laM0U_It4?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=n9laM0U_It4&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=n9laM0U_It4" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4?v=2" + } + ], + "author": [ + { + "name": { + "$t": "uisdui jkdfuji" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/u8AmWN8WK5om_0mDm1RwVg" + }, + "yt$userId": { + "$t": "u8AmWN8WK5om_0mDm1RwVg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/n9laM0U_It4/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/n9laM0U_It4?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 147, + "yt$format": 5 + }, + { + "url": "rtsp://v4.cache1.c.youtube.com/CiILENy73wIaGQneIj9FM1rZnxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 147, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache6.c.youtube.com/CiILENy73wIaGQneIj9FM1rZnxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 147, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "u8AmWN8WK5om_0mDm1RwVg", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "uisdui jkdfuji" + } + ], + "media$description": { + "$t": "tinyurl.com Piermario Morosini, collapses on pitch, Pescara vs Livorno 14/04/2012, Serie PIERMARIO MOROSINI, SI ACCASCIATO zaslabl, atak serca die dies smierc, ZAWAL SERCA DIE DIES DIED,Piermario Morosini collapses, on pitch and DIE Pescara, vs livorno, Piermario Morosini, collapsing during game, 14 april 2012,Piermario Morosini DEAD on the pitch,Piermario Morosini dead, after collapsing on pitch,Piermario Morosini RIP", + "type": "plain" + }, + "media$keywords": { + "$t": "Piermario Morosini, collapses on pitch, Pescara vs Livorno 14/04/2012, Serie PIERMARIO MOROSINI, SI ACCASCIATO zaslabl, atak serca die dies smierc, ZAWAL SERCA DIE DIES DIED, Piermario Morosini collapses, on pitch and DIE Pescara, vs livorno, collapsing during game, 14 april 2012, Piermario Morosini dead, after collapsing on pitch, Piermario Morosini RIP" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=n9laM0U_It4&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/n9laM0U_It4/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:13.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/n9laM0U_It4/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/n9laM0U_It4/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/n9laM0U_It4/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:36.750", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/n9laM0U_It4/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:13.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/n9laM0U_It4/3.jpg", + "height": 90, + "width": 120, + "time": "00:01:50.250", + "yt$name": "end" + } + ], + "media$title": { + "$t": "DEATH OF Italian Football Player \"Piermario Morosini", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "147" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:23:01.000Z" + }, + "yt$videoid": { + "$t": "n9laM0U_It4" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "43" + } + }, + { + "gd$etag": "W/\"C0QNQH47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:Y_9kP-Pduqk" + }, + "published": { + "$t": "2012-04-16T02:23:53.000Z" + }, + "updated": { + "$t": "2012-04-16T04:43:11.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Richmond#Tigers#MCG#AFL#" + } + ], + "title": { + "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/Y_9kP-Pduqk?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=Y_9kP-Pduqk&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=Y_9kP-Pduqk" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk?v=2" + } + ], + "author": [ + { + "name": { + "$t": "RichmondTigers2012" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/RichmondTigers2012" + }, + "yt$userId": { + "$t": "o8ndLvRQsNNnxkfO2KsKew" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/Y_9kP-Pduqk/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/Y_9kP-Pduqk?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 36, + "yt$format": 5 + }, + { + "url": "rtsp://v1.cache8.c.youtube.com/CiILENy73wIaGQmput3jP2T_YxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 36, + "yt$format": 1 + }, + { + "url": "rtsp://v8.cache7.c.youtube.com/CiILENy73wIaGQmput3jP2T_YxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 36, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "richmondtigers2012", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "RichmondTigers2012" + } + ], + "media$description": { + "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised written, spoken & photographed by Pete Dowe. www.richmondfc.com.au www.youtube.com www.youtube.com www.youtube.com Richmond#Tigers#Membership#Promo#MCG#Punt#Rd#Oval#Melbourne#Cricket#Ground#AFL#Football#", + "type": "plain" + }, + "media$keywords": { + "$t": "Richmond#Tigers#MCG#AFL#" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=Y_9kP-Pduqk&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:18", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:09", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:18", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/Y_9kP-Pduqk/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:27", + "yt$name": "end" + } + ], + "media$title": { + "$t": "RichmondTigers2012 'Hear the Tigers Raw' Membership Promo unauthorised", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "36" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:23:53.000Z" + }, + "yt$videoid": { + "$t": "Y_9kP-Pduqk" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "8" + } + }, + { + "gd$etag": "W/\"CUcHR347eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:G8WwszlH5bM" + }, + "published": { + "$t": "2012-04-16T02:23:56.000Z" + }, + "updated": { + "$t": "2012-04-16T02:23:56.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "topps" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "amazon" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "baseball cards" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "sportdeals4u" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Wowzzer" + } + ], + "title": { + "$t": "amazon order from wowzzer" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/G8WwszlH5bM?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=G8WwszlH5bM&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=G8WwszlH5bM" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM?v=2" + } + ], + "author": [ + { + "name": { + "$t": "DingerzDarwin" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/DingerzDarwin" + }, + "yt$userId": { + "$t": "WfKIyLDZKDAdnJDLZT4a3g" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/G8WwszlH5bM/comments?v=2", + "countHint": 0 + } + }, + "yt$hd": {}, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/G8WwszlH5bM?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 169, + "yt$format": 5 + }, + { + "url": "rtsp://v7.cache2.c.youtube.com/CiILENy73wIaGQmz5Uc5s7DFGxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 169, + "yt$format": 1 + }, + { + "url": "rtsp://v2.cache5.c.youtube.com/CiILENy73wIaGQmz5Uc5s7DFGxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 169, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "dingerzdarwin", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "DingerzDarwin" + } + ], + "media$description": { + "$t": "Amazon/wowzzer sent football cards instead of baseball cards.", + "type": "plain" + }, + "media$keywords": { + "$t": "topps, amazon, baseball cards, sportdeals4u, Wowzzer" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=G8WwszlH5bM&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/G8WwszlH5bM/default.jpg", + "height": 90, + "width": 120, + "time": "00:01:24.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/G8WwszlH5bM/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/G8WwszlH5bM/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/G8WwszlH5bM/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:42.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/G8WwszlH5bM/2.jpg", + "height": 90, + "width": 120, + "time": "00:01:24.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/G8WwszlH5bM/3.jpg", + "height": 90, + "width": 120, + "time": "00:02:06.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "amazon order from wowzzer", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "169" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:23:56.000Z" + }, + "yt$videoid": { + "$t": "G8WwszlH5bM" + } + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "13" + } + }, + { + "gd$etag": "W/\"CE4GSX47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:fr3ik4pxgs8" + }, + "published": { + "$t": "2012-04-16T02:22:08.000Z" + }, + "updated": { + "$t": "2012-04-16T02:22:08.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Howto", + "label": "Howto & Style" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "moi" + } + ], + "title": { + "$t": "FootConnect_Ver1" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/fr3ik4pxgs8?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=fr3ik4pxgs8&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=fr3ik4pxgs8" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8?v=2" + } + ], + "author": [ + { + "name": { + "$t": "trinhvandien82" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/trinhvandien82" + }, + "yt$userId": { + "$t": "sFieUQ5yo-6wQxO4JsTlJg" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/fr3ik4pxgs8/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Howto", + "label": "Howto & Style", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/fr3ik4pxgs8?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 430, + "yt$format": 5 + }, + { + "url": "rtsp://v8.cache8.c.youtube.com/CiILENy73wIaGQnPgnGKk-K9fhMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 430, + "yt$format": 1 + }, + { + "url": "rtsp://v6.cache2.c.youtube.com/CiILENy73wIaGQnPgnGKk-K9fhMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 430, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "trinhvandien82", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "trinhvandien82" + } + ], + "media$description": { + "$t": "Football Connection App", + "type": "plain" + }, + "media$keywords": { + "$t": "video, moi" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=fr3ik4pxgs8&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/default.jpg", + "height": 90, + "width": 120, + "time": "00:03:35", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:47.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/2.jpg", + "height": 90, + "width": 120, + "time": "00:03:35", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/fr3ik4pxgs8/3.jpg", + "height": 90, + "width": 120, + "time": "00:05:22.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "FootConnect_Ver1", + "type": "plain" + }, + "yt$duration": { + "seconds": "430" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:22:08.000Z" + }, + "yt$videoid": { + "$t": "fr3ik4pxgs8" + } + } + }, + { + "gd$etag": "W/\"CkUNQn47eCp7I2A9WhVXFUg.\"", + "id": { + "$t": "tag:youtube.com,2008:video:V8G4q3AiMfw" + }, + "published": { + "$t": "2012-04-16T02:18:04.000Z" + }, + "updated": { + "$t": "2012-04-16T04:24:53.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Sports", + "label": "Sports" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "jv" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "football" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "highlights" + } + ], + "title": { + "$t": "Tejon Anthony Sophomore Football Highlight" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/V8G4q3AiMfw?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=V8G4q3AiMfw&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=V8G4q3AiMfw" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw?v=2" + } + ], + "author": [ + { + "name": { + "$t": "McJagger13" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/McJagger13" + }, + "yt$userId": { + "$t": "-mzo8fl_pEwzoMzlYsIwYQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/V8G4q3AiMfw/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Sports", + "label": "Sports", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/V8G4q3AiMfw?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 330, + "yt$format": 5 + }, + { + "url": "rtsp://v2.cache6.c.youtube.com/CiILENy73wIaGQn8MSJwq7jBVxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 330, + "yt$format": 1 + }, + { + "url": "rtsp://v7.cache3.c.youtube.com/CiILENy73wIaGQn8MSJwq7jBVxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 330, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "mcjagger13", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "McJagger13" + } + ], + "media$description": { + "$t": "half of my football season", + "type": "plain" + }, + "media$keywords": { + "$t": "jv, football, highlights" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=V8G4q3AiMfw&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/default.jpg", + "height": 90, + "width": 120, + "time": "00:02:45", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/1.jpg", + "height": 90, + "width": 120, + "time": "00:01:22.500", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/2.jpg", + "height": 90, + "width": 120, + "time": "00:02:45", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/V8G4q3AiMfw/3.jpg", + "height": 90, + "width": 120, + "time": "00:04:07.500", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Tejon Anthony Sophomore Football Highlight", + "type": "plain" + }, + "yt$aspectRatio": { + "$t": "widescreen" + }, + "yt$duration": { + "seconds": "330" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:18:04.000Z" + }, + "yt$videoid": { + "$t": "V8G4q3AiMfw" + } + }, + "gd$rating": { + "average": 5, + "max": 5, + "min": 1, + "numRaters": 2, + "rel": "http://schemas.google.com/g/2005#overall" + }, + "yt$statistics": { + "favoriteCount": "0", + "viewCount": "25" + }, + "yt$rating": { + "numDislikes": "0", + "numLikes": "2" + } + }, + { + "gd$etag": "W/\"CEMERH47eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:kJhXN-rHX2Q" + }, + "published": { + "$t": "2012-04-16T02:13:25.000Z" + }, + "updated": { + "$t": "2012-04-16T02:13:25.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "Entertainment", + "label": "Entertainment" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "R5" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Love" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Story" + } + ], + "title": { + "$t": "Love Me R5 Love Story Episode 10" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/kJhXN-rHX2Q?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=kJhXN-rHX2Q&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=kJhXN-rHX2Q" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q?v=2" + } + ], + "author": [ + { + "name": { + "$t": "BrookieBoo867" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/BrookieBoo867" + }, + "yt$userId": { + "$t": "ze3g9dgUy02MbcqwKkscaQ" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/kJhXN-rHX2Q/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "Entertainment", + "label": "Entertainment", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/kJhXN-rHX2Q?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 40, + "yt$format": 5 + }, + { + "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQlkX8fqN1eYkBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 40, + "yt$format": 1 + }, + { + "url": "rtsp://v7.cache5.c.youtube.com/CiILENy73wIaGQlkX8fqN1eYkBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 40, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "brookieboo867", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "BrookieBoo867" + } + ], + "media$description": { + "$t": "***With the Boys*** Andy: So you live right next door to Mads? Ross: *nods* Yepp. ???: *runs out of the house* RIKER! PLEASE DON'T KILL ME!!!! Riker: *runs out behind ???* ROCKY YOU'RE DEAD!!! Andy: You're brothers? *points to Riker and Rocky running down the road* Ross: *nods his head* Unfortunately. Ryland: *walks out of the house* Hey bro. Whos that? *points to Andy* Ross: This is Maddy's friend Andy from Tennessee. *turns to Andy* This is my little brother Ryland. Andy: Nice to meet you. Ryland: You too. Ross: So what'd Rocky do to Riker? Ryland: Long story short, Rocky was being stupid again. Ross: *nods his head* I shouldv'e known. Andy: Hey have you ever seen Mads try to play football? Ross: Nah. *smiles* I bet its funny. She doesn't seem like the athletic type Andy: *laughs* Oh. she's not. Ryland: We should ask her to come play football. Us, Riker, Rocky, and Rydel Ross: And Madison and Bree. Ryland: Who? Andy: Mads other friends. Ryland: *smiles* Are they hot? Ross: *starts laughing* As Maddy's boyfriend, Im not authorized to say yes or no. Andy: They're hot. *laughs* Ryland: YES! ***the guys get everyone at the park to play football*** Rydel: Ok Me and Ratliff are captains. Rocky: Not fair. *crosses his arms and starts pouting* Madison: Oh come on. Don't get your panties in a knot. Rocky: Grrr. Fiesty. I like that *winks at Madison* Madison: *laughs* I think you have a twitch. Riker: I like this girl! *high fives Madison* Rocky: Me too. *smiles at Madison* Bree ...", + "type": "plain" + }, + "media$keywords": { + "$t": "R5, Love, Story" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=kJhXN-rHX2Q&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:20", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:10", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:20", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/kJhXN-rHX2Q/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:30", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Love Me R5 Love Story Episode 10", + "type": "plain" + }, + "yt$duration": { + "seconds": "40" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:13:25.000Z" + }, + "yt$videoid": { + "$t": "kJhXN-rHX2Q" + } + } + }, + { + "gd$etag": "W/\"CEMHR347eCp7I2A9WhVXFUk.\"", + "id": { + "$t": "tag:youtube.com,2008:video:hNdMghxKYeg" + }, + "published": { + "$t": "2012-04-16T02:13:56.000Z" + }, + "updated": { + "$t": "2012-04-16T02:13:56.000Z" + }, + "category": [ + { + "scheme": "http://schemas.google.com/g/2005#kind", + "term": "http://gdata.youtube.com/schemas/2007#video" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat", + "term": "People", + "label": "People & Blogs" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Rubén" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Aguirre" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Gremio" + }, + { + "scheme": "http://gdata.youtube.com/schemas/2007/keywords.cat", + "term": "Giovani" + } + ], + "title": { + "$t": "Rubén Aguirre - Un saludo a Grêmio Football Club e Giovani Chambón!" + }, + "content": { + "type": "application/x-shockwave-flash", + "src": "https://www.youtube.com/v/hNdMghxKYeg?version=3&f=videos&app=youtube_gdata" + }, + "link": [ + { + "rel": "alternate", + "type": "text/html", + "href": "https://www.youtube.com/watch?v=hNdMghxKYeg&feature=youtube_gdata" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.responses", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg/responses?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#video.related", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg/related?v=2" + }, + { + "rel": "http://gdata.youtube.com/schemas/2007#mobile", + "type": "text/html", + "href": "https://m.youtube.com/details?v=hNdMghxKYeg" + }, + { + "rel": "self", + "type": "application/atom+xml", + "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg?v=2" + } + ], + "author": [ + { + "name": { + "$t": "Bblackjoe" + }, + "uri": { + "$t": "https://gdata.youtube.com/feeds/api/users/Bblackjoe" + }, + "yt$userId": { + "$t": "ONOyAdsF99aRKEnzxtdaag" + } + } + ], + "yt$accessControl": [ + { + "action": "comment", + "permission": "allowed" + }, + { + "action": "commentVote", + "permission": "allowed" + }, + { + "action": "videoRespond", + "permission": "moderated" + }, + { + "action": "rate", + "permission": "allowed" + }, + { + "action": "embed", + "permission": "allowed" + }, + { + "action": "list", + "permission": "allowed" + }, + { + "action": "autoPlay", + "permission": "allowed" + }, + { + "action": "syndicate", + "permission": "allowed" + } + ], + "gd$comments": { + "gd$feedLink": { + "rel": "http://gdata.youtube.com/schemas/2007#comments", + "href": "https://gdata.youtube.com/feeds/api/videos/hNdMghxKYeg/comments?v=2", + "countHint": 0 + } + }, + "media$group": { + "media$category": [ + { + "$t": "People", + "label": "People & Blogs", + "scheme": "http://gdata.youtube.com/schemas/2007/categories.cat" + } + ], + "media$content": [ + { + "url": "https://www.youtube.com/v/hNdMghxKYeg?version=3&f=videos&app=youtube_gdata", + "type": "application/x-shockwave-flash", + "medium": "video", + "isDefault": "true", + "expression": "full", + "duration": 25, + "yt$format": 5 + }, + { + "url": "rtsp://v7.cache4.c.youtube.com/CiILENy73wIaGQnoYUocgkzXhBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 25, + "yt$format": 1 + }, + { + "url": "rtsp://v5.cache8.c.youtube.com/CiILENy73wIaGQnoYUocgkzXhBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", + "type": "video/3gpp", + "medium": "video", + "expression": "full", + "duration": 25, + "yt$format": 6 + } + ], + "media$credit": [ + { + "$t": "bblackjoe", + "role": "uploader", + "scheme": "urn:youtube", + "yt$display": "Bblackjoe" + } + ], + "media$description": { + "$t": "Rubén Aguirre em sua twitcam se dirigindo a minha pessoa =)", + "type": "plain" + }, + "media$keywords": { + "$t": "Rubén, Aguirre, Gremio, Giovani" + }, + "media$license": { + "$t": "youtube", + "type": "text/html", + "href": "http://www.youtube.com/t/terms" + }, + "media$player": { + "url": "https://www.youtube.com/watch?v=hNdMghxKYeg&feature=youtube_gdata_player" + }, + "media$thumbnail": [ + { + "url": "http://i.ytimg.com/vi/hNdMghxKYeg/default.jpg", + "height": 90, + "width": 120, + "time": "00:00:12.500", + "yt$name": "default" + }, + { + "url": "http://i.ytimg.com/vi/hNdMghxKYeg/mqdefault.jpg", + "height": 180, + "width": 320, + "yt$name": "mqdefault" + }, + { + "url": "http://i.ytimg.com/vi/hNdMghxKYeg/hqdefault.jpg", + "height": 360, + "width": 480, + "yt$name": "hqdefault" + }, + { + "url": "http://i.ytimg.com/vi/hNdMghxKYeg/1.jpg", + "height": 90, + "width": 120, + "time": "00:00:06.250", + "yt$name": "start" + }, + { + "url": "http://i.ytimg.com/vi/hNdMghxKYeg/2.jpg", + "height": 90, + "width": 120, + "time": "00:00:12.500", + "yt$name": "middle" + }, + { + "url": "http://i.ytimg.com/vi/hNdMghxKYeg/3.jpg", + "height": 90, + "width": 120, + "time": "00:00:18.750", + "yt$name": "end" + } + ], + "media$title": { + "$t": "Rubén Aguirre - Un saludo a Grêmio Football Club e Giovani Chambón!", + "type": "plain" + }, + "yt$duration": { + "seconds": "25" + }, + "yt$uploaded": { + "$t": "2012-04-16T02:13:56.000Z" + }, + "yt$videoid": { + "$t": "hNdMghxKYeg" + } + } + } + ] + } +} diff --git a/test/test_autofit_textarea.html b/test/test_autofit_textarea.html new file mode 100644 index 000000000..9f3e34cb7 --- /dev/null +++ b/test/test_autofit_textarea.html @@ -0,0 +1,61 @@ + + + + + + + + + + + +
+ +
+ + + + + + diff --git a/test/test_list_layout.html b/test/test_list_layout.html new file mode 100644 index 000000000..e7882c69b --- /dev/null +++ b/test/test_list_layout.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + + +
+
    +
  • +
    +
    field
    +
    value
    +
    edit
    +
    +
  • + +
  • +
    +
    field
    2nd line
    +
    value
    +
    edit
    +
    +
  • + +
  • +
    +
    field
    +
    value
    2nd line
    +
    edit
    +
    +
  • +
+
+ + + + diff --git a/test/test_table_speed.html b/test/test_table_speed.html new file mode 100644 index 000000000..1a92ba943 --- /dev/null +++ b/test/test_table_speed.html @@ -0,0 +1,62 @@ + + + + + + + + + + + +
+ + + + diff --git a/test/test_table_speed2.html b/test/test_table_speed2.html new file mode 100644 index 000000000..2a2e55b5c --- /dev/null +++ b/test/test_table_speed2.html @@ -0,0 +1,66 @@ + + + + + + + + + + + +
+ + + + diff --git a/todo.txt b/todo.txt new file mode 100644 index 000000000..973e50466 --- /dev/null +++ b/todo.txt @@ -0,0 +1,88 @@ +JSON EDITOR ONLINE TODO +http://jsoneditoronline.org + + +________________________________________________________________________ + +VERSION 1: Basic functionality + +TODO +make the css namings more efficient/shorter + +Get things working in IE7? maybe only a sizing problem (besides no JSON support) + +for highlighting and expanding: send a timestamp, and when very large, + split via a timeout in different parts so, the browser stays responsive. + +________________________________________________________________________ + +VERSION 2: Functionality + +make the editor more keyboard friendly. Shortcut keys, access to the type dropdown menu + +alt+arrow keys to navigate through the fields and values + +copy a structure via Ctrl+ drag and drop? + +undo/redo + +load files from url or by upload + +store the contents in the browser. also store all revisions (used with undo/redo) + +add documentation/information about JSON in general + +write documentation about the sourcecode + +warning when an object has mutliple fields with the same name + +create options: + - collapsed: true/false + - editableFields: true/false + +when dragging higher than the top, or lower than the bottom, scroll the + whole editor. + +________________________________________________________________________ + +VERSION 3: Performance + +performance improvements: lazy loading of the HTML elements +method getValue() should retrieve the data from its in memory JSON, and not + by reading the from the fields on screen. Fields on screen must directly + update their value in memory when changed. + Also, the in memory JSON should correspond one to one to the real JSON data... + +automatically update left or right panel contents on change? + + +________________________________________________________________________ + +VERSION 4: Validator + +Implement a JSON Schema validator +http://en.wikipedia.org/wiki/Json#Schema +http://tools.ietf.org/html/draft-zyp-json-schema-03 + +the editor on the right will get an extra button on the right: for specifying +validation parameters. On the left, we will get two text editors on top of each +other: one with the JSON data, the other with the JSON schema. +By default, the validator is not visible. There will be an option in the main +menu to toggle validator. + +Also: create buttons to generate JSON from a schema. + +________________________________________________________________________ + +VERSION 5 + +support for XML? others? + + +________________________________________________________________________ + +VERSION 6 + +store data online, with an account? +payed account without ads and with some nice extra features? +