diff --git a/.jazzy.yaml b/.jazzy.yaml index f14c19673..3f5e1fdaf 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -4,11 +4,11 @@ source_directory: XCDYouTubeKit framework_root: . umbrella_header: XCDYouTubeKit/XCDYouTubeKit.h module: XCDYouTubeKit -module_version: 2.5.6 +module_version: 2.6.0 author: Cédric Luthi author_url: https://twitter.com/0xced readme: README.md github_url: https://github.com/0xced/XCDYouTubeKit -github_file_prefix: https://github.com/0xced/XCDYouTubeKit/tree/2.5.6/XCDYouTubeKit +github_file_prefix: https://github.com/0xced/XCDYouTubeKit/tree/2.6.0/XCDYouTubeKit diff --git a/CHANGELOG.md b/CHANGELOG.md index a193f06f8..86fa86cea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +#### Version 2.6.0 + +* Adaptation to YouTube API change. (#383, #388, #385, #382) +* Include DASH formats URLs in `streamURLs`. (#354) +* Add new `autoGeneratedCaptionURLs` and `captionURLs` properties to `XCDYouTubeVideo`. (#281) +* Fix `Messaging unqualified id` warnings. (#393) +* Deprecated `smallThumbnailURL`, `mediumThumbnailURL`, `largeThumbnailURL`. Use `thumbnailURL` instead. + #### Version 2.5.6 * Xcode 9 compatibility (#345, #347, #349) diff --git a/README.md b/README.md index 64b0b566f..abb69b67a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## About -[![Build Status](https://img.shields.io/circleci/project/0xced/XCDYouTubeKit/master.svg?style=flat)](https://circleci.com/gh/0xced/XCDYouTubeKit) -[![Coverage Status](https://img.shields.io/codecov/c/github/0xced/XCDYouTubeKit/master.svg?style=flat)](https://codecov.io/gh/0xced/XCDYouTubeKit/branch/master) +[![Build Status](https://img.shields.io/circleci/project/0xced/XCDYouTubeKit/develop.svg?style=flat)](https://circleci.com/gh/0xced/XCDYouTubeKit) +[![Coverage Status](https://img.shields.io/codecov/c/github/0xced/XCDYouTubeKit/develop.svg?style=flat)](https://codecov.io/gh/0xced/XCDYouTubeKit/branch/develop) [![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)](https://cocoapods.org/pods/XCDYouTubeKit) [![Carthage Compatibility](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage/) @@ -32,13 +32,13 @@ XCDYouTubeKit is available through CocoaPods and Carthage. CocoaPods: ```ruby -pod "XCDYouTubeKit", "~> 2.5" +pod "XCDYouTubeKit", "~> 2.6" ``` Carthage: ```objc -github "0xced/XCDYouTubeKit" ~> 2.5 +github "0xced/XCDYouTubeKit" ~> 2.6 ``` Alternatively, you can manually use the provided static library or dynamic framework. In order to use the static library, you must: diff --git a/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj b/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj index d7034c43e..aa458e745 100644 --- a/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj +++ b/XCDYouTubeKit Demo/XCDYouTubeKit Demo.xcodeproj/project.pbxproj @@ -760,7 +760,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2.5.6; + CURRENT_PROJECT_VERSION = 2.6.0; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -804,7 +804,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 2.5.6; + CURRENT_PROJECT_VERSION = 2.6.0; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; diff --git a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testConnectionErrorWithDashManifest.json b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testConnectionErrorWithDashManifest.json new file mode 100644 index 000000000..d6f16f996 --- /dev/null +++ b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testConnectionErrorWithDashManifest.json @@ -0,0 +1,35 @@ +[ + { + "body" : "xhr_apiary_host=youtubei.youtube.com&fade_in_start_milliseconds=-3000&tmi=1&fade_out_start_milliseconds=0&vss_host=s.youtube.com&vm=CAEQABgE&idpj=0&enabled_engage_types=3%2C6%2C4%2C5%2C17%2C1&account_playback_token=QUFFLUhqblRoZUhOOFJkRmFBMWhIVDNINkpnODNmVXFiZ3xBQ3Jtc0tuTGdwOEhFRXRscDBaYUhBYmUwbmpEWXVNYjhaZ1ZZTzlBTDU3Z1E2OGo4akRaVmdXLUhZcVBXSjhNdnpoWEV4UzdQNUZrUUtoTC1XYmlyYVkxenNYYkIxb08wR0tTRmFJLTRYMU1pbjFtSWswZjFLdw%3D%3D&player_response=%7B%22playabilityStatus%22%3A%7B%22status%22%3A%22OK%22%7D%2C%22playbackTracking%22%3A%7B%7D%2C%22captions%22%3A%7B%22playerCaptionsTracklistRenderer%22%3A%7B%22captionTracks%22%3A%5B%7B%22baseUrl%22%3A%22https%3A%2F%2Fwww.youtube.com%2Fapi%2Ftimedtext%3Fasr_langs%3Dru%252Cfr%252Cnl%252Cit%252Ces%252Cen%252Cja%252Cpt%252Cde%252Cko%5Cu0026xorp%3DTrue%5Cu0026v%3DYLg-LCkYXbI%5Cu0026caps%3Dasr%5Cu0026signature%3D9D2EDBB005F0A40D14629D5D9C6620763EFB1B22.70FA5D6EFD9D553AFFB2628DA8717D92D2C0B6BA%5Cu0026hl%3Den_US%5Cu0026sparams%3Dasr_langs%252Ccaps%252Cv%252Cxorp%252Cexpire%5Cu0026expire%3D1537779496%5Cu0026key%3Dyttt1%5Cu0026kind%3Dasr%5Cu0026lang%3Den%22%2C%22name%22%3A%7B%22simpleText%22%3A%22English+%28auto-generated%29%22%7D%2C%22vssId%22%3A%22a.en%22%2C%22languageCode%22%3A%22en%22%2C%22kind%22%3A%22asr%22%2C%22isTranslatable%22%3Atrue%7D%5D%2C%22audioTracks%22%3A%5B%7B%22captionTrackIndices%22%3A%5B0%5D%2C%22visibility%22%3A%22UNKNOWN%22%7D%5D%2C%22translationLanguages%22%3A%5B%7B%22languageCode%22%3A%22af%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Afrikaans%22%7D%7D%2C%7B%22languageCode%22%3A%22sq%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Albanian%22%7D%7D%2C%7B%22languageCode%22%3A%22am%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Amharic%22%7D%7D%2C%7B%22languageCode%22%3A%22ar%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Arabic%22%7D%7D%2C%7B%22languageCode%22%3A%22hy%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Armenian%22%7D%7D%2C%7B%22languageCode%22%3A%22az%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Azerbaijani%22%7D%7D%2C%7B%22languageCode%22%3A%22bn%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Bangla%22%7D%7D%2C%7B%22languageCode%22%3A%22eu%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Basque%22%7D%7D%2C%7B%22languageCode%22%3A%22be%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Belarusian%22%7D%7D%2C%7B%22languageCode%22%3A%22bs%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Bosnian%22%7D%7D%2C%7B%22languageCode%22%3A%22bg%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Bulgarian%22%7D%7D%2C%7B%22languageCode%22%3A%22my%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Burmese%22%7D%7D%2C%7B%22languageCode%22%3A%22ca%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Catalan%22%7D%7D%2C%7B%22languageCode%22%3A%22ceb%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Cebuano%22%7D%7D%2C%7B%22languageCode%22%3A%22zh-Hans%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Chinese+%28Simplified%29%22%7D%7D%2C%7B%22languageCode%22%3A%22zh-Hant%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Chinese+%28Traditional%29%22%7D%7D%2C%7B%22languageCode%22%3A%22co%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Corsican%22%7D%7D%2C%7B%22languageCode%22%3A%22hr%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Croatian%22%7D%7D%2C%7B%22languageCode%22%3A%22cs%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Czech%22%7D%7D%2C%7B%22languageCode%22%3A%22da%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Danish%22%7D%7D%2C%7B%22languageCode%22%3A%22nl%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Dutch%22%7D%7D%2C%7B%22languageCode%22%3A%22en%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22English%22%7D%7D%2C%7B%22languageCode%22%3A%22eo%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Esperanto%22%7D%7D%2C%7B%22languageCode%22%3A%22et%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Estonian%22%7D%7D%2C%7B%22languageCode%22%3A%22fil%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Filipino%22%7D%7D%2C%7B%22languageCode%22%3A%22fi%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Finnish%22%7D%7D%2C%7B%22languageCode%22%3A%22fr%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22French%22%7D%7D%2C%7B%22languageCode%22%3A%22gl%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Galician%22%7D%7D%2C%7B%22languageCode%22%3A%22ka%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Georgian%22%7D%7D%2C%7B%22languageCode%22%3A%22de%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22German%22%7D%7D%2C%7B%22languageCode%22%3A%22el%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Greek%22%7D%7D%2C%7B%22languageCode%22%3A%22gu%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Gujarati%22%7D%7D%2C%7B%22languageCode%22%3A%22ht%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Haitian+Creole%22%7D%7D%2C%7B%22languageCode%22%3A%22ha%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Hausa%22%7D%7D%2C%7B%22languageCode%22%3A%22haw%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Hawaiian%22%7D%7D%2C%7B%22languageCode%22%3A%22iw%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Hebrew%22%7D%7D%2C%7B%22languageCode%22%3A%22hi%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Hindi%22%7D%7D%2C%7B%22languageCode%22%3A%22hmn%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Hmong%22%7D%7D%2C%7B%22languageCode%22%3A%22hu%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Hungarian%22%7D%7D%2C%7B%22languageCode%22%3A%22is%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Icelandic%22%7D%7D%2C%7B%22languageCode%22%3A%22ig%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Igbo%22%7D%7D%2C%7B%22languageCode%22%3A%22id%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Indonesian%22%7D%7D%2C%7B%22languageCode%22%3A%22ga%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Irish%22%7D%7D%2C%7B%22languageCode%22%3A%22it%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Italian%22%7D%7D%2C%7B%22languageCode%22%3A%22ja%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Japanese%22%7D%7D%2C%7B%22languageCode%22%3A%22jv%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Javanese%22%7D%7D%2C%7B%22languageCode%22%3A%22kn%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Kannada%22%7D%7D%2C%7B%22languageCode%22%3A%22kk%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Kazakh%22%7D%7D%2C%7B%22languageCode%22%3A%22km%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Khmer%22%7D%7D%2C%7B%22languageCode%22%3A%22ko%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Korean%22%7D%7D%2C%7B%22languageCode%22%3A%22ku%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Kurdish%22%7D%7D%2C%7B%22languageCode%22%3A%22ky%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Kyrgyz%22%7D%7D%2C%7B%22languageCode%22%3A%22lo%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Lao%22%7D%7D%2C%7B%22languageCode%22%3A%22la%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Latin%22%7D%7D%2C%7B%22languageCode%22%3A%22lv%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Latvian%22%7D%7D%2C%7B%22languageCode%22%3A%22lt%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Lithuanian%22%7D%7D%2C%7B%22languageCode%22%3A%22lb%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Luxembourgish%22%7D%7D%2C%7B%22languageCode%22%3A%22mk%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Macedonian%22%7D%7D%2C%7B%22languageCode%22%3A%22mg%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Malagasy%22%7D%7D%2C%7B%22languageCode%22%3A%22ms%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Malay%22%7D%7D%2C%7B%22languageCode%22%3A%22ml%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Malayalam%22%7D%7D%2C%7B%22languageCode%22%3A%22mt%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Maltese%22%7D%7D%2C%7B%22languageCode%22%3A%22mi%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Maori%22%7D%7D%2C%7B%22languageCode%22%3A%22mr%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Marathi%22%7D%7D%2C%7B%22languageCode%22%3A%22mn%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Mongolian%22%7D%7D%2C%7B%22languageCode%22%3A%22ne%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Nepali%22%7D%7D%2C%7B%22languageCode%22%3A%22no%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Norwegian%22%7D%7D%2C%7B%22languageCode%22%3A%22ny%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Nyanja%22%7D%7D%2C%7B%22languageCode%22%3A%22ps%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Pashto%22%7D%7D%2C%7B%22languageCode%22%3A%22fa%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Persian%22%7D%7D%2C%7B%22languageCode%22%3A%22pl%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Polish%22%7D%7D%2C%7B%22languageCode%22%3A%22pt%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Portuguese%22%7D%7D%2C%7B%22languageCode%22%3A%22pa%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Punjabi%22%7D%7D%2C%7B%22languageCode%22%3A%22ro%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Romanian%22%7D%7D%2C%7B%22languageCode%22%3A%22ru%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Russian%22%7D%7D%2C%7B%22languageCode%22%3A%22sm%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Samoan%22%7D%7D%2C%7B%22languageCode%22%3A%22gd%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Scottish+Gaelic%22%7D%7D%2C%7B%22languageCode%22%3A%22sr%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Serbian%22%7D%7D%2C%7B%22languageCode%22%3A%22sn%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Shona%22%7D%7D%2C%7B%22languageCode%22%3A%22sd%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Sindhi%22%7D%7D%2C%7B%22languageCode%22%3A%22si%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Sinhala%22%7D%7D%2C%7B%22languageCode%22%3A%22sk%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Slovak%22%7D%7D%2C%7B%22languageCode%22%3A%22sl%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Slovenian%22%7D%7D%2C%7B%22languageCode%22%3A%22so%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Somali%22%7D%7D%2C%7B%22languageCode%22%3A%22st%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Southern+Sotho%22%7D%7D%2C%7B%22languageCode%22%3A%22es%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Spanish%22%7D%7D%2C%7B%22languageCode%22%3A%22su%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Sundanese%22%7D%7D%2C%7B%22languageCode%22%3A%22sw%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Swahili%22%7D%7D%2C%7B%22languageCode%22%3A%22sv%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Swedish%22%7D%7D%2C%7B%22languageCode%22%3A%22tg%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Tajik%22%7D%7D%2C%7B%22languageCode%22%3A%22ta%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Tamil%22%7D%7D%2C%7B%22languageCode%22%3A%22te%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Telugu%22%7D%7D%2C%7B%22languageCode%22%3A%22th%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Thai%22%7D%7D%2C%7B%22languageCode%22%3A%22tr%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Turkish%22%7D%7D%2C%7B%22languageCode%22%3A%22uk%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Ukrainian%22%7D%7D%2C%7B%22languageCode%22%3A%22ur%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Urdu%22%7D%7D%2C%7B%22languageCode%22%3A%22uz%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Uzbek%22%7D%7D%2C%7B%22languageCode%22%3A%22vi%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Vietnamese%22%7D%7D%2C%7B%22languageCode%22%3A%22cy%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Welsh%22%7D%7D%2C%7B%22languageCode%22%3A%22fy%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Western+Frisian%22%7D%7D%2C%7B%22languageCode%22%3A%22xh%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Xhosa%22%7D%7D%2C%7B%22languageCode%22%3A%22yi%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Yiddish%22%7D%7D%2C%7B%22languageCode%22%3A%22yo%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Yoruba%22%7D%7D%2C%7B%22languageCode%22%3A%22zu%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22Zulu%22%7D%7D%5D%2C%22defaultAudioTrackIndex%22%3A0%7D%7D%2C%22videoDetails%22%3A%7B%22videoId%22%3A%22YLg-LCkYXbI%22%2C%22title%22%3A%22CKC+2017+-+Junior+Men%27s+C15+Homme+1000m+FINAL%22%2C%22lengthSeconds%22%3A%22310%22%2C%22keywords%22%3A%5B%22Day4%22%5D%2C%22channelId%22%3A%22UCf4BdBAZoaT7ulFBrYSzeBA%22%2C%22isCrawlable%22%3Atrue%2C%22thumbnail%22%3A%7B%22thumbnails%22%3A%5B%7B%22url%22%3A%22https%3A%2F%2Fi.ytimg.com%2Fvi%2FYLg-LCkYXbI%2Fhqdefault.jpg%3Fsqp%3D-oaymwEiCKgBEF5IWvKriqkDFQgBFQAAAAAYASUAAMhCPQCAokN4AQ%3D%3D%5Cu0026rs%3DAOn4CLD89RYA_QbxI5yXUNOW8A2rXAVaug%22%2C%22width%22%3A168%2C%22height%22%3A94%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fi.ytimg.com%2Fvi%2FYLg-LCkYXbI%2Fhqdefault.jpg%3Fsqp%3D-oaymwEiCMQBEG5IWvKriqkDFQgBFQAAAAAYASUAAMhCPQCAokN4AQ%3D%3D%5Cu0026rs%3DAOn4CLDlK3mxkm5sLmhsW9yvD04gq1a3uA%22%2C%22width%22%3A196%2C%22height%22%3A110%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fi.ytimg.com%2Fvi%2FYLg-LCkYXbI%2Fhqdefault.jpg%3Fsqp%3D-oaymwEjCPYBEIoBSFryq4qpAxUIARUAAAAAGAElAADIQj0AgKJDeAE%3D%5Cu0026rs%3DAOn4CLAKREj2JG0fKFLcggqezY9DW4LtHQ%22%2C%22width%22%3A246%2C%22height%22%3A138%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fi.ytimg.com%2Fvi%2FYLg-LCkYXbI%2Fhqdefault.jpg%3Fsqp%3D-oaymwEjCNACELwBSFryq4qpAxUIARUAAAAAGAElAADIQj0AgKJDeAE%3D%5Cu0026rs%3DAOn4CLDlVxBqZ6cLSIwGVyiNFmTnziYFeQ%22%2C%22width%22%3A336%2C%22height%22%3A188%7D%5D%7D%2C%22viewCount%22%3A%22386%22%2C%22author%22%3A%22Canoe+Kayak+Canada%22%2C%22isLiveContent%22%3Afalse%7D%2C%22attestation%22%3A%7B%22playerAttestationRenderer%22%3A%7B%22challenge%22%3A%22a%3D3%5Cu0026b%3D8zSxPW__ZQbg3eXecPCCLBY2NEY%5Cu0026c%3D1537754296%5Cu0026d%3D1%5Cu0026e%3DYLg-LCkYXbI%5Cu0026c3a%3D15%5Cu0026c1a%3D1%5Cu0026c6a%3D1%5Cu0026hh%3DpeR0ETpbwDX2mRMLR6kLc86GeVD-yLj3XPY_mGamxeU%22%7D%7D%2C%22adSafetyReason%22%3A%7B%22isEmbed%22%3Atrue%7D%7D&fflags=html5_live_no_streaming_impedance_mismatch%3Dtrue%26call_release_video_in_bulleit%3Dtrue%26enable_live_premiere_web_player_indicator%3Dtrue%26bulleit_register_placements_in_order%3Dtrue%26html5_start_date_from_element%3Dtrue%26html5_subsegment_readahead_load_speed_check_interval%3D0.5%26android_attestation_flow%3Dyt_player%26set_interstitial_advertisers_question_text%3Dtrue%26html5_min_readbehind_cap_secs%3D60%26html5_stop_video_in_cancel_playback%3Dtrue%26html5_subsegment_readahead_require_whitelist%3Dtrue%26html5_vp9_live_blacklist_edge%3Dtrue%26html5_ad_no_buffer_abort_after_skippable%3Dtrue%26max_resolution_for_white_noise%3D360%26unplugged_tvhtml5_video_preload_on_focus_delay_ms%3D0%26html5_max_headm_for_streaming_xhr%3D0%26html5_subsegment_readahead_min_buffer_health_secs%3D0.25%26playready_first_play_expiration%3D-1%26html5_repredict_interval_secs%3D0.0%26segment_volume_reporting%3Dtrue%26html5_max_readahead_bandwidth_cap%3D0%26html5_incremental_parser_buffer_duration_secs%3D1.5%26html5_widevine_robustness_strings%3Dtrue%26html5_live_pin_to_tail%3Dtrue%26bulleit_disable_preroll_release_on_dispose%3Dtrue%26html5_autonav_quality_cap%3D0%26bulleit_use_cue_video_to_reset_on_stop_ad%3Dtrue%26enable_static_font_size_on_text_only_preview%3Dtrue%26html5_waiting_before_ended%3Dtrue%26html5_disable_subscribe_new_vis%3Dtrue%26enable_bulleit_lidar_integration%3Dtrue%26html5_widevine_hw_secure_all%3Dtrue%26html5_log_rebuffer_events%3D0%26bulleit_round_up_tsla%3Dtrue%26html5_log_playback_rate_change_killswitch%3Dtrue%26html5_manifestless_accurate_sliceinfo%3Dtrue%26html5_request_size_padding_secs%3D3.0%26use_always_dimmed_skip_in_bulleit_web%3Dtrue%26html5_disable_move_pssh_to_moov%3Dtrue%26html5_tv_bearer%3Dtrue%26provide_default_wta_reasons%3Dtrue%26low_engagement_player_quality_cap%3D360%26html5_cut_vss_on_visibility%3Dtrue%26add_border_to_bulleit_mweb_skip%3Dtrue%26use_fast_fade_in_0s%3Dtrue%26use_touch_events_for_bulleit_mweb%3Dtrue%26html5_live_disable_dg_pacing%3Dtrue%26use_full_timing_library%3Dtrue%26html5_serverside_call_server_on_biscotti_timeout%3Dtrue%26html5_aspect_from_adaptive_format%3Dtrue%26html5_disable_non_contiguous%3Dtrue%26html5_get_video_info_promiseajax%3Dtrue%26html5_no_shadow_env_data_redux%3Dtrue%26html5_adjust_effective_request_size%3Dtrue%26dynamic_ad_break_seek_threshold_sec%3D0%26mweb_undim_skip_button_on_ad_pause%3Dtrue%26vmap_enabled_living_room%3Dtrue%26html5_probe_secondary_during_timeout_miss_count%3D2%26player_external_control_on_classic_desktop%3Dtrue%26html5_readahead_ratelimit%3D3000%26html5_variability_full_discount_thresh%3D3.0%26set_default_wta_if_missing_for_externs%3Dtrue%26interaction_click_on_gel_web%3Dtrue%26hide_preskip%3Dtrue%26html5_max_av_sync_drift%3D50%26html5_variability_no_discount_thresh%3D1.0%26persist_text_on_preview_button%3Dtrue%26mweb_ios_handle_player_click_by_touch_event%3Dtrue%26html5_license_constraint_delay%3D5000%26desktop_videowall_companion_wta_support%3Dtrue%26tvhtml5_min_readbehind_secs%3D20%26html5_video_tbd_min_kb%3D0%26player_unified_fullscreen_transitions%3Dtrue%26autoplay_time%3D8000%26html5_serverside_call_server_on_biscotti_error%3Dtrue%26html5_msi_error_fallback%3Dtrue%26html5_sticky_reduces_discount_by%3D0.0%26enable_uturn_error_screen%3Dtrue%26html5_remove_pause%3Dfalse%26html5_reason_reporting_migration%3Dtrue%26fast_autonav_in_background%3Dtrue%26html5_live_low_latency_bandwidth_window%3D0.0%26allow_midrolls_on_watch_resume_in_bulleit%3Dtrue%26desktop_shopping_companion_wta_support%3Dtrue%26dash_manifest_version%3D5%26bulleit_remove_client_side_midroll_reactivation%3Dtrue%26html5_frame_accurate_seek_limit%3D3%26fix_bulleit_cue_range_seek%3Dtrue%26html5_dont_predict_end_time_in_past%3Dtrue%26bulleit_extract_delayed_mpu_on_all_placement_init%3Dtrue%26html5_shrink_live_timestamps%3Dtrue%26html5_dynamic_readahead_growth_rate%3D0.0%26html5_manifestless_interpolate%3Dtrue%26html5_background_cap_idle_secs%3D60%26use_forced_linebreak_preskip_text%3Dtrue%26html5_ignore_public_setPlaybackQuality%3Dtrue%26html5_tight_max_buffer_allowed_impaired_time%3D0.0%26enable_overlays_wta%3Dtrue%26html5_probe_primary_delay_base_ms%3D0%26html5_suspend_manifest_on_pause%3Dtrue%26html5_default_ad_gain%3D0.5%26legacy_autoplay_flag%3Dtrue%26mweb_playsinline%3Dtrue%26html5_view_offset%3D0.0%26bulleit_register_cue_range_events_before_ad_init%3Dtrue%26mweb_cougar_big_controls%3Dtrue%26html5_media_fullscreen%3Dtrue%26html5_seeking_buffering_only_playing%3Dtrue%26mweb_muted_autoplay%3Dtrue%26html5_subsegment_readahead_min_load_speed%3D1.5%26html5_live_abr_repredict_fraction%3D0.0%26html5_probe_media_capabilities%3Dtrue%26html5_stale_dash_manifest_retry_factor%3D1.0%26html5_subsegment_readahead_target_buffer_health_secs%3D0.5%26html5_min_buffer_to_resume%3D6%26variable_load_timeout_ms%3D0%26html5_adaptation_fix%3Dtrue%26html5_streaming_xhr_buffer_mdat%3Dtrue%26skip_restore_on_abandon_in_bulleit%3Dtrue%26dynamic_ad_break_pause_threshold_sec%3D0%26stop_using_ima_sdk_gpt_request_activity%3Dtrue%26ima_disable_reset_active_media_load_timeout%3Dtrue%26lasr_captions_holdback%3Dtrue%26html5_ignore_bad_bitrates%3Dtrue%26flex_theater_mode%3Dtrue%26html5_disable_preserve_reference%3Dtrue%26html5_disable_audio_slicing%3Dtrue%26desktop_action_companion_wta_support%3Dtrue%26web_player_api_logging_fraction%3D0.01%26live_chunk_readahead%3D3%26bulleit_block_player_pause_until_ad_start%3Dtrue%26live_fresca_v2%3Dtrue%26desktop_cleanup_companion_on_instream_begin%3Dtrue%26web_player_music_visualizer_treatment%3Dfake%26html5_min_upgrade_health%3D0%26mweb_enable_instream_ui_refresh%3Dtrue%26sdk_wrapper_levels_allowed%3D0%26html5_live_abr_head_miss_fraction%3D0.0%26html5_vp9_live_whitelist%3Dtrue%26forced_brand_precap_duration_ms%3D2000%26mweb_muted_autoplay_animation%3Dshrink%26enable_bulleit_for_mweb%3Dtrue%26html5_prefer_server_bwe3%3Dtrue%26enable_survey_ad_info_dialog%3Dtrue%26html5_hls_initial_bitrate%3D0%26vss_dni_delayping%3D0%26bulleit_get_midroll_info_timeout_ms%3D8000%26html5_inline_video_quality_survey%3Dtrue%26deprecate_vss_dallas_cache%3Dtrue%26show_interstitial_white%3Dtrue%26show_countdown_on_bumper%3Dtrue%26bulleit_terminate_ad_when_ending_with_commands%3Dtrue%26html5_reattach_resource_after_timeout_limit%3D0%26html5_delay_initial_loading%3Dtrue%26html5_streaming_xhr_optimize_lengthless_mp4%3Dtrue%26html5_min_secs_between_format_selections%3D8.0%26html5_request_sizing_multiplier%3D0.8%26html5_exile_broken_instances%3Dtrue%26html5_qoe_bearer%3Dtrue%26bulleit_use_http_get_by_default_for_get_midroll_info%3Dtrue%26midroll_notify_time_seconds%3D5%26html5_no_placeholder_rollbacks%3Dtrue%26mpu_visible_threshold_count%3D2%26html5_post_interrupt_readahead%3D20%26html5_min_readbehind_secs%3D0%26mweb_autonav%3Dtrue%26html5_new_seeking%3Dtrue%26html5_subsegment_readahead_timeout_secs%3D2.0%26html5_use_adaptive_live_readahead%3Dtrue%26html5_deadzone_multiplier%3D1.0%26html5_jumbo_ull_nonstreaming_mffa_ms%3D4000%26use_new_style%3Dtrue%26lasr_captions_holdback_counterfactual_id%3D23737673%26www_for_videostats%3Dtrue%26enable_live_premieres_vss_live_type_lp%3Dtrue%26use_ima_media_selection_in_bulleit%3Dtrue%26delay_bulleit_media_load_timer%3Dtrue%26html5_background_quality_cap%3D360%26html5_variability_discount%3D0.5%26html5_live_4k_more_buffer%3Dtrue%26html5_fallbacks_delay_primary_probes%3Dtrue%26bulleit_use_touch_events_for_skip%3Dtrue%26html5_preload_media%3Dtrue%26process_extensions_in_vast_wrappers_for_survey_ads%3Dtrue%26html5_quality_cap_min_age_secs%3D0%26playready_on_borg%3Dtrue%26html5_optimality_migration%3Dtrue%26html5_enable_non_diegetic%3Dtrue%26html5_manifestless_no_redundant_seek_to_head%3Dtrue%26html5_use_hasAdvanced_for_pbs%3Dtrue%26html5_ad_stats_bearer%3Dtrue%26disable_client_side_midroll_freq_capping%3Dtrue%26html5_hls_min_video_height%3D0%26send_html5_api_stats_ads_abandon%3Dtrue%26variable_buffer_timeout_ms%3D0%26doubleclick_gpt_retagging%3Dtrue%26html5_subsegment_readahead_min_buffer_health_secs_on_timeout%3D0.1%26use_html5_player_event_timeout%3Dtrue%26html5_jumbo_ull_subsegment_readahead_target%3D1.3%26html5_request_size_max_secs%3D31%26html5_parse_inline_fallback_host%3Dtrue%26mweb_add_ad_info_button_on_fullscreen_only_devices%3Dtrue%26html5_incremental_parser_coalesce_slice_buffers%3Dtrue%26html5_tight_max_buffer_allowed_bandwidth_stddevs%3D0.0%26html5_av1_thresh%3D0%26show_thumbnail_behind_ypc_offer_module%3Dtrue%26html5_hfr_quality_cap%3D0%26html5_progressive_fallback%3Dtrue%26desktop_image_companion_wta_support%3Dtrue%26html5_get_video_info_timeout_ms%3D30000%26ad_video_end_renderer_duration_milliseconds%3D7000%26set_interstitial_start_button%3Dtrue%26html5_decode_to_texture_cap%3Dtrue%26html5_incremental_parser_buffer_extra_bytes%3D16384%26html5_maximum_readahead_seconds%3D0.0%26lightweight_watch_video_swf%3Dtrue%26html5_jumbo_mobile_subsegment_readahead_target%3D3.0%26html5_player_autonav_logging%3Dtrue%26desktop_companion_wta_support%3Dtrue%26html5_connect_timeout_secs%3D7.0%26kevlar_allow_multistep_video_init%3Dtrue%26uniplayer_dbp%3Dtrue%26safari_enable_spherical%3Dtrue%26mweb_playsinline_webview%3Dtrue%26enable_afv_div_reset_in_kevlar%3Dtrue%26html5_allowable_liveness_drift_chunks%3D2%26html5_log_hls_video_height_change_as_format_change%3Dtrue%26html5_qoe_intercept%3D%26king_crimson_player_redux%3Dtrue%26show_thumbnail_on_standard%3Dtrue%26ad_duration_threshold_for_showing_endcap_seconds%3D15%26html5_creativeless_vast_on_ima%3Dtrue%26html5_enable_embedded_player_visibility_signals%3Dtrue%26interaction_screen_on_gel_web%3Dtrue%26html5_request_size_min_secs%3D0.0%26html5_disable_vp8_only_browsers%3Dtrue%26mweb_cougar%3Dtrue%26html5_default_quality_cap%3D0%26postroll_notify_time_seconds%3D5%26sdk_ad_prefetch_time_seconds%3D-1%26live_readahead_seconds_multiplier%3D0.8%26html5_pipeline_ultra_low_latency%3Dtrue%26spacecast_uniplayer_decorate_manifest%3Dtrue%26html5_manifestless_request_prediction%3Dtrue%26html5_use_media_capabilities%3Dtrue%26disable_new_pause_state3%3Dtrue%26html5_manifestless_captions%3Dtrue%26player_destroy_old_version%3Dtrue%26html5_live_ultra_low_latency_bandwidth_window%3D0.0%26html5_pause_video_fix%3Dtrue%26html5_elbow_tracking_tweaks%3Dtrue%26fix_gpt_pos_params%3Dtrue%26html5_expire_preloaded_players%3Dtrue%26web_player_housebrand_video_url_killswitch%3Dtrue%26html5_subsegment_readahead_seek_latency_fudge%3D0.5%26use_survey_skip_in_0s%3Dtrue%26html5_max_buffer_duration%3D120%26html5_streaming_xhr_progress_includes_latest%3Dtrue%26use_new_skip_icon%3Dtrue%26html5_serverside_biscotti_id_wait_ms%3D1000%26bulleit_update_tsla_cookie%3Dtrue%26html5_platform_minimum_readahead_seconds%3D0.0%26fixed_padding_skip_button%3Dtrue%26html5_new_vis_fullscreen_and_airplay%3Dtrue%26html5_manifestless_shrink_timestamps%3Dtrue%26bulleit_mimic_ima_player_api_calls%3Dtrue%26show_interstitial_for_3s%3Dtrue%26html5_ignore_updates_before_initial_ping%3Dtrue%26html5_ultra_low_latency_streaming_responses%3Dtrue%26html5_playback_data_migration%3Dtrue%26preskip_countdown_font_size%3D%26ad_to_video_use_gel%3Dtrue%26website_actions_throttle_percentage%3D1.0%26html5_spherical_bicubic_mode%3D1%26use_refreshed_overlay_buttons%3Dtrue%26html5_manifestless_synchronized%3Dtrue%26html5_restrict_streaming_xhr_on_sqless_requests%3Dtrue%26enable_prefetch_for_postrolls%3Dtrue%26html5_suspend_loader%3Dtrue%26html5_probe_live_using_range%3Dtrue%26mweb_bulleit_show_ad_top_bar_for_phones%3Dtrue%26enable_uturn_error_screen_limited%3Dtrue%26html5_minimum_readahead_seconds%3D0.0%26html5_vis_upgrades_are_resizes%3Dtrue%26allow_live_autoplay%3Dtrue%26html5_live_normal_latency_bandwidth_window%3D0.0%26youtubei_for_web%3Dtrue%26html5_bandwidth_window_size%3D0%26html5_pipeline_manifestless%3Dtrue%26html5_manifestless_always_redux%3Dtrue%26html5_fludd_suspend%3Dtrue&ad3_module=1&storyboard_spec=https%3A%2F%2Fi9.ytimg.com%2Fsb%2FYLg-LCkYXbI%2Fstoryboard3_L%24L%2F%24N.jpg%7C48%2327%23100%2310%2310%230%23default%23rs%24AOn4CLBT6swri_SqgEJ-YI8TvnTAlh0kZw%7C80%2345%2363%2310%2310%235000%23M%24M%23rs%24AOn4CLDRiEriQwqebeCgrU01FS92rKvCMA%7C160%2390%2363%235%235%235000%23M%24M%23rs%24AOn4CLDWdouNDSKoYgPHCXvLQfDE4oGjiQ&host_language=en&allow_ratings=1&qoe_cat=otfp&ismb=1810000&dashmpd=https%3A%2F%2Fmanifest.googlevideo.com%2Fapi%2Fmanifest%2Fdash%2Fas%2Ffmp4_audio_clear%252Cfmp4_sd_hd_clear%2Fhfr%2Fall%2Fmm%2F31%252C26%2Fmn%2Fsn-hp57knlr%252Csn-q4fl6nss%2Fsource%2Fyoutube%2Fmv%2Fm%2Fei%2FuESoW8GAHu_hj-8Phr-psA4%2Fms%2Fau%252Conr%2Fitag%2F0%2Fsparams%2Fas%252Cei%252Chfr%252Cid%252Cinitcwndbps%252Cip%252Cipbits%252Citag%252Cmm%252Cmn%252Cms%252Cmv%252Cpl%252Cplayback_host%252Crequiressl%252Csource%252Cexpire%2Fkey%2Fyt6%2Ffvip%2F4%2Fmt%2F1537754150%2Fipbits%2F0%2Frequiressl%2Fyes%2Fpl%2F25%2Fsignature%2F5D22C4CC44EE4A4338D8B6488E912FAEBABA5538.6D616415541A8C967040C22C75BC14FA0B57C543%2Fplayback_host%2Fr2---sn-hp57knlr.googlevideo.com%2Fip%2F209.59.90.196%2Finitcwndbps%2F226250%2Fexpire%2F1537775896%2Fid%2F60b83e2c29185db2&ad_device=1&apiary_host=&cver=1.20180920&ssl=1×tamp=1537754296&apiary_host_firstparty=&innertube_context_client_version=1.20180920&midroll_prefetch_size=1&eventid=uESoW8GAHu_hj-8Phr-psA4&loudness=-25.3990001678&length_seconds=310&url_encoded_fmt_stream_map=type%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.64001F%252C%2Bmp4a.40.2%2522%26itag%3D22%26url%3Dhttps%253A%252F%252Fr2---sn-hp57knlr.googlevideo.com%252Fvideoplayback%253Fmm%253D31%25252C26%2526mn%253Dsn-hp57knlr%25252Csn-q4fl6nss%2526ratebypass%253Dyes%2526source%253Dyoutube%2526dur%253D309.638%2526mv%253Dm%2526lmt%253D1505423618163931%2526ms%253Dau%25252Conr%2526itag%253D22%2526sparams%253Ddur%25252Cei%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmime%25252Cmm%25252Cmn%25252Cms%25252Cmv%25252Cpl%25252Cratebypass%25252Crequiressl%25252Csource%25252Cexpire%2526key%253Dyt6%2526fvip%253D4%2526mt%253D1537754150%2526ipbits%253D0%2526requiressl%253Dyes%2526mime%253Dvideo%25252Fmp4%2526pl%253D25%2526signature%253D656BD2225CFB994BD9A9CC2B6A39024D59EF931A.9D29707D6A78D77B187F390C808DC054D85F59F3%2526ei%253DuESoW8GAHu_hj-8Phr-psA4%2526ip%253D209.59.90.196%2526initcwndbps%253D226250%2526c%253DWEB%2526expire%253D1537775896%2526id%253Do-AKgQIkPXSSqCcwnUX0lWSrvPvbQV_CWCdlU3zEPzymd6%26quality%3Dhd720%2Ctype%3Dvideo%252Fwebm%253B%2Bcodecs%253D%2522vp8.0%252C%2Bvorbis%2522%26itag%3D43%26url%3Dhttps%253A%252F%252Fr2---sn-hp57knlr.googlevideo.com%252Fvideoplayback%253Fratebypass%253Dyes%2526source%253Dyoutube%2526dur%253D0.000%2526lmt%253D1505426085675537%2526key%253Dyt6%2526fvip%253D4%2526ip%253D209.59.90.196%2526requiressl%253Dyes%2526gir%253Dyes%2526signature%253DA7B1E316194828ACF34036135AA957062C5CFEA4.DF304B0F06E871FE855C3293D2B2983658B1A93E%2526c%253DWEB%2526id%253Do-AKgQIkPXSSqCcwnUX0lWSrvPvbQV_CWCdlU3zEPzymd6%2526mm%253D31%25252C26%2526mn%253Dsn-hp57knlr%25252Csn-q4fl6nss%2526mt%253D1537754150%2526mv%253Dm%2526initcwndbps%253D226250%2526ms%253Dau%25252Conr%2526itag%253D43%2526sparams%253Dclen%25252Cdur%25252Cei%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmime%25252Cmm%25252Cmn%25252Cms%25252Cmv%25252Cpl%25252Cratebypass%25252Crequiressl%25252Csource%25252Cexpire%2526mime%253Dvideo%25252Fwebm%2526pl%253D25%2526ipbits%253D0%2526ei%253DuESoW8GAHu_hj-8Phr-psA4%2526expire%253D1537775896%2526clen%253D34550729%26quality%3Dmedium%2Ctype%3Dvideo%252Fmp4%253B%2Bcodecs%253D%2522avc1.42001E%252C%2Bmp4a.40.2%2522%26itag%3D18%26url%3Dhttps%253A%252F%252Fr2---sn-hp57knlr.googlevideo.com%252Fvideoplayback%253Fratebypass%253Dyes%2526source%253Dyoutube%2526dur%253D309.638%2526lmt%253D1505423509978445%2526key%253Dyt6%2526fvip%253D4%2526ip%253D209.59.90.196%2526requiressl%253Dyes%2526gir%253Dyes%2526signature%253DABCEF3EA10FE0CF6BD064AD62BEDDF8969D4867E.3F1C9EB2BB2497C9F3AFDF9D0DE71C37B50CDD29%2526c%253DWEB%2526id%253Do-AKgQIkPXSSqCcwnUX0lWSrvPvbQV_CWCdlU3zEPzymd6%2526mm%253D31%25252C26%2526mn%253Dsn-hp57knlr%25252Csn-q4fl6nss%2526mt%253D1537754150%2526mv%253Dm%2526initcwndbps%253D226250%2526ms%253Dau%25252Conr%2526itag%253D18%2526sparams%253Dclen%25252Cdur%25252Cei%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmime%25252Cmm%25252Cmn%25252Cms%25252Cmv%25252Cpl%25252Cratebypass%25252Crequiressl%25252Csource%25252Cexpire%2526mime%253Dvideo%25252Fmp4%2526pl%253D25%2526ipbits%253D0%2526ei%253DuESoW8GAHu_hj-8Phr-psA4%2526expire%253D1537775896%2526clen%253D26128895%26quality%3Dmedium%2Ctype%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26itag%3D36%26url%3Dhttps%253A%252F%252Fr2---sn-hp57knlr.googlevideo.com%252Fvideoplayback%253Fsource%253Dyoutube%2526dur%253D309.661%2526lmt%253D1505423507066538%2526key%253Dyt6%2526fvip%253D4%2526ipbits%253D0%2526requiressl%253Dyes%2526gir%253Dyes%2526signature%253DC50E99AD2282A29640A35AE7868755A80501534F.9331476175F59748E3D3B5E4D841A67A403C5B32%2526c%253DWEB%2526id%253Do-AKgQIkPXSSqCcwnUX0lWSrvPvbQV_CWCdlU3zEPzymd6%2526mm%253D31%25252C26%2526mn%253Dsn-hp57knlr%25252Csn-q4fl6nss%2526mt%253D1537754150%2526mv%253Dm%2526initcwndbps%253D226250%2526ms%253Dau%25252Conr%2526itag%253D36%2526sparams%253Dclen%25252Cdur%25252Cei%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmime%25252Cmm%25252Cmn%25252Cms%25252Cmv%25252Cpl%25252Crequiressl%25252Csource%25252Cexpire%2526mime%253Dvideo%25252F3gpp%2526pl%253D25%2526ip%253D209.59.90.196%2526ei%253DuESoW8GAHu_hj-8Phr-psA4%2526expire%253D1537775896%2526clen%253D8444065%26quality%3Dsmall%2Ctype%3Dvideo%252F3gpp%253B%2Bcodecs%253D%2522mp4v.20.3%252C%2Bmp4a.40.2%2522%26itag%3D17%26url%3Dhttps%253A%252F%252Fr2---sn-hp57knlr.googlevideo.com%252Fvideoplayback%253Fsource%253Dyoutube%2526dur%253D309.661%2526lmt%253D1505423506674421%2526key%253Dyt6%2526fvip%253D4%2526ipbits%253D0%2526requiressl%253Dyes%2526gir%253Dyes%2526signature%253DA33258D43420E4BABF03B8BE1A771B30AA703E6F.9F3414C4ADA8B188718037769C83EAB533D06CB2%2526c%253DWEB%2526id%253Do-AKgQIkPXSSqCcwnUX0lWSrvPvbQV_CWCdlU3zEPzymd6%2526mm%253D31%25252C26%2526mn%253Dsn-hp57knlr%25252Csn-q4fl6nss%2526mt%253D1537754150%2526mv%253Dm%2526initcwndbps%253D226250%2526ms%253Dau%25252Conr%2526itag%253D17%2526sparams%253Dclen%25252Cdur%25252Cei%25252Cgir%25252Cid%25252Cinitcwndbps%25252Cip%25252Cipbits%25252Citag%25252Clmt%25252Cmime%25252Cmm%25252Cmn%25252Cms%25252Cmv%25252Cpl%25252Crequiressl%25252Csource%25252Cexpire%2526mime%253Dvideo%25252F3gpp%2526pl%253D25%2526ip%253D209.59.90.196%2526ei%253DuESoW8GAHu_hj-8Phr-psA4%2526expire%253D1537775896%2526clen%253D2977035%26quality%3Dsmall&fexp=23710476%2C23721698%2C23721898%2C23727268%2C23729441%2C23733751%2C23734875%2C23735279%2C23737832%2C23741683%2C23744176%2C23749835%2C23751767%2C23752869%2C23753283%2C23753597%2C23755886%2C23756721%2C23756914%2C23756975%2C23757773%2C23758205%2C23759694%2C23760606%2C23761886%2C23761943%2C23762813%2C23763127%2C23763475%2C23763691%2C23764369%2C23764489%2C23764670%2C23764993%2C23765017%2C23765253%2C23765261%2C9434802%2C9449243%2C9471235%2C9485000&external_play_video=1&plid=AAV2lFKZ05V5oA2z&apply_fade_on_midrolls=True&view_count=386&videostats_playback_base_url=https%3A%2F%2Fs.youtube.com%2Fapi%2Fstats%2Fplayback%3Fvm%3DCAEQABgE%26len%3D310%26cl%3D214040579%26docid%3DYLg-LCkYXbI%26el%3Dembedded%26ns%3Dyt%26ei%3DuESoW8GAHu_hj-8Phr-psA4%26plid%3DAAV2lFKZ05V5oA2z%26of%3DzHjWOu7GSacTT-VevsygSw%26fexp%3D23710476%252C23721698%252C23721898%252C23727268%252C23729441%252C23733751%252C23734875%252C23735279%252C23737832%252C23741683%252C23744176%252C23749835%252C23751767%252C23752869%252C23753283%252C23753597%252C23755886%252C23756721%252C23756914%252C23756975%252C23757773%252C23758205%252C23759694%252C23760606%252C23761886%252C23761943%252C23762813%252C23763127%252C23763475%252C23763691%252C23764369%252C23764489%252C23764670%252C23764993%252C23765017%252C23765253%252C23765261%252C9434802%252C9449243%252C9471235%252C9485000&c=WEB&fmt_list=22%2F1280x720%2C43%2F640x360%2C18%2F640x360%2C36%2F320x180%2C17%2F176x144&sffb=True&innertube_api_version=v1&allow_html5_ads=1&allow_embed=1&cr=US&innertube_api_key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8&no_get_video_log=1&itct=CAEQu2kiEwjBvOCUxdLdAhXv8OMHHYZfCuYo6NQB&thumbnail_url=https%3A%2F%2Fi.ytimg.com%2Fvi%2FYLg-LCkYXbI%2Fdefault.jpg&atc=a%3D3%26b%3D8zSxPW__ZQbg3eXecPCCLBY2NEY%26c%3D1537754296%26d%3D1%26e%3DYLg-LCkYXbI%26c3a%3D15%26c1a%3D1%26c6a%3D1%26hh%3DpeR0ETpbwDX2mRMLR6kLc86GeVD-yLj3XPY_mGamxeU&allow_below_the_player_companion=True&of=zHjWOu7GSacTT-VevsygSw&avg_rating=5.0&cl=214040579&csi_page_type=embed&fade_out_duration_milliseconds=1000&t=1&fade_in_duration_milliseconds=1000&pltype=contentugc&relative_loudness=-4.39900016785&vmap=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3Cvmap%3AVMAP+xmlns%3Avmap%3D%22http%3A%2F%2Fwww.iab.net%2Fvideosuite%2Fvmap%22+xmlns%3Ayt%3D%22http%3A%2F%2Fyoutube.com%22+version%3D%221.0%22%3E%3C%2Fvmap%3AVMAP%3E&ucid=UCf4BdBAZoaT7ulFBrYSzeBA&serialized_ad_ux_config=%5B%5B%5Bnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C1%2Cnull%2C1%2Cnull%2C0%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C0.699999988079071%5D%2Cnull%2C%5B1%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C1%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C1%2Cnull%2C%5B%22Thanks+for+your+feedback%21%22%2C%22Learn+more%22%2C%22https%3A%2F%2Fsupport.google.com%2Fyoutube%2Fanswer%2F3181017%3Fhl%3Den%22%5D%5D%5D%5D&author=Canoe+Kayak+Canada&token=1&enablecsi=1&hl=en_US&csn=uESoW8GAHu_hj-8Phr-psA4&keywords=Day4&midroll_freqcap=420.0&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&gapi_hint_params=m%3B%2F_%2Fscs%2Fabc-static%2F_%2Fjs%2Fk%3Dgapi.gapi.en.yK0z3MKtgaU.O%2Fm%3D__features__%2Frt%3Dj%2Fd%3D1%2Frs%3DAHpOoo-SafOYj4n3budMysbWxppU-lxJeg&ptk=youtube_none&title=CKC+2017+-+Junior+Men%27s+C15+Homme+1000m+FINAL&root_ve_type=27240&status=ok&is_listed=1&ldpj=-9&player_error_log_fraction=1.0&video_id=YLg-LCkYXbI", + "headers" : { + "Content-Type" : "application\/x-www-form-urlencoded", + "P3P" : "CP=\"This is not a P3P policy! See http:\/\/support.google.com\/accounts\/answer\/151657?hl=en for more info.\"", + "Alt-Svc" : "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"", + "Set-Cookie" : "YSC=RdgzIIAlabk; path=\/; domain=.youtube.com; httponly", + "Server" : "YouTube Frontend Proxy", + "Content-Encoding" : "br", + "X-XSS-Protection" : "1; mode=block; report=https:\/\/www.google.com\/appserve\/security-bugs\/log\/youtube", + "Expires" : "Tue, 27 Apr 1971 19:44:06 EST", + "Cache-Control" : "no-store", + "Date" : "Mon, 24 Sep 2018 01:58:16 GMT", + "Strict-Transport-Security" : "max-age=31536000", + "Content-Length" : "9087", + "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=YLg-LCkYXbI" + }, + { + "body" : "", + "error" : { + "code" : -1009, + "userInfo" : "YnBsaXN0MDDUAQIDBAUGUVJYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8QFgcIGxwdHh8gISkqODk6OzxCSElKS05VJG51bGzTCQoLDBMaV05TLmtleXNaTlMub2JqZWN0c1YkY2xhc3OmDQ4PEBESgAKAA4AEgAWABoAHphQVFhcYGYAIgA6AD4ASgBGAE4AUXxARTlNVbmRlcmx5aW5nRXJyb3JfEBpOU0Vycm9yRmFpbGluZ1VSTFN0cmluZ0tleV8QFE5TRXJyb3JGYWlsaW5nVVJMS2V5XxAYX2tDRlN0cmVhbUVycm9yRG9tYWluS2V5XxAWX2tDRlN0cmVhbUVycm9yQ29kZUtleV8QFk5TTG9jYWxpemVkRGVzY3JpcHRpb27UIiMkCyUmJyhWTlNDb2RlWk5TVXNlckluZm9YTlNEb21haW4T\/\/\/\/\/\/\/\/\/A+ACoAJgBVfEBdrQ0ZFcnJvckRvbWFpbkNGTmV0d29ya9MJCgsrMRqlLC0REDCAC4AMgAaABYANpRUWGBcZgA6AD4ARgBKAE4AUXxAaTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXlfEBROU0Vycm9yRmFpbGluZ1VSTEtleV8QFk5TTG9jYWxpemVkRGVzY3JpcHRpb25fEQJhaHR0cHM6Ly9tYW5pZmVzdC5nb29nbGV2aWRlby5jb20vYXBpL21hbmlmZXN0L2Rhc2gvYXMvZm1wNF9hdWRpb19jbGVhciUyQ2ZtcDRfc2RfaGRfY2xlYXIvaGZyL2FsbC9tbS8zMSUyQzI2L21uL3NuLWhwNTdrbmxyJTJDc24tcTRmbDZuc3Mvc291cmNlL3lvdXR1YmUvbXYvbS9laS91RVNvVzhHQUh1X2hqLThQaHItcHNBNC9tcy9hdSUyQ29uci9pdGFnLzAvc3BhcmFtcy9hcyUyQ2VpJTJDaGZyJTJDaWQlMkNpbml0Y3duZGJwcyUyQ2lwJTJDaXBiaXRzJTJDaXRhZyUyQ21tJTJDbW4lMkNtcyUyQ212JTJDcGwlMkNwbGF5YmFja19ob3N0JTJDcmVxdWlyZXNzbCUyQ3NvdXJjZSUyQ2V4cGlyZS9rZXkveXQ2L2Z2aXAvNC9tdC8xNTM3NzU0MTUwL2lwYml0cy8wL3JlcXVpcmVzc2wveWVzL3BsLzI1L3NpZ25hdHVyZS81RDIyQzRDQzQ0RUU0QTQzMzhEOEI2NDg4RTkxMkZBRUJBQkE1NTM4LjZENjE2NDE1NTQxQThDOTY3MDQwQzIyQzc1QkMxNEZBMEI1N0M1NDMvcGxheWJhY2tfaG9zdC9yMi0tLXNuLWhwNTdrbmxyLmdvb2dsZXZpZGVvLmNvbS9pcC8yMDkuNTkuOTAuMTk2L2luaXRjd25kYnBzLzIyNjI1MC9leHBpcmUvMTUzNzc3NTg5Ni9pZC82MGI4M2UyYzI5MTg1ZGIy0z0LPj9AFVdOUy5iYXNlW05TLnJlbGF0aXZlgACAEIAO0kNERUZaJGNsYXNzbmFtZVgkY2xhc3Nlc1VOU1VSTKJFR1hOU09iamVjdBAyEAFfEC5UaGUgSW50ZXJuZXQgY29ubmVjdGlvbiBhcHBlYXJzIHRvIGJlIG9mZmxpbmUu0kNETE1cTlNEaWN0aW9uYXJ5okxH0kNET1BXTlNFcnJvcqJPR18QD05TS2V5ZWRBcmNoaXZlctFTVFRyb290gAEACAARABoAIwAtADIANwBQAFYAXQBlAHAAdwB+AIAAggCEAIYAiACKAJEAkwCVAJcAmQCbAJ0AnwCzANAA5wECARsBNAE9AUQBTwFYAWEBYwFlAWcBgQGIAY4BkAGSAZQBlgGYAZ4BoAGiAaQBpgGoAaoBxwHeAfcEXARjBGsEdwR5BHsEfQSCBI0ElgScBJ8EqASqBKwE3QTiBO8E8gT3BP8FAgUUBRcFHAAAAAAAAAIBAAAAAAAAAFUAAAAAAAAAAAAAAAAAAAUe", + "domain" : "NSURLErrorDomain" + }, + "method" : "GET", + "status" : 0, + "uri" : "https:\/\/manifest.googlevideo.com\/api\/manifest\/dash\/as\/fmp4_audio_clear%2Cfmp4_sd_hd_clear\/hfr\/all\/mm\/31%2C26\/mn\/sn-hp57knlr%2Csn-q4fl6nss\/source\/youtube\/mv\/m\/ei\/uESoW8GAHu_hj-8Phr-psA4\/ms\/au%2Conr\/itag\/0\/sparams\/as%2Cei%2Chfr%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cplayback_host%2Crequiressl%2Csource%2Cexpire\/key\/yt6\/fvip\/4\/mt\/1537754150\/ipbits\/0\/requiressl\/yes\/pl\/25\/signature\/5D22C4CC44EE4A4338D8B6488E912FAEBABA5538.6D616415541A8C967040C22C75BC14FA0B57C543\/playback_host\/r2---sn-hp57knlr.googlevideo.com\/ip\/209.59.90.196\/initcwndbps\/226250\/expire\/1537775896\/id\/60b83e2c29185db2" + } +] \ No newline at end of file diff --git a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testGeoblockedVideo.json b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testGeoblockedVideo.json index f264ef3d4..f66edba27 100644 --- a/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testGeoblockedVideo.json +++ b/XCDYouTubeKit Tests/Cassettes/XCDYouTubeClientTestCase/testGeoblockedVideo.json @@ -1,126 +1,123 @@ [ { - "body" : "