diff options
| author | Michael Forney <mforney@mforney.org> | 2016-07-04 16:46:58 -0700 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2016-07-04 16:48:22 -0700 |
| commit | 8f2d73e425db3778a648401b2b406b22d2b80dac (patch) | |
| tree | e501d6ac1b5100d511c50e380ab9a6d8af948b63 | |
| parent | edb1f3fe364d0cd06b987062204cdedffc41e894 (diff) | |
Add youtube-dl 2016.07.05
| -rw-r--r-- | .gitmodules | 4 | ||||
| -rw-r--r-- | media/gen.rc | 1 | ||||
| -rw-r--r-- | media/youtube-dl/.rev | 1 | ||||
| -rw-r--r-- | media/youtube-dl/gen.rc | 6 | ||||
| -rw-r--r-- | media/youtube-dl/patch/0001-Disable-use-of-ctypes-and-dynamic-loading.patch | 230 | ||||
| -rw-r--r-- | media/youtube-dl/pylibs.txt | 659 | ||||
| m--------- | media/youtube-dl/src | 0 |
7 files changed, 901 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules index f9e40b51..b7d9d76d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -146,3 +146,7 @@ path = media/mpv/src url = https://github.com/mpv-player/mpv ignore = all +[submodule "media/youtube-dl/src"] + path = media/youtube-dl/src + url = https://github.com/rg3/youtube-dl + ignore = all diff --git a/media/gen.rc b/media/gen.rc index 7436dadc..2fc7cf2c 100644 --- a/media/gen.rc +++ b/media/gen.rc @@ -2,3 +2,4 @@ subgen alsa-lib subgen alsa-utils subgen ffmpeg subgen mpv +subgen youtube-dl diff --git a/media/youtube-dl/.rev b/media/youtube-dl/.rev new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/media/youtube-dl/.rev @@ -0,0 +1 @@ +1 diff --git a/media/youtube-dl/gen.rc b/media/youtube-dl/gen.rc new file mode 100644 index 00000000..52772d0c --- /dev/null +++ b/media/youtube-dl/gen.rc @@ -0,0 +1,6 @@ +file bin/youtube-dl '$srcdir'/bin/youtube-dl 755 +pylibs=`{grep -v '^#' pylibs.txt} +for(f in $pylibs) + file lib/python3.5/$f '$srcdir'/$f 644 + +fetch git diff --git a/media/youtube-dl/patch/0001-Disable-use-of-ctypes-and-dynamic-loading.patch b/media/youtube-dl/patch/0001-Disable-use-of-ctypes-and-dynamic-loading.patch new file mode 100644 index 00000000..2d877c39 --- /dev/null +++ b/media/youtube-dl/patch/0001-Disable-use-of-ctypes-and-dynamic-loading.patch @@ -0,0 +1,230 @@ +From 1f9fdebfd144eb57964561dad17916fac2117225 Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Mon, 4 Jul 2016 16:14:18 -0700 +Subject: [PATCH] Disable use of ctypes and dynamic loading + +--- + youtube_dl/utils.py | 175 ++++------------------------------------------------ + 1 file changed, 11 insertions(+), 164 deletions(-) + +diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py +index d302f39..bdf3c57 100644 +--- a/youtube_dl/utils.py ++++ b/youtube_dl/utils.py +@@ -8,7 +8,6 @@ import binascii + import calendar + import codecs + import contextlib +-import ctypes + import datetime + import email.utils + import errno +@@ -1207,90 +1206,11 @@ def platform_name(): + return res + + +-def _windows_write_string(s, out): +- """ Returns True if the string was written using special methods, +- False if it has yet to be written out.""" +- # Adapted from http://stackoverflow.com/a/3259271/35070 +- +- import ctypes +- import ctypes.wintypes +- +- WIN_OUTPUT_IDS = { +- 1: -11, +- 2: -12, +- } +- +- try: +- fileno = out.fileno() +- except AttributeError: +- # If the output stream doesn't have a fileno, it's virtual +- return False +- except io.UnsupportedOperation: +- # Some strange Windows pseudo files? +- return False +- if fileno not in WIN_OUTPUT_IDS: +- return False +- +- GetStdHandle = ctypes.WINFUNCTYPE( +- ctypes.wintypes.HANDLE, ctypes.wintypes.DWORD)( +- (b'GetStdHandle', ctypes.windll.kernel32)) +- h = GetStdHandle(WIN_OUTPUT_IDS[fileno]) +- +- WriteConsoleW = ctypes.WINFUNCTYPE( +- ctypes.wintypes.BOOL, ctypes.wintypes.HANDLE, ctypes.wintypes.LPWSTR, +- ctypes.wintypes.DWORD, ctypes.POINTER(ctypes.wintypes.DWORD), +- ctypes.wintypes.LPVOID)((b'WriteConsoleW', ctypes.windll.kernel32)) +- written = ctypes.wintypes.DWORD(0) +- +- GetFileType = ctypes.WINFUNCTYPE(ctypes.wintypes.DWORD, ctypes.wintypes.DWORD)((b'GetFileType', ctypes.windll.kernel32)) +- FILE_TYPE_CHAR = 0x0002 +- FILE_TYPE_REMOTE = 0x8000 +- GetConsoleMode = ctypes.WINFUNCTYPE( +- ctypes.wintypes.BOOL, ctypes.wintypes.HANDLE, +- ctypes.POINTER(ctypes.wintypes.DWORD))( +- (b'GetConsoleMode', ctypes.windll.kernel32)) +- INVALID_HANDLE_VALUE = ctypes.wintypes.DWORD(-1).value +- +- def not_a_console(handle): +- if handle == INVALID_HANDLE_VALUE or handle is None: +- return True +- return ((GetFileType(handle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR or +- GetConsoleMode(handle, ctypes.byref(ctypes.wintypes.DWORD())) == 0) +- +- if not_a_console(h): +- return False +- +- def next_nonbmp_pos(s): +- try: +- return next(i for i, c in enumerate(s) if ord(c) > 0xffff) +- except StopIteration: +- return len(s) +- +- while s: +- count = min(next_nonbmp_pos(s), 1024) +- +- ret = WriteConsoleW( +- h, s, count if count else 2, ctypes.byref(written), None) +- if ret == 0: +- raise OSError('Failed to write string') +- if not count: # We just wrote a non-BMP character +- assert written.value == 2 +- s = s[1:] +- else: +- assert written.value > 0 +- s = s[written.value:] +- return True +- +- + def write_string(s, out=None, encoding=None): + if out is None: + out = sys.stderr + assert type(s) == compat_str + +- if sys.platform == 'win32' and encoding is None and hasattr(out, 'fileno'): +- if _windows_write_string(s, out): +- return +- + if ('b' in getattr(out, 'mode', '') or + sys.version_info[0] < 3): # Python 2 lies about mode of sys.stderr + byt = s.encode(encoding or preferredencoding(), 'ignore') +@@ -1320,78 +1240,22 @@ def intlist_to_bytes(xs): + + + # Cross-platform file locking +-if sys.platform == 'win32': +- import ctypes.wintypes +- import msvcrt +- +- class OVERLAPPED(ctypes.Structure): +- _fields_ = [ +- ('Internal', ctypes.wintypes.LPVOID), +- ('InternalHigh', ctypes.wintypes.LPVOID), +- ('Offset', ctypes.wintypes.DWORD), +- ('OffsetHigh', ctypes.wintypes.DWORD), +- ('hEvent', ctypes.wintypes.HANDLE), +- ] +- +- kernel32 = ctypes.windll.kernel32 +- LockFileEx = kernel32.LockFileEx +- LockFileEx.argtypes = [ +- ctypes.wintypes.HANDLE, # hFile +- ctypes.wintypes.DWORD, # dwFlags +- ctypes.wintypes.DWORD, # dwReserved +- ctypes.wintypes.DWORD, # nNumberOfBytesToLockLow +- ctypes.wintypes.DWORD, # nNumberOfBytesToLockHigh +- ctypes.POINTER(OVERLAPPED) # Overlapped +- ] +- LockFileEx.restype = ctypes.wintypes.BOOL +- UnlockFileEx = kernel32.UnlockFileEx +- UnlockFileEx.argtypes = [ +- ctypes.wintypes.HANDLE, # hFile +- ctypes.wintypes.DWORD, # dwReserved +- ctypes.wintypes.DWORD, # nNumberOfBytesToLockLow +- ctypes.wintypes.DWORD, # nNumberOfBytesToLockHigh +- ctypes.POINTER(OVERLAPPED) # Overlapped +- ] +- UnlockFileEx.restype = ctypes.wintypes.BOOL +- whole_low = 0xffffffff +- whole_high = 0x7fffffff ++try: ++ import fcntl + + def _lock_file(f, exclusive): +- overlapped = OVERLAPPED() +- overlapped.Offset = 0 +- overlapped.OffsetHigh = 0 +- overlapped.hEvent = 0 +- f._lock_file_overlapped_p = ctypes.pointer(overlapped) +- handle = msvcrt.get_osfhandle(f.fileno()) +- if not LockFileEx(handle, 0x2 if exclusive else 0x0, 0, +- whole_low, whole_high, f._lock_file_overlapped_p): +- raise OSError('Locking file failed: %r' % ctypes.FormatError()) ++ fcntl.flock(f, fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH) + + def _unlock_file(f): +- assert f._lock_file_overlapped_p +- handle = msvcrt.get_osfhandle(f.fileno()) +- if not UnlockFileEx(handle, 0, +- whole_low, whole_high, f._lock_file_overlapped_p): +- raise OSError('Unlocking file failed: %r' % ctypes.FormatError()) +- +-else: +- # Some platforms, such as Jython, is missing fcntl +- try: +- import fcntl ++ fcntl.flock(f, fcntl.LOCK_UN) ++except ImportError: ++ UNSUPPORTED_MSG = 'file locking is not supported on this platform' + +- def _lock_file(f, exclusive): +- fcntl.flock(f, fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH) +- +- def _unlock_file(f): +- fcntl.flock(f, fcntl.LOCK_UN) +- except ImportError: +- UNSUPPORTED_MSG = 'file locking is not supported on this platform' +- +- def _lock_file(f, exclusive): +- raise IOError(UNSUPPORTED_MSG) ++ def _lock_file(f, exclusive): ++ raise IOError(UNSUPPORTED_MSG) + +- def _unlock_file(f): +- raise IOError(UNSUPPORTED_MSG) ++ def _unlock_file(f): ++ raise IOError(UNSUPPORTED_MSG) + + + class locked_file(object): +@@ -1580,24 +1444,7 @@ def fix_xml_ampersands(xml_str): + + + def setproctitle(title): +- assert isinstance(title, compat_str) +- +- # ctypes in Jython is not complete +- # http://bugs.jython.org/issue2148 +- if sys.platform.startswith('java'): +- return +- +- try: +- libc = ctypes.cdll.LoadLibrary('libc.so.6') +- except OSError: +- return +- title_bytes = title.encode('utf-8') +- buf = ctypes.create_string_buffer(len(title_bytes)) +- buf.value = title_bytes +- try: +- libc.prctl(15, buf, 0, 0, 0) +- except AttributeError: +- return # Strange libc, just skip this ++ return + + + def remove_start(s, start): +-- +2.9.0 + diff --git a/media/youtube-dl/pylibs.txt b/media/youtube-dl/pylibs.txt new file mode 100644 index 00000000..c8669476 --- /dev/null +++ b/media/youtube-dl/pylibs.txt @@ -0,0 +1,659 @@ +# <cd src && find youtube_dl -type f -name '*.py' +youtube_dl/swfinterp.py +youtube_dl/compat.py +youtube_dl/version.py +youtube_dl/utils.py +youtube_dl/extractor/smotri.py +youtube_dl/extractor/playvid.py +youtube_dl/extractor/twitch.py +youtube_dl/extractor/yesjapan.py +youtube_dl/extractor/phoenix.py +youtube_dl/extractor/washingtonpost.py +youtube_dl/extractor/myvideo.py +youtube_dl/extractor/bpb.py +youtube_dl/extractor/cmt.py +youtube_dl/extractor/nuevo.py +youtube_dl/extractor/vimple.py +youtube_dl/extractor/telecinco.py +youtube_dl/extractor/pornoxo.py +youtube_dl/extractor/matchtv.py +youtube_dl/extractor/moniker.py +youtube_dl/extractor/gazeta.py +youtube_dl/extractor/amp.py +youtube_dl/extractor/coub.py +youtube_dl/extractor/kuwo.py +youtube_dl/extractor/orf.py +youtube_dl/extractor/godtube.py +youtube_dl/extractor/tass.py +youtube_dl/extractor/chirbit.py +youtube_dl/extractor/chilloutzone.py +youtube_dl/extractor/vine.py +youtube_dl/extractor/abcnews.py +youtube_dl/extractor/rds.py +youtube_dl/extractor/rtvnh.py +youtube_dl/extractor/morningstar.py +youtube_dl/extractor/everyonesmixtape.py +youtube_dl/extractor/ccc.py +youtube_dl/extractor/dcn.py +youtube_dl/extractor/rtlnl.py +youtube_dl/extractor/varzesh3.py +youtube_dl/extractor/toggle.py +youtube_dl/extractor/ceskatelevize.py +youtube_dl/extractor/roxwel.py +youtube_dl/extractor/dhm.py +youtube_dl/extractor/deezer.py +youtube_dl/extractor/cinchcast.py +youtube_dl/extractor/theplatform.py +youtube_dl/extractor/comcarcoff.py +youtube_dl/extractor/krasview.py +youtube_dl/extractor/escapist.py +youtube_dl/extractor/espn.py +youtube_dl/extractor/iconosquare.py +youtube_dl/extractor/steam.py +youtube_dl/extractor/xiami.py +youtube_dl/extractor/watchindianporn.py +youtube_dl/extractor/wrzuta.py +youtube_dl/extractor/voicerepublic.py +youtube_dl/extractor/noco.py +youtube_dl/extractor/vidio.py +youtube_dl/extractor/freevideo.py +youtube_dl/extractor/ina.py +youtube_dl/extractor/traileraddict.py +youtube_dl/extractor/kontrtube.py +youtube_dl/extractor/vidbit.py +youtube_dl/extractor/bleacherreport.py +youtube_dl/extractor/vh1.py +youtube_dl/extractor/nextmedia.py +youtube_dl/extractor/urort.py +youtube_dl/extractor/bild.py +youtube_dl/extractor/twentytwotracks.py +youtube_dl/extractor/criterion.py +youtube_dl/extractor/douyutv.py +youtube_dl/extractor/macgamestore.py +youtube_dl/extractor/byutv.py +youtube_dl/extractor/promptfile.py +youtube_dl/extractor/karrierevideos.py +youtube_dl/extractor/fc2.py +youtube_dl/extractor/historicfilms.py +youtube_dl/extractor/keezmovies.py +youtube_dl/extractor/m6.py +youtube_dl/extractor/ntvru.py +youtube_dl/extractor/sendtonews.py +youtube_dl/extractor/teletask.py +youtube_dl/extractor/tv3.py +youtube_dl/extractor/trutube.py +youtube_dl/extractor/sharesix.py +youtube_dl/extractor/rts.py +youtube_dl/extractor/nrk.py +youtube_dl/extractor/imdb.py +youtube_dl/extractor/ruutu.py +youtube_dl/extractor/pornhd.py +youtube_dl/extractor/ninecninemedia.py +youtube_dl/extractor/laola1tv.py +youtube_dl/extractor/techtalks.py +youtube_dl/extractor/libraryofcongress.py +youtube_dl/extractor/fczenit.py +youtube_dl/extractor/crooksandliars.py +youtube_dl/extractor/mtv.py +youtube_dl/extractor/exfm.py +youtube_dl/extractor/nowness.py +youtube_dl/extractor/newstube.py +youtube_dl/extractor/embedly.py +youtube_dl/extractor/wimp.py +youtube_dl/extractor/cbssports.py +youtube_dl/extractor/gputechconf.py +youtube_dl/extractor/videofyme.py +youtube_dl/extractor/hotnewhiphop.py +youtube_dl/extractor/rtve.py +youtube_dl/extractor/spike.py +youtube_dl/extractor/videomega.py +youtube_dl/extractor/liveleak.py +youtube_dl/extractor/internetvideoarchive.py +youtube_dl/extractor/infoq.py +youtube_dl/extractor/patreon.py +youtube_dl/extractor/streamcz.py +youtube_dl/extractor/tube8.py +youtube_dl/extractor/groupon.py +youtube_dl/extractor/slideshare.py +youtube_dl/extractor/moevideo.py +youtube_dl/extractor/vlive.py +youtube_dl/extractor/camdemy.py +youtube_dl/extractor/eroprofile.py +youtube_dl/extractor/viewster.py +youtube_dl/extractor/photobucket.py +youtube_dl/extractor/parliamentliveuk.py +youtube_dl/extractor/tele13.py +youtube_dl/extractor/mdr.py +youtube_dl/extractor/abc.py +youtube_dl/extractor/esri.py +youtube_dl/extractor/sandia.py +youtube_dl/extractor/thescene.py +youtube_dl/extractor/sapo.py +youtube_dl/extractor/mlb.py +youtube_dl/extractor/golem.py +youtube_dl/extractor/teamcoco.py +youtube_dl/extractor/mnet.py +youtube_dl/extractor/tubitv.py +youtube_dl/extractor/kankan.py +youtube_dl/extractor/minhateca.py +youtube_dl/extractor/cliphunter.py +youtube_dl/extractor/telewebion.py +youtube_dl/extractor/ard.py +youtube_dl/extractor/nosvideo.py +youtube_dl/extractor/viki.py +youtube_dl/extractor/echomsk.py +youtube_dl/extractor/eitb.py +youtube_dl/extractor/makertv.py +youtube_dl/extractor/motorsport.py +youtube_dl/extractor/cbc.py +youtube_dl/extractor/gamespot.py +youtube_dl/extractor/vier.py +youtube_dl/extractor/ku6.py +youtube_dl/extractor/tutv.py +youtube_dl/extractor/yahoo.py +youtube_dl/extractor/tudou.py +youtube_dl/extractor/vidme.py +youtube_dl/extractor/howcast.py +youtube_dl/extractor/appletrailers.py +youtube_dl/extractor/sportschau.py +youtube_dl/extractor/rtbf.py +youtube_dl/extractor/tvp.py +youtube_dl/extractor/miomio.py +youtube_dl/extractor/ellentv.py +youtube_dl/extractor/ctv.py +youtube_dl/extractor/chaturbate.py +youtube_dl/extractor/polskieradio.py +youtube_dl/extractor/engadget.py +youtube_dl/extractor/funimation.py +youtube_dl/extractor/thisamericanlife.py +youtube_dl/extractor/collegerama.py +youtube_dl/extractor/googleplus.py +youtube_dl/extractor/cultureunplugged.py +youtube_dl/extractor/godtv.py +youtube_dl/extractor/toypics.py +youtube_dl/extractor/lovehomeporn.py +youtube_dl/extractor/tvland.py +youtube_dl/extractor/ora.py +youtube_dl/extractor/crackle.py +youtube_dl/extractor/tmz.py +youtube_dl/extractor/r7.py +youtube_dl/extractor/nfl.py +youtube_dl/extractor/sportbox.py +youtube_dl/extractor/audimedia.py +youtube_dl/extractor/tvc.py +youtube_dl/extractor/drtv.py +youtube_dl/extractor/sohu.py +youtube_dl/extractor/mgtv.py +youtube_dl/extractor/syfy.py +youtube_dl/extractor/nba.py +youtube_dl/extractor/daum.py +youtube_dl/extractor/freesound.py +youtube_dl/extractor/extractors.py +youtube_dl/extractor/channel9.py +youtube_dl/extractor/twentyfourvideo.py +youtube_dl/extractor/ro220.py +youtube_dl/extractor/pbs.py +youtube_dl/extractor/dplay.py +youtube_dl/extractor/tapely.py +youtube_dl/extractor/audiomack.py +youtube_dl/extractor/mofosex.py +youtube_dl/extractor/afreecatv.py +youtube_dl/extractor/brightcove.py +youtube_dl/extractor/pluralsight.py +youtube_dl/extractor/atresplayer.py +youtube_dl/extractor/beatportpro.py +youtube_dl/extractor/animeondemand.py +youtube_dl/extractor/newgrounds.py +youtube_dl/extractor/stitcher.py +youtube_dl/extractor/lecture2go.py +youtube_dl/extractor/cbslocal.py +youtube_dl/extractor/radiode.py +youtube_dl/extractor/la7.py +youtube_dl/extractor/pornotube.py +youtube_dl/extractor/azubu.py +youtube_dl/extractor/pinkbike.py +youtube_dl/extractor/dramafever.py +youtube_dl/extractor/prosiebensat1.py +youtube_dl/extractor/tlc.py +youtube_dl/extractor/izlesene.py +youtube_dl/extractor/nytimes.py +youtube_dl/extractor/tv4.py +youtube_dl/extractor/theintercept.py +youtube_dl/extractor/sport5.py +youtube_dl/extractor/carambatv.py +youtube_dl/extractor/viidea.py +youtube_dl/extractor/digiteka.py +youtube_dl/extractor/drtuber.py +youtube_dl/extractor/zapiks.py +youtube_dl/extractor/ehow.py +youtube_dl/extractor/dw.py +youtube_dl/extractor/folketinget.py +youtube_dl/extractor/foxsports.py +youtube_dl/extractor/thesixtyone.py +youtube_dl/extractor/openload.py +youtube_dl/extractor/appleconnect.py +youtube_dl/extractor/adobetv.py +youtube_dl/extractor/rte.py +youtube_dl/extractor/teachingchannel.py +youtube_dl/extractor/foxgay.py +youtube_dl/extractor/sexu.py +youtube_dl/extractor/tdslifeway.py +youtube_dl/extractor/ruhd.py +youtube_dl/extractor/niconico.py +youtube_dl/extractor/kaltura.py +youtube_dl/extractor/biqle.py +youtube_dl/extractor/vuclip.py +youtube_dl/extractor/globo.py +youtube_dl/extractor/jove.py +youtube_dl/extractor/freespeech.py +youtube_dl/extractor/kusi.py +youtube_dl/extractor/turbo.py +youtube_dl/extractor/slutload.py +youtube_dl/extractor/zingmp3.py +youtube_dl/extractor/lynda.py +youtube_dl/extractor/aenetworks.py +youtube_dl/extractor/seeker.py +youtube_dl/extractor/lifenews.py +youtube_dl/extractor/mitele.py +youtube_dl/extractor/musicplayon.py +youtube_dl/extractor/gameone.py +youtube_dl/extractor/spiegeltv.py +youtube_dl/extractor/dropbox.py +youtube_dl/extractor/thestar.py +youtube_dl/extractor/reuters.py +youtube_dl/extractor/eighttracks.py +youtube_dl/extractor/tinypic.py +youtube_dl/extractor/formula1.py +youtube_dl/extractor/leeco.py +youtube_dl/extractor/limelight.py +youtube_dl/extractor/closertotruth.py +youtube_dl/extractor/threeqsdn.py +youtube_dl/extractor/thvideo.py +youtube_dl/extractor/allocine.py +youtube_dl/extractor/funnyordie.py +youtube_dl/extractor/mpora.py +youtube_dl/extractor/xtube.py +youtube_dl/extractor/vimeo.py +youtube_dl/extractor/arte.py +youtube_dl/extractor/clipfish.py +youtube_dl/extractor/xminus.py +youtube_dl/extractor/academicearth.py +youtube_dl/extractor/c56.py +youtube_dl/extractor/dvtv.py +youtube_dl/extractor/walla.py +youtube_dl/extractor/snotr.py +youtube_dl/extractor/fusion.py +youtube_dl/extractor/tv2.py +youtube_dl/extractor/npr.py +youtube_dl/extractor/localnews8.py +youtube_dl/extractor/videomore.py +youtube_dl/extractor/viddler.py +youtube_dl/extractor/tunein.py +youtube_dl/extractor/nowtv.py +youtube_dl/extractor/revision3.py +youtube_dl/extractor/clubic.py +youtube_dl/extractor/canvas.py +youtube_dl/extractor/sportdeutschland.py +youtube_dl/extractor/anysex.py +youtube_dl/extractor/aftonbladet.py +youtube_dl/extractor/bandcamp.py +youtube_dl/extractor/bbc.py +youtube_dl/extractor/tnaflix.py +youtube_dl/extractor/dispeak.py +youtube_dl/extractor/vporn.py +youtube_dl/extractor/viewlift.py +youtube_dl/extractor/spiegel.py +youtube_dl/extractor/cracked.py +youtube_dl/extractor/screencast.py +youtube_dl/extractor/thisav.py +youtube_dl/extractor/jwplatform.py +youtube_dl/extractor/democracynow.py +youtube_dl/extractor/dotsub.py +youtube_dl/extractor/pladform.py +youtube_dl/extractor/nhl.py +youtube_dl/extractor/rice.py +youtube_dl/extractor/vgtv.py +youtube_dl/extractor/expotv.py +youtube_dl/extractor/br.py +youtube_dl/extractor/testurl.py +youtube_dl/extractor/generic.py +youtube_dl/extractor/dctp.py +youtube_dl/extractor/wistia.py +youtube_dl/extractor/rockstargames.py +youtube_dl/extractor/adultswim.py +youtube_dl/extractor/pornhub.py +youtube_dl/extractor/skysports.py +youtube_dl/extractor/khanacademy.py +youtube_dl/extractor/kanalplay.py +youtube_dl/extractor/breakcom.py +youtube_dl/extractor/jpopsukitv.py +youtube_dl/extractor/mailru.py +youtube_dl/extractor/gameinformer.py +youtube_dl/extractor/people.py +youtube_dl/extractor/tf1.py +youtube_dl/extractor/alphaporno.py +youtube_dl/extractor/tvigle.py +youtube_dl/extractor/zdf.py +youtube_dl/extractor/camwithher.py +youtube_dl/extractor/savefrom.py +youtube_dl/extractor/udemy.py +youtube_dl/extractor/discovery.py +youtube_dl/extractor/gdcvault.py +youtube_dl/extractor/comedycentral.py +youtube_dl/extractor/ntvde.py +youtube_dl/extractor/minoto.py +youtube_dl/extractor/dailymail.py +youtube_dl/extractor/srmediathek.py +youtube_dl/extractor/tagesschau.py +youtube_dl/extractor/yam.py +youtube_dl/extractor/restudy.py +youtube_dl/extractor/iprima.py +youtube_dl/extractor/stanfordoc.py +youtube_dl/extractor/imgur.py +youtube_dl/extractor/gamekings.py +youtube_dl/extractor/udn.py +youtube_dl/extractor/cbs.py +youtube_dl/extractor/bigflix.py +youtube_dl/extractor/webofstories.py +youtube_dl/extractor/pyvideo.py +youtube_dl/extractor/once.py +youtube_dl/extractor/rutv.py +youtube_dl/extractor/ssa.py +youtube_dl/extractor/played.py +youtube_dl/extractor/giga.py +youtube_dl/extractor/ringtv.py +youtube_dl/extractor/audioboom.py +youtube_dl/extractor/vk.py +youtube_dl/extractor/yourupload.py +youtube_dl/extractor/jeuxvideo.py +youtube_dl/extractor/playwire.py +youtube_dl/extractor/servingsys.py +youtube_dl/extractor/cda.py +youtube_dl/extractor/xuite.py +youtube_dl/extractor/abc7news.py +youtube_dl/extractor/sixplay.py +youtube_dl/extractor/plays.py +youtube_dl/extractor/behindkink.py +youtube_dl/extractor/vube.py +youtube_dl/extractor/bokecc.py +youtube_dl/extractor/scivee.py +youtube_dl/extractor/hrti.py +youtube_dl/extractor/huffpost.py +youtube_dl/extractor/nationalgeographic.py +youtube_dl/extractor/swrmediathek.py +youtube_dl/extractor/mgoon.py +youtube_dl/extractor/extremetube.py +youtube_dl/extractor/wat.py +youtube_dl/extractor/mixcloud.py +youtube_dl/extractor/ruleporn.py +youtube_dl/extractor/mojvideo.py +youtube_dl/extractor/europa.py +youtube_dl/extractor/youtube.py +youtube_dl/extractor/bilibili.py +youtube_dl/extractor/drbonanza.py +youtube_dl/extractor/youku.py +youtube_dl/extractor/lrt.py +youtube_dl/extractor/rutube.py +youtube_dl/extractor/microsoftvirtualacademy.py +youtube_dl/extractor/radiocanada.py +youtube_dl/extractor/vesti.py +youtube_dl/extractor/sunporno.py +youtube_dl/extractor/skynewsarabia.py +youtube_dl/extractor/nerdcubed.py +youtube_dl/extractor/shahid.py +youtube_dl/extractor/telebruxelles.py +youtube_dl/extractor/airmozilla.py +youtube_dl/extractor/googledrive.py +youtube_dl/extractor/weiqitv.py +youtube_dl/extractor/dfb.py +youtube_dl/extractor/ndtv.py +youtube_dl/extractor/hellporno.py +youtube_dl/extractor/ivideon.py +youtube_dl/extractor/ir90tv.py +youtube_dl/extractor/dumpert.py +youtube_dl/extractor/ted.py +youtube_dl/extractor/ign.py +youtube_dl/extractor/radiobremen.py +youtube_dl/extractor/telegraaf.py +youtube_dl/extractor/xboxclips.py +youtube_dl/extractor/metacafe.py +youtube_dl/extractor/condenast.py +youtube_dl/extractor/motherless.py +youtube_dl/extractor/livestream.py +youtube_dl/extractor/cbsnews.py +youtube_dl/extractor/xvideos.py +youtube_dl/extractor/novamov.py +youtube_dl/extractor/tumblr.py +youtube_dl/extractor/southpark.py +youtube_dl/extractor/nuvid.py +youtube_dl/extractor/trilulilu.py +youtube_dl/extractor/cnn.py +youtube_dl/extractor/xnxx.py +youtube_dl/extractor/archiveorg.py +youtube_dl/extractor/xxxymovies.py +youtube_dl/extractor/cliprs.py +youtube_dl/extractor/videott.py +youtube_dl/extractor/flickr.py +youtube_dl/extractor/crunchyroll.py +youtube_dl/extractor/vice.py +youtube_dl/extractor/svt.py +youtube_dl/extractor/wdr.py +youtube_dl/extractor/instagram.py +youtube_dl/extractor/xstream.py +youtube_dl/extractor/eagleplatform.py +youtube_dl/extractor/radiojavan.py +youtube_dl/extractor/regiotv.py +youtube_dl/extractor/videopremium.py +youtube_dl/extractor/odnoklassniki.py +youtube_dl/extractor/veehd.py +youtube_dl/extractor/meta.py +youtube_dl/extractor/aljazeera.py +youtube_dl/extractor/rottentomatoes.py +youtube_dl/extractor/vevo.py +youtube_dl/extractor/canalc2.py +youtube_dl/extractor/nova.py +youtube_dl/extractor/normalboots.py +youtube_dl/extractor/soundcloud.py +youtube_dl/extractor/streamcloud.py +youtube_dl/extractor/eporner.py +youtube_dl/extractor/hornbunny.py +youtube_dl/extractor/myspass.py +youtube_dl/extractor/hypem.py +youtube_dl/extractor/baidu.py +youtube_dl/extractor/periscope.py +youtube_dl/extractor/fourtube.py +youtube_dl/extractor/veoh.py +youtube_dl/extractor/atttechchannel.py +youtube_dl/extractor/cspan.py +youtube_dl/extractor/lemonde.py +youtube_dl/extractor/aol.py +youtube_dl/extractor/hbo.py +youtube_dl/extractor/myvidster.py +youtube_dl/extractor/xfileshare.py +youtube_dl/extractor/hearthisat.py +youtube_dl/extractor/twitter.py +youtube_dl/extractor/learnr.py +youtube_dl/extractor/beeg.py +youtube_dl/extractor/nextmovie.py +youtube_dl/extractor/voxmedia.py +youtube_dl/extractor/unistra.py +youtube_dl/extractor/onionstudios.py +youtube_dl/extractor/franceculture.py +youtube_dl/extractor/screenwavemedia.py +youtube_dl/extractor/bloomberg.py +youtube_dl/extractor/myspace.py +youtube_dl/extractor/metacritic.py +youtube_dl/extractor/glide.py +youtube_dl/extractor/indavideo.py +youtube_dl/extractor/rtl2.py +youtube_dl/extractor/playfm.py +youtube_dl/extractor/urplay.py +youtube_dl/extractor/hotstar.py +youtube_dl/extractor/addanime.py +youtube_dl/extractor/qqmusic.py +youtube_dl/extractor/npo.py +youtube_dl/extractor/teachertube.py +youtube_dl/extractor/safari.py +youtube_dl/extractor/sztvhu.py +youtube_dl/extractor/spankbang.py +youtube_dl/extractor/firstpost.py +youtube_dl/extractor/streetvoice.py +youtube_dl/extractor/mit.py +youtube_dl/extractor/faz.py +youtube_dl/extractor/soundgasm.py +youtube_dl/extractor/worldstarhiphop.py +youtube_dl/extractor/biobiochiletv.py +youtube_dl/extractor/redtube.py +youtube_dl/extractor/footyroom.py +youtube_dl/extractor/commonprotocols.py +youtube_dl/extractor/cwtv.py +youtube_dl/extractor/blinkx.py +youtube_dl/extractor/dailymotion.py +youtube_dl/extractor/naver.py +youtube_dl/extractor/facebook.py +youtube_dl/extractor/acast.py +youtube_dl/extractor/screenjunkies.py +youtube_dl/extractor/noz.py +youtube_dl/extractor/vodlocker.py +youtube_dl/extractor/fivetv.py +youtube_dl/extractor/ustream.py +youtube_dl/extractor/__init__.py +youtube_dl/extractor/googlesearch.py +youtube_dl/extractor/ministrygrid.py +youtube_dl/extractor/dreisat.py +youtube_dl/extractor/trollvids.py +youtube_dl/extractor/karaoketv.py +youtube_dl/extractor/ninegag.py +youtube_dl/extractor/muenchentv.py +youtube_dl/extractor/spankwire.py +youtube_dl/extractor/hark.py +youtube_dl/extractor/zippcast.py +youtube_dl/extractor/xbef.py +youtube_dl/extractor/tweakers.py +youtube_dl/extractor/anitube.py +youtube_dl/extractor/hentaistigma.py +youtube_dl/extractor/tvplay.py +youtube_dl/extractor/hitbox.py +youtube_dl/extractor/canalplus.py +youtube_dl/extractor/keek.py +youtube_dl/extractor/mwave.py +youtube_dl/extractor/lnkgo.py +youtube_dl/extractor/goshgay.py +youtube_dl/extractor/ndr.py +youtube_dl/extractor/vessel.py +youtube_dl/extractor/makerschannel.py +youtube_dl/extractor/ctsnews.py +youtube_dl/extractor/helsinki.py +youtube_dl/extractor/radiofrance.py +youtube_dl/extractor/rtp.py +youtube_dl/extractor/yandexmusic.py +youtube_dl/extractor/gamersyde.py +youtube_dl/extractor/puls4.py +youtube_dl/extractor/youjizz.py +youtube_dl/extractor/eyedotv.py +youtube_dl/extractor/bravotv.py +youtube_dl/extractor/fktv.py +youtube_dl/extractor/einthusan.py +youtube_dl/extractor/ustudio.py +youtube_dl/extractor/common.py +youtube_dl/extractor/yinyuetai.py +youtube_dl/extractor/toutv.py +youtube_dl/extractor/giantbomb.py +youtube_dl/extractor/sbs.py +youtube_dl/extractor/cnbc.py +youtube_dl/extractor/francetv.py +youtube_dl/extractor/usatoday.py +youtube_dl/extractor/nick.py +youtube_dl/extractor/presstv.py +youtube_dl/extractor/youporn.py +youtube_dl/extractor/oktoberfesttv.py +youtube_dl/extractor/howstuffworks.py +youtube_dl/extractor/twentymin.py +youtube_dl/extractor/ooyala.py +youtube_dl/extractor/bet.py +youtube_dl/extractor/aparat.py +youtube_dl/extractor/defense.py +youtube_dl/extractor/ebaumsworld.py +youtube_dl/extractor/konserthusetplay.py +youtube_dl/extractor/rai.py +youtube_dl/extractor/telemb.py +youtube_dl/extractor/vrt.py +youtube_dl/extractor/gfycat.py +youtube_dl/extractor/clyp.py +youtube_dl/extractor/moviezine.py +youtube_dl/extractor/sina.py +youtube_dl/extractor/wsj.py +youtube_dl/extractor/srgssr.py +youtube_dl/extractor/foxnews.py +youtube_dl/extractor/senateisvp.py +youtube_dl/extractor/nfb.py +youtube_dl/extractor/franceinter.py +youtube_dl/extractor/ctvnews.py +youtube_dl/extractor/playtvak.py +youtube_dl/extractor/cbsinteractive.py +youtube_dl/extractor/dbtv.py +youtube_dl/extractor/pandoratv.py +youtube_dl/extractor/kickstarter.py +youtube_dl/extractor/goldenmoustache.py +youtube_dl/extractor/screencastomatic.py +youtube_dl/extractor/firsttv.py +youtube_dl/extractor/heise.py +youtube_dl/extractor/ynet.py +youtube_dl/extractor/buzzfeed.py +youtube_dl/extractor/porn91.py +youtube_dl/extractor/myvi.py +youtube_dl/extractor/anvato.py +youtube_dl/extractor/podomatic.py +youtube_dl/extractor/fivemin.py +youtube_dl/extractor/rbmaradio.py +youtube_dl/extractor/shared.py +youtube_dl/extractor/primesharetv.py +youtube_dl/extractor/movieclips.py +youtube_dl/extractor/xhamster.py +youtube_dl/extractor/iqiyi.py +youtube_dl/extractor/pornovoisines.py +youtube_dl/extractor/videodetective.py +youtube_dl/extractor/ivi.py +youtube_dl/extractor/bambuser.py +youtube_dl/extractor/cloudy.py +youtube_dl/extractor/netzkino.py +youtube_dl/extractor/vidzi.py +youtube_dl/extractor/gamestar.py +youtube_dl/extractor/nbc.py +youtube_dl/extractor/elpais.py +youtube_dl/extractor/litv.py +youtube_dl/extractor/msn.py +youtube_dl/extractor/reverbnation.py +youtube_dl/extractor/libsyn.py +youtube_dl/extractor/clipsyndicate.py +youtube_dl/extractor/commonmistakes.py +youtube_dl/extractor/neteasemusic.py +youtube_dl/extractor/fox.py +youtube_dl/extractor/philharmoniedeparis.py +youtube_dl/extractor/vbox7.py +youtube_dl/postprocessor/ffmpeg.py +youtube_dl/postprocessor/metadatafromtitle.py +youtube_dl/postprocessor/embedthumbnail.py +youtube_dl/postprocessor/xattrpp.py +youtube_dl/postprocessor/execafterdownload.py +youtube_dl/postprocessor/__init__.py +youtube_dl/postprocessor/common.py +youtube_dl/options.py +youtube_dl/aes.py +youtube_dl/__main__.py +youtube_dl/update.py +youtube_dl/jsinterp.py +youtube_dl/cache.py +youtube_dl/downloader/rtsp.py +youtube_dl/downloader/f4m.py +youtube_dl/downloader/hls.py +youtube_dl/downloader/fragment.py +youtube_dl/downloader/external.py +youtube_dl/downloader/rtmp.py +youtube_dl/downloader/http.py +youtube_dl/downloader/dash.py +youtube_dl/downloader/__init__.py +youtube_dl/downloader/common.py +youtube_dl/__init__.py +youtube_dl/YoutubeDL.py +youtube_dl/socks.py diff --git a/media/youtube-dl/src b/media/youtube-dl/src new file mode 160000 +Subproject c25f1a9b63cd75beb691c83e4167fb9aceebf76 |
