diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..5aaa105f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +XcodeCoverage diff --git a/.travis.yml b/.travis.yml index 099d8f6c..18ec5b24 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,8 @@ install: script: - export LC_CTYPE=en_US.UTF-8 - set -o pipefail - - xcodebuild test -project XCDYouTubeKit.xcodeproj -scheme 'XCDYouTubeKit iOS' -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch)' | xcpretty -c - - xcodebuild test -project XCDYouTubeKit.xcodeproj -scheme 'XCDYouTubeKit iOS' -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch 64-bit)' OBJROOT=XCDYouTubeKit/build | xcpretty -c + - xcodebuild test -project XCDYouTubeKit.xcodeproj -scheme 'XCDYouTubeKit iOS Static Library' -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch)' | xcpretty -c + - xcodebuild test -project XCDYouTubeKit.xcodeproj -scheme 'XCDYouTubeKit iOS Static Library' -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch 64-bit)' OBJROOT=XCDYouTubeKit/build | xcpretty -c - xcodebuild test -project XCDYouTubeKit.xcodeproj -scheme 'XCDYouTubeKit OS X' | xcpretty -c after_success: - ./Scripts/coveralls.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index b9fe65b9..a6511c51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +#### Version 2.0.3 + +* Adaptation to YouTube API change. (#94) +* Support for age restricted videos. +* Project upgraded to Xcode 6. + #### Version 2.0.2 * Fixed errors on protected videos. (#52) @@ -13,7 +19,7 @@ #### Version 2.0.0 * Project renamed to `XCDYouTubeKit`. -* Support for protected video. (#6, #11, #12, #21, #27, #31, #33) +* Support for protected videos. (#6, #11, #12, #21, #27, #31, #33) * OS X compatibility thanks to the new `XCDYouTubeClient` class. (#14, #18) * OS X dynamic framework target * Support for live videos. (#34) diff --git a/README.md b/README.md index 17013954..df1b7d33 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://img.shields.io/travis/0xced/XCDYouTubeKit/master.svg?style=flat)](https://travis-ci.org/0xced/XCDYouTubeKit) [![Coverage Status](https://img.shields.io/coveralls/0xced/XCDYouTubeKit/master.svg?style=flat)](https://coveralls.io/r/0xced/XCDYouTubeKit?branch=master) -![Platform](https://img.shields.io/cocoapods/p/XCDYouTubeKit.svg?style=flat) +[![Platform](https://img.shields.io/cocoapods/p/XCDYouTubeKit.svg?style=flat)](http://cocoadocs.org/docsets/XCDYouTubeKit/) [![Pod Version](https://img.shields.io/cocoapods/v/XCDYouTubeKit.svg?style=flat)](http://cocoadocs.org/docsets/XCDYouTubeKit/) [![License](https://img.shields.io/cocoapods/l/XCDYouTubeKit.svg?style=flat)](LICENSE) @@ -33,9 +33,20 @@ Are you enjoying XCDYouTubeKit? You can say thank you with [a tweet](https://twi XCDYouTubeKit is available through CocoaPods. -Alternatively, you can manually use the provided static library on iOS or dynamic framework on OS X. +```ruby +pod "XCDYouTubeKit", "~> 2.0.3" +``` + +Alternatively, you can manually use the provided static library on iOS or dynamic framework on OS X. In order to use the iOS static library, you must: + +1. Create a workspace (File → New → Workspace…) +2. Add your project to the workspace +3. Add the XCDYouTubeKit project to the workspace +4. Drag and drop the `libXCDYouTubeKit.a` file referenced from XCDYouTubeKit → Products → libXCDYouTubeKit.a into the *Link Binary With Libraries* build phase of your app’s target. + +These steps will ensure that `#import ` will work properly in your project. -If you use the iOS static library and you are targeting iOS 7, add the JavaScriptCore framework. If you are targeting iOS 5 or 6, you must add the following *Other Linker Flags* instead to your app: +**Warning**: If you use the iOS static library and you are targeting iOS 7, add the JavaScriptCore framework. If you are targeting iOS 5 or 6, you must add the following *Other Linker Flags* instead to your app: ``` -Wl,-U,_JSContextGetGlobalObject -Wl,-U,_JSEvaluateScript -Wl,-U,_JSGlobalContextCreate -Wl,-U,_JSGlobalContextRelease -Wl,-U,_JSObjectCallAsFunction -Wl,-U,_JSObjectIsFunction -Wl,-U,_JSObjectSetProperty -Wl,-U,_JSStringCopyCFString -Wl,-U,_JSStringCreateWithCFString -Wl,-U,_JSStringRelease -Wl,-U,_JSValueIsObject -Wl,-U,_JSValueIsString -Wl,-U,_JSValueMakeString -Wl,-U,_JSValueToStringCopy @@ -48,10 +59,6 @@ See my [JavaScriptCore framework availability on iOS](http://stackoverflow.com/q XCDYouTubeKit is [fully documented](http://cocoadocs.org/docsets/XCDYouTubeKit/). -``` -#import ` -``` - ### iOS and OS X ```objc diff --git a/Scripts/release.sh b/Scripts/release.sh new file mode 100755 index 00000000..3785928b --- /dev/null +++ b/Scripts/release.sh @@ -0,0 +1,31 @@ +#!/bin/bash -e + +if [[ $# -ne 1 ]]; then + echo "usage: $0 VERSION" + exit 1 +fi + +VERSION=$1 + +git flow release start ${VERSION} + +echo "Updating version" +set -v +sed -i "" "s/DYLIB_CURRENT_VERSION = .*;/DYLIB_CURRENT_VERSION = ${VERSION};/g" "XCDYouTubeKit.xcodeproj/project.pbxproj" +sed -i "" "s/CURRENT_PROJECT_VERSION = .*;/CURRENT_PROJECT_VERSION = ${VERSION};/g" "XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj" +sed -i "" "s/^\(.*s.version.*=.*\)\".*\"/\1\"${VERSION}\"/" "XCDYouTubeKit.podspec" +sed -i "" "s/\"~> .*\"/\"~> ${VERSION}\"/g" "README.md" +set +v +git add "XCDYouTubeKit.xcodeproj" +git add "XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj" +git add "XCDYouTubeKit.podspec" +git add "README.md" +git commit -m "Update version to ${VERSION}" + +echo "Updating badges" +set -v +sed -i "" "s/develop\.svg/master.svg/g" "README.md" +sed -i "" "s/branch=develop/branch=master/g" "README.md" +set +v +git add "README.md" +git commit -m "Point badges to the master branch" diff --git a/XCDYouTubeKit Demo/Icon.acorn b/XCDYouTubeKit Demo/Icon.acorn new file mode 100644 index 00000000..7e54e36d Binary files /dev/null and b/XCDYouTubeKit Demo/Icon.acorn differ diff --git a/XCDYouTubeKit Demo/OS X Demo/AppDelegate.m b/XCDYouTubeKit Demo/OS X Demo/AppDelegate.m index c41dd127..37d0e87b 100644 --- a/XCDYouTubeKit Demo/OS X Demo/AppDelegate.m +++ b/XCDYouTubeKit Demo/OS X Demo/AppDelegate.m @@ -16,7 +16,8 @@ - (IBAction) playVideo:(id)sender self.playerView.player = nil; [self.progressIndicator startAnimation:sender]; - [[XCDYouTubeClient defaultClient] getVideoWithIdentifier:[sender stringValue] completionHandler:^(XCDYouTubeVideo *video, NSError *error) { + [[XCDYouTubeClient defaultClient] getVideoWithIdentifier:[sender stringValue] completionHandler:^(XCDYouTubeVideo *video, NSError *error) + { [self.progressIndicator stopAnimation:sender]; if (video) diff --git a/XCDYouTubeKit Demo/OS X Demo/Images.xcassets/AppIcon.appiconset/Contents.json b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 72% rename from XCDYouTubeKit Demo/OS X Demo/Images.xcassets/AppIcon.appiconset/Contents.json rename to XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json index 2db2b1c7..55f1be56 100644 --- a/XCDYouTubeKit Demo/OS X Demo/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,53 +1,63 @@ { "images" : [ { - "idiom" : "mac", "size" : "16x16", + "idiom" : "mac", + "filename" : "Icon-16.png", "scale" : "1x" }, { - "idiom" : "mac", "size" : "16x16", + "idiom" : "mac", + "filename" : "Icon-32.png", "scale" : "2x" }, { - "idiom" : "mac", "size" : "32x32", + "idiom" : "mac", + "filename" : "Icon-32.png", "scale" : "1x" }, { - "idiom" : "mac", "size" : "32x32", + "idiom" : "mac", + "filename" : "Icon-64.png", "scale" : "2x" }, { - "idiom" : "mac", "size" : "128x128", + "idiom" : "mac", + "filename" : "Icon-128.png", "scale" : "1x" }, { - "idiom" : "mac", "size" : "128x128", + "idiom" : "mac", + "filename" : "Icon-256.png", "scale" : "2x" }, { - "idiom" : "mac", "size" : "256x256", + "idiom" : "mac", + "filename" : "Icon-256.png", "scale" : "1x" }, { - "idiom" : "mac", "size" : "256x256", + "idiom" : "mac", + "filename" : "Icon-512.png", "scale" : "2x" }, { - "idiom" : "mac", "size" : "512x512", + "idiom" : "mac", + "filename" : "Icon-512.png", "scale" : "1x" }, { - "idiom" : "mac", "size" : "512x512", + "idiom" : "mac", + "filename" : "Icon-1024.png", "scale" : "2x" } ], diff --git a/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-1024.png b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-1024.png new file mode 100644 index 00000000..054c4c34 Binary files /dev/null and b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-1024.png differ diff --git a/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-128.png b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-128.png new file mode 100644 index 00000000..d467acf2 Binary files /dev/null and b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-128.png differ diff --git a/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-16.png b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-16.png new file mode 100644 index 00000000..a40dd0fe Binary files /dev/null and b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-16.png differ diff --git a/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-256.png b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-256.png new file mode 100644 index 00000000..9ba93d32 Binary files /dev/null and b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-256.png differ diff --git a/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-32.png b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-32.png new file mode 100644 index 00000000..c667c79d Binary files /dev/null and b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-32.png differ diff --git a/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-512.png b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-512.png new file mode 100644 index 00000000..816abda5 Binary files /dev/null and b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-512.png differ diff --git a/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-64.png b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-64.png new file mode 100644 index 00000000..e03d5068 Binary files /dev/null and b/XCDYouTubeKit Demo/OS X Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-64.png differ diff --git a/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj b/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj index 3d7d7b7a..531b04a9 100644 --- a/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj +++ b/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj @@ -12,9 +12,9 @@ C2428AEA191C3C1400065504 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C2428AE9191C3C1400065504 /* Images.xcassets */; }; C2428B07191C3DE400065504 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C2428B04191C3DE400065504 /* main.m */; }; C2428B0C191C415300065504 /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C2428B0B191C415300065504 /* AVKit.framework */; }; - C2478E9D17FF739100BCE94D /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2478E9C17FF739100BCE94D /* Icon@2x.png */; }; + C2570B861A02415F00127127 /* NowPlayingInfoCenterProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = C2570B851A02415F00127127 /* NowPlayingInfoCenterProvider.m */; }; C26231B5191D7E0600D23900 /* XCDYouTubeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C26231B4191D7E0600D23900 /* XCDYouTubeKit.framework */; }; - C26231B7191D7F8500D23900 /* XCDYouTubeKit.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = C26231B4191D7E0600D23900 /* XCDYouTubeKit.framework */; }; + C26231B7191D7F8500D23900 /* XCDYouTubeKit.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = C26231B4191D7E0600D23900 /* XCDYouTubeKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; C2630D3F1935C449000D3917 /* PlayerEventLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = C2630D3E1935C449000D3917 /* PlayerEventLogger.m */; }; C27415A217F491230026834B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C27415A117F491230026834B /* UIKit.framework */; }; C27415A417F491230026834B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C27415A317F491230026834B /* Foundation.framework */; }; @@ -25,15 +25,15 @@ C27415D517F4CDD80026834B /* DemoInlineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C27415C617F4CDD80026834B /* DemoInlineViewController.m */; }; C27415D617F4CDD80026834B /* DemoThumbnailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C27415C817F4CDD80026834B /* DemoThumbnailViewController.m */; }; C27415D717F4CDD80026834B /* MainStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C27415C917F4CDD80026834B /* MainStoryboard.storyboard */; }; - C27415D817F4CDD80026834B /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C27415CC17F4CDD80026834B /* Default-568h@2x.png */; }; - C27415D917F4CDD80026834B /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = C27415CD17F4CDD80026834B /* Default.png */; }; - C27415DA17F4CDD80026834B /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C27415CE17F4CDD80026834B /* Default@2x.png */; }; C27415DC17F4CDD80026834B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C27415D117F4CDD80026834B /* main.m */; }; C27415E317F4D02E0026834B /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C27415E217F4D02E0026834B /* AVFoundation.framework */; }; C27415E517F4D0330026834B /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C27415E417F4D0330026834B /* MediaPlayer.framework */; }; + C27AD2A11A0791F000866050 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C27AD2A01A0791F000866050 /* Images.xcassets */; }; C2BA376D192AB32200B27FAD /* MPMoviePlayerController+BackgroundPlayback.m in Sources */ = {isa = PBXBuildFile; fileRef = C2BA376C192AB32200B27FAD /* MPMoviePlayerController+BackgroundPlayback.m */; }; - C2EDD2ED1805917900BEA32B /* libXCDYouTubeKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C2EDD2EC1805917900BEA32B /* libXCDYouTubeKit.a */; }; + C2DDFAF419C2CEB000E7DB66 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C2DDFAF319C2CEB000E7DB66 /* LaunchScreen.xib */; }; C2EFB48718730A2B0046B1FE /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C2EFB48618730A2B0046B1FE /* SettingsViewController.m */; }; + C2F0E59F1945065C00D8EBA8 /* XCDYouTubeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C2F0E59E1945065C00D8EBA8 /* XCDYouTubeKit.framework */; }; + C2F0E5A11945069300D8EBA8 /* XCDYouTubeKit.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = C2F0E59E1945065C00D8EBA8 /* XCDYouTubeKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -48,6 +48,17 @@ name = "Copy Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; + C2F0E5A01945068200D8EBA8 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + C2F0E5A11945069300D8EBA8 /* XCDYouTubeKit.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -61,7 +72,8 @@ C2428B05191C3DE400065504 /* XCDYouTubeKit OS X Demo-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "XCDYouTubeKit OS X Demo-Info.plist"; sourceTree = ""; }; C2428B06191C3DE400065504 /* XCDYouTubeKit OS X Demo-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCDYouTubeKit OS X Demo-Prefix.pch"; sourceTree = ""; }; C2428B0B191C415300065504 /* AVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AVKit.framework; sourceTree = DEVELOPER_DIR; }; - C2478E9C17FF739100BCE94D /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@2x.png"; sourceTree = ""; }; + C2570B841A02415F00127127 /* NowPlayingInfoCenterProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NowPlayingInfoCenterProvider.h; sourceTree = ""; }; + C2570B851A02415F00127127 /* NowPlayingInfoCenterProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NowPlayingInfoCenterProvider.m; sourceTree = ""; }; C26231B4191D7E0600D23900 /* XCDYouTubeKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCDYouTubeKit.framework; path = ../Debug/XCDYouTubeKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C2630D3D1935C449000D3917 /* PlayerEventLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayerEventLogger.h; sourceTree = ""; }; C2630D3E1935C449000D3917 /* PlayerEventLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlayerEventLogger.m; sourceTree = ""; }; @@ -80,19 +92,19 @@ C27415C717F4CDD80026834B /* DemoThumbnailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoThumbnailViewController.h; sourceTree = ""; }; C27415C817F4CDD80026834B /* DemoThumbnailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoThumbnailViewController.m; sourceTree = ""; }; C27415CA17F4CDD80026834B /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard.storyboard; sourceTree = ""; }; - C27415CC17F4CDD80026834B /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - C27415CD17F4CDD80026834B /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; - C27415CE17F4CDD80026834B /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; C27415D117F4CDD80026834B /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; C27415DD17F4CE4A0026834B /* XCDYouTubeKit iOS Demo-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "XCDYouTubeKit iOS Demo-Info.plist"; sourceTree = ""; }; C27415DE17F4CE4A0026834B /* XCDYouTubeKit iOS Demo-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCDYouTubeKit iOS Demo-Prefix.pch"; sourceTree = ""; }; C27415E217F4D02E0026834B /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; C27415E417F4D0330026834B /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; + C27AD2A01A0791F000866050 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; C2BA376B192AB32200B27FAD /* MPMoviePlayerController+BackgroundPlayback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MPMoviePlayerController+BackgroundPlayback.h"; sourceTree = ""; }; C2BA376C192AB32200B27FAD /* MPMoviePlayerController+BackgroundPlayback.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPMoviePlayerController+BackgroundPlayback.m"; sourceTree = ""; }; + C2DDFAF319C2CEB000E7DB66 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = ""; }; C2EDD2EC1805917900BEA32B /* libXCDYouTubeKit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libXCDYouTubeKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; C2EFB48518730A2B0046B1FE /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; }; C2EFB48618730A2B0046B1FE /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; }; + C2F0E59E1945065C00D8EBA8 /* XCDYouTubeKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = XCDYouTubeKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C2FB52DF1918F89A00B2CBE6 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -110,7 +122,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C2EDD2ED1805917900BEA32B /* libXCDYouTubeKit.a in Frameworks */, + C2F0E59F1945065C00D8EBA8 /* XCDYouTubeKit.framework in Frameworks */, C27415E317F4D02E0026834B /* AVFoundation.framework in Frameworks */, C27415A617F491230026834B /* CoreGraphics.framework in Frameworks */, C27415A417F491230026834B /* Foundation.framework in Frameworks */, @@ -128,7 +140,6 @@ C2428AE3191C3C1400065504 /* AppDelegate.h */, C2428AE4191C3C1400065504 /* AppDelegate.m */, C2428AE6191C3C1400065504 /* MainMenu.xib */, - C2428AE9191C3C1400065504 /* Images.xcassets */, C2428B03191C3DE400065504 /* Supporting Files */, ); path = "OS X Demo"; @@ -137,6 +148,7 @@ C2428B03191C3DE400065504 /* Supporting Files */ = { isa = PBXGroup; children = ( + C2428AE9191C3C1400065504 /* Images.xcassets */, C2428B04191C3DE400065504 /* main.m */, C2428B05191C3DE400065504 /* XCDYouTubeKit OS X Demo-Info.plist */, C2428B06191C3DE400065504 /* XCDYouTubeKit OS X Demo-Prefix.pch */, @@ -170,6 +182,7 @@ isa = PBXGroup; children = ( C2EDD2EC1805917900BEA32B /* libXCDYouTubeKit.a */, + C2F0E59E1945065C00D8EBA8 /* XCDYouTubeKit.framework */, C26231B4191D7E0600D23900 /* XCDYouTubeKit.framework */, C27415E217F4D02E0026834B /* AVFoundation.framework */, C2428B0B191C415300065504 /* AVKit.framework */, @@ -190,6 +203,8 @@ C27415C017F4CDD80026834B /* AppDelegate.m */, C2630D3D1935C449000D3917 /* PlayerEventLogger.h */, C2630D3E1935C449000D3917 /* PlayerEventLogger.m */, + C2570B841A02415F00127127 /* NowPlayingInfoCenterProvider.h */, + C2570B851A02415F00127127 /* NowPlayingInfoCenterProvider.m */, C27415C317F4CDD80026834B /* DemoFullScreenViewController.h */, C27415C417F4CDD80026834B /* DemoFullScreenViewController.m */, C27415C517F4CDD80026834B /* DemoInlineViewController.h */, @@ -211,10 +226,8 @@ C27415CB17F4CDD80026834B /* Supporting Files */ = { isa = PBXGroup; children = ( - C27415CD17F4CDD80026834B /* Default.png */, - C27415CE17F4CDD80026834B /* Default@2x.png */, - C27415CC17F4CDD80026834B /* Default-568h@2x.png */, - C2478E9C17FF739100BCE94D /* Icon@2x.png */, + C27AD2A01A0791F000866050 /* Images.xcassets */, + C2DDFAF319C2CEB000E7DB66 /* LaunchScreen.xib */, C27415D117F4CDD80026834B /* main.m */, C27415DD17F4CE4A0026834B /* XCDYouTubeKit iOS Demo-Info.plist */, C27415DE17F4CE4A0026834B /* XCDYouTubeKit iOS Demo-Prefix.pch */, @@ -250,6 +263,7 @@ C274159A17F491230026834B /* Sources */, C274159B17F491230026834B /* Frameworks */, C274159C17F491230026834B /* Resources */, + C2F0E5A01945068200D8EBA8 /* Copy Frameworks */, ); buildRules = ( ); @@ -266,7 +280,7 @@ C274159617F491230026834B /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0460; + LastUpgradeCheck = 0600; ORGANIZATIONNAME = "Cédric Luthi"; }; buildConfigurationList = C274159917F491230026834B /* Build configuration list for PBXProject "XCDYouTubeKit Demo" */; @@ -302,11 +316,9 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + C27AD2A11A0791F000866050 /* Images.xcassets in Resources */, C27415D717F4CDD80026834B /* MainStoryboard.storyboard in Resources */, - C27415D917F4CDD80026834B /* Default.png in Resources */, - C27415DA17F4CDD80026834B /* Default@2x.png in Resources */, - C27415D817F4CDD80026834B /* Default-568h@2x.png in Resources */, - C2478E9D17FF739100BCE94D /* Icon@2x.png in Resources */, + C2DDFAF419C2CEB000E7DB66 /* LaunchScreen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -327,6 +339,7 @@ buildActionMask = 2147483647; files = ( C27415D217F4CDD80026834B /* AppDelegate.m in Sources */, + C2570B861A02415F00127127 /* NowPlayingInfoCenterProvider.m in Sources */, C27415D317F4CDD80026834B /* DemoAsynchronousViewController.m in Sources */, C2630D3F1935C449000D3917 /* PlayerEventLogger.m in Sources */, C27415D417F4CDD80026834B /* DemoFullScreenViewController.m in Sources */, @@ -438,7 +451,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2.0.2; + CURRENT_PROJECT_VERSION = 2.0.3; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -450,10 +463,6 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(BUILT_PRODUCTS_DIR)/include", - ); IPHONEOS_DEPLOYMENT_TARGET = 5.0; MACOSX_DEPLOYMENT_TARGET = 10.9; ONLY_ACTIVE_ARCH = YES; @@ -476,16 +485,12 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 2.0.2; + CURRENT_PROJECT_VERSION = 2.0.3; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PREPROCESSOR_DEFINITIONS = "NS_BLOCK_ASSERTIONS=1"; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(BUILT_PRODUCTS_DIR)/include", - ); IPHONEOS_DEPLOYMENT_TARGET = 5.0; MACOSX_DEPLOYMENT_TARGET = 10.9; SDKROOT = iphoneos; @@ -497,9 +502,12 @@ C27415BC17F491230026834B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Prefix.pch"; INFOPLIST_FILE = "iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "@loader_path/Frameworks"; OTHER_LDFLAGS = ( "-Wl,-U,_JSContextGetGlobalObject", "-Wl,-U,_JSEvaluateScript", @@ -524,9 +532,12 @@ C27415BD17F491230026834B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Prefix.pch"; INFOPLIST_FILE = "iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "@loader_path/Frameworks"; OTHER_LDFLAGS = ( "-Wl,-U,_JSContextGetGlobalObject", "-Wl,-U,_JSEvaluateScript", diff --git a/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/xcshareddata/xcschemes/XCDYouTubeKit OS X Demo.xcscheme b/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/xcshareddata/xcschemes/XCDYouTubeKit OS X Demo.xcscheme index a2d19703..49e7f4bd 100644 --- a/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/xcshareddata/xcschemes/XCDYouTubeKit OS X Demo.xcscheme +++ b/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/xcshareddata/xcschemes/XCDYouTubeKit OS X Demo.xcscheme @@ -1,6 +1,6 @@ +@property (nonatomic, readonly) PlayerEventLogger *playerEventLogger; +@property (nonatomic, readonly) NowPlayingInfoCenterProvider *nowPlayingInfoCenterProvider; + @end diff --git a/XCDYouTubeKit Demo/iOS Demo/AppDelegate.m b/XCDYouTubeKit Demo/iOS Demo/AppDelegate.m index 2c134a1f..b21893d6 100644 --- a/XCDYouTubeKit Demo/iOS Demo/AppDelegate.m +++ b/XCDYouTubeKit Demo/iOS Demo/AppDelegate.m @@ -4,12 +4,21 @@ #import "AppDelegate.h" -#import "PlayerEventLogger.h" - @implementation AppDelegate @synthesize window = _window; +- (instancetype) init +{ + if (!(self = [super init])) + return nil; + + _playerEventLogger = [PlayerEventLogger new]; + _nowPlayingInfoCenterProvider = [NowPlayingInfoCenterProvider new]; + + return self; +} + - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"VideoIdentifier": @"EdeVaT-zZt4" }]; @@ -29,31 +38,7 @@ - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions: UIBarButtonItem *settingsButtonItem = navigationController.topViewController.navigationItem.rightBarButtonItem; [settingsButtonItem setTitleTextAttributes:@{ UITextAttributeFont: [UIFont boldSystemFontOfSize:26] } forState:UIControlStateNormal]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayerViewControllerDidReceiveVideo:) name:XCDYouTubeVideoPlayerViewControllerDidReceiveVideoNotification object:nil]; - - [[PlayerEventLogger sharedLogger] setEnabled:YES]; - return YES; } -#pragma mark - Notifications - -- (void) videoPlayerViewControllerDidReceiveVideo:(NSNotification *)notification -{ - XCDYouTubeVideo *video = notification.userInfo[XCDYouTubeVideoUserInfoKey]; - NSString *title = video.title; - if (title) - [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = @{ MPMediaItemPropertyTitle: title }; - - [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:video.mediumThumbnailURL] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { - if (data) - { - UIImage *image = [UIImage imageWithData:data]; - MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:image]; - if (title && artwork) - [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = @{ MPMediaItemPropertyTitle: title, MPMediaItemPropertyArtwork: artwork }; - } - }]; -} - @end diff --git a/XCDYouTubeKit Demo/iOS Demo/DemoAsynchronousViewController.m b/XCDYouTubeKit Demo/iOS Demo/DemoAsynchronousViewController.m index 07a2be16..fa439639 100644 --- a/XCDYouTubeKit Demo/iOS Demo/DemoAsynchronousViewController.m +++ b/XCDYouTubeKit Demo/iOS Demo/DemoAsynchronousViewController.m @@ -14,7 +14,8 @@ - (IBAction) play:(id)sender // https://developers.google.com/youtube/2.0/developers_guide_protocol_video_feeds#Standard_feeds NSURL *url = [NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/standardfeeds/most_popular?v=2&alt=json&time=today&max-results=1"]; - [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { + [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) + { id json = [NSJSONSerialization JSONObjectWithData:data ?: [NSData new] options:0 error:NULL]; NSString *videoIdentifier = [[[json valueForKeyPath:@"feed.entry.media$group.yt$videoid.$t"] lastObject] description]; videoPlayerViewController.videoIdentifier = videoIdentifier; diff --git a/XCDYouTubeKit Demo/iOS Demo/DemoThumbnailViewController.m b/XCDYouTubeKit Demo/iOS Demo/DemoThumbnailViewController.m index d9967ed4..dad824f5 100644 --- a/XCDYouTubeKit Demo/iOS Demo/DemoThumbnailViewController.m +++ b/XCDYouTubeKit Demo/iOS Demo/DemoThumbnailViewController.m @@ -36,7 +36,8 @@ - (void) videoPlayerViewControllerDidReceiveVideo:(NSNotification *)notification self.titleLabel.text = video.title; NSURL *thumbnailURL = video.mediumThumbnailURL ?: video.smallThumbnailURL; - [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:thumbnailURL] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { + [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:thumbnailURL] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) + { self.thumbnailImageView.image = [UIImage imageWithData:data]; [self.actionButton setTitle:NSLocalizedString(@"Play Video", nil) forState:UIControlStateNormal]; diff --git a/XCDYouTubeKit Demo/iOS Demo/NowPlayingInfoCenterProvider.h b/XCDYouTubeKit Demo/iOS Demo/NowPlayingInfoCenterProvider.h new file mode 100644 index 00000000..ea3124a0 --- /dev/null +++ b/XCDYouTubeKit Demo/iOS Demo/NowPlayingInfoCenterProvider.h @@ -0,0 +1,9 @@ +// +// Copyright (c) 2013-2014 Cédric Luthi. All rights reserved. +// + +@interface NowPlayingInfoCenterProvider : NSObject + +@property (nonatomic, assign, getter = isEnabled) BOOL enabled; // defaults to `YES` + +@end diff --git a/XCDYouTubeKit Demo/iOS Demo/NowPlayingInfoCenterProvider.m b/XCDYouTubeKit Demo/iOS Demo/NowPlayingInfoCenterProvider.m new file mode 100644 index 00000000..c1e821d3 --- /dev/null +++ b/XCDYouTubeKit Demo/iOS Demo/NowPlayingInfoCenterProvider.m @@ -0,0 +1,52 @@ +// +// Copyright (c) 2013-2014 Cédric Luthi. All rights reserved. +// + +#import "NowPlayingInfoCenterProvider.h" + +@implementation NowPlayingInfoCenterProvider + +- (instancetype) init +{ + if (!(self = [super init])) + return nil; + + self.enabled = YES; + + return self; +} + +- (void) setEnabled:(BOOL)enabled +{ + if (_enabled == enabled) + return; + + _enabled = enabled; + + NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; + if (enabled) + [defaultCenter addObserver:self selector:@selector(videoPlayerViewControllerDidReceiveVideo:) name:XCDYouTubeVideoPlayerViewControllerDidReceiveVideoNotification object:nil]; + else + [defaultCenter removeObserver:self name:XCDYouTubeVideoPlayerViewControllerDidReceiveVideoNotification object:nil]; +} + +- (void) videoPlayerViewControllerDidReceiveVideo:(NSNotification *)notification +{ + XCDYouTubeVideo *video = notification.userInfo[XCDYouTubeVideoUserInfoKey]; + NSString *title = video.title; + if (title) + [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = @{ MPMediaItemPropertyTitle: title }; + + [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:video.mediumThumbnailURL] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) + { + if (data) + { + UIImage *image = [UIImage imageWithData:data]; + MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:image]; + if (title && artwork) + [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = @{ MPMediaItemPropertyTitle: title, MPMediaItemPropertyArtwork: artwork }; + } + }]; +} + +@end diff --git a/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.h b/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.h index 1ad76b62..324872a5 100644 --- a/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.h +++ b/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.h @@ -4,8 +4,6 @@ @interface PlayerEventLogger : NSObject -+ (instancetype) sharedLogger; - -@property (nonatomic, assign, getter = isEnabled) BOOL enabled; // defaults to `NO` +@property (nonatomic, assign, getter = isEnabled) BOOL enabled; // defaults to `YES` @end diff --git a/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.m b/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.m index 865543d9..9757d058 100644 --- a/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.m +++ b/XCDYouTubeKit Demo/iOS Demo/PlayerEventLogger.m @@ -6,14 +6,14 @@ @implementation PlayerEventLogger -+ (instancetype) sharedLogger +- (instancetype) init { - static PlayerEventLogger *sharedLogger; - static dispatch_once_t once; - dispatch_once(&once, ^{ - sharedLogger = [self new]; - }); - return sharedLogger; + if (!(self = [super init])) + return nil; + + self.enabled = YES; + + return self; } - (void) setEnabled:(BOOL)enabled diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default-568h@2x.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default-568h@2x.png deleted file mode 100644 index 0891b7aa..00000000 Binary files a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default-568h@2x.png and /dev/null differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default.png deleted file mode 100644 index 4c8ca6f6..00000000 Binary files a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default.png and /dev/null differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default@2x.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default@2x.png deleted file mode 100644 index 35b84cff..00000000 Binary files a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Default@2x.png and /dev/null differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Icon@2x.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Icon@2x.png deleted file mode 100644 index ddbb28ee..00000000 Binary files a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Icon@2x.png and /dev/null differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..33880be5 --- /dev/null +++ b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,110 @@ +{ + "images" : [ + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-58.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-80.png", + "scale" : "2x" + }, + { + "size" : "57x57", + "idiom" : "iphone", + "filename" : "Icon-57.png", + "scale" : "1x" + }, + { + "size" : "57x57", + "idiom" : "iphone", + "filename" : "Icon-114.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-120.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-180.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-29.png", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "filename" : "Icon-58.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-40.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-80.png", + "scale" : "2x" + }, + { + "size" : "50x50", + "idiom" : "ipad", + "filename" : "Icon-50.png", + "scale" : "1x" + }, + { + "size" : "50x50", + "idiom" : "ipad", + "filename" : "Icon-100.png", + "scale" : "2x" + }, + { + "size" : "72x72", + "idiom" : "ipad", + "filename" : "Icon-72.png", + "scale" : "1x" + }, + { + "size" : "72x72", + "idiom" : "ipad", + "filename" : "Icon-144.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-152.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-100.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-100.png new file mode 100644 index 00000000..aecc1213 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-100.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-114.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-114.png new file mode 100644 index 00000000..209f540c Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-114.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-120.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-120.png new file mode 100644 index 00000000..2daaf8b6 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-120.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-144.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-144.png new file mode 100644 index 00000000..21a8f2e3 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-144.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-152.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-152.png new file mode 100644 index 00000000..1e9b90bc Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-152.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-180.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-180.png new file mode 100644 index 00000000..73d22547 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-180.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-29.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-29.png new file mode 100644 index 00000000..23ec8be1 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-29.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-40.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-40.png new file mode 100644 index 00000000..09f946d8 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-40.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-50.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-50.png new file mode 100644 index 00000000..015d952c Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-50.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-57.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-57.png new file mode 100644 index 00000000..83f4e92b Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-57.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-58.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-58.png new file mode 100644 index 00000000..9ebcae00 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-58.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-72.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-72.png new file mode 100644 index 00000000..fbd2dc27 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-72.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-76.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-76.png new file mode 100644 index 00000000..20004a95 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-76.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-80.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-80.png new file mode 100644 index 00000000..246fb6f2 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/AppIcon.appiconset/Icon-80.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Contents.json b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 00000000..a2a7d966 --- /dev/null +++ b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,94 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "filename" : "Default.png", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "filename" : "Default@2x.png", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "filename" : "Default-568h@2x.png", + "subtype" : "retina4", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "filename" : "Default@2x.png", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "filename" : "Default-568h@2x.png", + "minimum-system-version" : "7.0", + "subtype" : "retina4", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "extent" : "full-screen", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "extent" : "full-screen", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png new file mode 100644 index 00000000..49f270a7 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default.png new file mode 100644 index 00000000..6978462e Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default@2x.png b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default@2x.png new file mode 100644 index 00000000..874327d3 Binary files /dev/null and b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/Images.xcassets/LaunchImage.launchimage/Default@2x.png differ diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/LaunchScreen.xib b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/LaunchScreen.xib new file mode 100644 index 00000000..b340a944 --- /dev/null +++ b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/LaunchScreen.xib @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Info.plist b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Info.plist index c3151700..ee687204 100644 --- a/XCDYouTubeKit Demo/iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Info.plist +++ b/XCDYouTubeKit Demo/iOS Demo/Supporting Files/XCDYouTubeKit iOS Demo-Info.plist @@ -8,6 +8,10 @@ YouTube ▶ CFBundleExecutable ${EXECUTABLE_NAME} + CFBundleIcons + + CFBundleIcons~ipad + CFBundleIdentifier ch.pitaya.xcdyoutubekit.demo.ios CFBundleInfoDictionaryVersion @@ -26,6 +30,8 @@ audio + UILaunchStoryboardName + LaunchScreen UIMainStoryboardFile MainStoryboard UIRequiredDeviceCapabilities diff --git a/XCDYouTubeKit Demo/iOS Demo/en.lproj/MainStoryboard.storyboard b/XCDYouTubeKit Demo/iOS Demo/en.lproj/MainStoryboard.storyboard index 870767a4..8055d852 100644 --- a/XCDYouTubeKit Demo/iOS Demo/en.lproj/MainStoryboard.storyboard +++ b/XCDYouTubeKit Demo/iOS Demo/en.lproj/MainStoryboard.storyboard @@ -1,8 +1,8 @@ - + - - + + @@ -21,7 +21,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -258,7 +258,7 @@ - + @@ -285,7 +285,7 @@ - + @@ -349,7 +349,7 @@ - + diff --git a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testGeoblockedVideo.json b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testGeoblockedVideo.json new file mode 100644 index 00000000..f6aedbdb --- /dev/null +++ b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testGeoblockedVideo.json @@ -0,0 +1,58 @@ +[ + { + "body" : "errorcode=150&atc=a%3D3%26b%3Dq-TT-kKwnO6ZTJf96zRTGkEu-2A%26c%3D1410169662%26d%3D1%26e%3DvwkFTztnl7Y%26c3a%3D17%26hh%3DwEa6m7g-xiBiv69bEPs1Q89Tb5Y&csi_page_type=embed&reason=The+uploader+has+not+made+this+video+available+in+your+country.&status=fail&enablecsi=1&eventid=PnsNVNevMcH98gOzyYEo&errordetail=0&c=WEB", + "headers" : { + "Content-Type" : "application\/x-www-form-urlencoded", + "P3P" : "CP=\"This is not a P3P policy! See http:\/\/support.google.com\/accounts\/bin\/answer.py?answer=151657&hl=en for more info.\"", + "Alternate-Protocol" : "443:quic", + "Set-Cookie" : "YSC=TWJwXoBQ48E; path=\/; domain=.youtube.com; httponly", + "Server" : "gwiseguy\/2.0", + "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "Transfer-Encoding" : "Identity", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", + "Cache-Control" : "no-store", + "Date" : "Mon, 08 Sep 2014 09:47:42 GMT", + "X-Content-Type-Options" : "nosniff", + "X-Frame-Options" : "SAMEORIGIN" + }, + "method" : "GET", + "status" : 200, + "uri" : "https:\/\/www.youtube.com\/get_video_info?el=embedded&hl=en&ps=default&video_id=vwkFTztnl7Y" + }, + { + "body" : "errorcode=150&eventid=PnsNVN3KNpTc8gPmsoHgBA&status=fail&csi_page_type=watch%2Cwatch7&c=WEB&reason=The+uploader+has+not+made+this+video+available+in+your+country.&errordetail=0&enablecsi=1", + "headers" : { + "Server" : "gwiseguy\/2.0", + "Content-Type" : "application\/x-www-form-urlencoded", + "X-Content-Type-Options" : "nosniff", + "Transfer-Encoding" : "Identity", + "Date" : "Mon, 08 Sep 2014 09:47:42 GMT", + "X-Frame-Options" : "SAMEORIGIN", + "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "Alternate-Protocol" : "443:quic", + "Cache-Control" : "no-store", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST" + }, + "method" : "GET", + "status" : 200, + "uri" : "https:\/\/www.youtube.com\/get_video_info?el=detailpage&hl=en&ps=default&video_id=vwkFTztnl7Y" + }, + { + "body" : "eventid=PnsNVJPkOoqH8wOEloKgDg&status=fail&errordetail=0&c=WEB&reason=The+uploader+has+not+made+this+video+available+in+your+country.&errorcode=150", + "headers" : { + "Server" : "gwiseguy\/2.0", + "Content-Type" : "application\/x-www-form-urlencoded", + "X-Content-Type-Options" : "nosniff", + "Date" : "Mon, 08 Sep 2014 09:47:42 GMT", + "X-Frame-Options" : "SAMEORIGIN", + "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "Alternate-Protocol" : "443:quic", + "Content-Length" : "147", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", + "Cache-Control" : "no-store" + }, + "method" : "GET", + "status" : 200, + "uri" : "https:\/\/www.youtube.com\/get_video_info?el=vevo&hl=en&ps=default&video_id=vwkFTztnl7Y" + } +] \ No newline at end of file diff --git a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testRestrictedVideo.json b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testRestrictedVideo.json index c138b440..67f4b0a7 100644 --- a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testRestrictedVideo.json +++ b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testRestrictedVideo.json @@ -1,53 +1,55 @@ [ { - "body" : "errorcode=150&status=fail&reason=This+video+contains+content+from+Youtube+test+content+owner%2C+who+has+blocked+it+on+copyright+grounds.&eventid=p0RzU-WjIoOu8wOtnoGgAw&enablecsi=1&errordetail=0&csi_page_type=watch%2Cwatch7&c=WEB", + "body" : "enablecsi=1&csi_page_type=watch%2Cwatch7&errordetail=0&eventid=ynkNVLmhJoqI8QOfiIGIDA&status=fail&c=WEB&reason=This+video+is+currently+unavailable.+We+are+working+to+bring+it+back.&errorcode=150", "headers" : { "X-Content-Type-Options" : "nosniff", - "Server" : "gwiseguy\/2.0", "Content-Type" : "application\/x-www-form-urlencoded", + "Server" : "gwiseguy\/2.0", "Transfer-Encoding" : "Identity", - "Date" : "Wed, 14 May 2014 10:25:43 GMT", + "Date" : "Mon, 08 Sep 2014 09:41:30 GMT", "X-Frame-Options" : "SAMEORIGIN", "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", "Alternate-Protocol" : "443:quic", - "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", - "Cache-Control" : "no-store" + "Cache-Control" : "no-store", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST" }, "method" : "GET", "status" : 200, "uri" : "https:\/\/www.youtube.com\/get_video_info?el=detailpage&hl=en&ps=default&video_id=1kIsylLeHHU" }, { - "body" : "c=WEB&errorcode=150&errordetail=0&reason=This+video+contains+content+from+Youtube+test+content+owner%2C+who+has+blocked+it+on+copyright+grounds.&eventid=p0RzU-ykMNPx8QO-24DgAg&status=fail", + "body" : "reason=This+video+is+currently+unavailable.+We+are+working+to+bring+it+back.&eventid=ynkNVKmeLIeH8APpt4GwDw&errordetail=0&c=WEB&errorcode=150&status=fail", "headers" : { "X-Content-Type-Options" : "nosniff", "Content-Type" : "application\/x-www-form-urlencoded", "Server" : "gwiseguy\/2.0", "Transfer-Encoding" : "Identity", - "Date" : "Wed, 14 May 2014 10:25:43 GMT", + "Date" : "Mon, 08 Sep 2014 09:41:30 GMT", "X-Frame-Options" : "SAMEORIGIN", "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", "Alternate-Protocol" : "443:quic", - "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", - "Cache-Control" : "no-store" + "Cache-Control" : "no-store", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST" }, "method" : "GET", "status" : 200, "uri" : "https:\/\/www.youtube.com\/get_video_info?el=vevo&hl=en&ps=default&video_id=1kIsylLeHHU" }, { - "body" : "status=fail&enablecsi=1&errordetail=0&eventid=p0RzU42RGYGY8wPWuIC4Aw&errorcode=150&c=WEB&reason=This+video+contains+content+from+Youtube+test+content+owner%2C+who+has+blocked+it+on+copyright+grounds.&csi_page_type=embed&atc=a%3D3%26b%3DNT5sJxCYIijuRcwzJK8Z668dHYA%26c%3D1400063143%26d%3D1%26e%3D1kIsylLeHHU%26c3a%3D16%26hh%3DnUwRo0ZePbPax9ksLWBmXOPZzyI", + "body" : "errorcode=150&csi_page_type=embed&errordetail=0&c=WEB&atc=a%3D3%26b%3DMvHQUdPztUgFDpy5wx2zfWwgPRw%26c%3D1410169290%26d%3D1%26e%3D1kIsylLeHHU%26c3a%3D22%26hh%3DAh1pUdYFgkIdL0dIQKdof-F6uik&status=fail&enablecsi=1&reason=This+video+is+currently+unavailable.+We+are+working+to+bring+it+back.&eventid=ynkNVKawINTH8gPNpICwBQ", "headers" : { - "Server" : "gwiseguy\/2.0", "Content-Type" : "application\/x-www-form-urlencoded", - "X-Content-Type-Options" : "nosniff", - "Transfer-Encoding" : "Identity", - "Date" : "Wed, 14 May 2014 10:25:43 GMT", - "X-Frame-Options" : "SAMEORIGIN", - "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "P3P" : "CP=\"This is not a P3P policy! See http:\/\/support.google.com\/accounts\/bin\/answer.py?answer=151657&hl=en for more info.\"", "Alternate-Protocol" : "443:quic", + "Set-Cookie" : "YSC=LMiN8XaKfNg; path=\/; domain=.youtube.com; httponly", + "Server" : "gwiseguy\/2.0", + "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "Transfer-Encoding" : "Identity", "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", - "Cache-Control" : "no-store" + "Cache-Control" : "no-store", + "Date" : "Mon, 08 Sep 2014 09:41:30 GMT", + "X-Content-Type-Options" : "nosniff", + "X-Frame-Options" : "SAMEORIGIN" }, "method" : "GET", "status" : 200, diff --git a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testAgeRestrictedVEVOVideo.json b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testAgeRestrictedVEVOVideo.json new file mode 100644 index 00000000..f3d4edd1 --- /dev/null +++ b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testAgeRestrictedVEVOVideo.json @@ -0,0 +1,38 @@ +[ + { + "body" : "tmi=1&iv_module=https%3A%2F%2Fs.ytimg.com%2Fyts%2Fswfbin%2Fplayer-vfluKx0IV%2Fiv_module.swf&dash=1&token=vjVQa1PpcFPqNscjc_xil5BioOkxfglVn-kEFKpONx0%3D&thumbnail_url=https%3A%2F%2Fi.ytimg.com%2Fvi%2F07FYdnEawAQ%2Fdefault.jpg&has_cc=False&muted=0&dashmpd=http%3A%2F%2Fmanifest.googlevideo.com%2Fapi%2Fmanifest%2Fdash%2Fexpire%2F1415903341%2Fid%2Fo-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2Fip%2F213.173.175.4%2Fsource%2Fyoutube%2Fas%2Ffmp4_audio_clear%252Cwebm_audio_clear%252Cfmp4_sd_hd_clear%252Cwebm_sd_hd_clear%252Cwebm2_sd_hd_clear%2Fmv%2Fm%2Fms%2Fau%2Fsignature%2F46915CE43E3F769F3B3C8AF5D59D3AC0680E755D.9BD09C5CB05D091AAB5678CD64E11F8A6DFCF960%2Fmm%2F31%2Fipbits%2F0%2Fkey%2Fyt5%2Fsver%2F3%2Fmt%2F1415881672%2Fupn%2F23Muu0e4CmU%2Fplayback_host%2Fr7---sn-2apm-f5fee.googlevideo.com%2Fsparams%2Fas%252Cid%252Cip%252Cipbits%252Citag%252Cmm%252Cms%252Cmv%252Cplayback_host%252Csource%252Cexpire%2Ffexp%2F907259%252C927622%252C932404%252C936112%252C941004%252C943909%252C947209%252C947215%252C948124%252C949108%252C952302%252C952605%252C952901%252C953912%252C957103%252C957105%252C957201%2Fitag%2F0&url_encoded_fmt_stream_map=url%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fratebypass%253Dyes%2526expire%253D1415903341%2526key%253Dyt5%2526upn%253Dy0fytshdv_I%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526ms%253Dau%2526signature%253D762363070BDF937FB8FD25563668AFB615E09333.7E311DCECFAE13DEBE11F82B3CEFE96AE535922D%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526itag%253D22%26quality%3Dhd720%26fallback_host%3Dtc.v7.cache6.googlevideo.com%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.64001F%252C%2Bmp4a.40.2%2522%26itag%3D22%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fratebypass%253Dyes%2526expire%253D1415903341%2526key%253Dyt5%2526upn%253Dy0fytshdv_I%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526ms%253Dau%2526signature%253D98FBAAB2B449011B8464549FD52DE9310045049E.31721548EB331B5BFA85B8DDEF720B486530A882%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526itag%253D43%26quality%3Dmedium%26fallback_host%3Dtc.v18.cache6.googlevideo.com%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp8.0%252C%2Bvorbis%2522%26itag%3D43%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fratebypass%253Dyes%2526expire%253D1415903341%2526key%253Dyt5%2526upn%253Dy0fytshdv_I%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526ms%253Dau%2526signature%253D6FCE55E1E352FDF72553E430A8A857D602A3C0D1.C49BD353058D43471B633637DDF8CA88E34BFC0E%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526itag%253D18%26quality%3Dmedium%26fallback_host%3Dtc.v6.cache8.googlevideo.com%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.42001E%252C%2Bmp4a.40.2%2522%26itag%3D18%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526key%253Dyt5%2526upn%253Dy0fytshdv_I%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526ms%253Dau%2526signature%253D8781E8888C8C7789C3B1D38C09014C7E907D5184.1B3C6B28D93B60243070D469F0E536554AEFD4ED%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526itag%253D5%26quality%3Dsmall%26fallback_host%3Dtc.v17.cache1.googlevideo.com%26type%3Dvideo%252Fx-flv%26itag%3D5%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526key%253Dyt5%2526upn%253Dy0fytshdv_I%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526ms%253Dau%2526signature%253DD778B4F4DCFBCBECF90CA8DADCCC03B228F88990.CF47B18B39E6DB8B2CFA00F7486054E85BC79B3E%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526itag%253D36%26quality%3Dsmall%26fallback_host%3Dtc.v9.cache7.googlevideo.com%26type%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26itag%3D36%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526key%253Dyt5%2526upn%253Dy0fytshdv_I%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526ms%253Dau%2526signature%253D0BA8DB3642831D312AAAD163D8BC732A4F11E62B.7AABDBD10C3F6BA01CD3B34F7395D6F91BF29376%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526itag%253D17%26quality%3Dsmall%26fallback_host%3Dtc.v10.cache8.googlevideo.com%26type%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26itag%3D17&probe_url=http%3A%2F%2Fr1---sn-25g7sm7r.c.youtube.com%2Fvideogoodput%3Fid%3Do-AJbu0D93DdU5CwJq9AYAuadulbZMEGRsbhCpdWX6cXGJ%26source%3Dgoodput%26range%3D0-99999%26expire%3D1415885341%26ip%3D213.173.175.4%26ms%3Dpm%26nh%3DEAE%26sparams%3Did%2Csource%2Crange%2Cexpire%2Cip%2Cms%2Cnh%26signature%3D4296ACC2CE240BCCEFE0DC1791B0ABEA6CF8E121.6A59D208159D80D458395F589E7F6EFF47C47E96%26key%3Dcms1&c=WEB&iv_load_policy=1&ptchn=sXfDf1CDgU3SCt0gxJNXGg&uid=sXfDf1CDgU3SCt0gxJNXGg&use_cipher_signature=False&cl=79788225&ytfocHistoryEnabled=1&pltype=content&no_get_video_log=1&remarketing_url=https%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fviewthroughconversion%2F962985656%2F%3Fptype%3Dview%26backend%3Dplayer_vars%26cver%3DAS3%26aid%3DP-koazukqz0%26cname%3D1%26data%3Dbackend%253Dplayer_vars%253Bcname%253D1%253Bcver%253DAS3%253Bptype%253Dview%253Btype%253Dview%253Butuid%253DsXfDf1CDgU3SCt0gxJNXGg%253Butvid%253D07FYdnEawAQ%26label%3Dfollowon_view%26foc_id%3DsXfDf1CDgU3SCt0gxJNXGg&storyboard_spec=https%3A%2F%2Fi.ytimg.com%2Fsb%2F07FYdnEawAQ%2Fstoryboard3_L%24L%2F%24N.jpg%7C48%2327%23100%2310%2310%230%23default%23yNfY6QaCsYUziT-nOaPcBItXbNU%7C80%2345%2385%2310%2310%235000%23M%24M%23UtOKQnVUs9RvQ0CkkgZJx96yIyQ%7C160%2390%2385%235%235%235000%23M%24M%23CKWCippawai_FaD-yja5CiiVIOY&account_playback_token=QUFFLUhqbVcyNWQ5czlSRkF1RlJHRE5Ua1k0R2lFSlZwUXxBQ3Jtc0tsRGFmczdTQTVQNzgyc01UWlNvaDVpbkxWRWtlSU9QanpQMFpzRzY5c0NyRUNWVEJJMkNlUm9Kc09IQUJkRkh6dmpfR3ptMUNTS1hZWDJyVHNQX1FHX2M2cEktamI5LTA3ODZtUVFuV19fbHVoT3hXMA%3D%3D&enablecsi=1&of=rhqVJDYrf0qg4DsuxgooCw&video_id=07FYdnEawAQ&length_seconds=419&allow_embed=1&iurl=https%3A%2F%2Fi.ytimg.com%2Fvi%2F07FYdnEawAQ%2Fhqdefault.jpg&iv3_module=1&author=justintimberlakeVEVO&fmt_list=22%2F1280x720%2F9%2F0%2F115%2C43%2F640x360%2F99%2F0%2F0%2C18%2F640x360%2F9%2F0%2F115%2C5%2F426x240%2F7%2F0%2F0%2C36%2F426x240%2F99%2F1%2F0%2C17%2F256x144%2F99%2F1%2F0&rmktEnabled=1&watermark=%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_watermark-vflHX6b6E.png%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_hd_watermark-vflAzLcD6.png&eventid=DaRkVJn-NKTP0QWDsoC4Cw&ldpj=-15&adaptive_fmts=url%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1402636620154284%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.836%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D109101107%2526ms%253Dau%2526signature%253D8DC7F160E65CB322E788800BF4B855A04FB63A9D.B446AFCE12416C732C85BD625655A3D3980EE07C%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D137%26bitrate%3D4069845%26fps%3D24%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.640028%2522%26size%3D1920x1080%26index%3D711-1750%26init%3D0-710%26clen%3D109101107%26lmt%3D1402636620154284%26itag%3D137%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1411234000147166%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.835%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D65513429%2526ms%253Dau%2526signature%253DAE78243E4BA49F8BBEDF15BF3717FAE83A73B24D.F5750556748CE31FEE48EDB4B1DB83391EFC8C4B%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D248%26bitrate%3D2733659%26fps%3D1%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26size%3D1920x1080%26index%3D235-1710%26init%3D0-234%26clen%3D65513429%26lmt%3D1411234000147166%26itag%3D248%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1402636388544569%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.836%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D56528516%2526ms%253Dau%2526signature%253DB502FFCE6F573CC75F1446B63235E700E5863836.BEF2943F5CCDD88E2B8223D22623F8BE7D14A032%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D136%26bitrate%3D2211967%26fps%3D24%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401f%2522%26size%3D1280x720%26index%3D709-1748%26init%3D0-708%26clen%3D56528516%26lmt%3D1402636388544569%26itag%3D136%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1411233980333969%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.835%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D37240432%2526ms%253Dau%2526signature%253D4EAA3B2F3A4B460015A4F48CF2BFDA435F505AE5.357BAAF91C66C435DF338A67D009A048A89C1D5C%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D247%26bitrate%3D1582181%26fps%3D1%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26size%3D1280x720%26index%3D235-1696%26init%3D0-234%26clen%3D37240432%26lmt%3D1411233980333969%26itag%3D247%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1402636084227495%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.836%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D29092558%2526ms%253Dau%2526signature%253DEA96299712B07E930EE98C0BE02B41EC27FAD274.A0056CE2055F7ABE0CDE3740F4B9F50E0EBCEACE%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D135%26bitrate%3D1104099%26fps%3D24%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401e%2522%26size%3D854x480%26index%3D709-1748%26init%3D0-708%26clen%3D29092558%26lmt%3D1402636084227495%26itag%3D135%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1411233973831675%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.835%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D19468059%2526ms%253Dau%2526signature%253D37DECB5EC59A67ED78F6F8913BF2F870D30E7BEB.930182C68FF151420A2F6462C55966C7F3F89A7B%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D244%26bitrate%3D782903%26fps%3D1%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26size%3D854x480%26index%3D234-1665%26init%3D0-233%26clen%3D19468059%26lmt%3D1411233973831675%26itag%3D244%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1402636232847505%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.836%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D14415570%2526ms%253Dau%2526signature%253DEAF1CBB378925E7886BCE8C2C5B1D0DE987633AF.7210837656A098165854CCF6E7D12C19A87DF82B%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D134%26bitrate%3D603965%26fps%3D24%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401e%2522%26size%3D640x360%26index%3D709-1748%26init%3D0-708%26clen%3D14415570%26lmt%3D1402636232847505%26itag%3D134%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1411233965541520%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.835%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D11526784%2526ms%253Dau%2526signature%253D43404FF019F3BEA2BD841DBF6D93B8A7A7D422B6.695FB280BB3FEA38A8116A88A26D48CBFB731CC6%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D243%26bitrate%3D407988%26fps%3D1%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26size%3D640x360%26index%3D235-1652%26init%3D0-234%26clen%3D11526784%26lmt%3D1411233965541520%26itag%3D243%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1402636014143274%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.836%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D12585383%2526ms%253Dau%2526signature%253D276B59B15F4B77FCC42B7CCB4B26C1DEFC50DBCD.4BDD7455EEE134537E8B734CF4A60FA0D493266E%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D133%26bitrate%3D249540%26fps%3D24%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d4015%2522%26size%3D426x240%26index%3D673-1712%26init%3D0-672%26clen%3D12585383%26lmt%3D1402636014143274%26itag%3D133%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1411233957975205%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.835%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D6311482%2526ms%253Dau%2526signature%253DFA382CB7B07222FC3E1069B0F7995FA5D62FA7A5.0F463B5A10C6D73E8B5BBB89E11C3FCA7E646BC0%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D242%26bitrate%3D214083%26fps%3D1%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26size%3D426x240%26index%3D234-1650%26init%3D0-233%26clen%3D6311482%26lmt%3D1411233957975205%26itag%3D242%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1402635971473749%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.836%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D5609783%2526ms%253Dau%2526signature%253DC28EE0DB616C889D598A1AF6CC075ACCCC892122.B6A887E079552525195606345A0672B5DF7F7008%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D160%26bitrate%3D111926%26fps%3D12%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d400c%2522%26size%3D256x144%26index%3D671-1710%26init%3D0-670%26clen%3D5609783%26lmt%3D1402635971473749%26itag%3D160%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1402623468656624%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.933%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D6726152%2526ms%253Dau%2526signature%253DA5DB28F43FD26754C8A93FE6907E869F80DCDEFB.6B6E0C040E7D5FC140BF80865EA92D153B860D50%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D140%26bitrate%3D129724%26type%3Daudio%252Fmp4%253B%2Bcodecs%253D%2522mp4a.40.2%2522%26index%3D592-1127%26init%3D0-591%26clen%3D6726152%26lmt%3D1402623468656624%26itag%3D140%2Curl%3Dhttp%253A%252F%252Fr7---sn-2apm-f5fee.googlevideo.com%252Fvideoplayback%253Fexpire%253D1415903341%2526lmt%253D1411233948851275%2526key%253Dyt5%2526upn%253Ds-eHGVTmSO0%2526fexp%253D907259%25252C927622%25252C932404%25252C936112%25252C941004%25252C943909%25252C947209%25252C947215%25252C948124%25252C949108%25252C952302%25252C952605%25252C952901%25252C953912%25252C957103%25252C957105%25252C957201%2526dur%253D418.869%2526initcwndbps%253D472500%2526id%253Do-AMYahwOGrKR-_qh5PqtEdcktCKetilLyKTzEzIo9uamm%2526ip%253D213.173.175.4%2526source%253Dyoutube%2526mv%253Dm%2526clen%253D5948206%2526ms%253Dau%2526signature%253D023B40327BC767AAF2C41C98681B23220DFD8BF6.782353F0E79AE0D25FFA32131C8DFA171B75B804%2526mm%253D31%2526ipbits%253D0%2526sver%253D3%2526mt%253D1415881672%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526gir%253Dyes%2526itag%253D171%26bitrate%3D125066%26fps%3D1%26type%3Daudio%252Fwebm%253B%2Bcodecs%253D%2522vorbis%2522%26index%3D4452-5162%26init%3D0-4451%26clen%3D5948206%26lmt%3D1411233948851275%26itag%3D171&csi_page_type=watch%2Cwatch7&iv_invideo_url=https%3A%2F%2Fwww.youtube.com%2Fannotations_invideo%3Fcap_hist%3D1%26cta%3D2%26video_id%3D07FYdnEawAQ&idpj=0&iurlhq=https%3A%2F%2Fi.ytimg.com%2Fvi%2F07FYdnEawAQ%2Fhqdefault.jpg&ytfocEnabled=1&iurlmaxres=https%3A%2F%2Fi.ytimg.com%2Fvi%2F07FYdnEawAQ%2Fmaxresdefault.jpg&view_count=11604316&video_verticals=%5B3%2C+1021%2C+35%2C+592%2C+1408%5D&fexp=907259%2C927622%2C932404%2C936112%2C941004%2C943909%2C947209%2C947215%2C948124%2C949108%2C952302%2C952605%2C952901%2C953912%2C957103%2C957105%2C957201&focEnabled=1&vid=07FYdnEawAQ&title=Justin+Timberlake+-+Tunnel+Vision+%28Explicit%29&keywords=Justin+Timberlake%2CTunnel+Vision%2Cnew+song%2Cnew+video%2Cofficial+video%2Cofficial%2Cnew%2CJT%2C20%2F20+Experience%2Cnaked%2Cboobs%2Cblurred+lines%2Cnudity%2Cnsfw&aid=P-wibJcN4eE&iurlsd=https%3A%2F%2Fi.ytimg.com%2Fvi%2F07FYdnEawAQ%2Fsddefault.jpg&rvs=session_data%3Dfeature%253Dendscreen%26author%3DjustintimberlakeVEVO%26length_seconds%3D501%26id%3DuuZE_IRwLNI%26title%3DJustin%2BTimberlake%2B-%2BMirrors%2Csession_data%3Dfeature%253Dendscreen%26author%3DjustintimberlakeVEVO%26length_seconds%3D430%26id%3DFyXtoTLLcDk%26title%3DJustin%2BTimberlake%2B-%2BTKO%2Csession_data%3Dfeature%253Dendscreen%26author%3DjustintimberlakeVEVO%26length_seconds%3D331%26id%3DIsUsVbTj2AY%26title%3DJustin%2BTimberlake%2B-%2BSuit%2B%2526%2BTie%2B%2528Official%2529%2Bft.%2BJAY%2BZ%2Csession_data%3Dfeature%253Dendscreen%26author%3DjustintimberlakeVEVO%26length_seconds%3D289%26id%3DQAnsWtJ9AFk%26title%3DJustin%2BTimberlake%2B-%2BCry%2BMe%2BA%2BRiver%2Csession_data%3Dfeature%253Dendscreen%26author%3DbeyonceVEVO%26length_seconds%3D230%26id%3DpZ12_E5R3qc%26title%3DBeyonc%25C3%25A9%2B-%2BPartition%2B%2528Explicit%2BVideo%2529%2Csession_data%3Dfeature%253Dendscreen%26author%3DRihannaVEVO%26length_seconds%3D197%26id%3DehcVomMexkY%26title%3DRihanna%2B-%2BPour%2BIt%2BUp%2B%2528Explicit%2529%2Csession_data%3Dfeature%253Dendscreen%26author%3DTimbalandVEVO%26length_seconds%3D235%26id%3DNRdHsuuXxfk%26title%3DTimbaland%2B-%2BCarry%2BOut%2Bft.%2BJustin%2BTimberlake%2Csession_data%3Dfeature%253Dendscreen%26author%3DCalvinHarrisVEVO%26length_seconds%3D277%26id%3Dcl3b7dDBLpo%26title%3DCalvin%2BHarris%2B-%2BThinking%2BAbout%2BYou%2Bft.%2BAyah%2BMarar%2Csession_data%3Dfeature%253Dendscreen%26thumbnail_ids%3D7PCkvCPvDXk%26playlist_title%3DTOP40%2BARTISTS-VEVO%26playlist_length%3D213%26video_id%3D7PCkvCPvDXk%26list%3DPL7C00E83736FB02C3%2Csession_data%3Dfeature%253Dendscreen%26author%3DmichaeljacksonVEVO%26length_seconds%3D248%26id%3DoG08ukJPtR8%26title%3DMichael%2BJackson%252C%2BJustin%2BTimberlake%2B-%2BLove%2BNever%2BFelt%2BSo%2BGood%2Csession_data%3Dfeature%253Dendscreen%26author%3DJAY%2BZ%2527s%2BLife%252BTimes%26length_seconds%3D339%26id%3D2YcIgow6TDk%26title%3DJAY%2BZ%2B%2522Holy%2BGrail%2522%2Bfeaturing%2BJustin%2BTimberlake%2Csession_data%3Dfeature%253Dendscreen%26author%3DRihannaVEVO%26length_seconds%3D279%26id%3DrJYcmq__nDM%26title%3DRihanna%2B-%2BRehab%2Bft.%2BJustin%2BTimberlake&iurlmq=https%3A%2F%2Fi.ytimg.com%2Fvi%2F07FYdnEawAQ%2Fmqdefault.jpg&allow_ratings=1&plid=AAUHvKhE_90rWImt×tamp=1415881741&avg_rating=4.72102536631&oid=yZJtHRi2SvzOOKZfbA-GRA&baseUrl=https%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fviewthroughconversion%2F962985656%2F&vq=auto&status=ok&ptk=vevo", + "headers" : { + "x-content-type-options" : "nosniff", + "Content-Type" : "application\/x-www-form-urlencoded", + "Server" : "gwiseguy\/2.0", + "Date" : "Thu, 13 Nov 2014 12:29:01 GMT", + "x-frame-options" : "SAMEORIGIN", + "x-xss-protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "alternate-protocol" : "443:quic,p=0.01", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", + "Cache-Control" : "no-store" + }, + "method" : "GET", + "status" : 200, + "uri" : "https:\/\/www.youtube.com\/get_video_info?el=detailpage&hl=en&ps=default&video_id=07FYdnEawAQ" + }, + { + "body" : "errorcode=150&c=WEB&eventid=DaRkVJKgMIKr0gXHsoDgCQ&reason=This+video+contains+content+from+VEVO.+It+is+restricted+from+playback+on+certain+sites.%3Cbr%2F%3E%3Cu%3E%3Ca+href%3D%27http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D07FYdnEawAQ%26feature%3Dplayer_embedded%27+target%3D%27_blank%27%3EWatch+on+YouTube%3C%2Fa%3E%3C%2Fu%3E&errordetail=0&status=fail&atc=a%3D3%26b%3D6h7VBsp78Buu941RcOdXgRLCiwA%26c%3D1415881741%26d%3D1%26e%3D07FYdnEawAQ%26c3a%3D20%26hh%3DN7Khk04m-E8HniPslA-L23pHuj8&csi_page_type=embed&enablecsi=1", + "headers" : { + "x-content-type-options" : "nosniff", + "Content-Type" : "application\/x-www-form-urlencoded", + "Server" : "gwiseguy\/2.0", + "Set-Cookie" : "YSC=af4QEJ-p-0M; path=\/; domain=.youtube.com; httponly", + "p3p" : "CP=\"This is not a P3P policy! See http:\/\/support.google.com\/accounts\/bin\/answer.py?answer=151657&hl=en for more info.\"", + "Date" : "Thu, 13 Nov 2014 12:29:01 GMT", + "x-frame-options" : "SAMEORIGIN", + "x-xss-protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "alternate-protocol" : "443:quic,p=0.01", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", + "Cache-Control" : "no-store" + }, + "method" : "GET", + "status" : 200, + "uri" : "https:\/\/www.youtube.com\/get_video_info?el=embedded&hl=en&ps=default&video_id=07FYdnEawAQ" + } +] \ No newline at end of file diff --git a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testAgeRestrictedVideo.json b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testAgeRestrictedVideo.json new file mode 100644 index 00000000..f70e77d6 --- /dev/null +++ b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testAgeRestrictedVideo.json @@ -0,0 +1,22 @@ +[ + { + "body" : "atc=a%3D3%26b%3Dz54bvUIYgZeIDPGgUea_kZbGuUc%26c%3D1410256429%26d%3D1%26e%3DzKovmts2KSk%26c3a%3D13%26hh%3DllHTr-Mdxp16gKaEujY5Udb0DB0&has_cc=False&status=ok&avg_rating=4.84961439589&baseUrl=https%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fviewthroughconversion%2F962985656%2F&remarketing_url=https%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fviewthroughconversion%2F962985656%2F%3Fbackend%3Dplayer_vars%26data%3Dbackend%253Dplayer_vars%253Bcname%253DWEB%253Bcver%253DAS3%253Bptype%253Dview%253Btype%253Dview%253Butuid%253D3GriadTkHBnfgd2UFETGOA%253Butvid%253DzKovmts2KSk%26cname%3DWEB%26aid%3DP9BjEyDXMQw%26cver%3DAS3%26label%3Dfollowon_view%26ptype%3Dview%26foc_id%3D3GriadTkHBnfgd2UFETGOA&account_playback_token=QUFFLUhqbDE1ZVpJTldFTHk0NzdicWNnM282RFZsR2p0Z3xBQ3Jtc0ttSTkyR0tpRTBlUVBMOFZFNWpLTDA1bmxyUFVOYjduUnNreVBpMmVrMjdVcE5nZ2xEandvSGotcjdrdFc5RlpWYXFfakRqc0VSUzRQY2NyN2R0c2FPUW05NkQ5M3dZYlpwcUthTWpwc1YxU3plYnBsQQ%3D%3D&adaptive_fmts=size%3D1920x816%26fps%3D29%26index%3D709-1064%26lmt%3D1390819922164503%26itag%3D137%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D137%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.297%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1390819922164503%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D31138136%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D9EE82746C2040C83586236338D378664FDAA0B77.4F73C92C09AB71A241339903A1877D9944DD8E8E%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-708%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.640028%2522%26clen%3D31138136%26bitrate%3D3269886%2Csize%3D1920x816%26fps%3D1%26index%3D235-690%26lmt%3D1407639763428125%26itag%3D248%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D248%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.264%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1407639763428125%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D21284554%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D0F898A012FB0CCB1576406A66E614F4F9FBF19EB.9BE6D09440D7997D91E028C7E5FA5DE8C3271EA4%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-234%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26clen%3D21284554%26bitrate%3D2597119%2Csize%3D1280x544%26fps%3D29%26index%3D708-1063%26lmt%3D1390819917153673%26itag%3D136%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D136%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.297%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1390819917153673%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D18206689%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D2B6B365B6A8CA2A169A93620CE51C83887F27991.684CDEFA6F4D2EE2B2C2FDDC435B963EF8CD0D86%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-707%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401f%2522%26clen%3D18206689%26bitrate%3D2351771%2Csize%3D1280x544%26fps%3D1%26index%3D235-683%26lmt%3D1407639731724242%26itag%3D247%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D247%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.264%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1407639731724242%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D10865194%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253DE10849EE8A1CAC9A9DF30431F20A0D3D1D4970BA.C66A90B61A76B0E9D0AFAC142D26864C88E002CE%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-234%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26clen%3D10865194%26bitrate%3D1471453%2Csize%3D854x362%26fps%3D29%26index%3D709-1064%26lmt%3D1390819912153885%26itag%3D135%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D135%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.297%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1390819912153885%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D8989594%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D075A332FC99178F4F8B8382E1A086AF46D8ECF1A.688C02FE0AD0B185A1535DBEE5FFC076AFB2F630%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-708%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401e%2522%26clen%3D8989594%26bitrate%3D1051180%2Csize%3D854x362%26fps%3D1%26index%3D235-683%26lmt%3D1407639728179350%26itag%3D244%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D244%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.264%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1407639728179350%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D6261671%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D8B32AD0C1BDB4F6EA5280A519F6D68AF112798A4.6B31F459C6C3728EAA48530DB8EAE8336A40B568%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-234%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26clen%3D6261671%26bitrate%3D859631%2Csize%3D640x272%26fps%3D29%26index%3D707-1062%26lmt%3D1390819912153163%26itag%3D134%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D134%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.297%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1390819912153163%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D4227718%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D89C8ACCBE752743DE10EC9C8DAAD903F8F287604.D740E7E7FA637E9141BB6E48315444A039841A1C%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-706%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401e%2522%26clen%3D4227718%26bitrate%3D481662%2Csize%3D640x272%26fps%3D1%26index%3D235-681%26lmt%3D1407639727173505%26itag%3D243%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D243%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.264%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1407639727173505%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D3352706%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253DC9D745CAD1443C195F4EAFE78358238090A93FEF.A0FED3EDA9871C52A616633B3D4EF987EEC3B1B5%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-234%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26clen%3D3352706%26bitrate%3D411270%2Csize%3D426x182%26fps%3D29%26index%3D673-1028%26lmt%3D1390819912152585%26itag%3D133%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D133%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.297%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1390819912152585%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D3703418%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D317FF73C7CD6F045277AC52D0F06E41C35AE6807.B6C40A0DD92C204FB47266ED01B1DDC333BE15EA%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-672%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d400d%2522%26clen%3D3703418%26bitrate%3D251393%2Csize%3D426x182%26fps%3D1%26index%3D234-680%26lmt%3D1407639714287107%26itag%3D242%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D242%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.264%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1407639714287107%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D1809613%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253DD7939754C2448822B5CEBECF43DD074100D30950.7C3D90F985036458740722B303FAA45838B44252%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-233%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26clen%3D1809613%26bitrate%3D216971%2Csize%3D256x108%26fps%3D15%26index%3D673-1028%26lmt%3D1390819917152885%26itag%3D160%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D160%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.297%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1390819917152885%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D1650879%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D2CD0DCD507BB29E91DACC6E0D33D16BADE3FBFF6.352F1B5C759E242BDB2CB224539C9091A395C8B6%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-672%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d400c%2522%26clen%3D1650879%26bitrate%3D114170%2Cindex%3D592-791%26lmt%3D1390819934156430%26itag%3D140%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D140%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.355%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1390819934156430%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D2086905%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D4ABF97EE6F645B8979EA3405ABF725B2D9B6A398.E4DEC7B30CF7F53C4861DA7A9139623BAC08ECE3%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-591%26type%3Daudio%252Fmp4%253B%2Bcodecs%253D%2522mp4a.40.2%2522%26clen%3D2086905%26bitrate%3D127845%2Cfps%3D1%26index%3D4452-4685%26lmt%3D1407639705686075%26itag%3D171%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D171%2526mm%253D31%2526gir%253Dyes%2526ipbits%253D0%2526dur%253D131.302%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526lmt%253D1407639705686075%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526clen%253D1706190%2526source%253Dyoutube%2526ip%253D193.5.216.83%2526expire%253D1410278029%2526upn%253DyZGeJGScHyk%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253DEA83C370E0265810E49119F92DCC3B16893C6B7E.CFBE436990ED46047F83342EC4D2C2805593B538%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%26init%3D0-4451%26type%3Daudio%252Fwebm%253B%2Bcodecs%253D%2522vorbis%2522%26clen%3D1706190%26bitrate%3D117641&thumbnail_url=https%3A%2F%2Fi.ytimg.com%2Fvi%2FzKovmts2KSk%2Fdefault.jpg&eventid=Lc4OVOTAM4e58gPmnIGYDA&vq=auto&focEnabled=1&video_id=zKovmts2KSk&tmi=1&use_cipher_signature=False&keywords=D3%2Cteaser%2C1080p&idpj=-8×tamp=1410256429&muted=0&video_verticals=%5B41%2C+622%2C+3%2C+935%5D&csi_page_type=embed&iurlsd=https%3A%2F%2Fi.ytimg.com%2Fvi%2FzKovmts2KSk%2Fsddefault.jpg&allow_embed=1&fexp=927622%2C931983%2C932404%2C932623%2C934024%2C934030%2C936117%2C938644%2C940215%2C946013%2C953801%2C955100&length_seconds=132&view_count=256303&iurl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FzKovmts2KSk%2Fhqdefault.jpg&pltype=contentugc&storyboard_spec=https%3A%2F%2Fi.ytimg.com%2Fsb%2FzKovmts2KSk%2Fstoryboard3_L%24L%2F%24N.jpg%7C48%2327%23100%2310%2310%230%23default%23thR8Ii-F2PQF_S650FyNNW-vEqY%7C106%2345%2367%2310%2310%232000%23M%24M%23YsPVlaPKnzWnON-tbuDmUyBg4v0%7C212%2390%2367%235%235%232000%23M%24M%23t38-TYr4aCOpXm_2XzdGTzP5ejM&ptk=Blizzard&loudness=-20.1499996185&plid=AAUCnumLVVJhAF4B&aid=P9dxBYtW3fg&ldpj=-22&title=Diablo+III+Teaser&dashmpd=http%3A%2F%2Fmanifest.googlevideo.com%2Fapi%2Fmanifest%2Fdash%2Fkey%2Fyt5%2Fitag%2F0%2Fmm%2F31%2Fip%2F193.5.216.83%2Fsource%2Fyoutube%2Fexpire%2F1410278029%2Fupn%2Fjgm8hC6p7aY%2Fipbits%2F0%2Fsparams%2Fas%252Cid%252Cip%252Cipbits%252Citag%252Cmm%252Cms%252Cmv%252Cplayback_host%252Csource%252Cexpire%2Fid%2Fo-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2Fplayback_host%2Fr15---sn-1gi7zn7y.googlevideo.com%2Ffexp%2F927622%252C931983%252C932404%252C932623%252C934024%252C934030%252C936117%252C938644%252C940215%252C946013%252C953801%252C955100%2Fms%2Fau%2Fsver%2F3%2Fmt%2F1410256308%2Fas%2Ffmp4_audio_clear%252Cwebm_audio_clear%252Cfmp4_sd_hd_clear%252Cwebm_sd_hd_clear%252Cwebm2_sd_hd_clear%2Fmv%2Fm%2Fsignature%2F23245B4C4D8A70B1F0324CA302E9D533668A21DE.944F6713784B7D0C608E1447CDAD1BF8D8CFF114&no_get_video_log=1&vid=zKovmts2KSk&enablecsi=1&iurlhq=https%3A%2F%2Fi.ytimg.com%2Fvi%2FzKovmts2KSk%2Fhqdefault.jpg&iurlmaxres=https%3A%2F%2Fi.ytimg.com%2Fvi%2FzKovmts2KSk%2Fmaxresdefault.jpg&rmktEnabled=1&dash=1&author=Blizzard+Entertainment&fmt_list=22%2F1280x720%2F9%2F0%2F115%2C43%2F640x360%2F99%2F0%2F0%2C18%2F640x360%2F9%2F0%2F115%2C5%2F320x240%2F7%2F0%2F0%2C36%2F320x240%2F99%2F1%2F0%2C17%2F176x144%2F99%2F1%2F0&c=WEB&allow_ratings=1&url_encoded_fmt_stream_map=type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.64001F%252C%2Bmp4a.40.2%2522%26quality%3Dhd720%26fallback_host%3Dtc.v18.cache6.googlevideo.com%26itag%3D22%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D22%2526mm%253D31%2526ip%253D193.5.216.83%2526ratebypass%253Dyes%2526ipbits%253D0%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526source%253Dyoutube%2526expire%253D1410278029%2526upn%253Dfe6r2N-wlh8%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526signature%253DD9D05DDDAEFF183144AB5FE471E82643CA4B25EB.DBE7EC8286DD6A6C4503BB4F1A28F3F1A2566FB1%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%2Ctype%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp8.0%252C%2Bvorbis%2522%26quality%3Dmedium%26fallback_host%3Dtc.v11.cache2.googlevideo.com%26itag%3D43%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D43%2526mm%253D31%2526ip%253D193.5.216.83%2526ratebypass%253Dyes%2526ipbits%253D0%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526source%253Dyoutube%2526expire%253D1410278029%2526upn%253Dfe6r2N-wlh8%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526signature%253D879488316BF0B7BA35367B94AF560A5298EFEDAB.40BD546C281DBC16A898B4EBF52E61BEDA1E95BE%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%2Ctype%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.42001E%252C%2Bmp4a.40.2%2522%26quality%3Dmedium%26fallback_host%3Dtc.v17.cache5.googlevideo.com%26itag%3D18%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D18%2526mm%253D31%2526ip%253D193.5.216.83%2526ratebypass%253Dyes%2526ipbits%253D0%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526source%253Dyoutube%2526expire%253D1410278029%2526upn%253Dfe6r2N-wlh8%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526signature%253DF77DFBA1519B8FED005FD7AC35316D2D650693DD.0498BEB47CE8487B5782492A8C1E15C525B0D59B%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%2Ctype%3Dvideo%252Fx-flv%26quality%3Dsmall%26fallback_host%3Dtc.v2.cache4.googlevideo.com%26itag%3D5%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D5%2526mm%253D31%2526ip%253D193.5.216.83%2526ipbits%253D0%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526source%253Dyoutube%2526expire%253D1410278029%2526upn%253Dfe6r2N-wlh8%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D66DF986A815202C96EDE4A22A49A4B1743831519.F9D12491EE118FF4B6E590B1A97E141F04F5CD13%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%2Ctype%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26quality%3Dsmall%26fallback_host%3Dtc.v7.cache6.googlevideo.com%26itag%3D36%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D36%2526mm%253D31%2526ip%253D193.5.216.83%2526ipbits%253D0%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526source%253Dyoutube%2526expire%253D1410278029%2526upn%253Dfe6r2N-wlh8%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253DA8A7C3911558E3E596C73C3D08EDB8359B189A42.EBBA84D7DDF2D4020DF48E731D4661D6B37BE98D%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000%2Ctype%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26quality%3Dsmall%26fallback_host%3Dtc.v21.cache3.googlevideo.com%26itag%3D17%26url%3Dhttp%253A%252F%252Fr15---sn-1gi7zn7y.googlevideo.com%252Fvideoplayback%253Fsver%253D3%2526itag%253D17%2526mm%253D31%2526ip%253D193.5.216.83%2526ipbits%253D0%2526id%253Do-AK4tbFNn-kBD6bAyrHwY6rWPQHu9AQfudTA7ZQ0hD3D7%2526ms%253Dau%2526mv%253Dm%2526mt%253D1410256308%2526key%253Dyt5%2526source%253Dyoutube%2526expire%253D1410278029%2526upn%253Dfe6r2N-wlh8%2526sparams%253Did%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Cmm%25252Cms%25252Cmv%25252Csource%25252Cupn%25252Cexpire%2526signature%253D164BDF45841C51534738AA6D81D4090F1063534E.D47701993FD7BB4DB8A85DCC4199881B07B8D91B%2526fexp%253D927622%25252C931983%25252C932404%25252C932623%25252C934024%25252C934030%25252C936117%25252C938644%25252C940215%25252C946013%25252C953801%25252C955100%2526initcwndbps%253D9552000&cl=74803881&oid=_LWWINuQopYxk9obaGY6Ew&ytfocEnabled=1&token=vjVQa1PpcFNSfqKJVuBmLj9XqL2KZXnqUs_6ZWetRsQ%3D&watermark=%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_watermark-vflHX6b6E.png%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_hd_watermark-vflAzLcD6.png&iurlmq=https%3A%2F%2Fi.ytimg.com%2Fvi%2FzKovmts2KSk%2Fmqdefault.jpg&uid=3GriadTkHBnfgd2UFETGOA", + "headers" : { + "Content-Type" : "application\/x-www-form-urlencoded", + "P3P" : "CP=\"This is not a P3P policy! See http:\/\/support.google.com\/accounts\/bin\/answer.py?answer=151657&hl=en for more info.\"", + "Alternate-Protocol" : "443:quic", + "Set-Cookie" : "YSC=yEamrWNB2Lc; path=\/; domain=.youtube.com; httponly", + "Server" : "gwiseguy\/2.0", + "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "Transfer-Encoding" : "Identity", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", + "Cache-Control" : "no-store", + "Date" : "Tue, 09 Sep 2014 09:53:49 GMT", + "X-Content-Type-Options" : "nosniff", + "X-Frame-Options" : "SAMEORIGIN" + }, + "method" : "GET", + "status" : 200, + "uri" : "https:\/\/www.youtube.com\/get_video_info?el=embedded&hl=en&ps=default&video_id=zKovmts2KSk" + } +] \ No newline at end of file diff --git a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testProtectedVEVOVideo.json b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testProtectedVEVOVideo.json deleted file mode 100644 index 6270d380..00000000 --- a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeProtectedVideosTestCase/testProtectedVEVOVideo.json +++ /dev/null @@ -1,76 +0,0 @@ -[ - { - "body" : "afv_instream_max=20000&afv_ad_tag=http%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fads%3Fchannel%3Dafv_instream%252BVertical_3%252BVertical_35%252BVertical_592%252BVertical_1030%252Bafv_instream_ch%252Byt_no_cp%252Bafv_user_mumfordandsonsvevo%252Bafv_user_id_hPzV-uAKhVMguKI7RB8uGQ%252Byt_mpvid_AAT5WZoaRpcw9v_o%252Byt_cid_10481%252Bytdevice_1%252Bytps_default%252Bytel_detailpage%26host%3Dca-host-pub-4404692103537709%26loeid%3D917000%252C902404%252C916624%252C921726%26url%3Dhttp%253A%252F%252Fwww.youtube.com%252Fvideo%252FrId6PKlDXeU%26description_url%3Dhttp%253A%252F%252Fwww.youtube.com%252Fvideo%252FrId6PKlDXeU%26ht_id%3D3816642%26hl%3Den%26ytdevice%3D1%26client%3Dca-pub-6219811747049371%26video_cpm%3D2500000%26max_ad_duration%3D20000%26ad_type%3Dskippablevideo%26yt_pt%3DAPb3F29OKHmtOj9okZC7l9yysO73Ttjta3pUH_s5494RPD0kvmIcr2PAIEzvQdWO1YYF786S5ApbwD2h8z6Y3iDNNVRpkaaqGaBZS3KyXmpItvGJ7h82HoR9qkLpRkjsBrOU-RFbZkiVgW7jQz30&aftv=True&ad_video_pub_id=ca-pub-6219811747049371&show_pyv_in_related=True&ad_logging_flag=1&cut_ad_for_ypc=False&iv_module=https%3A%2F%2Fs.ytimg.com%2Fyts%2Fswfbin%2Fplayer-vflr2PFkb%2Fiv_module.swf&sw=1.0×tamp=1400063139&ad_slots=0&ftoken=QUFFLUhqazJWNzgzMUtwalR1eWJsb1pqUmVZOW5ZT051Z3xBQ3Jtc0trTTJiTjJLMTlvUTVObS1EUzBLbGVNT0hiVENldEVTaWpyWG55UkpqdER3MHRfcmp2WHE1U2N5NDQ3T1UwSTQ3VHI3S1hCeFhRWWdUek9iTnRBUjBFMmxNNmo0SGdHekctZlhEQ08xNlU5Z2h1VUItMA%3D%3D&ad_host_tier=3816642&dash=1&ad_channel_code_instream=afv_instream%2CVertical_3%2CVertical_35%2CVertical_592%2CVertical_1030%2Cafv_instream_ch%2Cyt_no_cp%2Cafv_user_mumfordandsonsvevo%2Cafv_user_id_hPzV-uAKhVMguKI7RB8uGQ%2Cyt_mpvid_AAT5WZoaRpcw9v_o%2Cyt_cid_10481%2Cytdevice_1%2Cytps_default%2Cytel_detailpage&url_encoded_fmt_stream_map=url%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fipbits%253D0%2526upn%253DeRUrrXvARow%2526mws%253Dyes%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526sparams%253Did%25252Cip%25252Cipbits%25252Citag%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526ms%253Dau%2526ratebypass%253Dyes%2526sver%253D3%2526mv%253Dm%2526source%253Dyoutube%2526itag%253D22%2526key%253Dyt5%2526ip%253D213.173.175.4%26quality%3Dhd720%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.64001F%252C%2Bmp4a.40.2%2522%26fallback_host%3Dtc.v2.cache1.googlevideo.com%26itag%3D22%26s%3D77677677B5740D1CC714C4AAF2C266E163560F5894FCE.7DC6CA6D29534295BF4C703AA340D9EF16FC1ABBABB%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fipbits%253D0%2526upn%253DeRUrrXvARow%2526mws%253Dyes%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526sparams%253Did%25252Cip%25252Cipbits%25252Citag%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526ms%253Dau%2526ratebypass%253Dyes%2526sver%253D3%2526mv%253Dm%2526source%253Dyoutube%2526itag%253D43%2526key%253Dyt5%2526ip%253D213.173.175.4%26quality%3Dmedium%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp8.0%252C%2Bvorbis%2522%26fallback_host%3Dtc.v8.cache2.googlevideo.com%26itag%3D43%26s%3D77377328A24895A269282207806D3F79D496FCDFDE828.28CA4BEA45B9B5862CA415F9025759E502A7088F88F%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fipbits%253D0%2526upn%253DeRUrrXvARow%2526mws%253Dyes%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526sparams%253Did%25252Cip%25252Cipbits%25252Citag%25252Cratebypass%25252Csource%25252Cupn%25252Cexpire%2526ms%253Dau%2526ratebypass%253Dyes%2526sver%253D3%2526mv%253Dm%2526source%253Dyoutube%2526itag%253D18%2526key%253Dyt5%2526ip%253D213.173.175.4%26quality%3Dmedium%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.42001E%252C%2Bmp4a.40.2%2522%26fallback_host%3Dtc.v7.cache3.googlevideo.com%26itag%3D18%26s%3DEECEEC290DFAA722EC5A1577ACBDC44FB817CFF5E7C30.DE4C0A6D73CA925AE438FFAF738FFD427C9F9E71E71%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fipbits%253D0%2526upn%253DeRUrrXvARow%2526mws%253Dyes%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526sparams%253Did%25252Cip%25252Cipbits%25252Citag%25252Csource%25252Cupn%25252Cexpire%2526ms%253Dau%2526sver%253D3%2526mv%253Dm%2526source%253Dyoutube%2526itag%253D5%2526key%253Dyt5%2526ip%253D213.173.175.4%26quality%3Dsmall%26type%3Dvideo%252Fx-flv%26fallback_host%3Dtc.v4.cache4.googlevideo.com%26itag%3D5%26s%3DAADAAD06EBF2AC2579D9CD58984DD4BD31480EAB8F33A.79818064FF68618E360A854FF483EC361D6B4DC5DC5%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fipbits%253D0%2526upn%253DeRUrrXvARow%2526mws%253Dyes%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526sparams%253Did%25252Cip%25252Cipbits%25252Citag%25252Csource%25252Cupn%25252Cexpire%2526ms%253Dau%2526sver%253D3%2526mv%253Dm%2526source%253Dyoutube%2526itag%253D36%2526key%253Dyt5%2526ip%253D213.173.175.4%26quality%3Dsmall%26type%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26fallback_host%3Dtc.v12.cache3.googlevideo.com%26itag%3D36%26s%3DFF4FF433B285CCCE4359577049E54131513F6A18A5842.7BC1C24E1B144767CDB2559A760AEA9AF845C5C45C4%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fipbits%253D0%2526upn%253DeRUrrXvARow%2526mws%253Dyes%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526sparams%253Did%25252Cip%25252Cipbits%25252Citag%25252Csource%25252Cupn%25252Cexpire%2526ms%253Dau%2526sver%253D3%2526mv%253Dm%2526source%253Dyoutube%2526itag%253D17%2526key%253Dyt5%2526ip%253D213.173.175.4%26quality%3Dsmall%26type%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26fallback_host%3Dtc.v24.cache8.googlevideo.com%26itag%3D17%26s%3D33133120B5B66DF83AEF17CF8CAF10E6D0E11442BC5BE.E474AB00D40B72EFE2030FDB2C4E85F271C6682E82E&shortform=True&loeid=917000%2C902404%2C916624%2C921726&allow_embed=1&rmktEnabled=1&track_embed=1&ytfocEnabled=1&oid=yZJtHRi2SvzOOKZfbA-GRA&title=Mumford+%26+Sons+-+Hopeless+Wanderer&use_cipher_signature=True&allow_ratings=1&keywords=Mumford%2CSons%2CHopeless%2CWanderer%2CIsland%2CRecords%2CRock&focEnabled=1&max_dynamic_allocation_ad_tag_length=2040&ad3_module=1&iurl=https%3A%2F%2Fi1.ytimg.com%2Fvi%2FrId6PKlDXeU%2Fhqdefault.jpg&vq=auto&iurlmaxres=https%3A%2F%2Fi1.ytimg.com%2Fvi%2FrId6PKlDXeU%2Fmaxresdefault.jpg&iv3_module=1&muted=0&baseUrl=https%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fviewthroughconversion%2F962985656%2F&ad_tag=https%3A%2F%2Fad.doubleclick.net%2FN4061%2Fpfadx%2Fcom.ytpwatch.music%2Fmain_10481%3Bsz%3DWIDTHxHEIGHT%3Bkvid%3DrId6PKlDXeU%3Bkpu%3DMumfordAndSonsVEVO%3Bkpeid%3DhPzV-uAKhVMguKI7RB8uGQ%3Bkpid%3D10481%3Bmpvid%3DAAT5WZoaRpcw9v_o%3Bssl%3D1%3Bafv%3D1%3Bdc_yt%3D1%3Bk5%3D3_35_592_1030%3Bkclt%3D1%3Bkga%3D-1%3Bkgg%3D-1%3Bklg%3Den%3Bkmsrd%3D1%3Bko%3Dp%3Bkr%3DF%3Bkvz%3D205%3Bnlfb%3D1%3Byt_ec%3D4%3Byt_vrallowed%3D1%3Bytcat%3D10%3Bytdevice%3D1%3Bytexp%3D917000%2C902404%2C916624%2C921726%3B%21c%3D10481%3Bk2%3D3%3Bk2%3D35%3Bk2%3D592%3Bk2%3D1030%3Bkvlg%3Den%3B&idpj=-5&has_cc=False&afv_video_min_cpm=2500000&show_content_thumbnail=True&length_seconds=315&uid=hPzV-uAKhVMguKI7RB8uGQ&adaptive_fmts=url%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D142129412%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D137%2526dur%253D314.774%2526lmt%253D1394274495507777%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D4182193%26size%3D1920x1080%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.640028%2522%26index%3D711-1498%26itag%3D137%26init%3D0-710%26s%3DDD3DD3B83BAFA0E020DEC29A312C3BAC8909D943AF27D.CF295B70D8779E1184929C1A89EEB50E6E04199D99D%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D72774765%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D248%2526dur%253D314.773%2526lmt%253D1392736102275266%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D2184487%26size%3D1920x1080%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26index%3D235-1343%26itag%3D248%26init%3D0-234%26s%3D886886323E2A145C793D0C8F8A616E628B7D70589FECD.D5E8BC333F5C92841F1AC395E211655E6C5B8BAEBAE%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D68252106%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D136%2526dur%253D314.774%2526lmt%253D1394271999177089%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D2239218%26size%3D1280x720%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401f%2522%26index%3D709-1496%26itag%3D136%26init%3D0-708%26s%3DCC3CC3358E6AB3C22635C36FD65632285A4AE74ECFD35.9523913B53A04F270DF585A5BA7EA7CEA7A86799799%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D45807073%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D247%2526dur%253D314.773%2526lmt%253D1392728157337024%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D1496099%26size%3D1280x720%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26index%3D235-1334%26itag%3D247%26init%3D0-234%26s%3D77D77DDF70539D0EC945611E6BD0DCBF81F1B518EE28F.4E4D7FDAA4832DC3D8014C3F1C1A56040C0E3138138%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D36315601%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D135%2526dur%253D314.774%2526lmt%253D1394271849756220%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D1121465%26size%3D854x480%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401e%2522%26index%3D713-1500%26itag%3D135%26init%3D0-712%26s%3D008008D6A6640A9E9A821FD362FE81B65E887B3B23F5B.21A5B5593479EB6B0176807F7A3ABD09BADF3D4DD4D%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D23215020%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D244%2526dur%253D314.773%2526lmt%253D1392728184353797%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D687253%26size%3D854x480%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26index%3D235-1313%26itag%3D244%26init%3D0-234%26s%3DCC5CC5A575D3773A9E4D8554E08D5C8383AA682D2F587.4406D4054AA5B22F300E387A1386A31B870BC231231%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D39208381%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D245%2526dur%253D314.773%2526lmt%253D1375869831402212%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D1051721%26size%3D854x480%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26index%3D235-1331%26itag%3D245%26init%3D0-234%26s%3D11B11B8068374888791139CD0590B9538AD4C33E0E05A.0AF4EA686E2CA3B0125CF5DB73F171C2F9D72066066%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D77146766%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D246%2526dur%253D314.773%2526lmt%253D1375869862679163%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D2093130%26size%3D854x480%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26index%3D235-1344%26itag%3D246%26init%3D0-234%26s%3D001001BF2EF24A84CB3DD33FBEA61D294BB146151C6A2.C9C7B408A3710FCA1DB3241F35D86FBA8BD8F2BD2BD%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D18955276%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D134%2526dur%253D314.774%2526lmt%253D1394271857517321%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D614078%26size%3D640x360%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d401e%2522%26index%3D709-1496%26itag%3D134%26init%3D0-708%26s%3D55E55EAC09E7DF7FC5BF42B4E675E3EA0E294F161332E.5D6F935B984EE016A57103D7705BC19B7B5A8D86D86%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D11614875%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D243%2526dur%253D314.773%2526lmt%253D1392728139257078%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D351750%26size%3D640x360%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26index%3D235-1295%26itag%3D243%26init%3D0-234%26s%3D000000B44F0A350D55BB073CEACC0B1D8D8B4336181C7.6F02C6D0C1127EDE670BC9C7104F3076F35F2DD8DD8%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D9522502%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D133%2526dur%253D314.774%2526lmt%253D1394271852461070%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D246152%26size%3D426x240%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d4015%2522%26index%3D677-1464%26itag%3D133%26init%3D0-676%26s%3D11E11E6EA6E89FB31D309DAF7268EA42C8E40B9A1FC76.8AEA61CA02AD42E02F74C329858737025DA45943943%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D6015821%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D242%2526dur%253D314.773%2526lmt%253D1392728110270461%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D185528%26size%3D426x240%26type%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp9%2522%26index%3D234-1294%26itag%3D242%26init%3D0-233%26s%3D99F99F106E59B31C90AB04547A2EF27A41D8B076531ED.263BCB486FB36BFE81E8553C36CF2EC8F18D0810810%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D4324081%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D160%2526dur%253D314.774%2526lmt%253D1394271829691746%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D113513%26size%3D256x144%26type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.4d400c%2522%26index%3D672-1459%26itag%3D160%26init%3D0-671%26s%3D994994412D3008E14D29A56F153D49783AD3501B8E60C.894AF89F12725FCEDA3F3E69B0F6A07997BFBB5BB5B%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D5002066%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D140%2526dur%253D314.909%2526lmt%253D1394272592888988%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D128067%26type%3Daudio%252Fmp4%253B%2Bcodecs%253D%2522mp4a.40.2%2522%26index%3D592-1007%26itag%3D140%26init%3D0-591%26s%3DCCDCCD1299040BDBED7231FDA50BD59D901F1BDE6D3BD.F8C0D060898DD9E494F0D424C2566553A72F9816816%2Curl%3Dhttp%253A%252F%252Fr3---sn-2apm-f5fz.googlevideo.com%252Fvideoplayback%253Fmv%253Dm%2526ipbits%253D0%2526upn%253DXy2NoUA074c%2526mws%253Dyes%2526sparams%253Dclen%25252Cdur%25252Cgir%25252Cid%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Csource%25252Cupn%25252Cexpire%2526expire%253D1400086228%2526fexp%253D917000%25252C902404%25252C916624%25252C921726%25252C913434%25252C939940%25252C923341%25252C936923%25252C945044%2526id%253Do-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2526mt%253D1400063046%2526clen%253D4958842%2526ms%253Dau%2526sver%253D3%2526gir%253Dyes%2526source%253Dyoutube%2526itag%253D171%2526dur%253D314.835%2526lmt%253D1392728089216560%2526key%253Dyt5%2526ip%253D213.173.175.4%26bitrate%3D149180%26type%3Daudio%252Fwebm%253B%2Bcodecs%253D%2522vorbis%2522%26index%3D4452-4992%26itag%3D171%26init%3D0-4451%26s%3D00B00BA220C30ABA7BC266271036BF047F9B7CFD521EF.AE1BECF9AA9918E4DEA74FA5AC69E8308E094ECEECE&no_get_video_log=1&dashmpd=http%3A%2F%2Fmanifest.googlevideo.com%2Fapi%2Fmanifest%2Fdash%2Fmv%2Fm%2Fipbits%2F0%2Fupn%2Fq9j5DwnBZlg%2Fmws%2Fyes%2Ffexp%2F917000%252C902404%252C916624%252C921726%252C913434%252C939940%252C923341%252C936923%252C945044%2Fexpire%2F1400086228%2Fsver%2F3%2Fid%2Fo-AIEBITNJZqNDrh02yS2y9FcpLUjOhhkzIZCcu-047SOv%2Fmt%2F1400063046%2Fsparams%2Fas%252Cid%252Cip%252Cipbits%252Citag%252Cplayback_host%252Csource%252Cexpire%2Fms%2Fau%2Fas%2Ffmp4_audio_clear%252Cwebm_audio_clear%252Cfmp4_sd_hd_clear%252Cwebm_sd_hd_clear%2Fplayback_host%2Fr3---sn-2apm-f5fz.googlevideo.com%2Fsource%2Fyoutube%2Fitag%2F0%2Fs%2FEE8EE8D2497404E1FCF72554DBE88DBB17B49210F73D7.EAEF76B976B9A977DEE81E73C3D3E511D3B8A3E43E4%2Fkey%2Fyt5%2Fip%2F213.173.175.4&mpvid=AAT5WZoaRpcw9v_o&afv_ad_tag_restricted_to_instream=http%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fads%3Fchannel%3Dafv_instream%252BVertical_3%252BVertical_35%252BVertical_592%252BVertical_1030%252Bafv_instream_ch%252Byt_no_cp%252Bafv_user_mumfordandsonsvevo%252Bafv_user_id_hPzV-uAKhVMguKI7RB8uGQ%252Byt_mpvid_AAT5WZoaRpcw9v_o%252Byt_cid_10481%252Bytdevice_1%252Bytps_default%252Bytel_detailpage%26host%3Dca-host-pub-4404692103537709%26ad_type%3Dvideo%26loeid%3D917000%252C902404%252C916624%252C921726%26url%3Dhttp%253A%252F%252Fwww.youtube.com%252Fvideo%252FrId6PKlDXeU%26description_url%3Dhttp%253A%252F%252Fwww.youtube.com%252Fvideo%252FrId6PKlDXeU%26ht_id%3D3816642%26hl%3Den%26ytdevice%3D1%26client%3Dca-pub-6219811747049371%26video_cpm%3D2500000%26max_ad_duration%3D20000&video_verticals=%5B35%2C+1030%2C+3%5D&watermark=%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_watermark-vflHX6b6E.png%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_hd_watermark-vflAzLcD6.png&vid=rId6PKlDXeU&avg_rating=4.89351294013&sffb=True&afv=True&eventid=o0RzU6OMJom78AO_p4HYCg&fmt_list=22%2F1280x720%2F9%2F0%2F115%2C43%2F640x360%2F99%2F0%2F0%2C18%2F640x360%2F9%2F0%2F115%2C5%2F320x240%2F7%2F0%2F0%2C36%2F320x240%2F99%2F1%2F0%2C17%2F176x144%2F99%2F1%2F0&ad_channel_code_overlay=invideo_overlay_480x70_cat10%2Cafv_overlay%2CVertical_3%2CVertical_35%2CVertical_592%2CVertical_1030%2Cyt_no_cp%2Cafv_user_mumfordandsonsvevo%2Cafv_user_id_hPzV-uAKhVMguKI7RB8uGQ%2Cyt_mpvid_AAT5WZoaRpcw9v_o%2Cyt_cid_10481%2Cytdevice_1%2Cytps_default%2Cytel_detailpage&iv_load_policy=1&as_launched_in_country=1&aid=P-19Ovt70YY&account_playback_token=QUFFLUhqbG52QzRUVlBfSjFlb00wU3NoTEdKTjRHeHVpUXxBQ3Jtc0tsVUhXOUN3N29mNGQyX0lDSjZjb19ZTDdMSS1CVDR3Z2taWmRWU1ZlX29NUDhCQXUwSFBaTU9iVGpkSFlaRnlTRDBydkZIRmx6dF9UVGlQSGhoUVBDdFBUYmdkM2U1a2lxeTYxSm1hWWl1XzM3djRvSQ%3D%3D&advideo=1&dynamic_allocation_ad_tag=https%3A%2F%2Fad.doubleclick.net%2FN4061%2Fpfadx%2Fcom.ytpwatch.music%2Fmain_10481%3Bsz%3DWIDTHxHEIGHT%3Bkvid%3DrId6PKlDXeU%3Bkpu%3DMumfordAndSonsVEVO%3Bkpeid%3DhPzV-uAKhVMguKI7RB8uGQ%3Bkpid%3D10481%3Bmpvid%3DAAT5WZoaRpcw9v_o%3Bssl%3D1%3Bafv%3D1%3Bafvbase%3DeJxdUFtz4iAU_jXmzQ6BXB94iHVTXbdV09a2vjBI0MSQQBOIxl-_aHdnussww_kunDPfYQVtGi7wY9ncq9qLwDkEL7zT7ghO6L4nZdPpltPawg1vdcmoIOgf4H9Hfgy_Qxcg8F8jwgrLDJo0kjD1RzQdb0lt6r1sc9rknWy6nvfyu1rmpFhdNmOTLIrN48Es5mE2iczD-qtbrXrrSJIX_20raabYKe6J_NKYVVzgRe4N5rwvGSdfQHUk53tqhL5BLizUtBSKHrhTyE5jRsfXd6zMbux5wAtiaFP5KAxB7AjJyxzHbgiAzXkfA2gd18INAngroBvCwGGybbmgWrbY9aw3QC6KrcUxrcCF1mqEkhFM7T2dTneDNNrs-B2Tdu2pzcVtkLSd58FqIabv_NW5TnUKbZeCUWRnedApBOaN8zcedh1N1NBjfmbC5NxpTE1o3ln-1s-uvsbQB9fj1PRsNZKblupSNhjCK2sZPSiOu6pUiu4Ev320E4jSOFntUArj5WJW6-UxltX2PhTxMHTLEL3oo6ZIvc5I53uxl62moOrrOWvhKpn_uPTr_G3pfnykYRQ8-4nanaawiC7BByqnT0-bTFWUfj7QyfYZLYb3Ws11__AzLCI4k1n8Wf1SWXXsJu3ydZylu21Vbg5v4XF9QeA3-o3uJQ%3Bdc_backfill%3D1%3Bdc_yt%3D1%3Bk5%3D3_35_592_1030%3Bkclt%3D1%3Bkga%3D-1%3Bkgg%3D-1%3Bklg%3Den%3Bkmsrd%3D1%3Bko%3Dp%3Bkr%3DF%3Bkvz%3D205%3Bnlfb%3D1%3Byt_ec%3D4%3Byt_vrallowed%3D1%3Bytcat%3D10%3Bytdevice%3D1%3Bytexp%3D917000%2C902404%2C916624%2C921726%3B%21c%3D10481%3Bk2%3D3%3Bk2%3D35%3Bk2%3D592%3Bk2%3D1030%3Bkvlg%3Den%3B&pltype=content&enablecsi=1&storyboard_spec=https%3A%2F%2Fi1.ytimg.com%2Fsb%2FrId6PKlDXeU%2Fstoryboard3_L%24L%2F%24N.jpg%7C48%2327%23100%2310%2310%230%23default%23QMhgiWLu8O9jSHbUyCAQsg_q1H0%7C80%2345%2364%2310%2310%235000%23M%24M%23lGO9fo68-O4czgtRFZ424tSsj-U%7C160%2390%2364%235%235%235000%23M%24M%23CZc79yA7WsoqhtX4TRfxZAYbduQ&tmi=1&adsense_video_doc_id=yt_rId6PKlDXeU&no_afv_instream=1&yt_pt=APb3F29OKHmtOj9okZC7l9yysO73Ttjta3pUH_s5494RPD0kvmIcr2PAIEzvQdWO1YYF786S5ApbwD2h8z6Y3iDNNVRpkaaqGaBZS3KyXmpItvGJ7h82HoR9qkLpRkjsBrOU-RFbZkiVgW7jQz30&iv_invideo_url=https%3A%2F%2Fwww.youtube.com%2Fannotations_invideo%3Fcap_hist%3D1%26plid%3DAAT5WZoaTKUL23UD%26video_id%3DrId6PKlDXeU&rvs=id%3DnMJUbZrNnA8%26title%3DMumford%2B%2526%2BSons%2B-%2BLover%2BOf%2BThe%2BLight%26session_data%3Dfeature%253Dendscreen%26author%3DMumfordAndSonsVEVO%26length_seconds%3D355%26view_count%3D9%252C964%252C054%2Cid%3DrGKfrgqWcv0%26title%3DMumford%2B%2526%2BSons%2B-%2BI%2BWill%2BWait%26session_data%3Dfeature%253Dendscreen%26author%3DMumfordAndSonsVEVO%26length_seconds%3D313%26view_count%3D44%252C494%252C036%2Cid%3DdoO_nIEKEfE%26title%3DMumford%2B%2526%2BSons%2B-%2BLive%2BOn%2BLetterman%2B%2528Full%2BShow%2529%26session_data%3Dfeature%253Dendscreen%26author%3DMumfordAndSonsVEVO%26length_seconds%3D3184%26view_count%3D3%252C523%252C631%2Cid%3DiWza_On7ajs%26title%3DMumford%2B%2526%2BSons%2B-%2BBabel%26session_data%3Dfeature%253Dendscreen%26author%3DMumfordAndSonsVEVO%26length_seconds%3D245%26view_count%3D4%252C631%252C381%2Cid%3DlLJf9qJHR3E%26title%3DMumford%2Band%2BSons%2B-%2BLittle%2BLion%2BMan%26session_data%3Dfeature%253Dendscreen%26author%3DIsland%2BRecords%2BUK%26length_seconds%3D258%26view_count%3D45%252C233%252C176%2Cid%3DfNy8llTLvuA%26title%3DMumford%2B%2526%2BSons%2B-%2BThe%2BCave%26session_data%3Dfeature%253Dendscreen%26author%3DMumfordAndSonsVEVO%26length_seconds%3D276%26view_count%3D11%252C670%252C932%2Cid%3DUJWk_KNbDHo%26title%3DThe%2BLumineers%2B-%2B%2522Stubborn%2BLove%2522%2B%2528Official%2BVideo%2529%26session_data%3Dfeature%253Dendscreen%26author%3DThe%2BLumineers%26length_seconds%3D280%26view_count%3D12%252C347%252C974%2Cid%3Dm_-nYA5BWDA%26title%3DMumford%2B%2526%2BSons%2B-%2BWinter%2BWinds%26session_data%3Dfeature%253Dendscreen%26author%3DGlassnote%2BRecords%26length_seconds%3D234%26view_count%3D5%252C396%252C426%2Cid%3DnDFDaNTJcOo%26title%3DMumford%2B%2526%2BSons%2B%2528HD%2529%2B-%2BLollapalooza%2BChicago%2B2013%2BFull%2BConcert%2B1080p%26session_data%3Dfeature%253Dendscreen%26author%3DJulio%2BCesar%2BFernandes%26length_seconds%3D5762%26view_count%3D1%252C207%252C392%2Cid%3DST59IaiCUdA%26title%3DMumford%2Band%2BSons-%2BSigh%2BNo%2BMore%2Bfull%2Balbum%26session_data%3Dfeature%253Dendscreen%26author%3DTheVerveFan100%26length_seconds%3D2923%26view_count%3D852%252C225%2Cid%3DoozQ4yV__Vw%26title%3DPhillip%2BPhillips%2B-%2BGone%252C%2BGone%252C%2BGone%26session_data%3Dfeature%253Dendscreen%26author%3DPhilPhillipsVEVO%26length_seconds%3D223%26view_count%3D18%252C339%252C816%2Cid%3DzNaM-N1NdGo%26title%3DMumford%2B%2526%2BSons%2B-%2BWhispers%2BIn%2BThe%2BDark%26session_data%3Dfeature%253Dendscreen%26author%3DMumfordAndSonsVEVO%26length_seconds%3D198%26view_count%3D2%252C537%252C349&video_id=rId6PKlDXeU&thumbnail_url=https%3A%2F%2Fi1.ytimg.com%2Fvi%2FrId6PKlDXeU%2Fdefault.jpg&csi_page_type=watch%2Cwatch7ad&cid=10481&ad_preroll=1&playerStyle=default&trueview=True&token=vjVQa1PpcFONeMdAtxHQdlsXV-QznTB8mYBaQenzgwQ%3D&status=ok&eventLabel=detailpage&cafe_experiment_id=&ptk=vevo&dclk=True&excluded_ads=2%3D1_2%2C2_2&ptchn=hPzV-uAKhVMguKI7RB8uGQ&fexp=917000%2C902404%2C916624%2C921726%2C913434%2C939940%2C923341%2C936923%2C945044&host_language=en&c=WEB&pyv_ad_channel=yt_no_cp%2Bafv_user_mumfordandsonsvevo%2Bafv_user_id_hPzV-uAKhVMguKI7RB8uGQ%2Byt_mpvid_AAT5WZoaRpcw9v_o%2Byt_cid_10481%2Bytdevice_1&invideo=True&ad_host=ca-host-pub-4404692103537709&author=MumfordAndSonsVEVO&midroll_freqcap=270.0&ldpj=-27&ad_eurl=http%3A%2F%2Fwww.youtube.com%2Fvideo%2FrId6PKlDXeU&iurlsd=https%3A%2F%2Fi1.ytimg.com%2Fvi%2FrId6PKlDXeU%2Fsddefault.jpg&plid=AAT5WZoaTKUL23UD&mpu=True&pyv_in_related_cafe_experiment_id=&ad_device=1&allowed_ads=%5B0%2C+1%2C+2%2C+4%2C+8%2C+10%5D&tag_for_child_directed=False&ad_flags=0&gut_tag=%2F4061%2Fytpwatch%2Fmain_10481&rmktPingThreshold=0&view_count=11852216", - "headers" : { - "X-Content-Type-Options" : "nosniff", - "Content-Type" : "application\/x-www-form-urlencoded", - "Server" : "gwiseguy\/2.0", - "Transfer-Encoding" : "Identity", - "Date" : "Wed, 14 May 2014 10:25:39 GMT", - "X-Frame-Options" : "SAMEORIGIN", - "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", - "Alternate-Protocol" : "443:quic", - "Cache-Control" : "no-store", - "Expires" : "Tue, 27 Apr 1971 19:44:06 EST" - }, - "method" : "GET", - "status" : 200, - "uri" : "https:\/\/www.youtube.com\/get_video_info?el=detailpage&hl=en&ps=default&video_id=rId6PKlDXeU" - }, - { - "body" : "csi_page_type=embed&eventid=o0RzU-W6IsiW8AOuxoCIBQ&reason=This+video+contains+content+from+VEVO.+It+is+restricted+from+playback+on+certain+sites.%3Cbr%2F%3E%3Cu%3E%3Ca+href%3D%27http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DrId6PKlDXeU%26feature%3Dplayer_embedded%27+target%3D%27_blank%27%3EWatch+on+YouTube%3C%2Fa%3E%3C%2Fu%3E&errorcode=150&errordetail=0&enablecsi=1&status=fail&c=WEB&atc=a%3D3%26b%3Dl5_bTAbZjnYjb47Z7ZGxEGlxjcs%26c%3D1400063139%26d%3D1%26e%3DrId6PKlDXeU%26c3a%3D22%26hh%3DxHblGkHNBHb4uKLbW9oava-8Dbw", - "headers" : { - "Server" : "gwiseguy\/2.0", - "Content-Type" : "application\/x-www-form-urlencoded", - "X-Content-Type-Options" : "nosniff", - "Transfer-Encoding" : "Identity", - "Date" : "Wed, 14 May 2014 10:25:39 GMT", - "X-Frame-Options" : "SAMEORIGIN", - "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", - "Alternate-Protocol" : "443:quic", - "Cache-Control" : "no-store", - "Expires" : "Tue, 27 Apr 1971 19:44:06 EST" - }, - "method" : "GET", - "status" : 200, - "uri" : "https:\/\/www.youtube.com\/get_video_info?el=embedded&hl=en&ps=default&video_id=rId6PKlDXeU" - }, - { - "body" : "