X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fswfinterp.py;h=b63c65b201ec2b34c6482e8526694431041f75fe;hb=27ace98f5159efdf6942e69ec73c5840cce26fbf;hp=49fade364ac8963a713b46eccfcb8e9cd175e893;hpb=0cb2056304178ae8944e84c5bc72f96102291a12;p=youtube-dl diff --git a/youtube_dl/swfinterp.py b/youtube_dl/swfinterp.py index 49fade364..b63c65b20 100644 --- a/youtube_dl/swfinterp.py +++ b/youtube_dl/swfinterp.py @@ -2,10 +2,13 @@ from __future__ import unicode_literals import collections import io -import struct import zlib -from .utils import ExtractorError +from .utils import ( + compat_str, + ExtractorError, + struct_unpack, +) def _extract_tags(file_contents): @@ -20,17 +23,17 @@ def _extract_tags(file_contents): file_contents[:1]) # Determine number of bits in framesize rectangle - framesize_nbits = struct.unpack('!B', content[:1])[0] >> 3 + framesize_nbits = struct_unpack('!B', content[:1])[0] >> 3 framesize_len = (5 + 4 * framesize_nbits + 7) // 8 pos = framesize_len + 2 + 2 while pos < len(content): - header16 = struct.unpack('> 6 tag_len = header16 & 0x3f if tag_len == 0x3f: - tag_len = struct.unpack('= 0x80) else b'\x00' - return struct.unpack('!i', first_byte + bs) + last_byte = b'\xff' if (ord(bs[2:3]) >= 0x80) else b'\x00' + return struct_unpack('