Skip to content

Commit

Permalink
Add support for IronPython
Browse files Browse the repository at this point in the history
  • Loading branch information
dstftw committed Jan 27, 2018
1 parent c989bdb commit 37318e1
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 17 deletions.
16 changes: 16 additions & 0 deletions youtube_dl/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -2897,9 +2897,24 @@ def compat_struct_unpack(spec, *args):
if isinstance(spec, compat_str):
spec = spec.encode('ascii')
return struct.unpack(spec, *args)

class compat_Struct(struct.Struct):
def __init__(self, fmt):
if isinstance(fmt, compat_str):
fmt = fmt.encode('ascii')
super(compat_Struct, self).__init__(fmt)
else:
compat_struct_pack = struct.pack
compat_struct_unpack = struct.unpack
if platform.python_implementation() == 'IronPython' and sys.version_info < (2, 7, 8):
class compat_Struct(struct.Struct):
def unpack(self, string):
if not isinstance(string, buffer):
string = buffer(string)
return super(compat_Struct, self).unpack(string)
else:
compat_Struct = struct.Struct


try:
from future_builtins import zip as compat_zip
Expand Down Expand Up @@ -2970,6 +2985,7 @@ def compat_ctypes_WINFUNCTYPE(*args, **kwargs):
'compat_shlex_split',
'compat_socket_create_connection',
'compat_str',
'compat_Struct',
'compat_struct_pack',
'compat_struct_unpack',
'compat_subprocess_get_DEVNULL',
Expand Down
32 changes: 17 additions & 15 deletions youtube_dl/downloader/ism.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
from __future__ import unicode_literals

import time
import struct
import binascii
import io

from .fragment import FragmentFD
from ..compat import compat_urllib_error


u8 = struct.Struct(b'>B')
u88 = struct.Struct(b'>Bx')
u16 = struct.Struct(b'>H')
u1616 = struct.Struct(b'>Hxx')
u32 = struct.Struct(b'>I')
u64 = struct.Struct(b'>Q')

s88 = struct.Struct(b'>bx')
s16 = struct.Struct(b'>h')
s1616 = struct.Struct(b'>hxx')
s32 = struct.Struct(b'>i')
from ..compat import (
compat_Struct,
compat_urllib_error,
)


u8 = compat_Struct('>B')
u88 = compat_Struct('>Bx')
u16 = compat_Struct('>H')
u1616 = compat_Struct('>Hxx')
u32 = compat_Struct('>I')
u64 = compat_Struct('>Q')

s88 = compat_Struct('>bx')
s16 = compat_Struct('>h')
s1616 = compat_Struct('>hxx')
s32 = compat_Struct('>i')

unity_matrix = (s32.pack(0x10000) + s32.pack(0) * 3) * 2 + s32.pack(0x40000000)

Expand Down
4 changes: 2 additions & 2 deletions youtube_dl/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -866,8 +866,8 @@ def _create_http_connection(ydl_handler, http_class, is_https, *args, **kwargs):
# expected HTTP responses to meet HTTP/1.0 or later (see also
# https://github.com/rg3/youtube-dl/issues/6727)
if sys.version_info < (3, 0):
kwargs[b'strict'] = True
hc = http_class(*args, **kwargs)
kwargs['strict'] = True
hc = http_class(*args, **compat_kwargs(kwargs))
source_address = ydl_handler._params.get('source_address')
if source_address is not None:
sa = (source_address, 0)
Expand Down

0 comments on commit 37318e1

Please sign in to comment.