Example #1
0
	def test_compat_urllib_parse_urlencode(self):
		self.assertEqual(compat_urllib_parse_urlencode({'abc': 'def'}), 'abc=def')
		self.assertEqual(compat_urllib_parse_urlencode({'abc': b'def'}), 'abc=def')
		self.assertEqual(compat_urllib_parse_urlencode({b'abc': 'def'}), 'abc=def')
		self.assertEqual(compat_urllib_parse_urlencode({b'abc': b'def'}), 'abc=def')
		self.assertEqual(compat_urllib_parse_urlencode([('abc', 'def')]), 'abc=def')
		self.assertEqual(compat_urllib_parse_urlencode([('abc', b'def')]), 'abc=def')
		self.assertEqual(compat_urllib_parse_urlencode([(b'abc', 'def')]), 'abc=def')
		self.assertEqual(compat_urllib_parse_urlencode([(b'abc', b'def')]), 'abc=def')
Example #2
0
 def test_compat_urllib_parse_urlencode(self):
     self.assertEqual(compat_urllib_parse_urlencode({'abc': 'def'}), 'abc=def')
     self.assertEqual(compat_urllib_parse_urlencode({'abc': b'def'}), 'abc=def')
     self.assertEqual(compat_urllib_parse_urlencode({b'abc': 'def'}), 'abc=def')
     self.assertEqual(compat_urllib_parse_urlencode({b'abc': b'def'}), 'abc=def')
     self.assertEqual(compat_urllib_parse_urlencode([('abc', 'def')]), 'abc=def')
     self.assertEqual(compat_urllib_parse_urlencode([('abc', b'def')]), 'abc=def')
     self.assertEqual(compat_urllib_parse_urlencode([(b'abc', 'def')]), 'abc=def')
     self.assertEqual(compat_urllib_parse_urlencode([(b'abc', b'def')]), 'abc=def')
Example #3
0
    def _real_extract(self, video_id):
        url = 'https://www.youtube.com/embed/%s' % video_id
        webpage = self._download_webpage(url, video_id, 'Downloading embed webpage')
        data = compat_urllib_parse_urlencode({
            'video_id': video_id,
            'eurl': 'https://youtube.googleapis.com/v/' + video_id,
            'sts': self._search_regex(r'"sts"\s*:\s*(\d+)', webpage, 'sts', default='')
        })
        video_info_url = 'https://www.youtube.com/get_video_info?' + data
        video_info_webpage = self._download_webpage(video_info_url, video_id, 'Downloading video info webpage')
        video_info = compat_parse_qs(video_info_webpage)
        mpd_url = video_info.get('dashmpd')[0]
        player_url_json = self._search_regex(r'"assets":.+?"js":\s*("[^"]+")', webpage, 'JS player URL')
        player_url = loads(player_url_json)

        def decrypt_sig(mobj):
            s = mobj.group(1)
            dec_s = self._decrypt_signature(s, video_id, player_url)
            return '/signature/%s' % dec_s

        mpd_url = sub(r'/s/([a-fA-F0-9\.]+)', decrypt_sig, mpd_url)
        mpd = self._download_webpage(mpd_url, video_id, 'Downloading MPD manifest')
        return mpd