From 435d023e9162287eb720b3cfb54d0ad750e3ac92 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Mon, 30 Nov 2015 01:02:36 -0200 Subject: [PATCH 01/16] Initiate new release. Git-Dch: Ignore --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 46628e6..b48ee72 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +youtube-dl (2015.11.27.1-1~1.gbpf19349) UNRELEASED; urgency=medium + + ** SNAPSHOT build @f19349c26118065acbe21509383c63465df794fe ** + + * Imported Upstream version 2015.11.27.1 + + -- Rogério Brito Mon, 30 Nov 2015 00:54:42 -0200 + youtube-dl (2015.11.10-1) unstable; urgency=medium * Imported Upstream version 2015.07.21 (Closes: #735012, #736151) -- 2.41.1 From 14111bdbc4a22585fc51fd4efa3572ea003b5321 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Mon, 30 Nov 2015 01:12:27 -0200 Subject: [PATCH 02/16] Annotate changelog with bug closed. Git-Dch: Ignore --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b48ee72..804fd10 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,7 +2,7 @@ youtube-dl (2015.11.27.1-1~1.gbpf19349) UNRELEASED; urgency=medium ** SNAPSHOT build @f19349c26118065acbe21509383c63465df794fe ** - * Imported Upstream version 2015.11.27.1 + * Imported Upstream version 2015.11.27.1 (Closes: #806559). -- Rogério Brito Mon, 30 Nov 2015 00:54:42 -0200 -- 2.41.1 From c24e0355c9ff22af2bc119703d8b0a1f8c6d6689 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Mon, 30 Nov 2015 01:40:37 -0200 Subject: [PATCH 03/16] Prepare for release. Git-Dch: Ignore --- debian/changelog | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 804fd10..b808c91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,8 @@ -youtube-dl (2015.11.27.1-1~1.gbpf19349) UNRELEASED; urgency=medium - - ** SNAPSHOT build @f19349c26118065acbe21509383c63465df794fe ** +youtube-dl (2015.11.27.1-1) unstable; urgency=medium * Imported Upstream version 2015.11.27.1 (Closes: #806559). - -- Rogério Brito Mon, 30 Nov 2015 00:54:42 -0200 + -- Rogério Brito Mon, 30 Nov 2015 01:39:56 -0200 youtube-dl (2015.11.10-1) unstable; urgency=medium -- 2.41.1 From d018d3313032e12968a6add6800e51d412e2f602 Mon Sep 17 00:00:00 2001 From: Wookey Date: Fri, 8 Jan 2016 01:48:02 +0000 Subject: [PATCH 04/16] Imported Debian patch 2015.11.27.1-1.1 --- debian/changelog | 7 +++++++ debian/patches/fix-809454.patch | 21 +++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 29 insertions(+) create mode 100644 debian/patches/fix-809454.patch create mode 100644 debian/patches/series diff --git a/debian/changelog b/debian/changelog index b808c91..020da09 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +youtube-dl (2015.11.27.1-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * Fix for youtube failure #809454 + + -- Wookey Fri, 08 Jan 2016 01:48:02 +0000 + youtube-dl (2015.11.27.1-1) unstable; urgency=medium * Imported Upstream version 2015.11.27.1 (Closes: #806559). diff --git a/debian/patches/fix-809454.patch b/debian/patches/fix-809454.patch new file mode 100644 index 0000000..e840a10 --- /dev/null +++ b/debian/patches/fix-809454.patch @@ -0,0 +1,21 @@ +Description: Apply youtube fix from upstream issue 7900 + * Fix for youtube failure #809454 +Author: Wookey + +Origin: upstream, https://github.com/rg3/youtube-dl/commit/b95779be21929c1aed1c0edbc3f9a5d11826973f +Bug: https://github.com/rg3/youtube-dl/issues/7900 +Bug-Debian: https://bugs.debian.org/809454 +Forwarded: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809454#3 +Last-Update: 2016-01-07 + +--- youtube-dl-2015.11.27.1.orig/youtube_dl/jsinterp.py ++++ youtube-dl-2015.11.27.1/youtube_dl/jsinterp.py +@@ -232,7 +232,7 @@ class JSInterpreter(object): + def extract_function(self, funcname): + func_m = re.search( + r'''(?x) +- (?:function\s+%s|[{;]%s\s*=\s*function|var\s+%s\s*=\s*function)\s* ++ (?:function\s+%s|[{;,]%s\s*=\s*function|var\s+%s\s*=\s*function)\s* + \((?P[^)]*)\)\s* + \{(?P[^}]+)\}''' % ( + re.escape(funcname), re.escape(funcname), re.escape(funcname)), diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..33a3e48 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +fix-809454.patch -- 2.41.1 From 9f2b33881274af98a9145c533a1d295fad71521a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Wed, 24 Feb 2016 17:23:49 -0300 Subject: [PATCH 05/16] Imported Upstream version 2016.02.22 --- Makefile | 16 +- README.md | 221 +++++++-- README.txt | 463 ++++++++++++------ devscripts/gh-pages/update-copyright.py | 2 +- docs/supportedsites.md | 128 +++-- test/swftests/ArrayAccess.swf | Bin 611 -> 609 bytes test/swftests/ClassCall.swf | Bin 581 -> 581 bytes test/swftests/ClassConstruction.swf | Bin 553 -> 553 bytes test/swftests/ConstArrayAccess.swf | Bin 627 -> 627 bytes test/swftests/ConstantInt.swf | Bin 518 -> 516 bytes test/swftests/DictCall.swf | Bin 547 -> 545 bytes test/swftests/EqualsOperator.swf | Bin 510 -> 511 bytes test/swftests/LocalVars.swf | Bin 518 -> 517 bytes test/swftests/MemberAssignment.swf | Bin 559 -> 558 bytes test/swftests/NeOperator.swf | Bin 535 -> 535 bytes test/swftests/PrivateCall.swf | Bin 594 -> 595 bytes test/swftests/PrivateVoidCall.swf | Bin 600 -> 600 bytes test/swftests/StaticAssignment.swf | Bin 518 -> 516 bytes test/swftests/StaticRetrieval.swf | Bin 519 -> 516 bytes test/swftests/StringBasics.swf | Bin 519 -> 522 bytes test/swftests/StringCharCodeAt.swf | Bin 555 -> 556 bytes test/swftests/StringConversion.swf | Bin 532 -> 532 bytes test/test_YoutubeDL.py | 67 ++- test/test_all_urls.py | 6 +- test/test_iqiyi_sdk_interpreter.py | 47 ++ test/test_subtitles.py | 29 +- test/test_update.py | 30 ++ test/test_utils.py | 58 ++- test/test_write_annotations.py | 2 +- test/test_youtube_lists.py | 2 +- test/versions.json | 34 ++ youtube-dl | Bin 1030895 -> 1122987 bytes youtube-dl.1 | 361 +++++++++++--- youtube-dl.bash-completion | 2 +- youtube-dl.fish | 7 +- youtube-dl.zsh | 2 +- youtube_dl/YoutubeDL.py | 84 +++- youtube_dl/__init__.py | 1 + youtube_dl/__main__.py | 2 +- youtube_dl/aes.py | 2 +- youtube_dl/compat.py | 16 +- youtube_dl/downloader/common.py | 9 +- youtube_dl/downloader/dash.py | 79 ++- youtube_dl/downloader/f4m.py | 24 +- youtube_dl/downloader/fragment.py | 51 +- youtube_dl/downloader/hls.py | 24 +- youtube_dl/downloader/http.py | 4 +- youtube_dl/downloader/rtmp.py | 16 +- youtube_dl/extractor/__init__.py | 177 +++++-- youtube_dl/extractor/abc.py | 5 + youtube_dl/extractor/abc7news.py | 1 - youtube_dl/extractor/acast.py | 72 +++ youtube_dl/extractor/adobetv.py | 165 +++++-- youtube_dl/extractor/adultswim.py | 9 +- youtube_dl/extractor/aenetworks.py | 66 +++ youtube_dl/extractor/aftenposten.py | 23 - youtube_dl/extractor/allocine.py | 20 +- youtube_dl/extractor/amp.py | 81 +++ youtube_dl/extractor/animeondemand.py | 160 ++++++ youtube_dl/extractor/anitube.py | 39 +- youtube_dl/extractor/appletrailers.py | 91 +++- youtube_dl/extractor/ard.py | 6 +- youtube_dl/extractor/arte.py | 173 +++++-- youtube_dl/extractor/atresplayer.py | 114 +++-- youtube_dl/extractor/audimedia.py | 80 +++ youtube_dl/extractor/audiomack.py | 2 +- youtube_dl/extractor/azubu.py | 40 +- youtube_dl/extractor/baidu.py | 55 +-- youtube_dl/extractor/bbc.py | 102 ++-- youtube_dl/extractor/beeg.py | 40 +- youtube_dl/extractor/bigflix.py | 85 ++++ youtube_dl/extractor/bilibili.py | 162 +++--- youtube_dl/extractor/bleacherreport.py | 106 ++++ youtube_dl/extractor/bliptv.py | 290 ----------- youtube_dl/extractor/bloomberg.py | 20 +- youtube_dl/extractor/bpb.py | 30 +- youtube_dl/extractor/br.py | 123 +++-- youtube_dl/extractor/brightcove.py | 23 +- youtube_dl/extractor/byutv.py | 5 +- youtube_dl/extractor/canal13cl.py | 48 -- youtube_dl/extractor/canalc2.py | 46 +- youtube_dl/extractor/canalplus.py | 59 ++- youtube_dl/extractor/canvas.py | 94 ++++ youtube_dl/extractor/cbc.py | 113 +++++ youtube_dl/extractor/cbsnews.py | 104 ++-- youtube_dl/extractor/ccc.py | 35 +- youtube_dl/extractor/ceskatelevize.py | 8 +- youtube_dl/extractor/chaturbate.py | 15 +- youtube_dl/extractor/cinemassacre.py | 18 +- youtube_dl/extractor/clipfish.py | 64 ++- youtube_dl/extractor/cliphunter.py | 43 +- youtube_dl/extractor/cnet.py | 69 ++- youtube_dl/extractor/cnn.py | 12 +- youtube_dl/extractor/collegerama.py | 6 +- youtube_dl/extractor/comcarcoff.py | 40 +- youtube_dl/extractor/comedycentral.py | 11 +- youtube_dl/extractor/common.py | 339 +++++++++++-- youtube_dl/extractor/crackle.py | 95 ++++ youtube_dl/extractor/crunchyroll.py | 80 +-- youtube_dl/extractor/cspan.py | 131 +++-- youtube_dl/extractor/cultureunplugged.py | 63 +++ youtube_dl/extractor/cwtv.py | 88 ++++ youtube_dl/extractor/dailymotion.py | 67 ++- youtube_dl/extractor/daum.py | 275 ++++++++++- youtube_dl/extractor/dbtv.py | 14 +- youtube_dl/extractor/dcn.py | 182 +++++-- youtube_dl/extractor/digiteka.py | 112 +++++ youtube_dl/extractor/discovery.py | 39 +- youtube_dl/extractor/dramafever.py | 117 ++--- youtube_dl/extractor/drbonanza.py | 10 +- youtube_dl/extractor/dreisat.py | 59 +-- youtube_dl/extractor/drtv.py | 2 +- youtube_dl/extractor/eighttracks.py | 108 ++-- youtube_dl/extractor/einthusan.py | 33 +- youtube_dl/extractor/eitb.py | 12 +- youtube_dl/extractor/ellentv.py | 8 +- youtube_dl/extractor/espn.py | 41 +- youtube_dl/extractor/esri.py | 2 +- youtube_dl/extractor/everyonesmixtape.py | 12 +- youtube_dl/extractor/exfm.py | 2 +- youtube_dl/extractor/facebook.py | 144 +++++- youtube_dl/extractor/faz.py | 36 +- youtube_dl/extractor/fc2.py | 6 +- youtube_dl/extractor/fktv.py | 34 +- youtube_dl/extractor/flickr.py | 112 +++-- youtube_dl/extractor/footyroom.py | 1 + youtube_dl/extractor/fox.py | 36 ++ youtube_dl/extractor/foxnews.py | 73 +-- youtube_dl/extractor/franceculture.py | 44 +- youtube_dl/extractor/franceinter.py | 9 +- youtube_dl/extractor/francetv.py | 2 +- youtube_dl/extractor/freevideo.py | 4 +- youtube_dl/extractor/funimation.py | 191 ++++++++ youtube_dl/extractor/funnyordie.py | 6 +- youtube_dl/extractor/gameinformer.py | 43 ++ youtube_dl/extractor/gamekings.py | 29 +- youtube_dl/extractor/gametrailers.py | 61 ++- youtube_dl/extractor/generic.py | 111 ++++- youtube_dl/extractor/globo.py | 8 +- youtube_dl/extractor/googledrive.py | 88 ++++ youtube_dl/extractor/gputechconf.py | 55 +++ youtube_dl/extractor/groupon.py | 2 + youtube_dl/extractor/hentaistigma.py | 4 +- youtube_dl/extractor/history.py | 31 -- youtube_dl/extractor/hitbox.py | 3 + youtube_dl/extractor/hotstar.py | 83 ++++ youtube_dl/extractor/howcast.py | 1 + youtube_dl/extractor/hypem.py | 16 +- youtube_dl/extractor/ign.py | 140 ++++-- youtube_dl/extractor/imgur.py | 51 +- youtube_dl/extractor/infoq.py | 85 +++- youtube_dl/extractor/instagram.py | 18 +- youtube_dl/extractor/iprima.py | 91 +--- youtube_dl/extractor/iqiyi.py | 406 ++++++++++++++- youtube_dl/extractor/ivi.py | 97 ++-- youtube_dl/extractor/ivideon.py | 83 ++++ youtube_dl/extractor/jukebox.py | 59 --- youtube_dl/extractor/jwplatform.py | 70 +++ youtube_dl/extractor/kaltura.py | 22 +- youtube_dl/extractor/kanalplay.py | 2 +- youtube_dl/extractor/kankan.py | 2 +- youtube_dl/extractor/keezmovies.py | 38 +- youtube_dl/extractor/kickstarter.py | 10 +- youtube_dl/extractor/konserthusetplay.py | 107 ++++ youtube_dl/extractor/kuwo.py | 4 + youtube_dl/extractor/laola1tv.py | 131 +++-- youtube_dl/extractor/lemonde.py | 34 ++ youtube_dl/extractor/letv.py | 115 +++++ youtube_dl/extractor/limelight.py | 7 +- youtube_dl/extractor/liveleak.py | 2 +- youtube_dl/extractor/livestream.py | 328 ++++++++----- youtube_dl/extractor/lovehomeporn.py | 37 ++ youtube_dl/extractor/lrt.py | 43 +- youtube_dl/extractor/mailru.py | 95 +++- youtube_dl/extractor/makertv.py | 32 ++ youtube_dl/extractor/matchtv.py | 55 +++ youtube_dl/extractor/mdr.py | 2 +- youtube_dl/extractor/metacafe.py | 6 +- youtube_dl/extractor/mixcloud.py | 3 +- youtube_dl/extractor/mofosex.py | 2 +- youtube_dl/extractor/movshare.py | 27 - youtube_dl/extractor/mtv.py | 26 +- youtube_dl/extractor/myspass.py | 4 +- youtube_dl/extractor/myvideo.py | 1 + youtube_dl/extractor/nba.py | 91 +++- youtube_dl/extractor/nbc.py | 40 +- youtube_dl/extractor/ndr.py | 6 +- youtube_dl/extractor/nerdcubed.py | 4 +- youtube_dl/extractor/neteasemusic.py | 40 +- youtube_dl/extractor/nextmovie.py | 30 ++ youtube_dl/extractor/nhl.py | 2 +- youtube_dl/extractor/nick.py | 63 +++ youtube_dl/extractor/noco.py | 34 +- youtube_dl/extractor/novamov.py | 108 +++- youtube_dl/extractor/nowness.py | 14 +- youtube_dl/extractor/nowtv.py | 6 +- youtube_dl/extractor/nowvideo.py | 28 -- youtube_dl/extractor/noz.py | 69 +++ youtube_dl/extractor/npo.py | 34 +- youtube_dl/extractor/npr.py | 82 ++++ youtube_dl/extractor/nrk.py | 42 +- youtube_dl/extractor/ntvde.py | 33 +- youtube_dl/extractor/nuevo.py | 38 ++ youtube_dl/extractor/odnoklassniki.py | 8 +- youtube_dl/extractor/ooyala.py | 184 +++---- youtube_dl/extractor/ora.py | 72 +++ youtube_dl/extractor/orf.py | 17 +- youtube_dl/extractor/pandoratv.py | 78 +++ youtube_dl/extractor/pbs.py | 291 +++++++++-- youtube_dl/extractor/periscope.py | 3 +- youtube_dl/extractor/phoenix.py | 10 +- youtube_dl/extractor/pladform.py | 9 + youtube_dl/extractor/plays.py | 51 ++ youtube_dl/extractor/pluralsight.py | 30 +- youtube_dl/extractor/pornhub.py | 87 +++- youtube_dl/extractor/pornovoisines.py | 2 +- youtube_dl/extractor/prosiebensat1.py | 30 +- youtube_dl/extractor/qqmusic.py | 35 +- youtube_dl/extractor/radiobremen.py | 12 +- youtube_dl/extractor/radiofrance.py | 6 +- youtube_dl/extractor/rai.py | 204 ++++---- youtube_dl/extractor/rbmaradio.py | 10 +- youtube_dl/extractor/regiotv.py | 62 +++ youtube_dl/extractor/reverbnation.py | 12 +- youtube_dl/extractor/revision3.py | 127 +++++ youtube_dl/extractor/ringtv.py | 14 +- youtube_dl/extractor/rte.py | 117 ++++- youtube_dl/extractor/rtl2.py | 2 +- youtube_dl/extractor/rts.py | 95 ++-- youtube_dl/extractor/ruleporn.py | 44 ++ youtube_dl/extractor/rutube.py | 21 +- youtube_dl/extractor/rutv.py | 2 +- youtube_dl/extractor/ruutu.py | 17 +- youtube_dl/extractor/safari.py | 4 +- youtube_dl/extractor/screenjunkies.py | 138 ++++++ youtube_dl/extractor/screenwavemedia.py | 10 +- youtube_dl/extractor/senateisvp.py | 78 +-- youtube_dl/extractor/shahid.py | 3 + youtube_dl/extractor/skynewsarabia.py | 117 +++++ youtube_dl/extractor/slutload.py | 4 +- youtube_dl/extractor/smotri.py | 4 +- youtube_dl/extractor/snotr.py | 2 +- youtube_dl/extractor/sohu.py | 1 + youtube_dl/extractor/soompi.py | 146 ------ youtube_dl/extractor/soundcloud.py | 40 +- youtube_dl/extractor/spankbang.py | 13 +- youtube_dl/extractor/spiegel.py | 3 +- youtube_dl/extractor/sportdeutschland.py | 6 +- youtube_dl/extractor/srf.py | 104 ---- youtube_dl/extractor/srgssr.py | 155 ++++++ youtube_dl/extractor/srmediathek.py | 49 +- youtube_dl/extractor/steam.py | 16 +- youtube_dl/extractor/svt.py | 42 +- youtube_dl/extractor/teachingchannel.py | 1 + youtube_dl/extractor/tele13.py | 88 ++++ youtube_dl/extractor/tenplay.py | 8 +- youtube_dl/extractor/testtube.py | 90 ---- youtube_dl/extractor/testurl.py | 2 +- youtube_dl/extractor/tf1.py | 20 +- youtube_dl/extractor/theintercept.py | 49 ++ youtube_dl/extractor/theplatform.py | 24 +- youtube_dl/extractor/thesixtyone.py | 32 +- youtube_dl/extractor/tlc.py | 23 - youtube_dl/extractor/toggle.py | 192 ++++++++ youtube_dl/extractor/traileraddict.py | 8 +- youtube_dl/extractor/trilulilu.py | 127 +++-- youtube_dl/extractor/trollvids.py | 36 ++ youtube_dl/extractor/trutube.py | 24 +- youtube_dl/extractor/tube8.py | 90 ++-- youtube_dl/extractor/tudou.py | 96 +++- youtube_dl/extractor/tunein.py | 191 +++++--- youtube_dl/extractor/tv2.py | 11 +- youtube_dl/extractor/tv4.py | 2 +- youtube_dl/extractor/tvland.py | 64 +++ youtube_dl/extractor/twentyfourvideo.py | 39 +- youtube_dl/extractor/twentymin.py | 73 +++ youtube_dl/extractor/twitter.py | 100 +++- youtube_dl/extractor/udemy.py | 175 +++++-- youtube_dl/extractor/ultimedia.py | 105 ---- youtube_dl/extractor/unistra.py | 2 +- youtube_dl/extractor/ustream.py | 2 +- youtube_dl/extractor/vbox7.py | 2 +- youtube_dl/extractor/vevo.py | 330 ++++++++----- youtube_dl/extractor/vgtv.py | 169 +++++-- youtube_dl/extractor/vice.py | 1 + youtube_dl/extractor/viddler.py | 50 +- youtube_dl/extractor/videomega.py | 1 + youtube_dl/extractor/videomore.py | 243 +++++++++ youtube_dl/extractor/videopremium.py | 10 +- youtube_dl/extractor/videott.py | 1 + youtube_dl/extractor/videoweed.py | 26 - youtube_dl/extractor/vidme.py | 71 ++- youtube_dl/extractor/vidzi.py | 19 +- youtube_dl/extractor/viewster.py | 4 +- youtube_dl/extractor/viidea.py | 4 + youtube_dl/extractor/viki.py | 22 +- youtube_dl/extractor/vimeo.py | 92 +++- youtube_dl/extractor/vine.py | 6 +- youtube_dl/extractor/vk.py | 18 +- youtube_dl/extractor/vlive.py | 94 ++-- youtube_dl/extractor/vodlocker.py | 37 +- youtube_dl/extractor/vrt.py | 15 +- youtube_dl/extractor/wat.py | 10 +- youtube_dl/extractor/wdr.py | 71 ++- youtube_dl/extractor/weiqitv.py | 52 ++ youtube_dl/extractor/wimp.py | 19 +- youtube_dl/extractor/worldstarhiphop.py | 14 +- youtube_dl/extractor/xhamster.py | 35 +- youtube_dl/extractor/xstream.py | 14 +- youtube_dl/extractor/xtube.py | 160 +++--- youtube_dl/extractor/xuite.py | 21 +- youtube_dl/extractor/yahoo.py | 36 +- youtube_dl/extractor/youjizz.py | 4 +- youtube_dl/extractor/youku.py | 137 +++--- youtube_dl/extractor/youporn.py | 6 +- youtube_dl/extractor/youtube.py | 431 +++++++++------- youtube_dl/extractor/zdf.py | 271 ++++++---- youtube_dl/extractor/zippcast.py | 94 ++++ youtube_dl/jsinterp.py | 2 +- youtube_dl/options.py | 13 +- youtube_dl/postprocessor/embedthumbnail.py | 2 +- youtube_dl/postprocessor/execafterdownload.py | 2 +- youtube_dl/postprocessor/ffmpeg.py | 24 +- youtube_dl/postprocessor/metadatafromtitle.py | 2 +- youtube_dl/postprocessor/xattrpp.py | 10 +- youtube_dl/swfinterp.py | 2 +- youtube_dl/update.py | 56 +-- youtube_dl/utils.py | 187 +++++-- youtube_dl/version.py | 2 +- 329 files changed, 13069 insertions(+), 5146 deletions(-) create mode 100644 test/test_iqiyi_sdk_interpreter.py create mode 100644 test/test_update.py create mode 100644 test/versions.json create mode 100644 youtube_dl/extractor/acast.py create mode 100644 youtube_dl/extractor/aenetworks.py delete mode 100644 youtube_dl/extractor/aftenposten.py create mode 100644 youtube_dl/extractor/amp.py create mode 100644 youtube_dl/extractor/animeondemand.py create mode 100644 youtube_dl/extractor/audimedia.py create mode 100644 youtube_dl/extractor/bigflix.py create mode 100644 youtube_dl/extractor/bleacherreport.py delete mode 100644 youtube_dl/extractor/bliptv.py delete mode 100644 youtube_dl/extractor/canal13cl.py create mode 100644 youtube_dl/extractor/canvas.py create mode 100644 youtube_dl/extractor/cbc.py create mode 100644 youtube_dl/extractor/crackle.py create mode 100644 youtube_dl/extractor/cultureunplugged.py create mode 100644 youtube_dl/extractor/cwtv.py create mode 100644 youtube_dl/extractor/digiteka.py create mode 100644 youtube_dl/extractor/fox.py create mode 100644 youtube_dl/extractor/funimation.py create mode 100644 youtube_dl/extractor/gameinformer.py create mode 100644 youtube_dl/extractor/googledrive.py create mode 100644 youtube_dl/extractor/gputechconf.py delete mode 100644 youtube_dl/extractor/history.py create mode 100644 youtube_dl/extractor/hotstar.py create mode 100644 youtube_dl/extractor/ivideon.py delete mode 100644 youtube_dl/extractor/jukebox.py create mode 100644 youtube_dl/extractor/jwplatform.py create mode 100644 youtube_dl/extractor/konserthusetplay.py create mode 100644 youtube_dl/extractor/lemonde.py create mode 100644 youtube_dl/extractor/lovehomeporn.py create mode 100644 youtube_dl/extractor/makertv.py create mode 100644 youtube_dl/extractor/matchtv.py delete mode 100644 youtube_dl/extractor/movshare.py create mode 100644 youtube_dl/extractor/nextmovie.py create mode 100644 youtube_dl/extractor/nick.py delete mode 100644 youtube_dl/extractor/nowvideo.py create mode 100644 youtube_dl/extractor/noz.py create mode 100644 youtube_dl/extractor/npr.py create mode 100644 youtube_dl/extractor/nuevo.py create mode 100644 youtube_dl/extractor/ora.py create mode 100644 youtube_dl/extractor/pandoratv.py create mode 100644 youtube_dl/extractor/plays.py create mode 100644 youtube_dl/extractor/regiotv.py create mode 100644 youtube_dl/extractor/revision3.py create mode 100644 youtube_dl/extractor/ruleporn.py create mode 100644 youtube_dl/extractor/screenjunkies.py create mode 100644 youtube_dl/extractor/skynewsarabia.py delete mode 100644 youtube_dl/extractor/soompi.py delete mode 100644 youtube_dl/extractor/srf.py create mode 100644 youtube_dl/extractor/srgssr.py create mode 100644 youtube_dl/extractor/tele13.py delete mode 100644 youtube_dl/extractor/testtube.py create mode 100644 youtube_dl/extractor/theintercept.py create mode 100644 youtube_dl/extractor/toggle.py create mode 100644 youtube_dl/extractor/trollvids.py create mode 100644 youtube_dl/extractor/tvland.py create mode 100644 youtube_dl/extractor/twentymin.py delete mode 100644 youtube_dl/extractor/ultimedia.py create mode 100644 youtube_dl/extractor/videomore.py delete mode 100644 youtube_dl/extractor/videoweed.py create mode 100644 youtube_dl/extractor/weiqitv.py create mode 100644 youtube_dl/extractor/zippcast.py diff --git a/Makefile b/Makefile index fdb1abb..cb449b7 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ test: ot: offlinetest offlinetest: codetest - nosetests --verbose test --exclude test_download.py --exclude test_age_restriction.py --exclude test_subtitles.py --exclude test_write_annotations.py --exclude test_youtube_lists.py + nosetests --verbose test --exclude test_download.py --exclude test_age_restriction.py --exclude test_subtitles.py --exclude test_write_annotations.py --exclude test_youtube_lists.py --exclude test_iqiyi_sdk_interpreter.py tar: youtube-dl.tar.gz @@ -61,34 +61,34 @@ youtube-dl: youtube_dl/*.py youtube_dl/*/*.py chmod a+x youtube-dl README.md: youtube_dl/*.py youtube_dl/*/*.py - COLUMNS=80 python youtube_dl/__main__.py --help | python devscripts/make_readme.py + COLUMNS=80 $(PYTHON) youtube_dl/__main__.py --help | $(PYTHON) devscripts/make_readme.py CONTRIBUTING.md: README.md - python devscripts/make_contributing.py README.md CONTRIBUTING.md + $(PYTHON) devscripts/make_contributing.py README.md CONTRIBUTING.md supportedsites: - python devscripts/make_supportedsites.py docs/supportedsites.md + $(PYTHON) devscripts/make_supportedsites.py docs/supportedsites.md README.txt: README.md pandoc -f markdown -t plain README.md -o README.txt youtube-dl.1: README.md - python devscripts/prepare_manpage.py >youtube-dl.1.temp.md + $(PYTHON) devscripts/prepare_manpage.py >youtube-dl.1.temp.md pandoc -s -f markdown -t man youtube-dl.1.temp.md -o youtube-dl.1 rm -f youtube-dl.1.temp.md youtube-dl.bash-completion: youtube_dl/*.py youtube_dl/*/*.py devscripts/bash-completion.in - python devscripts/bash-completion.py + $(PYTHON) devscripts/bash-completion.py bash-completion: youtube-dl.bash-completion youtube-dl.zsh: youtube_dl/*.py youtube_dl/*/*.py devscripts/zsh-completion.in - python devscripts/zsh-completion.py + $(PYTHON) devscripts/zsh-completion.py zsh-completion: youtube-dl.zsh youtube-dl.fish: youtube_dl/*.py youtube_dl/*/*.py devscripts/fish-completion.in - python devscripts/fish-completion.py + $(PYTHON) devscripts/fish-completion.py fish-completion: youtube-dl.fish diff --git a/README.md b/README.md index df419ab..db49ab6 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ You can also use pip: sudo pip install youtube-dl -Alternatively, refer to the [developer instructions](#developer-instructions) for how to check out and work with the git repository. For further options, including PGP signatures, see https://rg3.github.io/youtube-dl/download.html . +Alternatively, refer to the [developer instructions](#developer-instructions) for how to check out and work with the git repository. For further options, including PGP signatures, see the [youtube-dl Download Page](https://rg3.github.io/youtube-dl/download.html). # DESCRIPTION **youtube-dl** is a small command-line program to download videos from @@ -173,6 +173,10 @@ which means you can modify it, redistribute it or use it however you like. expected filesize (experimental) --hls-prefer-native Use the native HLS downloader instead of ffmpeg (experimental) + --hls-use-mpegts Use the mpegts container for HLS videos, + allowing to play the video while + downloading (some players may not be able + to play it) --external-downloader COMMAND Use the specified external downloader. Currently supports aria2c,axel,curl,httpie,wget @@ -319,7 +323,7 @@ which means you can modify it, redistribute it or use it however you like. --all-formats Download all available video formats --prefer-free-formats Prefer free video formats unless a specific one is requested - -F, --list-formats List all available formats of specified + -F, --list-formats List all available formats of requested videos --youtube-skip-dash-manifest Do not download the DASH manifests and related data on YouTube videos @@ -339,8 +343,8 @@ which means you can modify it, redistribute it or use it however you like. preference, for example: "srt" or "ass/srt/best" --sub-lang LANGS Languages of the subtitles to download - (optional) separated by commas, use IETF - language tags like 'en,pt' + (optional) separated by commas, use --list- + subs for available language tags ## Authentication Options: -u, --username USERNAME Login with this account ID @@ -400,7 +404,7 @@ which means you can modify it, redistribute it or use it however you like. downloading, similar to find's -exec syntax. Example: --exec 'adb push {} /sdcard/Music/ && rm {}' - --convert-subtitles FORMAT Convert the subtitles to other format + --convert-subs FORMAT Convert the subtitles to other format (currently supported: srt|ass|vtt) # CONFIGURATION @@ -414,7 +418,7 @@ You can configure youtube-dl by placing any supported command line option to a c You can use `--ignore-config` if you want to disable the configuration file for a particular youtube-dl run. -### Authentication with `.netrc` file ### +### Authentication with `.netrc` file You may also want to configure automatic credentials storage for extractors that support authentication (by providing login and password with `--username` and `--password`) in order not to pass credentials as command line arguments on every youtube-dl execution and prevent tracking plain text passwords in the shell command history. You can achieve this using a [`.netrc` file](http://stackoverflow.com/tags/.netrc/info) on per extractor basis. For that you will need to create a`.netrc` file in your `$HOME` and restrict permissions to read/write by you only: ``` @@ -438,41 +442,172 @@ On Windows you may also need to setup the `%HOME%` environment variable manually The `-o` option allows users to indicate a template for the output file names. The basic usage is not to set any template arguments when downloading a single file, like in `youtube-dl -o funny_video.flv "http://some/video"`. However, it may contain special sequences that will be replaced when downloading each video. The special sequences have the format `%(NAME)s`. To clarify, that is a percent symbol followed by a name in parentheses, followed by a lowercase S. Allowed names are: - - `id`: The sequence will be replaced by the video identifier. - - `url`: The sequence will be replaced by the video URL. - - `uploader`: The sequence will be replaced by the nickname of the person who uploaded the video. - - `upload_date`: The sequence will be replaced by the upload date in YYYYMMDD format. - - `title`: The sequence will be replaced by the video title. - - `ext`: The sequence will be replaced by the appropriate extension (like flv or mp4). - - `epoch`: The sequence will be replaced by the Unix epoch when creating the file. - - `autonumber`: The sequence will be replaced by a five-digit number that will be increased with each download, starting at zero. - - `playlist`: The sequence will be replaced by the name or the id of the playlist that contains the video. - - `playlist_index`: The sequence will be replaced by the index of the video in the playlist padded with leading zeros according to the total length of the playlist. - - `format_id`: The sequence will be replaced by the format code specified by `--format`. - - `duration`: The sequence will be replaced by the length of the video in seconds. + - `id`: Video identifier + - `title`: Video title + - `url`: Video URL + - `ext`: Video filename extension + - `alt_title`: A secondary title of the video + - `display_id`: An alternative identifier for the video + - `uploader`: Full name of the video uploader + - `creator`: The main artist who created the video + - `release_date`: The date (YYYYMMDD) when the video was released + - `timestamp`: UNIX timestamp of the moment the video became available + - `upload_date`: Video upload date (YYYYMMDD) + - `uploader_id`: Nickname or id of the video uploader + - `location`: Physical location where the video was filmed + - `duration`: Length of the video in seconds + - `view_count`: How many users have watched the video on the platform + - `like_count`: Number of positive ratings of the video + - `dislike_count`: Number of negative ratings of the video + - `repost_count`: Number of reposts of the video + - `average_rating`: Average rating give by users, the scale used depends on the webpage + - `comment_count`: Number of comments on the video + - `age_limit`: Age restriction for the video (years) + - `format`: A human-readable description of the format + - `format_id`: Format code specified by `--format` + - `format_note`: Additional info about the format + - `width`: Width of the video + - `height`: Height of the video + - `resolution`: Textual description of width and height + - `tbr`: Average bitrate of audio and video in KBit/s + - `abr`: Average audio bitrate in KBit/s + - `acodec`: Name of the audio codec in use + - `asr`: Audio sampling rate in Hertz + - `vbr`: Average video bitrate in KBit/s + - `fps`: Frame rate + - `vcodec`: Name of the video codec in use + - `container`: Name of the container format + - `filesize`: The number of bytes, if known in advance + - `filesize_approx`: An estimate for the number of bytes + - `protocol`: The protocol that will be used for the actual download + - `extractor`: Name of the extractor + - `extractor_key`: Key name of the extractor + - `epoch`: Unix epoch when creating the file + - `autonumber`: Five-digit number that will be increased with each download, starting at zero + - `playlist`: Name or id of the playlist that contains the video + - `playlist_index`: Index of the video in the playlist padded with leading zeros according to the total length of the playlist + +Available for the video that belongs to some logical chapter or section: + - `chapter`: Name or title of the chapter the video belongs to + - `chapter_number`: Number of the chapter the video belongs to + - `chapter_id`: Id of the chapter the video belongs to + +Available for the video that is an episode of some series or programme: + - `series`: Title of the series or programme the video episode belongs to + - `season`: Title of the season the video episode belongs to + - `season_number`: Number of the season the video episode belongs to + - `season_id`: Id of the season the video episode belongs to + - `episode`: Title of the video episode + - `episode_number`: Number of the video episode within a season + - `episode_id`: Id of the video episode + +Each aforementioned sequence when referenced in output template will be replaced by the actual value corresponding to the sequence name. Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by particular extractor, such sequences will be replaced with `NA`. + +For example for `-o %(title)s-%(id)s.%(ext)s` and mp4 video with title `youtube-dl test video` and id `BaW_jenozKcj` this will result in a `youtube-dl test video-BaW_jenozKcj.mp4` file created in the current directory. + +Output template can also contain arbitrary hierarchical path, e.g. `-o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s'` that will result in downloading each video in a directory corresponding to this path template. Any missing directory will be automatically created for you. + +To specify percent literal in output template use `%%`. To output to stdout use `-o -`. The current default template is `%(title)s-%(id)s.%(ext)s`. In some cases, you don't want special characters such as 中, spaces, or &, such as when transferring the downloaded filename to a Windows system or the filename through an 8bit-unsafe channel. In these cases, add the `--restrict-filenames` flag to get a shorter title: +Examples (note on Windows you may need to use double quotes instead of single): + ```bash -$ youtube-dl --get-filename -o "%(title)s.%(ext)s" BaW_jenozKc +$ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc youtube-dl test video ''_ä↭𝕐.mp4 # All kinds of weird characters -$ youtube-dl --get-filename -o "%(title)s.%(ext)s" BaW_jenozKc --restrict-filenames + +$ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc --restrict-filenames youtube-dl_test_video_.mp4 # A simple file name + +# Download YouTube playlist videos in separate directory indexed by video order in a playlist +$ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re + +# Download Udemy course keeping each chapter in separate directory under MyVideos directory in your home +$ youtube-dl -u user -p password -o '~/MyVideos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s' https://www.udemy.com/java-tutorial/ + +# Download entire series season keeping each series and each season in separate directory under C:/MyVideos +$ youtube-dl -o "C:/MyVideos/%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s" http://videomore.ru/kino_v_detalayah/5_sezon/367617 + +# Stream the video being downloaded to stdout +$ youtube-dl -o - BaW_jenozKc ``` # FORMAT SELECTION -By default youtube-dl tries to download the best quality, but sometimes you may want to download in a different format. -The simplest case is requesting a specific format, for example `-f 22`. You can get the list of available formats using `--list-formats`, you can also use a file extension (currently it supports aac, m4a, mp3, mp4, ogg, wav, webm) or the special names `best`, `bestvideo`, `bestaudio` and `worst`. +By default youtube-dl tries to download the best available quality, i.e. if you want the best quality you **don't need** to pass any special options, youtube-dl will guess it for you by **default**. + +But sometimes you may want to download in a different format, for example when you are on a slow or intermittent connection. The key mechanism for achieving this is so called *format selection* based on which you can explicitly specify desired format, select formats based on some criterion or criteria, setup precedence and much more. + +The general syntax for format selection is `--format FORMAT` or shorter `-f FORMAT` where `FORMAT` is a *selector expression*, i.e. an expression that describes format or formats you would like to download. + +The simplest case is requesting a specific format, for example with `-f 22` you can download the format with format code equal to 22. You can get the list of available format codes for particular video using `--list-formats` or `-F`. Note that these format codes are extractor specific. + +You can also use a file extension (currently `3gp`, `aac`, `flv`, `m4a`, `mp3`, `mp4`, `ogg`, `wav`, `webm` are supported) to download best quality format of particular file extension served as a single file, e.g. `-f webm` will download best quality format with `webm` extension served as a single file. + +You can also use special names to select particular edge case format: + - `best`: Select best quality format represented by single file with video and audio + - `worst`: Select worst quality format represented by single file with video and audio + - `bestvideo`: Select best quality video only format (e.g. DASH video), may not be available + - `worstvideo`: Select worst quality video only format, may not be available + - `bestaudio`: Select best quality audio only format, may not be available + - `worstaudio`: Select worst quality audio only format, may not be available + +For example, to download worst quality video only format you can use `-f worstvideo`. + +If you want to download multiple videos and they don't have the same formats available, you can specify the order of preference using slashes. Note that slash is left-associative, i.e. formats on the left hand side are preferred, for example `-f 22/17/18` will download format 22 if it's available, otherwise it will download format 17 if it's available, otherwise it will download format 18 if it's available, otherwise it will complain that no suitable formats are available for download. + +If you want to download several formats of the same video use comma as a separator, e.g. `-f 22,17,18` will download all these three formats, of course if they are available. Or more sophisticated example combined with precedence feature `-f 136/137/mp4/bestvideo,140/m4a/bestaudio`. + +You can also filter the video formats by putting a condition in brackets, as in `-f "best[height=720]"` (or `-f "[filesize>10M]"`). -If you want to download multiple videos and they don't have the same formats available, you can specify the order of preference using slashes, as in `-f 22/17/18`. You can also filter the video results by putting a condition in brackets, as in `-f "best[height=720]"` (or `-f "[filesize>10M]"`). This works for filesize, height, width, tbr, abr, vbr, asr, and fps and the comparisons <, <=, >, >=, =, != and for ext, acodec, vcodec, container, and protocol and the comparisons =, != . Formats for which the value is not known are excluded unless you put a question mark (?) after the operator. You can combine format filters, so `-f "[height <=? 720][tbr>500]"` selects up to 720p videos (or videos where the height is not known) with a bitrate of at least 500 KBit/s. Use commas to download multiple formats, such as `-f 136/137/mp4/bestvideo,140/m4a/bestaudio`. You can merge the video and audio of two formats into a single file using `-f +` (requires ffmpeg or avconv), for example `-f bestvideo+bestaudio`. Format selectors can also be grouped using parentheses, for example if you want to download the best mp4 and webm formats with a height lower than 480 you can use `-f '(mp4,webm)[height<480]'`. +The following numeric meta fields can be used with comparisons `<`, `<=`, `>`, `>=`, `=` (equals), `!=` (not equals): + - `filesize`: The number of bytes, if known in advance + - `width`: Width of the video, if known + - `height`: Height of the video, if known + - `tbr`: Average bitrate of audio and video in KBit/s + - `abr`: Average audio bitrate in KBit/s + - `vbr`: Average video bitrate in KBit/s + - `asr`: Audio sampling rate in Hertz + - `fps`: Frame rate -Since the end of April 2015 and version 2015.04.26 youtube-dl uses `-f bestvideo+bestaudio/best` as default format selection (see #5447, #5456). If ffmpeg or avconv are installed this results in downloading `bestvideo` and `bestaudio` separately and muxing them together into a single file giving the best overall quality available. Otherwise it falls back to `best` and results in downloading the best available quality served as a single file. `best` is also needed for videos that don't come from YouTube because they don't provide the audio and video in two different files. If you want to only download some dash formats (for example if you are not interested in getting videos with a resolution higher than 1080p), you can add `-f bestvideo[height<=?1080]+bestaudio/best` to your configuration file. Note that if you use youtube-dl to stream to `stdout` (and most likely to pipe it to your media player then), i.e. you explicitly specify output template as `-o -`, youtube-dl still uses `-f best` format selection in order to start content delivery immediately to your player and not to wait until `bestvideo` and `bestaudio` are downloaded and muxed. +Also filtering work for comparisons `=` (equals), `!=` (not equals), `^=` (begins with), `$=` (ends with), `*=` (contains) and following string meta fields: + - `ext`: File extension + - `acodec`: Name of the audio codec in use + - `vcodec`: Name of the video codec in use + - `container`: Name of the container format + - `protocol`: The protocol that will be used for the actual download, lower-case. `http`, `https`, `rtsp`, `rtmp`, `rtmpe`, `m3u8`, or `m3u8_native` + +Note that none of the aforementioned meta fields are guaranteed to be present since this solely depends on the metadata obtained by particular extractor, i.e. the metadata offered by video hoster. + +Formats for which the value is not known are excluded unless you put a question mark (`?`) after the operator. You can combine format filters, so `-f "[height <=? 720][tbr>500]"` selects up to 720p videos (or videos where the height is not known) with a bitrate of at least 500 KBit/s. + +You can merge the video and audio of two formats into a single file using `-f +` (requires ffmpeg or avconv installed), for example `-f bestvideo+bestaudio` will download best video only format, best audio only format and mux them together with ffmpeg/avconv. + +Format selectors can also be grouped using parentheses, for example if you want to download the best mp4 and webm formats with a height lower than 480 you can use `-f '(mp4,webm)[height<480]'`. + +Since the end of April 2015 and version 2015.04.26 youtube-dl uses `-f bestvideo+bestaudio/best` as default format selection (see #5447, #5456). If ffmpeg or avconv are installed this results in downloading `bestvideo` and `bestaudio` separately and muxing them together into a single file giving the best overall quality available. Otherwise it falls back to `best` and results in downloading the best available quality served as a single file. `best` is also needed for videos that don't come from YouTube because they don't provide the audio and video in two different files. If you want to only download some DASH formats (for example if you are not interested in getting videos with a resolution higher than 1080p), you can add `-f bestvideo[height<=?1080]+bestaudio/best` to your configuration file. Note that if you use youtube-dl to stream to `stdout` (and most likely to pipe it to your media player then), i.e. you explicitly specify output template as `-o -`, youtube-dl still uses `-f best` format selection in order to start content delivery immediately to your player and not to wait until `bestvideo` and `bestaudio` are downloaded and muxed. If you want to preserve the old format selection behavior (prior to youtube-dl 2015.04.26), i.e. you want to download the best available quality media served as a single file, you should explicitly specify your choice with `-f best`. You may want to add it to the [configuration file](#configuration) in order not to type it every time you run youtube-dl. +Examples (note on Windows you may need to use double quotes instead of single): +```bash +# Download best mp4 format available or any other best if no mp4 available +$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' + +# Download best format available but not better that 480p +$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' + +# Download best video only format but no bigger that 50 MB +$ youtube-dl -f 'best[filesize<50M]' + +# Download best format available via direct link over HTTP/HTTPS protocol +$ youtube-dl -f '(bestvideo+bestaudio/best)[protocol^=http]' +``` + + # VIDEO SELECTION Videos can be filtered by their upload date using the options `--date`, `--datebefore` or `--dateafter`. They accept dates in two formats: @@ -559,11 +694,11 @@ If you want to play the video on a machine that is not running youtube-dl, you c YouTube has switched to a new video info format in July 2011 which is not supported by old versions of youtube-dl. See [above](#how-do-i-update-youtube-dl) for how to update youtube-dl. -### ERROR: unable to download video ### +### ERROR: unable to download video YouTube requires an additional signature since September 2012 which is not supported by old versions of youtube-dl. See [above](#how-do-i-update-youtube-dl) for how to update youtube-dl. -### Video URL contains an ampersand and I'm getting some strange output `[1] 2839` or `'v' is not recognized as an internal or external command` ### +### Video URL contains an ampersand and I'm getting some strange output `[1] 2839` or `'v' is not recognized as an internal or external command` That's actually the output from your shell. Since ampersand is one of the special shell characters it's interpreted by the shell preventing you from passing the whole URL to youtube-dl. To disable your shell from interpreting the ampersands (or any other special characters) you have to either put the whole URL in quotes or escape them with a backslash (which approach will work depends on your shell). @@ -587,7 +722,7 @@ In February 2015, the new YouTube player contained a character sequence in a str These two error codes indicate that the service is blocking your IP address because of overuse. Contact the service and ask them to unblock your IP address, or - if you have acquired a whitelisted IP address already - use the [`--proxy` or `--source-address` options](#network-options) to select another IP address. -### SyntaxError: Non-ASCII character ### +### SyntaxError: Non-ASCII character The error @@ -616,7 +751,7 @@ From then on, after restarting your shell, you will be able to access both youtu Use the `-o` to specify an [output template](#output-template), for example `-o "/home/user/videos/%(title)s-%(id)s.%(ext)s"`. If you want this for all of your downloads, put the option into your [configuration file](#configuration). -### How do I download a video starting with a `-` ? +### How do I download a video starting with a `-`? Either prepend `http://www.youtube.com/watch?v=` or separate the ID from the options with `--`: @@ -627,7 +762,7 @@ Either prepend `http://www.youtube.com/watch?v=` or separate the ID from the opt Use the `--cookies` option, for example `--cookies /path/to/cookies/file.txt`. Note that the cookies file must be in Mozilla/Netscape format and the first line of the cookies file must be either `# HTTP Cookie File` or `# Netscape HTTP Cookie File`. Make sure you have correct [newline format](https://en.wikipedia.org/wiki/Newline) in the cookies file and convert newlines if necessary to correspond with your OS, namely `CRLF` (`\r\n`) for Windows, `LF` (`\n`) for Linux and `CR` (`\r`) for Mac OS. `HTTP Error 400: Bad Request` when using `--cookies` is a good sign of invalid newline format. -Passing cookies to youtube-dl is a good way to workaround login when a particular extractor does not implement it explicitly. +Passing cookies to youtube-dl is a good way to workaround login when a particular extractor does not implement it explicitly. Another use case is working around [CAPTCHA](https://en.wikipedia.org/wiki/CAPTCHA) some websites require you to solve in particular cases in order to get access (e.g. YouTube, CloudFlare). ### Can you add support for this anime video site, or site which shows current movies for free? @@ -757,7 +892,7 @@ with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) ``` -Most likely, you'll want to use various options. For a list of what can be done, have a look at [youtube_dl/YoutubeDL.py](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L117-L265). For a start, if you want to intercept youtube-dl's output, set a `logger` object. +Most likely, you'll want to use various options. For a list of what can be done, have a look at [`youtube_dl/YoutubeDL.py`](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L121-L269). For a start, if you want to intercept youtube-dl's output, set a `logger` object. Here's a more complete example of a program that outputs only errors (and a short message after the download is finished), and downloads/converts the video to an mp3 file: @@ -798,9 +933,23 @@ with youtube_dl.YoutubeDL(ydl_opts) as ydl: # BUGS -Bugs and suggestions should be reported at: . Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. For discussions, join us in the irc channel #youtube-dl on freenode. +Bugs and suggestions should be reported at: . Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. For discussions, join us in the IRC channel [#youtube-dl](irc://chat.freenode.net/#youtube-dl) on freenode ([webchat](http://webchat.freenode.net/?randomnick=1&channels=youtube-dl)). -**Please include the full output of youtube-dl when run with `-v`**. +**Please include the full output of youtube-dl when run with `-v`**, i.e. **add** `-v` flag to **your command line**, copy the **whole** output and post it in the issue body wrapped in \`\`\` for better formatting. It should look similar to this: +``` +$ youtube-dl -v +[debug] System config: [] +[debug] User config: [] +[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj'] +[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251 +[debug] youtube-dl version 2015.12.06 +[debug] Git HEAD: 135392e +[debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2 +[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4 +[debug] Proxy map: {} +... +``` +**Do not post screenshots of verbose log only plain text is acceptable.** The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever. @@ -816,13 +965,13 @@ So please elaborate on what feature you are requesting, or what bug you want to - How it could be fixed - How your proposed solution would look like -If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We're often too polite to close the issue outright, but the missing info makes misinterpretation likely. As a commiter myself, I often get frustrated by these issues, since the only possible way for me to move forward on them is to ask for clarification over and over. +If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We're often too polite to close the issue outright, but the missing info makes misinterpretation likely. As a committer myself, I often get frustrated by these issues, since the only possible way for me to move forward on them is to ask for clarification over and over. For bug reports, this means that your report should contain the *complete* output of youtube-dl when called with the `-v` flag. The error message you get for (most) bugs even says so, but you would not believe how many of our bug reports do not contain this information. If your server has multiple IPs or you suspect censorship, adding `--call-home` may be a good idea to get more diagnostics. If the error is `ERROR: Unable to extract ...` and you cannot reproduce it from multiple countries, add `--dump-pages` (warning: this will yield a rather large output, redirect it to the file `log.txt` by adding `>log.txt 2>&1` to your command-line) or upload the `.dump` files you get when you add `--write-pages` [somewhere](https://gist.github.com/). -**Site support requests must contain an example URL**. An example URL is a URL you might want to download, like http://www.youtube.com/watch?v=BaW_jenozKc . There should be an obvious video present. Except under very special circumstances, the main page of a video service (e.g. http://www.youtube.com/ ) is *not* an example URL. +**Site support requests must contain an example URL**. An example URL is a URL you might want to download, like `http://www.youtube.com/watch?v=BaW_jenozKc`. There should be an obvious video present. Except under very special circumstances, the main page of a video service (e.g. `http://www.youtube.com/`) is *not* an example URL. ### Are you using the latest version? @@ -830,7 +979,7 @@ Before reporting any issue, type `youtube-dl -U`. This should report that you're ### Is the issue already documented? -Make sure that someone has not already opened the issue you're trying to open. Search at the top of the window or at https://github.com/rg3/youtube-dl/search?type=Issues . If there is an issue, feel free to write something along the lines of "This affects me as well, with version 2015.01.01. Here is some more information on the issue: ...". While some issues may be old, a new post into them often spurs rapid activity. +Make sure that someone has not already opened the issue you're trying to open. Search at the top of the window or browse the [GitHub Issues](https://github.com/rg3/youtube-dl/search?type=Issues) of this repository. If there is an issue, feel free to write something along the lines of "This affects me as well, with version 2015.01.01. Here is some more information on the issue: ...". While some issues may be old, a new post into them often spurs rapid activity. ### Why are existing options not enough? @@ -860,4 +1009,4 @@ It may sound strange, but some bug reports we receive are completely unrelated t youtube-dl is released into the public domain by the copyright holders. -This README file was originally written by Daniel Bolton () and is likewise released into the public domain. +This README file was originally written by [Daniel Bolton](https://github.com/dbbolton) and is likewise released into the public domain. diff --git a/README.txt b/README.txt index 54d4c33..1a674b5 100644 --- a/README.txt +++ b/README.txt @@ -41,7 +41,7 @@ You can also use pip: Alternatively, refer to the developer instructions for how to check out and work with the git repository. For further options, including PGP -signatures, see https://rg3.github.io/youtube-dl/download.html . +signatures, see the youtube-dl Download Page. @@ -194,6 +194,10 @@ Download Options: expected filesize (experimental) --hls-prefer-native Use the native HLS downloader instead of ffmpeg (experimental) + --hls-use-mpegts Use the mpegts container for HLS videos, + allowing to play the video while + downloading (some players may not be able + to play it) --external-downloader COMMAND Use the specified external downloader. Currently supports aria2c,axel,curl,httpie,wget @@ -350,7 +354,7 @@ Video Format Options: --all-formats Download all available video formats --prefer-free-formats Prefer free video formats unless a specific one is requested - -F, --list-formats List all available formats of specified + -F, --list-formats List all available formats of requested videos --youtube-skip-dash-manifest Do not download the DASH manifests and related data on YouTube videos @@ -372,8 +376,8 @@ Subtitle Options: preference, for example: "srt" or "ass/srt/best" --sub-lang LANGS Languages of the subtitles to download - (optional) separated by commas, use IETF - language tags like 'en,pt' + (optional) separated by commas, use --list- + subs for available language tags Authentication Options: @@ -437,7 +441,7 @@ Post-processing Options: downloading, similar to find's -exec syntax. Example: --exec 'adb push {} /sdcard/Music/ && rm {}' - --convert-subtitles FORMAT Convert the subtitles to other format + --convert-subs FORMAT Convert the subtitles to other format (currently supported: srt|ass|vtt) @@ -505,28 +509,86 @@ video. The special sequences have the format %(NAME)s. To clarify, that is a percent symbol followed by a name in parentheses, followed by a lowercase S. Allowed names are: -- id: The sequence will be replaced by the video identifier. -- url: The sequence will be replaced by the video URL. -- uploader: The sequence will be replaced by the nickname of the - person who uploaded the video. -- upload_date: The sequence will be replaced by the upload date in - YYYYMMDD format. -- title: The sequence will be replaced by the video title. -- ext: The sequence will be replaced by the appropriate extension - (like flv or mp4). -- epoch: The sequence will be replaced by the Unix epoch when creating - the file. -- autonumber: The sequence will be replaced by a five-digit number - that will be increased with each download, starting at zero. -- playlist: The sequence will be replaced by the name or the id of the - playlist that contains the video. -- playlist_index: The sequence will be replaced by the index of the - video in the playlist padded with leading zeros according to the - total length of the playlist. -- format_id: The sequence will be replaced by the format code - specified by --format. -- duration: The sequence will be replaced by the length of the video - in seconds. +- id: Video identifier +- title: Video title +- url: Video URL +- ext: Video filename extension +- alt_title: A secondary title of the video +- display_id: An alternative identifier for the video +- uploader: Full name of the video uploader +- creator: The main artist who created the video +- release_date: The date (YYYYMMDD) when the video was released +- timestamp: UNIX timestamp of the moment the video became available +- upload_date: Video upload date (YYYYMMDD) +- uploader_id: Nickname or id of the video uploader +- location: Physical location where the video was filmed +- duration: Length of the video in seconds +- view_count: How many users have watched the video on the platform +- like_count: Number of positive ratings of the video +- dislike_count: Number of negative ratings of the video +- repost_count: Number of reposts of the video +- average_rating: Average rating give by users, the scale used depends + on the webpage +- comment_count: Number of comments on the video +- age_limit: Age restriction for the video (years) +- format: A human-readable description of the format +- format_id: Format code specified by --format +- format_note: Additional info about the format +- width: Width of the video +- height: Height of the video +- resolution: Textual description of width and height +- tbr: Average bitrate of audio and video in KBit/s +- abr: Average audio bitrate in KBit/s +- acodec: Name of the audio codec in use +- asr: Audio sampling rate in Hertz +- vbr: Average video bitrate in KBit/s +- fps: Frame rate +- vcodec: Name of the video codec in use +- container: Name of the container format +- filesize: The number of bytes, if known in advance +- filesize_approx: An estimate for the number of bytes +- protocol: The protocol that will be used for the actual download +- extractor: Name of the extractor +- extractor_key: Key name of the extractor +- epoch: Unix epoch when creating the file +- autonumber: Five-digit number that will be increased with each + download, starting at zero +- playlist: Name or id of the playlist that contains the video +- playlist_index: Index of the video in the playlist padded with + leading zeros according to the total length of the playlist + +Available for the video that belongs to some logical chapter or section: +- chapter: Name or title of the chapter the video belongs to - +chapter_number: Number of the chapter the video belongs to - chapter_id: +Id of the chapter the video belongs to + +Available for the video that is an episode of some series or programme: +- series: Title of the series or programme the video episode belongs to +- season: Title of the season the video episode belongs to - +season_number: Number of the season the video episode belongs to - +season_id: Id of the season the video episode belongs to - episode: +Title of the video episode - episode_number: Number of the video episode +within a season - episode_id: Id of the video episode + +Each aforementioned sequence when referenced in output template will be +replaced by the actual value corresponding to the sequence name. Note +that some of the sequences are not guaranteed to be present since they +depend on the metadata obtained by particular extractor, such sequences +will be replaced with NA. + +For example for -o %(title)s-%(id)s.%(ext)s and mp4 video with title +youtube-dl test video and id BaW_jenozKcj this will result in a +youtube-dl test video-BaW_jenozKcj.mp4 file created in the current +directory. + +Output template can also contain arbitrary hierarchical path, e.g. +-o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' that will +result in downloading each video in a directory corresponding to this +path template. Any missing directory will be automatically created for +you. + +To specify percent literal in output template use %%. To output to +stdout use -o -. The current default template is %(title)s-%(id)s.%(ext)s. @@ -535,44 +597,120 @@ In some cases, you don't want special characters such as 中, spaces, or or the filename through an 8bit-unsafe channel. In these cases, add the --restrict-filenames flag to get a shorter title: -``` {.bash} -$ youtube-dl --get-filename -o "%(title)s.%(ext)s" BaW_jenozKc -youtube-dl test video ''_ä↭𝕐.mp4 # All kinds of weird characters -$ youtube-dl --get-filename -o "%(title)s.%(ext)s" BaW_jenozKc --restrict-filenames -youtube-dl_test_video_.mp4 # A simple file name -``` +Examples (note on Windows you may need to use double quotes instead of +single): + + $ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc + youtube-dl test video ''_ä↭𝕐.mp4 # All kinds of weird characters + + $ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc --restrict-filenames + youtube-dl_test_video_.mp4 # A simple file name + + # Download YouTube playlist videos in separate directory indexed by video order in a playlist + $ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re + + # Download Udemy course keeping each chapter in separate directory under MyVideos directory in your home + $ youtube-dl -u user -p password -o '~/MyVideos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s' https://www.udemy.com/java-tutorial/ + + # Download entire series season keeping each series and each season in separate directory under C:/MyVideos + $ youtube-dl -o "C:/MyVideos/%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s" http://videomore.ru/kino_v_detalayah/5_sezon/367617 + + # Stream the video being downloaded to stdout + $ youtube-dl -o - BaW_jenozKc FORMAT SELECTION -By default youtube-dl tries to download the best quality, but sometimes -you may want to download in a different format. The simplest case is -requesting a specific format, for example -f 22. You can get the list of -available formats using --list-formats, you can also use a file -extension (currently it supports aac, m4a, mp3, mp4, ogg, wav, webm) or -the special names best, bestvideo, bestaudio and worst. +By default youtube-dl tries to download the best available quality, i.e. +if you want the best quality you DON'T NEED to pass any special options, +youtube-dl will guess it for you by DEFAULT. + +But sometimes you may want to download in a different format, for +example when you are on a slow or intermittent connection. The key +mechanism for achieving this is so called _format selection_ based on +which you can explicitly specify desired format, select formats based on +some criterion or criteria, setup precedence and much more. + +The general syntax for format selection is --format FORMAT or shorter +-f FORMAT where FORMAT is a _selector expression_, i.e. an expression +that describes format or formats you would like to download. + +The simplest case is requesting a specific format, for example with +-f 22 you can download the format with format code equal to 22. You can +get the list of available format codes for particular video using +--list-formats or -F. Note that these format codes are extractor +specific. + +You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, +mp4, ogg, wav, webm are supported) to download best quality format of +particular file extension served as a single file, e.g. -f webm will +download best quality format with webm extension served as a single +file. + +You can also use special names to select particular edge case format: - +best: Select best quality format represented by single file with video +and audio - worst: Select worst quality format represented by single +file with video and audio - bestvideo: Select best quality video only +format (e.g. DASH video), may not be available - worstvideo: Select +worst quality video only format, may not be available - bestaudio: +Select best quality audio only format, may not be available - +worstaudio: Select worst quality audio only format, may not be available + +For example, to download worst quality video only format you can use +-f worstvideo. If you want to download multiple videos and they don't have the same formats available, you can specify the order of preference using -slashes, as in -f 22/17/18. You can also filter the video results by -putting a condition in brackets, as in -f "best[height=720]" (or --f "[filesize>10M]"). This works for filesize, height, width, tbr, abr, -vbr, asr, and fps and the comparisons <, <=, >, >=, =, != and for ext, -acodec, vcodec, container, and protocol and the comparisons =, != . +slashes. Note that slash is left-associative, i.e. formats on the left +hand side are preferred, for example -f 22/17/18 will download format 22 +if it's available, otherwise it will download format 17 if it's +available, otherwise it will download format 18 if it's available, +otherwise it will complain that no suitable formats are available for +download. + +If you want to download several formats of the same video use comma as a +separator, e.g. -f 22,17,18 will download all these three formats, of +course if they are available. Or more sophisticated example combined +with precedence feature -f 136/137/mp4/bestvideo,140/m4a/bestaudio. + +You can also filter the video formats by putting a condition in +brackets, as in -f "best[height=720]" (or -f "[filesize>10M]"). + +The following numeric meta fields can be used with comparisons <, <=, >, +>=, = (equals), != (not equals): - filesize: The number of bytes, if +known in advance - width: Width of the video, if known - height: Height +of the video, if known - tbr: Average bitrate of audio and video in +KBit/s - abr: Average audio bitrate in KBit/s - vbr: Average video +bitrate in KBit/s - asr: Audio sampling rate in Hertz - fps: Frame rate + +Also filtering work for comparisons = (equals), != (not equals), ^= +(begins with), $= (ends with), *= (contains) and following string meta +fields: - ext: File extension - acodec: Name of the audio codec in use - +vcodec: Name of the video codec in use - container: Name of the +container format - protocol: The protocol that will be used for the +actual download, lower-case. http, https, rtsp, rtmp, rtmpe, m3u8, or +m3u8_native + +Note that none of the aforementioned meta fields are guaranteed to be +present since this solely depends on the metadata obtained by particular +extractor, i.e. the metadata offered by video hoster. + Formats for which the value is not known are excluded unless you put a question mark (?) after the operator. You can combine format filters, so -f "[height <=? 720][tbr>500]" selects up to 720p videos (or videos where the height is not known) with a bitrate of at least 500 KBit/s. -Use commas to download multiple formats, such as --f 136/137/mp4/bestvideo,140/m4a/bestaudio. You can merge the video and -audio of two formats into a single file using --f + (requires ffmpeg or avconv), for -example -f bestvideo+bestaudio. Format selectors can also be grouped -using parentheses, for example if you want to download the best mp4 and -webm formats with a height lower than 480 you can use --f '(mp4,webm)[height<480]'. + +You can merge the video and audio of two formats into a single file +using -f + (requires ffmpeg or avconv +installed), for example -f bestvideo+bestaudio will download best video +only format, best audio only format and mux them together with +ffmpeg/avconv. + +Format selectors can also be grouped using parentheses, for example if +you want to download the best mp4 and webm formats with a height lower +than 480 you can use -f '(mp4,webm)[height<480]'. Since the end of April 2015 and version 2015.04.26 youtube-dl uses -f bestvideo+bestaudio/best as default format selection (see #5447, @@ -582,7 +720,7 @@ single file giving the best overall quality available. Otherwise it falls back to best and results in downloading the best available quality served as a single file. best is also needed for videos that don't come from YouTube because they don't provide the audio and video in two -different files. If you want to only download some dash formats (for +different files. If you want to only download some DASH formats (for example if you are not interested in getting videos with a resolution higher than 1080p), you can add -f bestvideo[height<=?1080]+bestaudio/best to your configuration file. @@ -598,6 +736,21 @@ quality media served as a single file, you should explicitly specify your choice with -f best. You may want to add it to the configuration file in order not to type it every time you run youtube-dl. +Examples (note on Windows you may need to use double quotes instead of +single): + + # Download best mp4 format available or any other best if no mp4 available + $ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' + + # Download best format available but not better that 480p + $ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' + + # Download best video only format but no bigger that 50 MB + $ youtube-dl -f 'best[filesize<50M]' + + # Download best format available via direct link over HTTP/HTTPS protocol + $ youtube-dl -f '(bestvideo+bestaudio/best)[protocol^=http]' + VIDEO SELECTION @@ -612,16 +765,14 @@ Videos can be filtered by their upload date using the options --date, Examples: -``` {.bash} -# Download only the videos uploaded in the last 6 months -$ youtube-dl --dateafter now-6months + # Download only the videos uploaded in the last 6 months + $ youtube-dl --dateafter now-6months -# Download only the videos uploaded on January 1, 1970 -$ youtube-dl --date 19700101 + # Download only the videos uploaded on January 1, 1970 + $ youtube-dl --date 19700101 -$ # Download only the videos uploaded in the 200x decade -$ youtube-dl --dateafter 20000101 --datebefore 20091231 -``` + $ # Download only the videos uploaded in the 200x decade + $ youtube-dl --dateafter 20000101 --datebefore 20091231 @@ -832,7 +983,7 @@ Use the -o to specify an output template, for example -o "/home/user/videos/%(title)s-%(id)s.%(ext)s". If you want this for all of your downloads, put the option into your configuration file. -How do I download a video starting with a - ? +How do I download a video starting with a -? Either prepend http://www.youtube.com/watch?v= or separate the ID from the options with --: @@ -852,7 +1003,9 @@ LF (\n) for Linux and CR (\r) for Mac OS. HTTP Error 400: Bad Request when using --cookies is a good sign of invalid newline format. Passing cookies to youtube-dl is a good way to workaround login when a -particular extractor does not implement it explicitly. +particular extractor does not implement it explicitly. Another use case +is working around CAPTCHA some websites require you to solve in +particular cases in order to get access (e.g. YouTube, CloudFlare). Can you add support for this anime video site, or site which shows current movies for free? @@ -966,46 +1119,44 @@ list (assuming your service is called yourextractor): 4. Start with this simple template and save it to youtube_dl/extractor/yourextractor.py: - ``` {.python} - # coding: utf-8 - from __future__ import unicode_literals - - from .common import InfoExtractor - - - class YourExtractorIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?yourextractor\.com/watch/(?P[0-9]+)' - _TEST = { - 'url': 'http://yourextractor.com/watch/42', - 'md5': 'TODO: md5 sum of the first 10241 bytes of the video file (use --test)', - 'info_dict': { - 'id': '42', - 'ext': 'mp4', - 'title': 'Video title goes here', - 'thumbnail': 're:^https?://.*\.jpg$', - # TODO more properties, either as: - # * A value - # * MD5 checksum; start the string with md5: - # * A regular expression; start the string with re: - # * Any Python type (for example int or float) + # coding: utf-8 + from __future__ import unicode_literals + + from .common import InfoExtractor + + + class YourExtractorIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?yourextractor\.com/watch/(?P[0-9]+)' + _TEST = { + 'url': 'http://yourextractor.com/watch/42', + 'md5': 'TODO: md5 sum of the first 10241 bytes of the video file (use --test)', + 'info_dict': { + 'id': '42', + 'ext': 'mp4', + 'title': 'Video title goes here', + 'thumbnail': 're:^https?://.*\.jpg$', + # TODO more properties, either as: + # * A value + # * MD5 checksum; start the string with md5: + # * A regular expression; start the string with re: + # * Any Python type (for example int or float) + } } - } - def _real_extract(self, url): - video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) - # TODO more code goes here, for example ... - title = self._html_search_regex(r'

(.+?)

', webpage, 'title') + # TODO more code goes here, for example ... + title = self._html_search_regex(r'

(.+?)

', webpage, 'title') - return { - 'id': video_id, - 'title': title, - 'description': self._og_search_description(webpage), - 'uploader': self._search_regex(r']+id="uploader"[^>]*>([^<]+)<', webpage, 'uploader', fatal=False), - # TODO more properties (see youtube_dl/extractor/common.py) - } - ``` + return { + 'id': video_id, + 'title': title, + 'description': self._og_search_description(webpage), + 'uploader': self._search_regex(r']+id="uploader"[^>]*>([^<]+)<', webpage, 'uploader', fatal=False), + # TODO more properties (see youtube_dl/extractor/common.py) + } 5. Add an import in youtube_dl/extractor/__init__.py. 6. Run python test/test_download.py TestDownload.test_YourExtractor. @@ -1043,14 +1194,12 @@ any problems parsing its output, feel free to create a report. From a Python program, you can embed youtube-dl in a more powerful fashion, like this: -``` {.python} -from __future__ import unicode_literals -import youtube_dl + from __future__ import unicode_literals + import youtube_dl -ydl_opts = {} -with youtube_dl.YoutubeDL(ydl_opts) as ydl: - ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) -``` + ydl_opts = {} + with youtube_dl.YoutubeDL(ydl_opts) as ydl: + ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) Most likely, you'll want to use various options. For a list of what can be done, have a look at youtube_dl/YoutubeDL.py. For a start, if you @@ -1060,40 +1209,38 @@ Here's a more complete example of a program that outputs only errors (and a short message after the download is finished), and downloads/converts the video to an mp3 file: -``` {.python} -from __future__ import unicode_literals -import youtube_dl + from __future__ import unicode_literals + import youtube_dl -class MyLogger(object): - def debug(self, msg): - pass + class MyLogger(object): + def debug(self, msg): + pass - def warning(self, msg): - pass + def warning(self, msg): + pass - def error(self, msg): - print(msg) + def error(self, msg): + print(msg) -def my_hook(d): - if d['status'] == 'finished': - print('Done downloading, now converting ...') + def my_hook(d): + if d['status'] == 'finished': + print('Done downloading, now converting ...') -ydl_opts = { - 'format': 'bestaudio/best', - 'postprocessors': [{ - 'key': 'FFmpegExtractAudio', - 'preferredcodec': 'mp3', - 'preferredquality': '192', - }], - 'logger': MyLogger(), - 'progress_hooks': [my_hook], -} -with youtube_dl.YoutubeDL(ydl_opts) as ydl: - ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) -``` + ydl_opts = { + 'format': 'bestaudio/best', + 'postprocessors': [{ + 'key': 'FFmpegExtractAudio', + 'preferredcodec': 'mp3', + 'preferredquality': '192', + }], + 'logger': MyLogger(), + 'progress_hooks': [my_hook], + } + with youtube_dl.YoutubeDL(ydl_opts) as ydl: + ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) @@ -1101,12 +1248,30 @@ BUGS Bugs and suggestions should be reported at: -https://github.com/rg3/youtube-dl/issues . Unless you were prompted so -or there is another pertinent reason (e.g. GitHub fails to accept the -bug report), please do not send bug reports via personal email. For -discussions, join us in the irc channel #youtube-dl on freenode. - -PLEASE INCLUDE THE FULL OUTPUT OF YOUTUBE-DL WHEN RUN WITH -v. +https://github.com/rg3/youtube-dl/issues. Unless you were prompted so or +there is another pertinent reason (e.g. GitHub fails to accept the bug +report), please do not send bug reports via personal email. For +discussions, join us in the IRC channel #youtube-dl on freenode +(webchat). + +PLEASE INCLUDE THE FULL OUTPUT OF YOUTUBE-DL WHEN RUN WITH -v, i.e. ADD +-v flag to YOUR COMMAND LINE, copy the WHOLE output and post it in the +issue body wrapped in ``` for better formatting. It should look similar +to this: + + $ youtube-dl -v + [debug] System config: [] + [debug] User config: [] + [debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj'] + [debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251 + [debug] youtube-dl version 2015.12.06 + [debug] Git HEAD: 135392e + [debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2 + [debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4 + [debug] Proxy map: {} + ... + +DO NOT POST SCREENSHOTS OF VERBOSE LOG ONLY PLAIN TEXT IS ACCEPTABLE. The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible @@ -1133,7 +1298,7 @@ want to be fixed. Make sure that it's obvious If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We're often too polite to close the issue outright, but the missing info makes -misinterpretation likely. As a commiter myself, I often get frustrated +misinterpretation likely. As a committer myself, I often get frustrated by these issues, since the only possible way for me to move forward on them is to ask for clarification over and over. @@ -1152,9 +1317,9 @@ command-line) or upload the .dump files you get when you add SITE SUPPORT REQUESTS MUST CONTAIN AN EXAMPLE URL. An example URL is a URL you might want to download, like -http://www.youtube.com/watch?v=BaW_jenozKc . There should be an obvious +http://www.youtube.com/watch?v=BaW_jenozKc. There should be an obvious video present. Except under very special circumstances, the main page of -a video service (e.g. http://www.youtube.com/ ) is _not_ an example URL. +a video service (e.g. http://www.youtube.com/) is _not_ an example URL. Are you using the latest version? @@ -1166,12 +1331,11 @@ requests as well. Is the issue already documented? Make sure that someone has not already opened the issue you're trying to -open. Search at the top of the window or at -https://github.com/rg3/youtube-dl/search?type=Issues . If there is an -issue, feel free to write something along the lines of "This affects me -as well, with version 2015.01.01. Here is some more information on the -issue: ...". While some issues may be old, a new post into them often -spurs rapid activity. +open. Search at the top of the window or browse the GitHub Issues of +this repository. If there is an issue, feel free to write something +along the lines of "This affects me as well, with version 2015.01.01. +Here is some more information on the issue: ...". While some issues may +be old, a new post into them often spurs rapid activity. Why are existing options not enough? @@ -1242,6 +1406,5 @@ COPYRIGHT youtube-dl is released into the public domain by the copyright holders. -This README file was originally written by Daniel Bolton -(https://github.com/dbbolton) and is likewise released into the public -domain. +This README file was originally written by Daniel Bolton and is likewise +released into the public domain. diff --git a/devscripts/gh-pages/update-copyright.py b/devscripts/gh-pages/update-copyright.py index 3663c8a..e6c3abc 100755 --- a/devscripts/gh-pages/update-copyright.py +++ b/devscripts/gh-pages/update-copyright.py @@ -5,7 +5,7 @@ from __future__ import with_statement, unicode_literals import datetime import glob -import io # For Python 2 compatibilty +import io # For Python 2 compatibility import os import re diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 1df4086..7459615 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -1,6 +1,7 @@ # Supported sites - **1tv**: Первый канал - **1up.com** + - **20min** - **220.ro** - **22tracks:genre** - **22tracks:track** @@ -15,37 +16,48 @@ - **abc.net.au** - **Abc7News** - **AcademicEarth:Course** + - **acast** + - **acast:channel** - **AddAnime** - **AdobeTV** + - **AdobeTVChannel** + - **AdobeTVShow** - **AdobeTVVideo** - **AdultSwim** - - **Aftenposten** + - **aenetworks**: A+E Networks: A&E, Lifetime, History.com, FYI Network - **Aftonbladet** - **AirMozilla** - **AlJazeera** - **Allocine** - **AlphaPorno** + - **AnimeOnDemand** - **anitube.se** - **AnySex** - **Aparat** - **AppleConnect** - **AppleDaily**: 臺灣蘋果日報 - - **AppleTrailers** + - **appletrailers** + - **appletrailers:section** - **archive.org**: archive.org videos - **ARD** + - **ARD:mediathek**: Saarländischer Rundfunk - **ARD:mediathek** - **arte.tv** - **arte.tv:+7** + - **arte.tv:cinema** - **arte.tv:concert** - **arte.tv:creative** - **arte.tv:ddc** - **arte.tv:embed** - **arte.tv:future** + - **arte.tv:magazine** - **AtresPlayer** - **ATTTechChannel** + - **AudiMedia** - **audiomack** - **audiomack:album** - **Azubu** + - **AzubuLive** - **BaiduVideo**: 百度视频 - **bambuser** - **bambuser:channel** @@ -58,11 +70,12 @@ - **Beeg** - **BehindKink** - **Bet** + - **Bigflix** - **Bild**: Bild.de - **BiliBili** + - **BleacherReport** + - **BleacherReportCMS** - **blinkx** - - **blip.tv:user** - - **BlipTV** - **Bloomberg** - **Bpb**: Bundeszentrale für politische Bildung - **BR**: Bayerischer Rundfunk Mediathek @@ -75,11 +88,14 @@ - **BYUtv** - **Camdemy** - **CamdemyFolder** - - **Canal13cl** - **canalc2.tv** - **Canalplus**: canalplus.fr, piwiplus.fr and d8.tv + - **Canvas** + - **CBC** + - **CBCPlayer** - **CBS** - **CBSNews**: CBS News + - **CBSNewsLiveVideo**: CBS News Live Videos - **CBSSports** - **CeskaTelevize** - **channel9**: Channel 9 @@ -92,6 +108,7 @@ - **Clipfish** - **cliphunter** - **Clipsyndicate** + - **cloudtime**: CloudTime - **Cloudy** - **Clubic** - **Clyp** @@ -107,6 +124,7 @@ - **ComedyCentralShows**: The Daily Show / The Colbert Report - **CondeNast**: Condé Nast media group: Allure, Architectural Digest, Ars Technica, Bon Appétit, Brides, Condé Nast, Condé Nast Traveler, Details, Epicurious, GQ, Glamour, Golf Digest, SELF, Teen Vogue, The New Yorker, Vanity Fair, Vogue, W Magazine, WIRED - **Cracked** + - **Crackle** - **Criterion** - **CrooksAndLiars** - **Crunchyroll** @@ -114,18 +132,27 @@ - **CSpan**: C-SPAN - **CtsNews**: 華視新聞 - **culturebox.francetvinfo.fr** + - **CultureUnplugged** + - **CWTV** - **dailymotion** - **dailymotion:playlist** - **dailymotion:user** - **DailymotionCloud** - **daum.net** + - **daum.net:clip** + - **daum.net:playlist** + - **daum.net:user** - **DBTV** - **DCN** + - **dcn:live** + - **dcn:season** + - **dcn:video** - **DctpTv** - **DeezerPlaylist** - **defense.gouv.fr** - **democracynow** - **DHM**: Filmarchiv - Deutsches Historisches Museum + - **Digiteka** - **Discovery** - **Dotsub** - **DouyuTV**: 斗鱼 @@ -154,7 +181,7 @@ - **Eporner** - **EroProfile** - **Escapist** - - **ESPN** (Currently broken) + - **ESPN** - **EsriVideo** - **Europa** - **EveryonesMixtape** @@ -162,6 +189,7 @@ - **ExpoTV** - **ExtremeTube** - **facebook** + - **facebook:post** - **faz.net** - **fc2** - **Fczenit** @@ -171,18 +199,22 @@ - **Flickr** - **Folketinget**: Folketinget (ft.dk; Danish parliament) - **FootyRoom** + - **FOX** - **Foxgay** - **FoxNews**: Fox News and Fox Business Video - **FoxSports** - **france2.fr:generation-quoi** - **FranceCulture** + - **FranceCultureEmission** - **FranceInter** - **francetv**: France 2, 3, 4, 5 and Ô - **francetvinfo.fr** - **Freesound** - **freespeech.org** - **FreeVideo** + - **Funimation** - **FunnyOrDie** + - **GameInformer** - **Gamekings** - **GameOne** - **gameone:playlist** @@ -202,7 +234,9 @@ - **GodTube** - **GoldenMoustache** - **Golem** + - **GoogleDrive** - **Goshgay** + - **GPUTechConf** - **Groupon** - **Hark** - **HearThisAt** @@ -211,11 +245,11 @@ - **Helsinki**: helsinki.fi - **HentaiStigma** - **HistoricFilms** - - **History** - **hitbox** - **hitbox:live** - **HornBunny** - **HotNewHipHop** + - **HotStar** - **Howcast** - **HowStuffWorks** - **HuffPost**: Huffington Post @@ -238,12 +272,13 @@ - **Ir90Tv** - **ivi**: ivi.ru - **ivi:compilation**: ivi.ru compilations + - **ivideon**: Ivideon TV - **Izlesene** - **JadoreCettePub** - **JeuxVideo** - **Jove** - **jpopsuki.tv** - - **Jukebox** + - **JWPlatform** - **Kaltura** - **KanalPlay**: Kanal 5/9/11 Play - **Kankan** @@ -253,6 +288,7 @@ - **KeezMovies** - **KhanAcademy** - **KickStarter** + - **KonserthusetPlay** - **kontrtube**: KontrTube.ru - Труба зовёт - **KrasView**: Красвью - **Ku6** @@ -265,7 +301,9 @@ - **la7.tv** - **Laola1Tv** - **Lecture2Go** + - **Lemonde** - **Letv**: 乐视网 + - **LetvCloud**: 乐视云 - **LetvPlaylist** - **LetvTv** - **Libsyn** @@ -278,13 +316,16 @@ - **livestream** - **livestream:original** - **LnkGo** + - **LoveHomePorn** - **lrt.lt** - **lynda**: lynda.com videos - **lynda:course**: lynda.com online courses - **m6** - **macgamestore**: MacGameStore trailers - **mailru**: Видео@Mail.Ru + - **MakerTV** - **Malemotion** + - **MatchTV** - **MDR**: MDR.DE and KiKA - **media.ccc.de** - **metacafe** @@ -307,7 +348,6 @@ - **MovieClips** - **MovieFap** - **Moviezine** - - **movshare**: MovShare - **MPORA** - **MSNBC** - **MTV** @@ -322,7 +362,7 @@ - **MySpace:album** - **MySpass** - **Myvi** - - **myvideo** + - **myvideo** (Currently broken) - **MyVidster** - **n-tv.de** - **NationalGeographic** @@ -350,11 +390,13 @@ - **Newstube** - **NextMedia**: 蘋果日報 - **NextMediaActionNews**: 蘋果日報 - 動新聞 + - **nextmovie.com** - **nfb**: National Film Board of Canada - **nfl.com** - **nhl.com** - **nhl.com:news**: NHL news - **nhl.com:videocenter**: NHL videocenter category + - **nick.com** - **niconico**: ニコニコ動画 - **NiconicoPlaylist** - **njoy**: N-JOY @@ -367,13 +409,15 @@ - **nowness** - **nowness:playlist** - **nowness:series** - - **NowTV** + - **NowTV** (Currently broken) - **NowTVList** - **nowvideo**: NowVideo + - **Noz** - **npo**: npo.nl and ntr.nl - **npo.nl:live** - **npo.nl:radio** - **npo.nl:radio:fragment** + - **Npr** - **NRK** - **NRKPlaylist** - **NRKTV**: NRK TV and NRK Radio @@ -388,22 +432,26 @@ - **OnionStudios** - **Ooyala** - **OoyalaExternal** + - **OraTV** - **orf:fm4**: radio FM4 - **orf:iptv**: iptv.ORF.at - **orf:oe1**: Radio Österreich 1 - **orf:tvthek**: ORF TVthek + - **pandora.tv**: 판도라TV - **parliamentlive.tv**: UK parliament videos - **Patreon** - - **PBS** + - **pbs**: Public Broadcasting Service (PBS) and member stations: PBS: Public Broadcasting Service, APT - Alabama Public Television (WBIQ), GPB/Georgia Public Broadcasting (WGTV), Mississippi Public Broadcasting (WMPN), Nashville Public Television (WNPT), WFSU-TV (WFSU), WSRE (WSRE), WTCI (WTCI), WPBA/Channel 30 (WPBA), Alaska Public Media (KAKM), Arizona PBS (KAET), KNME-TV/Channel 5 (KNME), Vegas PBS (KLVX), AETN/ARKANSAS ETV NETWORK (KETS), KET (WKLE), WKNO/Channel 10 (WKNO), LPB/LOUISIANA PUBLIC BROADCASTING (WLPB), OETA (KETA), Ozarks Public Television (KOZK), WSIU Public Broadcasting (WSIU), KEET TV (KEET), KIXE/Channel 9 (KIXE), KPBS San Diego (KPBS), KQED (KQED), KVIE Public Television (KVIE), PBS SoCal/KOCE (KOCE), ValleyPBS (KVPT), CONNECTICUT PUBLIC TELEVISION (WEDH), KNPB Channel 5 (KNPB), SOPTV (KSYS), Rocky Mountain PBS (KRMA), KENW-TV3 (KENW), KUED Channel 7 (KUED), Wyoming PBS (KCWC), Colorado Public Television / KBDI 12 (KBDI), KBYU-TV (KBYU), Thirteen/WNET New York (WNET), WGBH/Channel 2 (WGBH), WGBY (WGBY), NJTV Public Media NJ (WNJT), WLIW21 (WLIW), mpt/Maryland Public Television (WMPB), WETA Television and Radio (WETA), WHYY (WHYY), PBS 39 (WLVT), WVPT - Your Source for PBS and More! (WVPT), Howard University Television (WHUT), WEDU PBS (WEDU), WGCU Public Media (WGCU), WPBT2 (WPBT), WUCF TV (WUCF), WUFT/Channel 5 (WUFT), WXEL/Channel 42 (WXEL), WLRN/Channel 17 (WLRN), WUSF Public Broadcasting (WUSF), ETV (WRLK), UNC-TV (WUNC), PBS Hawaii - Oceanic Cable Channel 10 (KHET), Idaho Public Television (KAID), KSPS (KSPS), OPB (KOPB), KWSU/Channel 10 & KTNW/Channel 31 (KWSU), WILL-TV (WILL), Network Knowledge - WSEC/Springfield (WSEC), WTTW11 (WTTW), Iowa Public Television/IPTV (KDIN), Nine Network (KETC), PBS39 Fort Wayne (WFWA), WFYI Indianapolis (WFYI), Milwaukee Public Television (WMVS), WNIN (WNIN), WNIT Public Television (WNIT), WPT (WPNE), WVUT/Channel 22 (WVUT), WEIU/Channel 51 (WEIU), WQPT-TV (WQPT), WYCC PBS Chicago (WYCC), WIPB-TV (WIPB), WTIU (WTIU), CET (WCET), ThinkTVNetwork (WPTD), WBGU-TV (WBGU), WGVU TV (WGVU), NET1 (KUON), Pioneer Public Television (KWCM), SDPB Television (KUSD), TPT (KTCA), KSMQ (KSMQ), KPTS/Channel 8 (KPTS), KTWU/Channel 11 (KTWU), East Tennessee PBS (WSJK), WCTE-TV (WCTE), WLJT, Channel 11 (WLJT), WOSU TV (WOSU), WOUB/WOUC (WOUB), WVPB (WVPB), WKYU-PBS (WKYU), KERA 13 (KERA), MPBN (WCBB), Mountain Lake PBS (WCFE), NHPTV (WENH), Vermont PBS (WETK), witf (WITF), WQED Multimedia (WQED), WMHT Educational Telecommunications (WMHT), Q-TV (WDCQ), WTVS Detroit Public TV (WTVS), CMU Public Television (WCMU), WKAR-TV (WKAR), WNMU-TV Public TV 13 (WNMU), WDSE - WRPT (WDSE), WGTE TV (WGTE), Lakeland Public Television (KAWE), KMOS-TV - Channels 6.1, 6.2 and 6.3 (KMOS), MontanaPBS (KUSM), KRWG/Channel 22 (KRWG), KACV (KACV), KCOS/Channel 13 (KCOS), WCNY/Channel 24 (WCNY), WNED (WNED), WPBS (WPBS), WSKG Public TV (WSKG), WXXI (WXXI), WPSU (WPSU), WVIA Public Media Studios (WVIA), WTVI (WTVI), Western Reserve PBS (WNEO), WVIZ/PBS ideastream (WVIZ), KCTS 9 (KCTS), Basin PBS (KPBT), KUHT / Channel 8 (KUHT), KLRN (KLRN), KLRU (KLRU), WTJX Channel 12 (WTJX), WCVE PBS (WCVE), KBTC Public Television (KBTC) + - **pcmag** - **Periscope**: Periscope - **PhilharmonieDeParis**: Philharmonie de Paris - - **Phoenix** + - **phoenix.de** - **Photobucket** - **Pinkbike** - **Pladform** - **PlanetaPlay** - **play.fm** - **played.to** + - **PlaysTV** - **Playtvak**: Playtvak.cz, iDNES.cz and Lidovky.cz - **Playvid** - **Playwire** @@ -415,6 +463,7 @@ - **PornHd** - **PornHub** - **PornHubPlaylist** + - **PornHubUserVideos** - **Pornotube** - **PornoVoisines** - **PornoXO** @@ -435,16 +484,20 @@ - **radiofrance** - **RadioJavan** - **Rai** + - **RaiTV** - **RBMARadio** - **RDS**: RDS.ca - **RedTube** + - **RegioTV** - **Restudy** - **ReverbNation** + - **Revision3** - **RingTV** - **RottenTomatoes** - **Roxwel** - **RTBF** - - **Rte** + - **rte**: Raidió Teilifís Éireann TV + - **rte:radio**: Raidió Teilifís Éireann radio - **rtl.nl**: rtl.nl and rtlxl.nl - **RTL2** - **RTP** @@ -454,6 +507,7 @@ - **rtve.es:live**: RTVE.es live streams - **RTVNH** - **RUHD** + - **RulePorn** - **rutube**: Rutube videos - **rutube:channel**: Rutube channels - **rutube:embed**: Rutube embedded videos @@ -467,10 +521,12 @@ - **Sapo**: SAPO Vídeos - **savefrom.net** - **SBS**: sbs.com.au + - **schooltv** - **SciVee** - **screen.yahoo:search**: Yahoo screen search - **Screencast** - **ScreencastOMatic** + - **ScreenJunkies** - **ScreenwaveMedia** - **SenateISVP** - **ServingSys** @@ -480,6 +536,8 @@ - **Shared**: shared.sx and vivo.sx - **ShareSix** - **Sina** + - **skynewsarabia:video** + - **skynewsarabia:video** - **Slideshare** - **Slutload** - **smotri**: Smotri.com @@ -490,8 +548,6 @@ - **SnagFilmsEmbed** - **Snotr** - **Sohu** - - **soompi** - - **soompi:show** - **soundcloud** - **soundcloud:playlist** - **soundcloud:search**: Soundcloud search @@ -516,8 +572,8 @@ - **SportBoxEmbed** - **SportDeutschland** - **Sportschau** - - **Srf** - - **SRMediathek**: Saarländischer Rundfunk + - **SRGSSR** + - **SRGSSRPlay**: srf.ch, rts.ch, rsi.ch, rtr.ch and swissinfo.ch play sites - **SSA** - **stanfordoc**: Stanford Open ClassRoom - **Steam** @@ -542,14 +598,15 @@ - **TechTalks** - **techtv.mit.edu** - **ted** + - **Tele13** - **TeleBruxelles** - **Telecinco**: telecinco.es, cuatro.com and mediaset.es - **Telegraaf** - **TeleMB** - **TeleTask** - **TenPlay** - - **TestTube** - **TF1** + - **TheIntercept** - **TheOnion** - **ThePlatform** - **ThePlatformFeed** @@ -559,22 +616,28 @@ - **THVideo** - **THVideoPlaylist** - **tinypic**: tinypic.com videos - - **tlc.com** - **tlc.de** - **TMZ** - **TMZArticle** - **TNAFlix** + - **toggle** - **tou.tv** - **Toypics**: Toypics user profile - **ToypicsUser**: Toypics user profile - **TrailerAddict** (Currently broken) - **Trilulilu** + - **trollvids** - **TruTube** - **Tube8** - **TubiTv** - - **Tudou** + - **tudou** + - **tudou:album** + - **tudou:playlist** - **Tumblr** - - **TuneIn** + - **tunein:clip** + - **tunein:program** + - **tunein:station** + - **tunein:topic** - **Turbo** - **Tutv** - **tv.dfb.de** @@ -584,6 +647,7 @@ - **TVC** - **TVCArticle** - **tvigle**: Интернет-телевидение Tvigle.ru + - **tvland.com** - **tvp.pl** - **tvp.pl:Series** - **TVPlay**: TV3Play and related services @@ -596,12 +660,12 @@ - **twitch:video** - **twitch:vod** - **twitter** + - **twitter:amplify** - **twitter:card** - **Ubu** - **udemy** - **udemy:course** - **UDNEmbed**: 聯合影音 - - **Ultimedia** - **Unistra** - **Urort**: NRK P3 Urørt - **ustream** @@ -613,7 +677,7 @@ - **Vessel** - **Vesti**: Вести.Ru - **Vevo** - - **VGTV**: VGTV and BTTV + - **VGTV**: VGTV, BTTV, FTV, Aftenposten and Aftonbladet - **vh1.com** - **Vice** - **Viddler** @@ -621,11 +685,16 @@ - **video.mit.edu** - **VideoDetective** - **videofy.me** - - **VideoMega** + - **VideoMega** (Currently broken) + - **videomore** + - **videomore:season** + - **videomore:video** - **VideoPremium** - - **VideoTt**: video.tt - Your True Tube + - **VideoTt**: video.tt - Your True Tube (Currently broken) - **videoweed**: VideoWeed - - **Vidme** + - **vidme** + - **vidme:user** + - **vidme:user:likes** - **Vidzi** - **vier** - **vier:videos** @@ -665,6 +734,8 @@ - **WebOfStories** - **WebOfStoriesPlaylist** - **Weibo** + - **WeiqiTV**: WQTV + - **wholecloud**: WholeCloud - **Wimp** - **Wistia** - **WNL** @@ -701,6 +772,7 @@ - **youtube:favorites**: YouTube.com favourite videos, ":ytfav" for short (requires authentication) - **youtube:history**: Youtube watch history, ":ythistory" for short (requires authentication) - **youtube:playlist**: YouTube.com playlists + - **youtube:playlists**: YouTube.com user/channel playlists - **youtube:recommended**: YouTube.com recommended videos, ":ytrec" for short (requires authentication) - **youtube:search**: YouTube.com searches - **youtube:search:date**: YouTube.com searches, newest videos first @@ -708,10 +780,10 @@ - **youtube:show**: YouTube.com (multi-season) shows - **youtube:subscriptions**: YouTube.com subscriptions feed, "ytsubs" keyword (requires authentication) - **youtube:user**: YouTube.com user videos (URL or "ytuser" keyword) - - **youtube:user:playlists**: YouTube.com user playlists - **youtube:watchlater**: Youtube watch later list, ":ytwatchlater" for short (requires authentication) - **Zapiks** - **ZDF** - **ZDFChannel** - **zingmp3:album**: mp3.zing.vn albums - **zingmp3:song**: mp3.zing.vn songs + - **ZippCast** diff --git a/test/swftests/ArrayAccess.swf b/test/swftests/ArrayAccess.swf index 93f88cf39e1115abd9474fd0f94d04313b59b024..6cb49aba8fb0b7be32dcbc5fea25069def5ee871 100644 GIT binary patch delta 598 zcmV-c0;&Du1mOgb7JphKNL2&{gk+#nHcjlLRi#9!MIZ#&6sc@bR~_5q#MFPX$0S|B zh6h1Hyao>dizG;}h6UmsSdL{3PadQjha{HM<1# zS?*>*%7Y{}WKEr<;Cr>&In{G7plOkXCDLUA%I=1n zL}r>LUg3&NzJEZK&C4wkkrqxE;ZF(=FXPUvYNYRF{Iix|C{!?A~w*5e)Sjb!b9cs^z?8QiyhX)MYMN^ zP#($epWhF}j(=Y5Wf?u`xh~6d_;|G~G;xBT(TFvn3V#jhUIn$ZY5PUwua+P5aT897RW(6) k3W7&O2z+H~F*qXD5qSZ(M_9?5)oo(*OVf delta 600 zcmV-e0;m1q1mgsd7JpJCNL2&{gk+#nHcjlL1u0Q#5eNk~twcAdtB&n)V(LHHW0J05 z!-F6pUV{Z2BtS}v1bbGz0;@9PmL_2N@18mL^YNVtke>h--vg{77%X1{fLAM@5kN2V z{O+^CwlRsqIPZ#Tt3Kj9?V9FzJZ_FRnn^Y^Tb)kFwAyC7-G2~{Mt&4?I%&lDow{8D z1}t~8Amu?48?vTOQt+*M{fz3l=g_ps!V>AZCJR}_VxF6=W=nuPx9cZaM7d4VGz?rS zapt6vj}rHAOkc8wAJTl(Gv`Lx!vh{NyYD3qGqyuEF*c3 zqn&c?ye>0R&g?yw8m-NBqiwbBp2m=B&-`!NXNuTB8wRysxCalFlarJEB`kJW6Bp6m z?n8Ne{QdRQuGsM}OZ_aPM}602c@7^gcZ4QR@G}~*7Jt;BDcwt;mNspth#Zz(Sm@Dq zofpjI$R`mE;#+59oR6@-w_&y|>z?TpLCAwx3t2qmqskSuN>otcDymej6Gg{}sG6cz zb)@JB>xk$`)v=}{{RYxeRh2Oi644Zd6qp|fld1w3sR$H6+A>Cn2n`7|5>Gs}9!nF( zq&Bst4^iMX{(d}LQ?^y*iC|%ssJExqYz=(<&5zmf%&)u?Z!QsvL#RGG{w8k1DY2?1 m2v0%qhzNl%O)Ulo#5y3);pPYnxwaxlw>Z%IqW%M3`t>8{#~h0Q diff --git a/test/swftests/ClassCall.swf b/test/swftests/ClassCall.swf index bde78fb6c1f7158a743702239d4ea5de8ca07c45..849cca4f687307bc68c80948f9f4ea94ab6b5c53 100644 GIT binary patch literal 581 zcmV-L0=oS}S5ppl0{{Sc+Fg;&Zqq;%h41{>CRtRiQlV6+k|iQ#Lt;CvkP;;pRYLe# zP^l|a3DJo?NlYEvvd1K>;8Dtk*I*Bu6p06b4ZKAdJ8hgYvSpupzjJ&&vjF-VVCM@! z6~SQd002H#z9WEc?2bEUgQ32d`9ac=s#l*15p@h>KA$(|N6j#v7*@O8Hq4gMYBeO$ zNInFDEgC`cux{r81D-gs7YQ#6^h~o+n2KJ#ev|4to6snY{XEij4DRz84@6>EO-ly3 zPG=m(GbU^nMZV{-EY4Uol4+`MhcBBFHUd&!i?b{bp;;e7pxqM9*I%$W%9 z61TOi@3UZ%vI)1JzRG(WozKVww}*VBTgQ*|mT5g+kC9co#(%qgQ;`Q~!(jI>=|Uf` zR;%+ekteLmo2sABAzyEmKfli8iGM5i}N;LsWK0_8rc5(TO%Xd1#AA{wF^Q8XmwJuM#! z!DeBEwiIAYN*FLuQlg+B1px)5?h!=f17j*R#Yh8$2qjDNnam=X(8|($Ltj$(M1Nk_ z+}i$7!O!z-s;EnI`2r+J3J;YQrL;7!e_Ykjl_Zrrq$-W%!P4Y#LCg#C8V;xU_8lEg TsYG@v+0@0BK9TAlQiv&_O!LK)^ybwn^%^Xla8(YyGpZ zpc@$w<~F%)uStNALw)`4;siooPB=5|Zzn-}mL@-X+jK0DE5m zst5)LM*#4#@&f^MV|UVdH5ls4xgR7Qse1L95K+f47K=r5@vs@jQ^RVv+lJXPTCIj8 z8p(%1uw^4i?$_-+V89b6_9Eehfu3nL4pY&q*RNAuXB!%&v7bk}j=_CC=YdEJt7*v~ z*Xc~cc+P~)qR96gmc<#%MluVXiv@en8xx-;v#wEqnMZiS=k}=^j=4Vc`BFd8PYZue zZ;%Xji$U$3-(;D)>4bA5ibFSbDI{uy=7XDHe+PfuJPY)UsvP-+A!GvOS;g< z>-GAqOymix@}}zNGsu?;KfjISiGMHmf=SHg+=6{*W^4(F7l_gp zR7c}?+!5uGkbjt0kG8!gOKMi9=+H?TICRduK)H*mM1iUbnuf53h=!;}6b(svN6Uvo zuw59T9R(PZ5(W&Elqe`jK|lei2LuuMz?e!+G134bLdnW}DzgYCw6Zea(iapy(cf1! zw{|#G@UuLdD(cEyJqHPr!b7D+DXq+_Uzas>DM{rPsY)Zcw=y}L6Z4$Bf#Vszc}K@H TDv`ZPHg&P3kEQwtuej-q9SIyk diff --git a/test/swftests/ClassConstruction.swf b/test/swftests/ClassConstruction.swf index b17e844f5494cf7501847f98b9ce46ff2d4a1e7a..5e27a13ae3d270a017032667a3ab8b6ec5b90dbf 100644 GIT binary patch literal 553 zcmV+^0@nRQS5ppO0{{Sc+GSD8Zqq;%z2h0%v=Y#$5Cu>rOH|5+_z^0kM5#rU5FQJV zxU)=_X^};>rSDlRVlhiZZaJnSjeM^^ zkp3F3rR<-!5q_RkhNfhP*%iJP4OL)2Z#kyN@yo^!7uQM)s z6&}%KR?r!9pS`ZJ%eu};1#`!2VmJqnjIQlGS;eTj1M9!rKJUl@x-i=Liw7`NmdoYI zHkK3CPXk>SO_+kqTnqB z6d-tu0FfNEff1IQq7VdxC`bc@Fu@D^xkQnI$<2lRj=Uo9nf%;`7t#VDqG}6!@e(8j rui4}pph_Nou&^1NV*3=og}p$z_(ppHk(B0c6>;;h&S`3lfN zFlyWbfKR(W5Wpbwr~TKXu`!RMB=5`WupJ1I_ARR{OS61z@@!@~yZ`k&I6M zF%fj$N%Dtnw>B8D+{?mLggh~-nof8j4%_VuSKqrbO^Yn5Eq%{o5sO(Oa?3FtY2znz&g{2=E1;P6Dy4fMa0}ApHG-Ej@aBdFpk#xn!Tb_ zWPcshy>?7msZEc^R+@3Y@MNZ`w5r9|C6z^5OrkIkSmqYVdBV%pFV@|P<7JErev@(8 ztMG^>vx3f;`|MSXUDb6)Dwz9*rG|6x$mrV6lU0nWJFxz{?Td~apbMj&zjy#cWw~6Q zZeuxNO}<3?atif2)_#6JkrV&5J(Sm&4|$S{OdeIbz_+_iiO2`08I73(J789tTY$qv zG&Tg<$>crr1RisKe*-jWzVGxUL}D5yY7@1v3M~yZ9Vt4(IwCq&b);)`ECicNQSg=m z3J|pk)Qk!hm;$&c0J3BjuSvTtS zDl)3+aU}V)8l{gac5cuSsgndF8N^XJi+MjD%iT(4?&>-hrlWBZ=9aEwh)@hgBvZqx zS!m=sO)pM{T-tmz3Im5{cE+@t`mu8~;U7fR3wi3dj0G{%$Uug|Zo6?`l)IsrmK){v zLZ7qGC>hyZ6l!0(CePG0CmtH3BzDIR*5sj8F1{?uEJovg7^J>P>~VAy#gnrm7HGzC z62WEsFXJ4`@*$4~V?Ge}(^q-!BF<~%QrKP5FI$bxa^1AH&&tTqmT{%qa|8!yLucg= zYr!5pJv}`rF`Tf5ThTrrK)$}N|Ngm;6F({K#ZfBTNy3lYjw8|(zTJF@3H-oI_)u7| z0yUr%9}KV{k}FpQ+Ux#%;Yi|WnC=M)f6~P@OQHC^}Jfrs+)ANkJ#Y`=q!`)citZ zzRwq-tVjV32;fiE2q8>EFDR@sf+)p=ig~82&CEk}gZk>BwprR-dP{xn8S2qMS)Q4* zC-8~>IO!_z9Iy*m(9+E8X&b~VdL@K1GgU+03qX}Z@t7MkQ$UZIJ@yVB_!Qw=YguXk Nb^0-ae*t!M@(iL`D|G+> literal 627 zcmV-(0*w7bS5pp@0{{Sc+GSErZ__{!o!#|ElD5#Qd=wB;5S4OCVml2;jZ%xyP~ZTS zsDw}tRX5H$Hg#;v-jMVJe}xNwgDVmeN)P-2PW%LJW$dO+DJ!q6dGp@e*_oYy@(bYF z7l1Va-IY54@NxA!0ca>ZTZSQE+n5tGjr3(8>`p)GiSkY$CgodtWESzL7x<|s5_=RLh0*xzh&h^Z zoJ4RL{mVGVvV6e9!H5rp{p@v~yNL4|xfJ%Eh|5;9T5g!uqq8zHv~67J_6)%R+R$D8 z&DyX{Pft(xOAIHh;a0TI`;f0ci$A{Y;>1r%+fkUxPLlBBj^l_lg|9bWVFEvJ6Fw9c zEJGbA#Rmh-59RVzfwtRwFC0l+GNC+C^Ncd&en^`QWus|X4`#ic_qDUPVKhwhvC$j( zf%HQy5aB?2geM_?*Quu-Xw_16;Vt#F=cq>mWoc?o zpTZ~l^JGVX7l2*Bf)=Lcp|(!kqFX{JGgCF>y#!P#6py(+H3b|p^N_uR`yNI3=4w{j Nf1Q4U;9t3-@-h;}FRB0l diff --git a/test/swftests/ConstantInt.swf b/test/swftests/ConstantInt.swf index b3a39b3db85a6e763fd69c500a5eaac03e8df6ab..fe9c5c6bdc8c1d4532073e91295236aff408881b 100644 GIT binary patch literal 516 zcmV+f0{i_#S5pr80ssJb+FemWZqq;%{o|R~YLOsSQB@X579eFqVmnlo5~UVZL!cXw zx7-*L{er$$Em8SS3T>AeBpS5!N76*PQTw(if-|N zOImk%@wnqR0b^DKd7Q~ua9d+K6Qw-qbZ%0^;5IZX^Q4Ik1BWFnWn31H*Yi|R7!2nk zPpR~2mL+jOb(~Xoi%1056@AaT^Mn@B$k_0J+=F;cf1}$vm@ufzkS1~1^O^<|HdOYGghnB=cnpnuN5VjDpaLYm_SvP~tK?dG2Kt&qFLF<145)_F5Trhs1jBX-&?v2rr4e0x9~7B6y4s}&9>k4T;V@i GqtS@_H~km@ literal 518 zcmV+h0{Q(zS5pr80ssJb+Fen>Zqq;%eCyrVYLOsS5Gn^GOCaS!vUVtkM5#s9Q0Rq9 za6vtwZ0t?!*50-3b?u(`7A|}R5?3S;$~SQ0FT&a>O<<+9H1lTWz4fbr`~tZ98DJm5 zWbYvWeC&Kj0OKr}kKRsB>?(;xKGNv08!DBKC@ssfUq0*0Y(d@Oa7dj29SnL}(aW!e zVpUJ%kGozIFyXnMMX8FUuxrd_vQUTJ?oDdo--f0|7B`WBPkGD}E>uq4zN>=*e>9g_ z!j#9-G>&{$$I+^nhtj_+*%j~2W0r?wx)IhM6{(neM}eGi`y}R-ePADL{Ed1osl~x& zP;cv*takT(nb0(oLE-C}<~ph|Z(Hh!w3x+F9`ej9#HEnsy2XaAHGamKlK(3Ha&*t570ht=_VF3EQBpYEZnk?Nt$K|HU}Aa#{eB^5ECJUTYFf4kwFj;Fc2m? zOXmZ5Vua+C7V8peEuATOtqll~mbrA6r=Uw%Lws-PaF}9eir>Sd(9m?dQ#adw(+iFN I0GdY8#0|d#ck!=rhdsDV|T@`z=q#o zjo75002|;d%GgQc!br2Y=bm%!s{ry7;Pw}QT?CWu2LSMK=Q{!zC5}5hnN0N}@WXT{ zqodA3hKp-<6DRdJzg%bi?#X$A78}COowhFBV=D>SfGk zQ6`Q$owciDZ%pGX@heNmrrhTN4@FANo+*tSd+0_t$E+YFpXCHXi z^;xngX2s~(x))|Ah5 z^I%W!8|LAvjS?Nv|F*qGck!=ZvB!y#_oz=fejlz zf-MLMrN6)mz9NjBv@VP^i+k=l=e`OczW{E32G~Y0+1vqu4_iMFz$kIt;oHffUIc!a z4rR38nF|pQDb4e|m+$tXWJb-wU_gyN?f1Kq(M>Nx!HRB}K7a05mBECkcH+gti$cAO z*)+<;ey6i`b?j@?I7|G>(y=M`dB8)FQnP1DBgY=PQ4%m=u{icUo0WF7=%(|?KF`^E z-gSMJ&PTK+mKxy+pIc)mnsWWn=Y_tfk86F!UQtT2Q#Wee7?YLio*e}=P9i6>WlyfO zs>C-XrA3@geSa^V^Tf)+^DxR+C2F+f*a>GM`j>Hqm3g0qvy9ES_2NyHyN;_Knc&tj zk9BkJiQYHNr>izfbVUE#_8O4~v|zIF8;{^XSuU3+Z7eUW%1_i!Cs4gFJ3qf2$%}t) zPdr;3FyDu-cmK$Q#K28hz)jeIUP)~M_Clc^P0zS3ntxYx5-=}B#iRA!>Ya^`cWK`+ zp3!OM`9g9on)lE)X+Q(+qo($NC>kcHp(>iDAw@%2LqtQ3mWobrgoJ# zGg8U?2@7m*?}^=az5Ue~8Xb{azkP|Q1^O`F`in>K!dNbsryE#pxUH_){(K6}dAI-P z*NNKr&yAz^73Jk|&I&yce82xql~o0%1x=X;Ti`$=w{D&b!5PgqZz|fy!8r@1nbIV~ z56}*VmW2!pVGEfSYMD(t1nYwgeAfU&1?DzJ2qVKpV1kNFyl`J?f(q{}++DP5e0>FA rAY``M3wQAvR28cf-&?p0&aiui-@>EVP;jTCd)#`=GX?zv=NQ%~EUNY{ delta 500 zcmVFrChMr4&{(2wJ4+oE<}P0>Zu!h9hs`2p!KGi)b48@dL$DGZred} zq>}k>S#EjzkF37yJz0&R(Gj`v+ZTvhpbz7%zjy@CjpcHAvVqlx+v=L_&nM8F2iC72 z6SeW*8%O6A<>e%2g&qjL-~Fb_ssd3#Q|7@IIMB#D&uxU@jAonH746CNJqx6n(j>z> zXct4PgNzQs9b|S;%WT>qSRZ8I+XfgaFt;&67#Su46I5j4h5JGiRCsIQ?x8*7>q`Iw qA+yz9xQkbys#vA?&cbDIirrKE4(`W>g1cSamG;7K;Km&;Asjfv1^z{_HzixJWXUscX8i0o1M(AK>jS_Z zg2B!$065$If&luNKkgk3hW0E9W7*T_pgC14?NM43MZ37)PO=GgyWK8zI<(ViX+=xE zj}@D>VtJ?Ol>q}Gc^0H9NMhSyHcE1J&}?3&`g|Rl=2=)q`kabTL?Tv_x@}hn`Mfty zvWO{LTiJx=b(^yB9=BpMHk>;Z?kW-O)d3+it#p;TRH5#4?rjmaZe>qbR zSv<+vM0ihLmbEo5dt^#@Lou@5{d;!DaUZPOFl?Xx_uH3@9-s$+IpLA4huPpEqA5oQ1DhCgIcdkGi5s7-uXJE^I>^N+%9twXqh~Uya@h zu1Lg!7~e#D7-|hm&{C`+zBYFRoM7h!zk%CROVeAs=ECYVk2LxN Hdui6OmnZQP literal 518 zcmV+h0{Q(zS5pr00ssJb+FemWZ__Xs{T#ckw!_%8fyMzT5)zdVZIUt$t-6SbGC)EM zfrQXba~-!0OX4VYNICIWwhO<38&?DpD&@eP6aS*v>1YO)Ecw0fz30#Vra*oHYKE;F4uwszQ<22GgO))qb;iks7d7XqsnH85uB#M?B_7GV9sx)7=n20nVMxmVW%+Hh4L=?*_D%NON#;FqjD*ke& z9?@i+(=qoSJ}YZ0T=qy6_h0hV_V(`B9oM_JY{Rg9=fB^+VDtce7;OH=eRyCk7K`I` ztS4O8o7B&bp6z;o1e*_Kj!E1HY0l19+zRHR-d`EC!nQRLwsfCayY^634RSXCYGi*w#|jrYwm0G I2P<6GPHhnV=Kufz diff --git a/test/swftests/MemberAssignment.swf b/test/swftests/MemberAssignment.swf index 3bc02a4aa6274a7e0024fb2e929fb6076534bb9d..970cfcbc6dc452a1fbb11bd5e8287ad43f042e80 100644 GIT binary patch literal 558 zcmV+}0@3|LS5pp10{{Sc+GSD8Zqq;%z1K6g+b&9~0xAn6ODwV>aS|$|M5#p}gt7pn zu25H<*yF^lU$Vz_Siz^jhTq@=*d#0vTiC!~gc+x8N*USG+;h)4b7t-g=r4fn&j5P} z!<~Bo@P79z0`xP_?;QwD zE*5Ooi1P<^r!pAw+|7bi1W9bEnvIh}9MtO7YV<(X5&XK_-lj##6L<7S+R%4DFD?0>V(zia-l{xHK2s5 zo{pdy2n5jFA&5F^6y+Td2_^H^i;7L?_PjNJ3LmuZ-xebS4*@hpsv8pZsjP^mQT>*z w7K}<{KGNZ%gy|*eB}gM(YKSCpI3cYQ@)qt-H3{F@RoVV~ohK6f3z6#N&Hhjn5&!@I literal 559 zcmV+~0?_?KS5pp10{{Sc+GSC{Z__{+{XXB>Zab7#1ylwkOAJ|>I0A{tU2> zFxb5V0Ppv{AwVzl{O+s4(3(bJoOfk)RGSEqc5S;X%SL&>kz`}L)#-HXX4`JJ>ylB= z-^GGW>v4Xs=2Qj)p1WC)iXe$CRkKl2h@)EV!qsyxP17O^D@)I{dB`Iki`;HCTGGgK zyMB^IOgJn}!@y%8zL$)+H4ORGI<)$0eZ^i< z6xmw`b*@~KDRsk5B0J3zuW)51Us_e-s}g0A7Nao8Cp>eC_$*G!OCaomhEk^IY8 zVX7apcwDeCcb>egdY5&TkqPd+=Bd>>Jh0l$)`MjXh4$=guYG~Y0Xi_)`9pf}SX(R> zCtE~L*pNRpKAk|dejR-OdMqbC-+IBL5zqR09*ko(0QhnfWkY`8XDs3^*nx(UYyt^l zv2&eo9FN{|SKv90(Wem$Vsabz32d0CnMh2eCh8^{CYmO0s1$(e0CmE0vs$Q;O${ia zs;47p1_A*zcL}178bx^rL_*1|`Ltpax;<;o9>E9g=a2c&z-Is&BGnCv`czg#)2Mz! xR&z!rG8^jfQNnaZdJfV^ml`5T98O8|l)Qnv6HUUm_Efh2Ugx0%{{mWWbUW3%E{V8d_l0o|mFegH@a{vymcB@T>a>7H}XIdjK12l4~p(N};& z1mlAz0Pv}KivUKkGapXJ6Fv96AQ?(@(pd@-4JpmCte3s$h4F%#gTa6recJDLrJ|dB z3e$=RD2=@$(y=M`xX%NTP_t*sAjclg z!`NrSVo~I|HdApl?wO{qJu-Fmizwj2pl42+p+idVN{P za>G^mk?NOAC{8~8^?fQgep^517ZH!uFz~JQQ??`v^O*VEga-7Wuwpk5JIdESVFwNGB{je Z;|jlrr%O%J`%N|8&f8x}_y;g5;X_ZG0~`PV literal 535 zcmV+y0_goiS5pok0{{Sc+Feo0YTG~*z4Ne5yl5P3O1dZrYA}S_BRT29#t{v1({>X> zyD3>^ERAg?dLfM}XVqV6H~o!n3xVP+@&koJ|H7S-Q`_x;;GT2OIdeyM4)iC$qptw_ z2!?x40N_*o76A+rchY}1JTvBjAEteUj$1P+<33|~o_F%YPLxcU)$8?`*=5~sTPfP< zO(^-i9j4D(b`dZXsgroI^rFzvn2)1O9=BQ#sjjmQjkClrB3*|GUj!nQDYH733UZzP zBuWAoCe!S8Q0VaT390^snMC zr~5t+rx~9L`_*~TTjOFzE`|MG#D;bB+~}Iti`5vK9kBoY_5-69Xv47fn+)I-FPF=U zDp4CQtB;nyTtIPd4u5>NHGZjp+-9*wVr zBWb|BkUU2F1WFZzD~MDOt)LPuu0XIk2$LNQSQT`SAVd(R2q>tEl7;zN3oxOl3$qFL zP1MBoD!^Tnd`|CcWnEEKHSxiUuCD2Zrgsh+1#lI(djo(GqNVb}T)YJpOcW%$3sb-) ZF)zsncsj$1-mUBLw%-0y!9V+1;R-fQ{B8gM diff --git a/test/swftests/PrivateCall.swf b/test/swftests/PrivateCall.swf index 6638f2bf628129caf3fe0203e951cd668852617c..abc66d66db046fa64c8bceb796969ff52d98ff17 100644 GIT binary patch literal 595 zcmV-Z0<8T*S5pp?0{{Sc+Fg;&Zqq;z$7j83y9pAsDndn7B}-Jwg~WEKkQ${HRYUkV zP}BoLMM!Mybz|z-mc4Gm33wDPyao>dhj8El-~w+^X59~`UD>kdKfn2V#xn!<2jJ#c zfHeYxmAe4&arHX^=;uM$I~WYD*(6Si9!5K@v6NZQwx`o+XZoO%=0~=>y}fNaUAx%fPoqEG8n6h3$4+ zGz$D)nC25MJ)UK8Yn{9JIE zUL`Ixm5+IHRPrO?J$_N;F5{|4E`>J~Bg@^oZ*?8_;aM9>?c3M>_PK%!^kA_3kM?0t zJ3T!;Y*O5?fj2Y0971(Izxn(705|@l`7)1A&~1;$F?_rI3N^eS%=tvPunZkVH-Scp zys>~9`=j^5m(6{NQ|{p=iuHwThZmb}ug+;%$ig!5*@Q=lafhr?9o7sTV96w!NvKJf zNp({9%ycBqZm1KIfZra%MpP0^I%v zu!W$%aUTFaZ~j04z041~Z~6msHi_cAE2I6!SctT1S<~sXHGR}dvXSLsT~iAq(BmvJVN z>%^s|@)3(i1sieq>8mn#6_-6S!QHn!HJ!bOX4`fiFWXRR&${uqFBG{z7y9e}NDmJ2 zVzD@`6S-ks-cE)Q^Om@=$If-(JbKSib9Ys~k=P8WgcdCoGKhduWSju%&ANYX-swA_k%c z(G1NnkW^}GWs3-^gKoqalNtsLl+-BbSVM9&1R5Y?gCHUw7*nZHjMe}lLdo2ICLIta z^v>M=Kwnb$LjU|8=9@9*`C`R gPKbR%-owrqU%sQAF_p;rrW#=NZ$FXofA-n#6Z4ZG=l}o! diff --git a/test/swftests/PrivateVoidCall.swf b/test/swftests/PrivateVoidCall.swf index d47c438704c245b780200ad36616dd474ea29d7f..3d60c759baffea18e82ed40440776ebec533e2a2 100644 GIT binary patch literal 600 zcmV-e0;l~$S5pqF0{{Sc+Fg;&Zqq;%h40v7I|&lBYK4kWg(WIwLt;BrNR3j9s-gTW z23bHB_>{*Yx16qn zLB7`yl5EO^%hEIoJtpIj5Cqk zCayGj9jCQcLXfd3cVGp&(s2jW zFc$P2xqC|-Wh9)nLQW0Gb9- z45Au@8bmWx-Ow5aL9x}S+9psx%H_JQRoYZg(P)!`uIL0X12iCwRh6hf3j{+8YhNXup1r4A^SE!Z<>xrqAv9Yd}n`9aJ7Hwwl};$c%Ie>9;Hf mCa4eRHiu(sAJY%8IZ?0nWOJe+vc4uSv^;_5sQm}EZ}wu!OCd!7 literal 600 zcmV-e0;l~$S5pqF0{{Sc+Fg-fYtv8|#@~~iBy9!V*pP_~0}gs)o21T*l{Rdw&OaAc z6hsEXPLq>0E=@vm($*{eD&F`tycGng7k&Y+{1)>)>9%YQIdIoh`4*;CnIhiMSO1Vng^A? zq?d?<{i;#-+BKPUx4mRyrCH(^9`+PqRB66$kr8Pzio$%%Gq;G(;$*h`M5Ri`%QzFs zP2y6M=Mjrf3wFxgr?1MhtGeuw3GTk-sp;%KGCQ{OWZ8yPd)CU|zEE(0E)3TGsXaJU z&d<+}8!Ap%$3^w8$51}~{a-(ZIPpc}brw!B?OhW3hb)TV`(}VTz7S+=!W~$HwshPA zHH-zFB6nxSqYp(B;J=q>>h-_}i3$0FIAGQDZ5%uUz%Ow5) diff --git a/test/swftests/StaticAssignment.swf b/test/swftests/StaticAssignment.swf index 1f9873b6376f129b9deb38f1ee582a09dc2146cb..2b8bf88700bac8a495f968b929d375178091f728 100644 GIT binary patch literal 516 zcmV+f0{i_#S5poI0{{Sc+GUZ!Zqq;zhG)GSTjT(#3aA{AEOE$%WbL#pGlx7B0L6;sLm%j{p~Vi?HjIrj(U@n18Q;wcnJ=i{@As+KqrF~76P@Ct zP;Au^#iMpm2aI_U=5eNCDO^*tnJm?DyM37&g;$|jnJ0B*6jGk>lnYf*zw7IuC>+dX zo-!4%EKA~$nK-)Y6iXSNRqUL1<_Rm7L%IWvN5v}P!6=e5?oJZEa*y26&R^48#K6&R z(BRrLnQ?bRnbItmQ5ou)<~pi2U$>ZutehorvE+GBiZdar?G-!KFk#M_lK&EaHPcU+ zSd?tRgXgd7-c?=C$P^DIeCGN`kKLZa@Nj8q`QE;{>c5vg)#4v$ G?AV}3Qvi|x literal 518 zcmV+h0{Q(zS5poI0{{Sc+GUYJZ__Xo$Dd<25j{Ys0U8ISNE~{hb<&MPt1hCV6u2;n zUC<6_uH&|0i4!HxQcj4E!i8^vxFR8;?kjNOTNFDT>ll`Dc>nkN|NWe|1o8{u_7{LX z1mm3t0Pu152Lc%8;cW0`JaLyvEQ^7z4%-W*vH_)4RduWVZko@j-|zRS*Q32&M-!dm zgH&wUk;S8SPzQ`f!Sg6nQ7TKyO znVgqwE`sN;>)use&&ZSrjz#AB2anyJ=RetuVbmeL@wYD(y}$s*t>1VE&#d)&ebU5w z!?ym2{rLpy^J(()`;p%GMe|tcU&BX55zVDp0DQaqRRg*Qvz#TuhZb~=#Q_{i)w;>s zN7MI$D|Aj07D;>`?P0JTWH|^sh&ZU>Ae$IJLI}18S@@O(7Jx-`2O2vVA&e}7z|@%F zmG{C>7ADP=_l{gJa!Oum93j%MSKjIs=swmZzO(WKoMP`3zlDbjOUw6m%~k)s?5P(2 I0Hb`^(_RDsN&o-= diff --git a/test/swftests/StaticRetrieval.swf b/test/swftests/StaticRetrieval.swf index 9a327057a93c5d468bd6c195bfbb96f4da8cd6b3..0823df4acfe1eaa3308850a66d366644593da5af 100644 GIT binary patch literal 516 zcmV+f0{i_#S5poI0{{Sc+Feo2Zqq;zp7lDm=%GKfLgj#DiAuTPtQ{((M5#qZ2;~A& zxS*c0S#J`z{*%3q-BX{13$M`!;Nn++3%o_xbxKpR(n>queBU=SI~C}^0Cv9v93vPW zJO_Z=!ygD>komLzcsR1ED2(&IjLzB%A<{k}Wm$I0*PSGr6Svpv5vNPKU0X8j{3aH( zvg7<^+iMJlJZD*uiXe$C71L=_h_iP4-qmLhrfHFdjit{B4|&96krTJ$N+X~3XGs=O z;n6e=14fk{sqB1_u@`J^{Y|6Z zqcN#ccUTgUG)w$~$)0A?su4eyD2ue1hC#mInODTuaZ;{JY*58v8K)xopYab<`H;r* zg3h`3{!^2Ch?^d%;NFN&E%)@5)pguA>oycRAX~qEkH`gjFx>xx2k=f?tyY&iSZ>&m zS2w<0LUZiu_s_B1c)jyQ$gg2zF0z0xX$W^mcQP+iFw1DfUD$_?QkZ~)SnO@ljnC67 z&IDTO5e;Je3>{-IOr)6zn@BfN%S49WR79{jNW)Jw&;T?Y5Q5eLMhGKKN1$S?9N+{lPSAyvAf&g9+NnQ+o3{sI6d{ZaN%$CiiCvx8#r;|FN9sEG$kvowDab@H#0kP(0>7JegoJ? zFxYtx0Jpn85I{c<#=Y~wi8YU-r0B`$s67=T>k(2_l~cWT(tJX^ZnsO^4(W7k$*_x? zM9{gN6ffI;V=&+a%fn2BX=16Ej?z*bwcGcu0edjb$~5&TVU+~QG4qsUv*L$;UL!o`L_S^S}T%Zqw?ccZ$@3h5Yak+uz zh7Eajx~N`zlNQ2k%xRnBe>hUlX;nfaZY3I!8SNbVFC^lv9(4w z&PG?92{hAV8YcJ|+Q(p+NHY;Ok#3@vi447|h+uV)hM#Dl0cbiP1g#y65JsAgK*d@PTl*AgM&{hvS5pr90ssJb+Fg;)Zqq;z#%H~bO)CVAicmQqS>ljO6WgIeN|ag@LVycM z<$`+ZdcFSB+H1>R<8VSe3Kx#N00$lbA%z1E02g?Ru|^I9DCdKaz%y)-TAGHopbYO|DOjEl;42d*>< z=s3*Fj0leuMVe5e?Cg2JigSA2kT%cl%*SGWv zQE;#x)Z2I_QPl&QXLeEMK~3dMp|om?H%pX7QTu69#jNyde$Mk|)nctGhL((o{3`KJ zQ~8wes3sBfp1f#tmvK8I5zL!0-*ON3t)b&SSdF37iT&T-zEI=>J(%wN!4r6_Etkua zZ7erz$WJ#uoIra%z5o65SZ@5=_A5~)JbFZ`gjVq7)@PZNI)o+3mvUD#;DLUl5k9XYNU)uBF4AT9tOiinu)N9bQ5(LV*jF z$OZM(^?Dtf+H1>R<8b0xxbPAjxFR7?IPe0Tc#E)hN|UmZrJaAi`DfNM2l5->)+c~{ z1e4A^0Qj)?4FQacARN7(oY?a;k>yB7N8L!Nd_-wo*ZuloKPzU`9S(=o8PLI?r-@$q zUMe>4$?`$hYYir%AsA{A1V)a|?4DBzp{JZXR@Zc&$E=~MHWFEEO*7LchUp0FI@)xyhQR z{#(HnNm(p0^SPM_Ia3k7i}o>?7BVb^EkrD|Wg&~SO%bdQGVrzmhQ5#vMhGK=ARwS` z1TUQDTGs^GUN{Hlub<)83jhNlvSluu#Y@m>tV4Wz;Rra#&N+Sq_aj5goxP^XwKqN1 J!e2CO*9%J3|Aqhn diff --git a/test/swftests/StringCharCodeAt.swf b/test/swftests/StringCharCodeAt.swf index a0de83aa502d381047e516d9e88c4322e0f6cc33..d03775770795aca5ba04eda118fe2ac3e1e1c0a9 100644 GIT binary patch delta 544 zcmV+*0^j|s1gr#*7k^0Ag31EPh)UTs89S{iB}y%#ga8|m+6}5$bZk#zQ@>=7aai#I z`~79+n+AQ$Hv?r?5rptNUBP7rBc7D{3k|{B|-7e8Pq|<2$Mt>`P8*(~ph3UhlSsIL3 zYA0UIy(rX*np#oDPn*rPt7C6W<1Fz@OUEY6X8{X&N{qH4j2yc+iIRYFlg6>{*|e}D zvsUUx_Ek>bu-3$-ES7DT|o~Y1*V<(LA=wHTPtmykRoMv>&%*W5m z-li@yQqIgVvoz!QQ0wT%$tp&H_Q{QDuMx386Gn|+xDP{Vxm;euC3L^`^DLafa5xfj;$jaa^m_VJbqii#u^VHL?Ls;PKOE<+-y4wCS; z1d_POI~XC1BpHDW;wIy{{-hvCSl*lKhsw9b0UFoPf%9oGuEB?=01`rSO_}TSXCRnZ il=${sXBlvb^-KH`?z@tJ@9Y-u{Wp$B0{jCaqU!dWR1;MI delta 543 zcmV+)0^t3u1giv)7k_Bgg31EPh)UTs89OaViBgLwA;5-8WCLAwY)@iSzhsYbSn(^s z0`V7Yk&sZb;0IW-<_E&q32`YSS(CC;S# zVmQ)ffgh$_QJpqi&f_j2d7iiO<5rYRiP7nFh~6gcc2h8#>3`dh(^)f2?>EfSV8~KC z@nY^pp;pw?iZXuMXslfwdt(}BiC2a;qf=%+eqQ!A zb(xWJW{z2`87D_tTQ?r8ViahPT$}b95eqb7xbqA5U?44*%kw%G8&6>rI9NCeeE65f_T z5*K+FBZQG8BalJdWIWfO6a)#&`*ZzB`LQ@eqZ&GNJ}yQzc>feYLP)MDbAA2{1QUxA h-<<0VE*P+WfnUO1R}%28z2d$9#_>pie*h|S>h&n@0p9=s diff --git a/test/swftests/StringConversion.swf b/test/swftests/StringConversion.swf index b5bbb724241c30da4a972c4a8ec911e502b59cb3..8c88556ed7b359d2d0f5898bf59930aed4cfe996 100644 GIT binary patch literal 532 zcmV+v0_*)lS5poW0{{Sc+GUZ!ZqqOr$3Mqz!ghd812hgukwEH&Hc6R~T6GcAN`VVV zoS;~nMkH77&t6t8RN2ayq>3m z!eAKXBBRo$MUf@})p5?eTgG{CQqxn`jZ#|1BWDe2k4$9B{QWSWGJBG;xxH)eul)_Z zLNpw%2lcO9lWKP_$TO!9c~}K%rbtCK=BpMRQB>13DPt!5il6YjULCPkH4_L%W&SVm zSJVBJ@>xY^%zyT(>0Q>%j8rmz!lt&j`^fIQ-jmfBS{*sp{`Q5U9?*wz`!^oJfw5dJ zk2bM-VN-p?{Bi`%+W7qI$Dw-h^UXI>Bz$&|^HU~D6$0OGpD94~AQCiV9<-sSEjIus zT(+o1~0Gt1e<%DR5yD zyP!#kxrx(cOYF#TmU80658=Y!;EFT}bqD?cCw>E$Vy9yr!%`%F@Atf~KgTmLe*)b4 z0CsGyz*RAWiTR-V?F?IcZzwdfIx7X_^ zqEmiglFT}+eAo_}fDtW2krp!L%+WQO@JjBq+ZU-(co|w$B5NX}(4`s8DU+q^cYPHU zg@c%joXCI_MV5v{$GNjknegzWCa1I$XQWJq?h4c%naYd?yAhvIXPnWQv+eAz{0+TC zG#sr44X#|1Xm>Z{xmySxRiT)g(*Hgo>bICydw2BUY+rLP3e-{}O*S z-OmV{R%A+p=dYXIW!=n3Bn=K|;rQE+ou21EU5=sEp?mFbUnuGU0~oFU!b8|I7K_E< z8dfiCsn4`NA40Q!zyJPiU%mMG+JO`)o9=OTN=2zc;Om_;1*jgxg5=bPb?9o#4Ztar z>(_Z}e{xJiY33wl*0O13luc!V@1ZRWwv7xMVH=q?YT3xLk!?03AXqJA;F|^*YGZC- zgfKEp1SY7RiRa!64H($GJ@?+V9);r;`t;*Gwq61l2$?Nw?#*9;g0L#Ff+!qe?+Cwz W2Z^ENyPNu`|L*xriGKj`mEbWtivySd diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index 0388c0b..59f7ab4 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -12,8 +12,9 @@ import copy from test.helper import FakeYDL, assertRegexpMatches from youtube_dl import YoutubeDL -from youtube_dl.compat import compat_str +from youtube_dl.compat import compat_str, compat_urllib_error from youtube_dl.extractor import YoutubeIE +from youtube_dl.extractor.common import InfoExtractor from youtube_dl.postprocessor.common import PostProcessor from youtube_dl.utils import ExtractorError, match_filter_func @@ -221,9 +222,19 @@ class TestFormatSelection(unittest.TestCase): downloaded = ydl.downloaded_info_dicts[0] self.assertEqual(downloaded['format_id'], 'dash-video-low') + formats = [ + {'format_id': 'vid-vcodec-dot', 'ext': 'mp4', 'preference': 1, 'vcodec': 'avc1.123456', 'acodec': 'none', 'url': TEST_URL}, + ] + info_dict = _make_result(formats) + + ydl = YDL({'format': 'bestvideo[vcodec=avc1.123456]'}) + ydl.process_ie_result(info_dict.copy()) + downloaded = ydl.downloaded_info_dicts[0] + self.assertEqual(downloaded['format_id'], 'vid-vcodec-dot') + def test_youtube_format_selection(self): order = [ - '38', '37', '46', '22', '45', '35', '44', '18', '34', '43', '6', '5', '36', '17', '13', + '38', '37', '46', '22', '45', '35', '44', '18', '34', '43', '6', '5', '17', '36', '13', # Apple HTTP Live Streaming '96', '95', '94', '93', '92', '132', '151', # 3D @@ -237,6 +248,17 @@ class TestFormatSelection(unittest.TestCase): def format_info(f_id): info = YoutubeIE._formats[f_id].copy() + + # XXX: In real cases InfoExtractor._parse_mpd_formats() fills up 'acodec' + # and 'vcodec', while in tests such information is incomplete since + # commit a6c2c24479e5f4827ceb06f64d855329c0a6f593 + # test_YoutubeDL.test_youtube_format_selection is broken without + # this fix + if 'acodec' in info and 'vcodec' not in info: + info['vcodec'] = 'none' + elif 'vcodec' in info and 'acodec' not in info: + info['acodec'] = 'none' + info['format_id'] = f_id info['url'] = 'url:' + f_id return info @@ -631,6 +653,47 @@ class TestYoutubeDL(unittest.TestCase): result = get_ids({'playlist_items': '10'}) self.assertEqual(result, []) + def test_urlopen_no_file_protocol(self): + # see https://github.com/rg3/youtube-dl/issues/8227 + ydl = YDL() + self.assertRaises(compat_urllib_error.URLError, ydl.urlopen, 'file:///etc/passwd') + + def test_do_not_override_ie_key_in_url_transparent(self): + ydl = YDL() + + class Foo1IE(InfoExtractor): + _VALID_URL = r'foo1:' + + def _real_extract(self, url): + return { + '_type': 'url_transparent', + 'url': 'foo2:', + 'ie_key': 'Foo2', + } + + class Foo2IE(InfoExtractor): + _VALID_URL = r'foo2:' + + def _real_extract(self, url): + return { + '_type': 'url', + 'url': 'foo3:', + 'ie_key': 'Foo3', + } + + class Foo3IE(InfoExtractor): + _VALID_URL = r'foo3:' + + def _real_extract(self, url): + return _make_result([{'url': TEST_URL}]) + + ydl.add_info_extractor(Foo1IE(ydl)) + ydl.add_info_extractor(Foo2IE(ydl)) + ydl.add_info_extractor(Foo3IE(ydl)) + ydl.extract_info('foo1:') + downloaded = ydl.downloaded_info_dicts[0] + self.assertEqual(downloaded['url'], TEST_URL) + if __name__ == '__main__': unittest.main() diff --git a/test/test_all_urls.py b/test/test_all_urls.py index a9db42b..f5af184 100644 --- a/test/test_all_urls.py +++ b/test/test_all_urls.py @@ -56,7 +56,7 @@ class TestAllURLsMatching(unittest.TestCase): assertChannel('https://www.youtube.com/channel/HCtnHdj3df7iM/videos') def test_youtube_user_matching(self): - self.assertMatch('www.youtube.com/NASAgovVideo/videos', ['youtube:user']) + self.assertMatch('http://www.youtube.com/NASAgovVideo/videos', ['youtube:user']) def test_youtube_feeds(self): self.assertMatch('https://www.youtube.com/feed/watch_later', ['youtube:watchlater']) @@ -121,8 +121,8 @@ class TestAllURLsMatching(unittest.TestCase): def test_pbs(self): # https://github.com/rg3/youtube-dl/issues/2350 - self.assertMatch('http://video.pbs.org/viralplayer/2365173446/', ['PBS']) - self.assertMatch('http://video.pbs.org/widget/partnerplayer/980042464/', ['PBS']) + self.assertMatch('http://video.pbs.org/viralplayer/2365173446/', ['pbs']) + self.assertMatch('http://video.pbs.org/widget/partnerplayer/980042464/', ['pbs']) def test_yahoo_https(self): # https://github.com/rg3/youtube-dl/issues/2701 diff --git a/test/test_iqiyi_sdk_interpreter.py b/test/test_iqiyi_sdk_interpreter.py new file mode 100644 index 0000000..9d95cb6 --- /dev/null +++ b/test/test_iqiyi_sdk_interpreter.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +from __future__ import unicode_literals + +# Allow direct execution +import os +import sys +import unittest +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from test.helper import FakeYDL +from youtube_dl.extractor import IqiyiIE + + +class IqiyiIEWithCredentials(IqiyiIE): + def _get_login_info(self): + return 'foo', 'bar' + + +class WarningLogger(object): + def __init__(self): + self.messages = [] + + def warning(self, msg): + self.messages.append(msg) + + def debug(self, msg): + pass + + def error(self, msg): + pass + + +class TestIqiyiSDKInterpreter(unittest.TestCase): + def test_iqiyi_sdk_interpreter(self): + ''' + Test the functionality of IqiyiSDKInterpreter by trying to log in + + If `sign` is incorrect, /validate call throws an HTTP 556 error + ''' + logger = WarningLogger() + ie = IqiyiIEWithCredentials(FakeYDL({'logger': logger})) + ie._login() + self.assertTrue('unable to log in:' in logger.messages[0]) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_subtitles.py b/test/test_subtitles.py index 75f0ea7..27e763e 100644 --- a/test/test_subtitles.py +++ b/test/test_subtitles.py @@ -11,7 +11,6 @@ from test.helper import FakeYDL, md5 from youtube_dl.extractor import ( - BlipTVIE, YoutubeIE, DailymotionIE, TEDIE, @@ -22,7 +21,7 @@ from youtube_dl.extractor import ( NPOIE, ComedyCentralIE, NRKTVIE, - RaiIE, + RaiTVIE, VikiIE, ThePlatformIE, ThePlatformFeedIE, @@ -66,16 +65,16 @@ class TestYoutubeSubtitles(BaseTestSubtitles): self.DL.params['allsubtitles'] = True subtitles = self.getSubtitles() self.assertEqual(len(subtitles.keys()), 13) - self.assertEqual(md5(subtitles['en']), '4cd9278a35ba2305f47354ee13472260') - self.assertEqual(md5(subtitles['it']), '164a51f16f260476a05b50fe4c2f161d') - for lang in ['it', 'fr', 'de']: + self.assertEqual(md5(subtitles['en']), '3cb210999d3e021bd6c7f0ea751eab06') + self.assertEqual(md5(subtitles['it']), '6d752b98c31f1cf8d597050c7a2cb4b5') + for lang in ['fr', 'de']: self.assertTrue(subtitles.get(lang) is not None, 'Subtitles for \'%s\' not extracted' % lang) - def test_youtube_subtitles_sbv_format(self): + def test_youtube_subtitles_ttml_format(self): self.DL.params['writesubtitles'] = True - self.DL.params['subtitlesformat'] = 'sbv' + self.DL.params['subtitlesformat'] = 'ttml' subtitles = self.getSubtitles() - self.assertEqual(md5(subtitles['en']), '13aeaa0c245a8bed9a451cb643e3ad8b') + self.assertEqual(md5(subtitles['en']), 'e306f8c42842f723447d9f63ad65df54') def test_youtube_subtitles_vtt_format(self): self.DL.params['writesubtitles'] = True @@ -145,18 +144,6 @@ class TestTedSubtitles(BaseTestSubtitles): self.assertTrue(subtitles.get(lang) is not None, 'Subtitles for \'%s\' not extracted' % lang) -class TestBlipTVSubtitles(BaseTestSubtitles): - url = 'http://blip.tv/a/a-6603250' - IE = BlipTVIE - - def test_allsubtitles(self): - self.DL.params['writesubtitles'] = True - self.DL.params['allsubtitles'] = True - subtitles = self.getSubtitles() - self.assertEqual(set(subtitles.keys()), set(['en'])) - self.assertEqual(md5(subtitles['en']), '5b75c300af65fe4476dff79478bb93e4') - - class TestVimeoSubtitles(BaseTestSubtitles): url = 'http://vimeo.com/76979871' IE = VimeoIE @@ -273,7 +260,7 @@ class TestNRKSubtitles(BaseTestSubtitles): class TestRaiSubtitles(BaseTestSubtitles): url = 'http://www.rai.tv/dl/RaiTV/programmi/media/ContentItem-cb27157f-9dd0-4aee-b788-b1f67643a391.html' - IE = RaiIE + IE = RaiTVIE def test_allsubtitles(self): self.DL.params['writesubtitles'] = True diff --git a/test/test_update.py b/test/test_update.py new file mode 100644 index 0000000..d9c7151 --- /dev/null +++ b/test/test_update.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python + +from __future__ import unicode_literals + +# Allow direct execution +import os +import sys +import unittest +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + + +import json +from youtube_dl.update import rsa_verify + + +class TestUpdate(unittest.TestCase): + def test_rsa_verify(self): + UPDATES_RSA_KEY = (0x9d60ee4d8f805312fdb15a62f87b95bd66177b91df176765d13514a0f1754bcd2057295c5b6f1d35daa6742c3ffc9a82d3e118861c207995a8031e151d863c9927e304576bc80692bc8e094896fcf11b66f3e29e04e3a71e9a11558558acea1840aec37fc396fb6b65dc81a1c4144e03bd1c011de62e3f1357b327d08426fe93, 65537) + with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'versions.json'), 'rb') as f: + versions_info = f.read().decode() + versions_info = json.loads(versions_info) + signature = versions_info['signature'] + del versions_info['signature'] + self.assertTrue(rsa_verify( + json.dumps(versions_info, sort_keys=True).encode('utf-8'), + signature, UPDATES_RSA_KEY)) + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_utils.py b/test/test_utils.py index 501355c..e6887be 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -22,6 +22,8 @@ from youtube_dl.utils import ( DateRange, detect_exe_version, determine_ext, + dict_get, + encode_compat_str, encodeFilename, escape_rfc3986, escape_url, @@ -33,6 +35,7 @@ from youtube_dl.utils import ( is_html, js_to_json, limit_length, + ohdave_rsa_encrypt, OnDemandPagedList, orderedSet, parse_duration, @@ -43,6 +46,7 @@ from youtube_dl.utils import ( sanitize_path, prepend_extension, replace_extension, + remove_quotes, shell_quote, smuggle_url, str_to_int, @@ -200,6 +204,15 @@ class TestUtil(unittest.TestCase): self.assertEqual(replace_extension('.abc', 'temp'), '.abc.temp') self.assertEqual(replace_extension('.abc.ext', 'temp'), '.abc.temp') + def test_remove_quotes(self): + self.assertEqual(remove_quotes(None), None) + self.assertEqual(remove_quotes('"'), '"') + self.assertEqual(remove_quotes("'"), "'") + self.assertEqual(remove_quotes(';'), ';') + self.assertEqual(remove_quotes('";'), '";') + self.assertEqual(remove_quotes('""'), '') + self.assertEqual(remove_quotes('";"'), ';') + def test_ordered_set(self): self.assertEqual(orderedSet([1, 1, 2, 3, 4, 4, 5, 6, 7, 3, 5]), [1, 2, 3, 4, 5, 6, 7]) self.assertEqual(orderedSet([]), []) @@ -439,6 +452,32 @@ class TestUtil(unittest.TestCase): data = urlencode_postdata({'username': 'foo@bar.com', 'password': '1234'}) self.assertTrue(isinstance(data, bytes)) + def test_dict_get(self): + FALSE_VALUES = { + 'none': None, + 'false': False, + 'zero': 0, + 'empty_string': '', + 'empty_list': [], + } + d = FALSE_VALUES.copy() + d['a'] = 42 + self.assertEqual(dict_get(d, 'a'), 42) + self.assertEqual(dict_get(d, 'b'), None) + self.assertEqual(dict_get(d, 'b', 42), 42) + self.assertEqual(dict_get(d, ('a', )), 42) + self.assertEqual(dict_get(d, ('b', 'a', )), 42) + self.assertEqual(dict_get(d, ('b', 'c', 'a', 'd', )), 42) + self.assertEqual(dict_get(d, ('b', 'c', )), None) + self.assertEqual(dict_get(d, ('b', 'c', ), 42), 42) + for key, false_value in FALSE_VALUES.items(): + self.assertEqual(dict_get(d, ('b', 'c', key, )), None) + self.assertEqual(dict_get(d, ('b', 'c', key, ), skip_false_values=False), false_value) + + def test_encode_compat_str(self): + self.assertEqual(encode_compat_str(b'\xd1\x82\xd0\xb5\xd1\x81\xd1\x82', 'utf-8'), 'тест') + self.assertEqual(encode_compat_str('тест', 'utf-8'), 'тест') + def test_parse_iso8601(self): self.assertEqual(parse_iso8601('2014-03-23T23:04:26+0100'), 1395612266) self.assertEqual(parse_iso8601('2014-03-23T22:04:26+0000'), 1395612266) @@ -456,6 +495,10 @@ class TestUtil(unittest.TestCase): d = json.loads(stripped) self.assertEqual(d, {'STATUS': 'OK'}) + stripped = strip_jsonp('ps.embedHandler({"status": "success"});') + d = json.loads(stripped) + self.assertEqual(d, {'status': 'success'}) + def test_uppercase_escape(self): self.assertEqual(uppercase_escape('aä'), 'aä') self.assertEqual(uppercase_escape('\\U0001d550'), '𝕐') @@ -651,12 +694,13 @@ ffmpeg version 2.4.4 Copyright (c) 2000-2014 the FFmpeg ...'''), '2.4.4') {'like_count': 190, 'dislike_count': 10})) def test_parse_dfxp_time_expr(self): - self.assertEqual(parse_dfxp_time_expr(None), 0.0) - self.assertEqual(parse_dfxp_time_expr(''), 0.0) + self.assertEqual(parse_dfxp_time_expr(None), None) + self.assertEqual(parse_dfxp_time_expr(''), None) self.assertEqual(parse_dfxp_time_expr('0.1'), 0.1) self.assertEqual(parse_dfxp_time_expr('0.1s'), 0.1) self.assertEqual(parse_dfxp_time_expr('00:00:01'), 1.0) self.assertEqual(parse_dfxp_time_expr('00:00:01.100'), 1.1) + self.assertEqual(parse_dfxp_time_expr('00:00:01:100'), 1.1) def test_dfxp2srt(self): dfxp_data = ''' @@ -666,6 +710,9 @@ ffmpeg version 2.4.4 Copyright (c) 2000-2014 the FFmpeg ...'''), '2.4.4')

The following line contains Chinese characters and special symbols

第二行
♪♪

Third
Line

+

Lines with invalid timestamps are ignored

+

Ignore, two

+

Ignored, three

''' @@ -746,6 +793,13 @@ The first line {'nocheckcertificate': False}, '--check-certificate', 'nocheckcertificate', 'false', 'true', '='), ['--check-certificate=true']) + def test_ohdave_rsa_encrypt(self): + N = 0xab86b6371b5318aaa1d3c9e612a9f1264f372323c8c0f19875b5fc3b3fd3afcc1e5bec527aa94bfa85bffc157e4245aebda05389a5357b75115ac94f074aefcd + e = 65537 + + self.assertEqual( + ohdave_rsa_encrypt(b'aa111222', e, N), + '726664bd9a23fd0c70f9f1b84aab5e3905ce1e45a584e9cbcf9bcc7510338fc1986d6c599ff990d923aa43c51c0d9013cd572e13bc58f4ae48f2ed8c0b0ba881') if __name__ == '__main__': unittest.main() diff --git a/test/test_write_annotations.py b/test/test_write_annotations.py index 84b8f39..8de08f2 100644 --- a/test/test_write_annotations.py +++ b/test/test_write_annotations.py @@ -66,7 +66,7 @@ class TestAnnotations(unittest.TestCase): textTag = a.find('TEXT') text = textTag.text self.assertTrue(text in expected) # assertIn only added in python 2.7 - # remove the first occurance, there could be more than one annotation with the same text + # remove the first occurrence, there could be more than one annotation with the same text expected.remove(text) # We should have seen (and removed) all the expected annotation texts. self.assertEqual(len(expected), 0, 'Not all expected annotations were found.') diff --git a/test/test_youtube_lists.py b/test/test_youtube_lists.py index 26aadb3..47df0f3 100644 --- a/test/test_youtube_lists.py +++ b/test/test_youtube_lists.py @@ -34,7 +34,7 @@ class TestYoutubeLists(unittest.TestCase): ie = YoutubePlaylistIE(dl) # TODO find a > 100 (paginating?) videos course result = ie.extract('https://www.youtube.com/course?list=ECUl4u3cNGP61MdtwGTqZA0MreSaDybji8') - entries = result['entries'] + entries = list(result['entries']) self.assertEqual(YoutubeIE().extract_id(entries[0]['url']), 'j9WZyLZCBzs') self.assertEqual(len(entries), 25) self.assertEqual(YoutubeIE().extract_id(entries[-1]['url']), 'rYefUsYuEp0') diff --git a/test/versions.json b/test/versions.json new file mode 100644 index 0000000..6cccc22 --- /dev/null +++ b/test/versions.json @@ -0,0 +1,34 @@ +{ + "latest": "2013.01.06", + "signature": "72158cdba391628569ffdbea259afbcf279bbe3d8aeb7492690735dc1cfa6afa754f55c61196f3871d429599ab22f2667f1fec98865527b32632e7f4b3675a7ef0f0fbe084d359256ae4bba68f0d33854e531a70754712f244be71d4b92e664302aa99653ee4df19800d955b6c4149cd2b3f24288d6e4b40b16126e01f4c8ce6", + "versions": { + "2013.01.02": { + "bin": [ + "http://youtube-dl.org/downloads/2013.01.02/youtube-dl", + "f5b502f8aaa77675c4884938b1e4871ebca2611813a0c0e74f60c0fbd6dcca6b" + ], + "exe": [ + "http://youtube-dl.org/downloads/2013.01.02/youtube-dl.exe", + "75fa89d2ce297d102ff27675aa9d92545bbc91013f52ec52868c069f4f9f0422" + ], + "tar": [ + "http://youtube-dl.org/downloads/2013.01.02/youtube-dl-2013.01.02.tar.gz", + "6a66d022ac8e1c13da284036288a133ec8dba003b7bd3a5179d0c0daca8c8196" + ] + }, + "2013.01.06": { + "bin": [ + "http://youtube-dl.org/downloads/2013.01.06/youtube-dl", + "64b6ed8865735c6302e836d4d832577321b4519aa02640dc508580c1ee824049" + ], + "exe": [ + "http://youtube-dl.org/downloads/2013.01.06/youtube-dl.exe", + "58609baf91e4389d36e3ba586e21dab882daaaee537e4448b1265392ae86ff84" + ], + "tar": [ + "http://youtube-dl.org/downloads/2013.01.06/youtube-dl-2013.01.06.tar.gz", + "fe77ab20a95d980ed17a659aa67e371fdd4d656d19c4c7950e7b720b0c2f1a86" + ] + } + } +} \ No newline at end of file diff --git a/youtube-dl b/youtube-dl index ee414e41a670873ff438a366228340e39acc1b12..c70dbaefda00b64185232f44066335e13f51e8b5 100755 GIT binary patch delta 686554 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 O^Z)D}iE;DyvWQ9()!3YNV_j7$D=J0y1p190< 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

<_xp@iM+^SLn=Io8}%wmx10%+ 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%0DAcKs=QB^{-TWB15dE?OQE@=IIh9xr@s9 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 z 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

4xmz;L3;X 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 z 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

-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%0A0^+;5_^( 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 Te8^_p*|_^%>=duTi5mS6x^K;L diff --git a/youtube-dl.1 b/youtube-dl.1 index d5967c8..7c038b8 100644 --- a/youtube-dl.1 +++ b/youtube-dl.1 @@ -1,4 +1,7 @@ +.\" Automatically generated by Pandoc 1.16.0.2 +.\" .TH "YOUTUBE\-DL" "1" "" "" "" +.hy .SH NAME .PP youtube\-dl \- download videos from youtube.com or other video platforms @@ -286,6 +289,12 @@ Use the native HLS downloader instead of ffmpeg (experimental) .RS .RE .TP +.B \-\-hls\-use\-mpegts +Use the mpegts container for HLS videos, allowing to play the video +while downloading (some players may not be able to play it) +.RS +.RE +.TP .B \-\-external\-downloader \f[I]COMMAND\f[] Use the specified external downloader. Currently supports aria2c,axel,curl,httpie,wget @@ -636,7 +645,7 @@ Prefer free video formats unless a specific one is requested .RE .TP .B \-F, \-\-list\-formats -List all available formats of specified videos +List all available formats of requested videos .RS .RE .TP @@ -682,7 +691,7 @@ Subtitle format, accepts formats preference, for example: "srt" or .TP .B \-\-sub\-lang \f[I]LANGS\f[] Languages of the subtitles to download (optional) separated by commas, -use IETF language tags like \[aq]en,pt\[aq] +use \-\-list\- subs for available language tags .RS .RE .SS Authentication Options: @@ -816,7 +825,7 @@ Example: \-\-exec \[aq]adb push {} /sdcard/Music/ && rm {}\[aq] .RS .RE .TP -.B \-\-convert\-subtitles \f[I]FORMAT\f[] +.B \-\-convert\-subs \f[I]FORMAT\f[] Convert the subtitles to other format (currently supported: srt|ass|vtt) .RS .RE @@ -901,39 +910,134 @@ To clarify, that is a percent symbol followed by a name in parentheses, followed by a lowercase S. Allowed names are: .IP \[bu] 2 -\f[C]id\f[]: The sequence will be replaced by the video identifier. +\f[C]id\f[]: Video identifier +.IP \[bu] 2 +\f[C]title\f[]: Video title +.IP \[bu] 2 +\f[C]url\f[]: Video URL +.IP \[bu] 2 +\f[C]ext\f[]: Video filename extension +.IP \[bu] 2 +\f[C]alt_title\f[]: A secondary title of the video +.IP \[bu] 2 +\f[C]display_id\f[]: An alternative identifier for the video +.IP \[bu] 2 +\f[C]uploader\f[]: Full name of the video uploader +.IP \[bu] 2 +\f[C]creator\f[]: The main artist who created the video +.IP \[bu] 2 +\f[C]release_date\f[]: The date (YYYYMMDD) when the video was released +.IP \[bu] 2 +\f[C]timestamp\f[]: UNIX timestamp of the moment the video became +available +.IP \[bu] 2 +\f[C]upload_date\f[]: Video upload date (YYYYMMDD) +.IP \[bu] 2 +\f[C]uploader_id\f[]: Nickname or id of the video uploader +.IP \[bu] 2 +\f[C]location\f[]: Physical location where the video was filmed +.IP \[bu] 2 +\f[C]duration\f[]: Length of the video in seconds +.IP \[bu] 2 +\f[C]view_count\f[]: How many users have watched the video on the +platform +.IP \[bu] 2 +\f[C]like_count\f[]: Number of positive ratings of the video +.IP \[bu] 2 +\f[C]dislike_count\f[]: Number of negative ratings of the video +.IP \[bu] 2 +\f[C]repost_count\f[]: Number of reposts of the video +.IP \[bu] 2 +\f[C]average_rating\f[]: Average rating give by users, the scale used +depends on the webpage +.IP \[bu] 2 +\f[C]comment_count\f[]: Number of comments on the video +.IP \[bu] 2 +\f[C]age_limit\f[]: Age restriction for the video (years) +.IP \[bu] 2 +\f[C]format\f[]: A human\-readable description of the format +.IP \[bu] 2 +\f[C]format_id\f[]: Format code specified by \f[C]\-\-format\f[] +.IP \[bu] 2 +\f[C]format_note\f[]: Additional info about the format +.IP \[bu] 2 +\f[C]width\f[]: Width of the video +.IP \[bu] 2 +\f[C]height\f[]: Height of the video +.IP \[bu] 2 +\f[C]resolution\f[]: Textual description of width and height +.IP \[bu] 2 +\f[C]tbr\f[]: Average bitrate of audio and video in KBit/s +.IP \[bu] 2 +\f[C]abr\f[]: Average audio bitrate in KBit/s +.IP \[bu] 2 +\f[C]acodec\f[]: Name of the audio codec in use .IP \[bu] 2 -\f[C]url\f[]: The sequence will be replaced by the video URL. +\f[C]asr\f[]: Audio sampling rate in Hertz .IP \[bu] 2 -\f[C]uploader\f[]: The sequence will be replaced by the nickname of the -person who uploaded the video. +\f[C]vbr\f[]: Average video bitrate in KBit/s .IP \[bu] 2 -\f[C]upload_date\f[]: The sequence will be replaced by the upload date -in YYYYMMDD format. +\f[C]fps\f[]: Frame rate .IP \[bu] 2 -\f[C]title\f[]: The sequence will be replaced by the video title. +\f[C]vcodec\f[]: Name of the video codec in use .IP \[bu] 2 -\f[C]ext\f[]: The sequence will be replaced by the appropriate extension -(like flv or mp4). +\f[C]container\f[]: Name of the container format .IP \[bu] 2 -\f[C]epoch\f[]: The sequence will be replaced by the Unix epoch when -creating the file. +\f[C]filesize\f[]: The number of bytes, if known in advance .IP \[bu] 2 -\f[C]autonumber\f[]: The sequence will be replaced by a five\-digit -number that will be increased with each download, starting at zero. +\f[C]filesize_approx\f[]: An estimate for the number of bytes .IP \[bu] 2 -\f[C]playlist\f[]: The sequence will be replaced by the name or the id -of the playlist that contains the video. +\f[C]protocol\f[]: The protocol that will be used for the actual +download .IP \[bu] 2 -\f[C]playlist_index\f[]: The sequence will be replaced by the index of -the video in the playlist padded with leading zeros according to the -total length of the playlist. +\f[C]extractor\f[]: Name of the extractor .IP \[bu] 2 -\f[C]format_id\f[]: The sequence will be replaced by the format code -specified by \f[C]\-\-format\f[]. +\f[C]extractor_key\f[]: Key name of the extractor .IP \[bu] 2 -\f[C]duration\f[]: The sequence will be replaced by the length of the -video in seconds. +\f[C]epoch\f[]: Unix epoch when creating the file +.IP \[bu] 2 +\f[C]autonumber\f[]: Five\-digit number that will be increased with each +download, starting at zero +.IP \[bu] 2 +\f[C]playlist\f[]: Name or id of the playlist that contains the video +.IP \[bu] 2 +\f[C]playlist_index\f[]: Index of the video in the playlist padded with +leading zeros according to the total length of the playlist +.PP +Available for the video that belongs to some logical chapter or section: +\- \f[C]chapter\f[]: Name or title of the chapter the video belongs to +\- \f[C]chapter_number\f[]: Number of the chapter the video belongs to +\- \f[C]chapter_id\f[]: Id of the chapter the video belongs to +.PP +Available for the video that is an episode of some series or programme: +\- \f[C]series\f[]: Title of the series or programme the video episode +belongs to \- \f[C]season\f[]: Title of the season the video episode +belongs to \- \f[C]season_number\f[]: Number of the season the video +episode belongs to \- \f[C]season_id\f[]: Id of the season the video +episode belongs to \- \f[C]episode\f[]: Title of the video episode \- +\f[C]episode_number\f[]: Number of the video episode within a season \- +\f[C]episode_id\f[]: Id of the video episode +.PP +Each aforementioned sequence when referenced in output template will be +replaced by the actual value corresponding to the sequence name. +Note that some of the sequences are not guaranteed to be present since +they depend on the metadata obtained by particular extractor, such +sequences will be replaced with \f[C]NA\f[]. +.PP +For example for \f[C]\-o\ %(title)s\-%(id)s.%(ext)s\f[] and mp4 video +with title \f[C]youtube\-dl\ test\ video\f[] and id +\f[C]BaW_jenozKcj\f[] this will result in a +\f[C]youtube\-dl\ test\ video\-BaW_jenozKcj.mp4\f[] file created in the +current directory. +.PP +Output template can also contain arbitrary hierarchical path, e.g. +\f[C]\-o\ \[aq]%(playlist)s/%(playlist_index)s\ \-\ %(title)s.%(ext)s\[aq]\f[] +that will result in downloading each video in a directory corresponding +to this path template. +Any missing directory will be automatically created for you. +.PP +To specify percent literal in output template use \f[C]%%\f[]. +To output to stdout use \f[C]\-o\ \-\f[]. .PP The current default template is \f[C]%(title)s\-%(id)s.%(ext)s\f[]. .PP @@ -942,47 +1046,137 @@ or &, such as when transferring the downloaded filename to a Windows system or the filename through an 8bit\-unsafe channel. In these cases, add the \f[C]\-\-restrict\-filenames\f[] flag to get a shorter title: +.PP +Examples (note on Windows you may need to use double quotes instead of +single): .IP .nf \f[C] -$\ youtube\-dl\ \-\-get\-filename\ \-o\ "%(title)s.%(ext)s"\ BaW_jenozKc +$\ youtube\-dl\ \-\-get\-filename\ \-o\ \[aq]%(title)s.%(ext)s\[aq]\ BaW_jenozKc youtube\-dl\ test\ video\ \[aq]\[aq]_ä↭𝕐.mp4\ \ \ \ #\ All\ kinds\ of\ weird\ characters -$\ youtube\-dl\ \-\-get\-filename\ \-o\ "%(title)s.%(ext)s"\ BaW_jenozKc\ \-\-restrict\-filenames + +$\ youtube\-dl\ \-\-get\-filename\ \-o\ \[aq]%(title)s.%(ext)s\[aq]\ BaW_jenozKc\ \-\-restrict\-filenames youtube\-dl_test_video_.mp4\ \ \ \ \ \ \ \ \ \ #\ A\ simple\ file\ name + +#\ Download\ YouTube\ playlist\ videos\ in\ separate\ directory\ indexed\ by\ video\ order\ in\ a\ playlist +$\ youtube\-dl\ \-o\ \[aq]%(playlist)s/%(playlist_index)s\ \-\ %(title)s.%(ext)s\[aq]\ https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re + +#\ Download\ Udemy\ course\ keeping\ each\ chapter\ in\ separate\ directory\ under\ MyVideos\ directory\ in\ your\ home +$\ youtube\-dl\ \-u\ user\ \-p\ password\ \-o\ \[aq]~/MyVideos/%(playlist)s/%(chapter_number)s\ \-\ %(chapter)s/%(title)s.%(ext)s\[aq]\ https://www.udemy.com/java\-tutorial/ + +#\ Download\ entire\ series\ season\ keeping\ each\ series\ and\ each\ season\ in\ separate\ directory\ under\ C:/MyVideos +$\ youtube\-dl\ \-o\ "C:/MyVideos/%(series)s/%(season_number)s\ \-\ %(season)s/%(episode_number)s\ \-\ %(episode)s.%(ext)s"\ http://videomore.ru/kino_v_detalayah/5_sezon/367617 + +#\ Stream\ the\ video\ being\ downloaded\ to\ stdout +$\ youtube\-dl\ \-o\ \-\ BaW_jenozKc \f[] .fi .SH FORMAT SELECTION .PP -By default youtube\-dl tries to download the best quality, but sometimes -you may want to download in a different format. -The simplest case is requesting a specific format, for example -\f[C]\-f\ 22\f[]. -You can get the list of available formats using -\f[C]\-\-list\-formats\f[], you can also use a file extension (currently -it supports aac, m4a, mp3, mp4, ogg, wav, webm) or the special names -\f[C]best\f[], \f[C]bestvideo\f[], \f[C]bestaudio\f[] and -\f[C]worst\f[]. +By default youtube\-dl tries to download the best available quality, +i.e. +if you want the best quality you \f[B]don\[aq]t need\f[] to pass any +special options, youtube\-dl will guess it for you by \f[B]default\f[]. +.PP +But sometimes you may want to download in a different format, for +example when you are on a slow or intermittent connection. +The key mechanism for achieving this is so called \f[I]format +selection\f[] based on which you can explicitly specify desired format, +select formats based on some criterion or criteria, setup precedence and +much more. +.PP +The general syntax for format selection is \f[C]\-\-format\ FORMAT\f[] +or shorter \f[C]\-f\ FORMAT\f[] where \f[C]FORMAT\f[] is a \f[I]selector +expression\f[], i.e. +an expression that describes format or formats you would like to +download. +.PP +The simplest case is requesting a specific format, for example with +\f[C]\-f\ 22\f[] you can download the format with format code equal to +22. +You can get the list of available format codes for particular video +using \f[C]\-\-list\-formats\f[] or \f[C]\-F\f[]. +Note that these format codes are extractor specific. +.PP +You can also use a file extension (currently \f[C]3gp\f[], \f[C]aac\f[], +\f[C]flv\f[], \f[C]m4a\f[], \f[C]mp3\f[], \f[C]mp4\f[], \f[C]ogg\f[], +\f[C]wav\f[], \f[C]webm\f[] are supported) to download best quality +format of particular file extension served as a single file, e.g. +\f[C]\-f\ webm\f[] will download best quality format with \f[C]webm\f[] +extension served as a single file. +.PP +You can also use special names to select particular edge case format: \- +\f[C]best\f[]: Select best quality format represented by single file +with video and audio \- \f[C]worst\f[]: Select worst quality format +represented by single file with video and audio \- \f[C]bestvideo\f[]: +Select best quality video only format (e.g. +DASH video), may not be available \- \f[C]worstvideo\f[]: Select worst +quality video only format, may not be available \- \f[C]bestaudio\f[]: +Select best quality audio only format, may not be available \- +\f[C]worstaudio\f[]: Select worst quality audio only format, may not be +available +.PP +For example, to download worst quality video only format you can use +\f[C]\-f\ worstvideo\f[]. .PP If you want to download multiple videos and they don\[aq]t have the same formats available, you can specify the order of preference using -slashes, as in \f[C]\-f\ 22/17/18\f[]. -You can also filter the video results by putting a condition in +slashes. +Note that slash is left\-associative, i.e. +formats on the left hand side are preferred, for example +\f[C]\-f\ 22/17/18\f[] will download format 22 if it\[aq]s available, +otherwise it will download format 17 if it\[aq]s available, otherwise it +will download format 18 if it\[aq]s available, otherwise it will +complain that no suitable formats are available for download. +.PP +If you want to download several formats of the same video use comma as a +separator, e.g. +\f[C]\-f\ 22,17,18\f[] will download all these three formats, of course +if they are available. +Or more sophisticated example combined with precedence feature +\f[C]\-f\ 136/137/mp4/bestvideo,140/m4a/bestaudio\f[]. +.PP +You can also filter the video formats by putting a condition in brackets, as in \f[C]\-f\ "best[height=720]"\f[] (or \f[C]\-f\ "[filesize>10M]"\f[]). -This works for filesize, height, width, tbr, abr, vbr, asr, and fps and -the comparisons <, <=, >, >=, =, != and for ext, acodec, vcodec, -container, and protocol and the comparisons =, != . +.PP +The following numeric meta fields can be used with comparisons +\f[C]<\f[], \f[C]<=\f[], \f[C]>\f[], \f[C]>=\f[], \f[C]=\f[] (equals), +\f[C]!=\f[] (not equals): \- \f[C]filesize\f[]: The number of bytes, if +known in advance \- \f[C]width\f[]: Width of the video, if known \- +\f[C]height\f[]: Height of the video, if known \- \f[C]tbr\f[]: Average +bitrate of audio and video in KBit/s \- \f[C]abr\f[]: Average audio +bitrate in KBit/s \- \f[C]vbr\f[]: Average video bitrate in KBit/s \- +\f[C]asr\f[]: Audio sampling rate in Hertz \- \f[C]fps\f[]: Frame rate +.PP +Also filtering work for comparisons \f[C]=\f[] (equals), \f[C]!=\f[] +(not equals), \f[C]^=\f[] (begins with), \f[C]$=\f[] (ends with), +\f[C]*=\f[] (contains) and following string meta fields: \- +\f[C]ext\f[]: File extension \- \f[C]acodec\f[]: Name of the audio codec +in use \- \f[C]vcodec\f[]: Name of the video codec in use \- +\f[C]container\f[]: Name of the container format \- \f[C]protocol\f[]: +The protocol that will be used for the actual download, lower\-case. +\f[C]http\f[], \f[C]https\f[], \f[C]rtsp\f[], \f[C]rtmp\f[], +\f[C]rtmpe\f[], \f[C]m3u8\f[], or \f[C]m3u8_native\f[] +.PP +Note that none of the aforementioned meta fields are guaranteed to be +present since this solely depends on the metadata obtained by particular +extractor, i.e. +the metadata offered by video hoster. +.PP Formats for which the value is not known are excluded unless you put a -question mark (?) after the operator. +question mark (\f[C]?\f[]) after the operator. You can combine format filters, so \f[C]\-f\ "[height\ <=?\ 720][tbr>500]"\f[] selects up to 720p videos (or videos where the height is not known) with a bitrate of at least 500 KBit/s. -Use commas to download multiple formats, such as -\f[C]\-f\ 136/137/mp4/bestvideo,140/m4a/bestaudio\f[]. +.PP You can merge the video and audio of two formats into a single file using \f[C]\-f\ +\f[] (requires ffmpeg or -avconv), for example \f[C]\-f\ bestvideo+bestaudio\f[]. +avconv installed), for example \f[C]\-f\ bestvideo+bestaudio\f[] will +download best video only format, best audio only format and mux them +together with ffmpeg/avconv. +.PP Format selectors can also be grouped using parentheses, for example if you want to download the best mp4 and webm formats with a height lower than 480 you can use \f[C]\-f\ \[aq](mp4,webm)[height<480]\[aq]\f[]. @@ -998,7 +1192,7 @@ best available quality served as a single file. \f[C]best\f[] is also needed for videos that don\[aq]t come from YouTube because they don\[aq]t provide the audio and video in two different files. -If you want to only download some dash formats (for example if you are +If you want to only download some DASH formats (for example if you are not interested in getting videos with a resolution higher than 1080p), you can add \f[C]\-f\ bestvideo[height<=?1080]+bestaudio/best\f[] to your configuration file. @@ -1015,6 +1209,25 @@ you want to download the best available quality media served as a single file, you should explicitly specify your choice with \f[C]\-f\ best\f[]. You may want to add it to the configuration file (#configuration) in order not to type it every time you run youtube\-dl. +.PP +Examples (note on Windows you may need to use double quotes instead of +single): +.IP +.nf +\f[C] +#\ Download\ best\ mp4\ format\ available\ or\ any\ other\ best\ if\ no\ mp4\ available +$\ youtube\-dl\ \-f\ \[aq]bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best\[aq] + +#\ Download\ best\ format\ available\ but\ not\ better\ that\ 480p +$\ youtube\-dl\ \-f\ \[aq]bestvideo[height<=480]+bestaudio/best[height<=480]\[aq] + +#\ Download\ best\ video\ only\ format\ but\ no\ bigger\ that\ 50\ MB +$\ youtube\-dl\ \-f\ \[aq]best[filesize<50M]\[aq] + +#\ Download\ best\ format\ available\ via\ direct\ link\ over\ HTTP/HTTPS\ protocol +$\ youtube\-dl\ \-f\ \[aq](bestvideo+bestaudio/best)[protocol^=http]\[aq] +\f[] +.fi .SH VIDEO SELECTION .PP Videos can be filtered by their upload date using the options @@ -1277,7 +1490,7 @@ Use the \f[C]\-o\f[] to specify an output template (#output-template), for example \f[C]\-o\ "/home/user/videos/%(title)s\-%(id)s.%(ext)s"\f[]. If you want this for all of your downloads, put the option into your configuration file (#configuration). -.SS How do I download a video starting with a \f[C]\-\f[] ? +.SS How do I download a video starting with a \f[C]\-\f[]? .PP Either prepend \f[C]http://www.youtube.com/watch?v=\f[] or separate the ID from the options with \f[C]\-\-\f[]: @@ -1306,6 +1519,10 @@ is a good sign of invalid newline format. .PP Passing cookies to youtube\-dl is a good way to workaround login when a particular extractor does not implement it explicitly. +Another use case is working around +CAPTCHA (https://en.wikipedia.org/wiki/CAPTCHA) some websites require +you to solve in particular cases in order to get access (e.g. +YouTube, CloudFlare). .SS Can you add support for this anime video site, or site which shows current movies for free? .PP @@ -1552,7 +1769,7 @@ with\ youtube_dl.YoutubeDL(ydl_opts)\ as\ ydl: .PP Most likely, you\[aq]ll want to use various options. For a list of what can be done, have a look at -youtube_dl/YoutubeDL.py (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L117-L265). +\f[C]youtube_dl/YoutubeDL.py\f[] (https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L121-L269). For a start, if you want to intercept youtube\-dl\[aq]s output, set a \f[C]logger\f[] object. .PP @@ -1599,14 +1816,39 @@ with\ youtube_dl.YoutubeDL(ydl_opts)\ as\ ydl: .SH BUGS .PP Bugs and suggestions should be reported at: - . +. Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. -For discussions, join us in the irc channel #youtube\-dl on freenode. +For discussions, join us in the IRC channel +#youtube\-dl (irc://chat.freenode.net/#youtube-dl) on freenode +(webchat (http://webchat.freenode.net/?randomnick=1&channels=youtube-dl)). .PP \f[B]Please include the full output of youtube\-dl when run with -\f[C]\-v\f[]\f[]. +\f[C]\-v\f[]\f[], i.e. +\f[B]add\f[] \f[C]\-v\f[] flag to \f[B]your command line\f[], copy the +\f[B]whole\f[] output and post it in the issue body wrapped in ``` for +better formatting. +It should look similar to this: +.IP +.nf +\f[C] +$\ youtube\-dl\ \-v\ +[debug]\ System\ config:\ [] +[debug]\ User\ config:\ [] +[debug]\ Command\-line\ args:\ [u\[aq]\-v\[aq],\ u\[aq]http://www.youtube.com/watch?v=BaW_jenozKcj\[aq]] +[debug]\ Encodings:\ locale\ cp1251,\ fs\ mbcs,\ out\ cp866,\ pref\ cp1251 +[debug]\ youtube\-dl\ version\ 2015.12.06 +[debug]\ Git\ HEAD:\ 135392e +[debug]\ Python\ version\ 2.6.6\ \-\ Windows\-2003Server\-5.2.3790\-SP2 +[debug]\ exe\ versions:\ ffmpeg\ N\-75573\-g1d0487f,\ ffprobe\ N\-75573\-g1d0487f,\ rtmpdump\ 2.4 +[debug]\ Proxy\ map:\ {} +\&... +\f[] +.fi +.PP +\f[B]Do not post screenshots of verbose log only plain text is +acceptable.\f[] .PP The output (including the first lines) contains important debugging information. @@ -1638,7 +1880,7 @@ If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We\[aq]re often too polite to close the issue outright, but the missing info makes misinterpretation likely. -As a commiter myself, I often get frustrated by these issues, since the +As a committer myself, I often get frustrated by these issues, since the only possible way for me to move forward on them is to ask for clarification over and over. .PP @@ -1659,11 +1901,11 @@ command\-line) or upload the \f[C]\&.dump\f[] files you get when you add .PP \f[B]Site support requests must contain an example URL\f[]. An example URL is a URL you might want to download, like -http://www.youtube.com/watch?v=BaW_jenozKc . +\f[C]http://www.youtube.com/watch?v=BaW_jenozKc\f[]. There should be an obvious video present. Except under very special circumstances, the main page of a video service (e.g. -http://www.youtube.com/ ) is \f[I]not\f[] an example URL. +\f[C]http://www.youtube.com/\f[]) is \f[I]not\f[] an example URL. .SS Are you using the latest version? .PP Before reporting any issue, type \f[C]youtube\-dl\ \-U\f[]. @@ -1675,8 +1917,9 @@ This goes for feature requests as well. .PP Make sure that someone has not already opened the issue you\[aq]re trying to open. -Search at the top of the window or at -https://github.com/rg3/youtube\-dl/search?type=Issues . +Search at the top of the window or browse the GitHub +Issues (https://github.com/rg3/youtube-dl/search?type=Issues) of this +repository. If there is an issue, feel free to write something along the lines of "This affects me as well, with version 2015.01.01. Here is some more information on the issue: ...". @@ -1753,6 +1996,6 @@ bug. .PP youtube\-dl is released into the public domain by the copyright holders. .PP -This README file was originally written by Daniel Bolton -() and is likewise released into the public -domain. +This README file was originally written by Daniel +Bolton (https://github.com/dbbolton) and is likewise released into the +public domain. diff --git a/youtube-dl.bash-completion b/youtube-dl.bash-completion index 893d7e7..d8c2ef1 100644 --- a/youtube-dl.bash-completion +++ b/youtube-dl.bash-completion @@ -4,7 +4,7 @@ __youtube_dl() COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" - opts="--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --flat-playlist --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --cn-verification-proxy --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --playlist-reverse --xattr-set-filesize --hls-prefer-native --external-downloader --external-downloader-args --batch-file --id --output --autonumber-size --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subtitles" + opts="--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --flat-playlist --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --cn-verification-proxy --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --playlist-reverse --xattr-set-filesize --hls-prefer-native --hls-use-mpegts --external-downloader --external-downloader-args --batch-file --id --output --autonumber-size --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subs" keywords=":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory" fileopts="-a|--batch-file|--download-archive|--cookies|--load-info" diropts="--cache-dir" diff --git a/youtube-dl.fish b/youtube-dl.fish index c70743c..5f30e09 100644 --- a/youtube-dl.fish +++ b/youtube-dl.fish @@ -45,6 +45,7 @@ complete --command youtube-dl --long-option test complete --command youtube-dl --long-option playlist-reverse --description 'Download playlist videos in reverse order' complete --command youtube-dl --long-option xattr-set-filesize --description 'Set file xattribute ytdl.filesize with expected filesize (experimental)' complete --command youtube-dl --long-option hls-prefer-native --description 'Use the native HLS downloader instead of ffmpeg (experimental)' +complete --command youtube-dl --long-option hls-use-mpegts --description 'Use the mpegts container for HLS videos, allowing to play the video while downloading (some players may not be able to play it)' complete --command youtube-dl --long-option external-downloader --description 'Use the specified external downloader. Currently supports aria2c,axel,curl,httpie,wget' complete --command youtube-dl --long-option external-downloader-args --description 'Give these arguments to the external downloader' complete --command youtube-dl --long-option batch-file --short-option a --description 'File containing URLs to download ('"'"'-'"'"' for stdin)' --require-parameter @@ -107,7 +108,7 @@ complete --command youtube-dl --long-option sleep-interval --description 'Number complete --command youtube-dl --long-option format --short-option f --description 'Video format code, see the "FORMAT SELECTION" for all the info' complete --command youtube-dl --long-option all-formats --description 'Download all available video formats' complete --command youtube-dl --long-option prefer-free-formats --description 'Prefer free video formats unless a specific one is requested' -complete --command youtube-dl --long-option list-formats --short-option F --description 'List all available formats of specified videos' +complete --command youtube-dl --long-option list-formats --short-option F --description 'List all available formats of requested videos' complete --command youtube-dl --long-option youtube-include-dash-manifest complete --command youtube-dl --long-option youtube-skip-dash-manifest --description 'Do not download the DASH manifests and related data on YouTube videos' complete --command youtube-dl --long-option merge-output-format --description 'If a merge is required (e.g. bestvideo+bestaudio), output to given container format. One of mkv, mp4, ogg, webm, flv. Ignored if no merge is required' @@ -116,7 +117,7 @@ complete --command youtube-dl --long-option write-auto-sub --description 'Write complete --command youtube-dl --long-option all-subs --description 'Download all the available subtitles of the video' complete --command youtube-dl --long-option list-subs --description 'List all available subtitles for the video' complete --command youtube-dl --long-option sub-format --description 'Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"' -complete --command youtube-dl --long-option sub-lang --description 'Languages of the subtitles to download (optional) separated by commas, use IETF language tags like '"'"'en,pt'"'"'' +complete --command youtube-dl --long-option sub-lang --description 'Languages of the subtitles to download (optional) separated by commas, use --list-subs for available language tags' complete --command youtube-dl --long-option username --short-option u --description 'Login with this account ID' complete --command youtube-dl --long-option password --short-option p --description 'Account password. If this option is left out, youtube-dl will ask interactively.' complete --command youtube-dl --long-option twofactor --short-option 2 --description 'Two-factor auth code' @@ -139,7 +140,7 @@ complete --command youtube-dl --long-option prefer-avconv --description 'Prefer complete --command youtube-dl --long-option prefer-ffmpeg --description 'Prefer ffmpeg over avconv for running the postprocessors' complete --command youtube-dl --long-option ffmpeg-location --description 'Location of the ffmpeg/avconv binary; either the path to the binary or its containing directory.' complete --command youtube-dl --long-option exec --description 'Execute a command on the file after downloading, similar to find'"'"'s -exec syntax. Example: --exec '"'"'adb push {} /sdcard/Music/ && rm {}'"'"'' -complete --command youtube-dl --long-option convert-subtitles --description 'Convert the subtitles to other format (currently supported: srt|ass|vtt)' +complete --command youtube-dl --long-option convert-subs --description 'Convert the subtitles to other format (currently supported: srt|ass|vtt)' complete --command youtube-dl --arguments ":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory" diff --git a/youtube-dl.zsh b/youtube-dl.zsh index 73c95b0..66ac24a 100644 --- a/youtube-dl.zsh +++ b/youtube-dl.zsh @@ -19,7 +19,7 @@ __youtube_dl() { elif [[ ${prev} == "--recode-video" ]]; then _arguments '*: :(mp4 flv ogg webm mkv)' else - _arguments '*: :(--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --flat-playlist --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --cn-verification-proxy --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --playlist-reverse --xattr-set-filesize --hls-prefer-native --external-downloader --external-downloader-args --batch-file --id --output --autonumber-size --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subtitles)' + _arguments '*: :(--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --flat-playlist --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --cn-verification-proxy --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --playlist-reverse --xattr-set-filesize --hls-prefer-native --hls-use-mpegts --external-downloader --external-downloader-args --batch-file --id --output --autonumber-size --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subs)' fi ;; esac diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 9a8c7da..f432403 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -46,8 +46,11 @@ from .utils import ( DateRange, DEFAULT_OUTTMPL, determine_ext, + determine_protocol, DownloadError, + encode_compat_str, encodeFilename, + error_to_compat_str, ExtractorError, format_bytes, formatSeconds, @@ -260,7 +263,7 @@ class YoutubeDL(object): the downloader (see youtube_dl/downloader/common.py): nopart, updatetime, buffersize, ratelimit, min_filesize, max_filesize, test, noresizebuffer, retries, continuedl, noprogress, consoletitle, - xattr_set_filesize, external_downloader_args. + xattr_set_filesize, external_downloader_args, hls_use_mpegts. The following options are used by the post processors: prefer_ffmpeg: If True, use ffmpeg instead of avconv if both are available, @@ -495,7 +498,7 @@ class YoutubeDL(object): tb = '' if hasattr(sys.exc_info()[1], 'exc_info') and sys.exc_info()[1].exc_info[0]: tb += ''.join(traceback.format_exception(*sys.exc_info()[1].exc_info)) - tb += compat_str(traceback.format_exc()) + tb += encode_compat_str(traceback.format_exc()) else: tb_data = traceback.format_list(traceback.extract_stack()) tb = ''.join(tb_data) @@ -602,12 +605,12 @@ class YoutubeDL(object): if rejecttitle: if re.search(rejecttitle, title, re.IGNORECASE): return '"' + title + '" title matched reject pattern "' + rejecttitle + '"' - date = info_dict.get('upload_date', None) + date = info_dict.get('upload_date') if date is not None: dateRange = self.params.get('daterange', DateRange()) if date not in dateRange: return '%s upload date is not in range %s' % (date_from_str(date).isoformat(), dateRange) - view_count = info_dict.get('view_count', None) + view_count = info_dict.get('view_count') if view_count is not None: min_views = self.params.get('min_views') if min_views is not None and view_count < min_views: @@ -674,14 +677,14 @@ class YoutubeDL(object): return self.process_ie_result(ie_result, download, extra_info) else: return ie_result - except ExtractorError as de: # An error we somewhat expected - self.report_error(compat_str(de), de.format_traceback()) + except ExtractorError as e: # An error we somewhat expected + self.report_error(compat_str(e), e.format_traceback()) break except MaxDownloadsReached: raise except Exception as e: if self.params.get('ignoreerrors', False): - self.report_error(compat_str(e), tb=compat_str(traceback.format_exc())) + self.report_error(error_to_compat_str(e), tb=encode_compat_str(traceback.format_exc())) break else: raise @@ -704,7 +707,6 @@ class YoutubeDL(object): It will also download the videos if 'download'. Returns the resolved ie_result. """ - result_type = ie_result.get('_type', 'video') if result_type in ('url', 'url_transparent'): @@ -733,7 +735,7 @@ class YoutubeDL(object): force_properties = dict( (k, v) for k, v in ie_result.items() if v is not None) - for f in ('_type', 'url'): + for f in ('_type', 'url', 'ie_key'): if f in force_properties: del force_properties[f] new_result = info.copy() @@ -745,18 +747,18 @@ class YoutubeDL(object): new_result, download=download, extra_info=extra_info) elif result_type == 'playlist' or result_type == 'multi_video': # We process each entry in the playlist - playlist = ie_result.get('title', None) or ie_result.get('id', None) + playlist = ie_result.get('title') or ie_result.get('id') self.to_screen('[download] Downloading playlist: %s' % playlist) playlist_results = [] playliststart = self.params.get('playliststart', 1) - 1 - playlistend = self.params.get('playlistend', None) + playlistend = self.params.get('playlistend') # For backwards compatibility, interpret -1 as whole list if playlistend == -1: playlistend = None - playlistitems_str = self.params.get('playlist_items', None) + playlistitems_str = self.params.get('playlist_items') playlistitems = None if playlistitems_str is not None: def iter_playlistitems(format): @@ -780,7 +782,7 @@ class YoutubeDL(object): entries = ie_entries[playliststart:playlistend] n_entries = len(entries) self.to_screen( - "[%s] playlist %s: Collected %d video ids (downloading %d of them)" % + '[%s] playlist %s: Collected %d video ids (downloading %d of them)' % (ie_result['extractor'], playlist, n_all_entries, n_entries)) elif isinstance(ie_entries, PagedList): if playlistitems: @@ -794,7 +796,7 @@ class YoutubeDL(object): playliststart, playlistend) n_entries = len(entries) self.to_screen( - "[%s] playlist %s: Downloading %d videos" % + '[%s] playlist %s: Downloading %d videos' % (ie_result['extractor'], playlist, n_entries)) else: # iterable if playlistitems: @@ -805,7 +807,7 @@ class YoutubeDL(object): ie_entries, playliststart, playlistend)) n_entries = len(entries) self.to_screen( - "[%s] playlist %s: Downloading %d videos" % + '[%s] playlist %s: Downloading %d videos' % (ie_result['extractor'], playlist, n_entries)) if self.params.get('playlistreverse', False): @@ -896,11 +898,14 @@ class YoutubeDL(object): STR_OPERATORS = { '=': operator.eq, '!=': operator.ne, + '^=': lambda attr, value: attr.startswith(value), + '$=': lambda attr, value: attr.endswith(value), + '*=': lambda attr, value: value in attr, } str_operator_rex = re.compile(r'''(?x) \s*(?Pext|acodec|vcodec|container|protocol) \s*(?P%s)(?P\s*\?)? - \s*(?P[a-zA-Z0-9_-]+) + \s*(?P[a-zA-Z0-9._-]+) \s*$ ''' % '|'.join(map(re.escape, STR_OPERATORS.keys()))) m = str_operator_rex.search(filter_spec) @@ -1110,6 +1115,12 @@ class YoutubeDL(object): 'contain the video, try using ' '"-f %s+%s"' % (format_2, format_1)) return + # Formats must be opposite (video+audio) + if formats_info[0].get('acodec') == 'none' and formats_info[1].get('acodec') == 'none': + self.report_error( + 'Both formats %s and %s are video-only, you must specify "-f video+audio"' + % (format_1, format_2)) + return output_ext = ( formats_info[0]['ext'] if self.params.get('merge_output_format') is None @@ -1236,6 +1247,12 @@ class YoutubeDL(object): except (ValueError, OverflowError, OSError): pass + # Auto generate title fields corresponding to the *_number fields when missing + # in order to always have clean titles. This is very common for TV series. + for field in ('chapter', 'season', 'episode'): + if info_dict.get('%s_number' % field) is not None and not info_dict.get(field): + info_dict[field] = '%s %d' % (field.capitalize(), info_dict['%s_number' % field]) + subtitles = info_dict.get('subtitles') if subtitles: for _, subtitle in subtitles.items(): @@ -1271,6 +1288,9 @@ class YoutubeDL(object): if format.get('format_id') is None: format['format_id'] = compat_str(i) + else: + # Sanitize format_id from characters used in format selector expression + format['format_id'] = re.sub('[\s,/+\[\]()]', '_', format['format_id']) format_id = format['format_id'] if format_id not in formats_dict: formats_dict[format_id] = [] @@ -1292,6 +1312,10 @@ class YoutubeDL(object): # Automatically determine file extension if missing if 'ext' not in format: format['ext'] = determine_ext(format['url']).lower() + # Automatically determine protocol if missing (useful for format + # selection purposes) + if 'protocol' not in format: + format['protocol'] = determine_protocol(format) # Add HTTP headers, so that external programs can use them from the # json output full_format_info = info_dict.copy() @@ -1304,7 +1328,7 @@ class YoutubeDL(object): # only set the 'formats' fields if the original info_dict list them # otherwise we end up with a circular reference, the first (and unique) # element in the 'formats' field in info_dict is info_dict itself, - # wich can't be exported to json + # which can't be exported to json info_dict['formats'] = formats if self.params.get('listformats'): self.list_formats(info_dict) @@ -1317,7 +1341,6 @@ class YoutubeDL(object): if req_format is None: req_format_list = [] if (self.params.get('outtmpl', DEFAULT_OUTTMPL) != '-' and - info_dict['extractor'] in ['youtube', 'ted'] and not info_dict.get('is_live')): merger = FFmpegMergerPP(self) if merger.available and merger.can_merge(): @@ -1453,7 +1476,7 @@ class YoutubeDL(object): if dn and not os.path.exists(dn): os.makedirs(dn) except (OSError, IOError) as err: - self.report_error('unable to create directory ' + compat_str(err)) + self.report_error('unable to create directory ' + error_to_compat_str(err)) return if self.params.get('writedescription', False): @@ -1504,7 +1527,7 @@ class YoutubeDL(object): sub_info['url'], info_dict['id'], note=False) except ExtractorError as err: self.report_warning('Unable to download subtitle for "%s": %s' % - (sub_lang, compat_str(err.cause))) + (sub_lang, error_to_compat_str(err.cause))) continue try: sub_filename = subtitles_filename(filename, sub_lang, sub_format) @@ -1774,7 +1797,7 @@ class YoutubeDL(object): else: res = '%sp' % format['height'] elif format.get('width') is not None: - res = '?x%d' % format['width'] + res = '%dx?' % format['width'] else: res = default return res @@ -1783,6 +1806,10 @@ class YoutubeDL(object): res = '' if fdict.get('ext') in ['f4f', 'f4m']: res += '(unsupported) ' + if fdict.get('language'): + if res: + res += ' ' + res += '[%s]' % fdict['language'] if fdict.get('format_note') is not None: res += fdict['format_note'] + ' ' if fdict.get('tbr') is not None: @@ -1974,8 +2001,19 @@ class YoutubeDL(object): https_handler = make_HTTPS_handler(self.params, debuglevel=debuglevel) ydlh = YoutubeDLHandler(self.params, debuglevel=debuglevel) data_handler = compat_urllib_request_DataHandler() + + # When passing our own FileHandler instance, build_opener won't add the + # default FileHandler and allows us to disable the file protocol, which + # can be used for malicious purposes (see + # https://github.com/rg3/youtube-dl/issues/8227) + file_handler = compat_urllib_request.FileHandler() + + def file_open(*args, **kwargs): + raise compat_urllib_error.URLError('file:// scheme is explicitly disabled in youtube-dl for security reasons') + file_handler.file_open = file_open + opener = compat_urllib_request.build_opener( - proxy_handler, https_handler, cookie_processor, ydlh, data_handler) + proxy_handler, https_handler, cookie_processor, ydlh, data_handler, file_handler) # Delete the default user-agent header, which would otherwise apply in # cases where our custom HTTP handler doesn't come into play @@ -2033,4 +2071,4 @@ class YoutubeDL(object): (info_dict['extractor'], info_dict['id'], thumb_display_id, thumb_filename)) except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: self.report_warning('Unable to download thumbnail "%s": %s' % - (t['url'], compat_str(err))) + (t['url'], error_to_compat_str(err))) diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 9f131f5..f5f0642 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -369,6 +369,7 @@ def _real_main(argv=None): 'no_color': opts.no_color, 'ffmpeg_location': opts.ffmpeg_location, 'hls_prefer_native': opts.hls_prefer_native, + 'hls_use_mpegts': opts.hls_use_mpegts, 'external_downloader_args': external_downloader_args, 'postprocessor_args': postprocessor_args, 'cn_verification_proxy': opts.cn_verification_proxy, diff --git a/youtube_dl/__main__.py b/youtube_dl/__main__.py index 42a0f8c..138f5fb 100755 --- a/youtube_dl/__main__.py +++ b/youtube_dl/__main__.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals import sys -if __package__ is None and not hasattr(sys, "frozen"): +if __package__ is None and not hasattr(sys, 'frozen'): # direct call of __main__.py import os.path path = os.path.realpath(os.path.abspath(__file__)) diff --git a/youtube_dl/aes.py b/youtube_dl/aes.py index 7817adc..a01c367 100644 --- a/youtube_dl/aes.py +++ b/youtube_dl/aes.py @@ -161,7 +161,7 @@ def aes_decrypt_text(data, password, key_size_bytes): nonce = data[:NONCE_LENGTH_BYTES] cipher = data[NONCE_LENGTH_BYTES:] - class Counter: + class Counter(object): __value = nonce + [0] * (BLOCK_SIZE_BYTES - NONCE_LENGTH_BYTES) def next_value(self): diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index a3e8526..b497da6 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -181,20 +181,20 @@ except ImportError: # Python < 3.4 # parameter := attribute "=" value url = req.get_full_url() - scheme, data = url.split(":", 1) - mediatype, data = data.split(",", 1) + scheme, data = url.split(':', 1) + mediatype, data = data.split(',', 1) # even base64 encoded data URLs might be quoted so unquote in any case: data = compat_urllib_parse_unquote_to_bytes(data) - if mediatype.endswith(";base64"): + if mediatype.endswith(';base64'): data = binascii.a2b_base64(data) mediatype = mediatype[:-7] if not mediatype: - mediatype = "text/plain;charset=US-ASCII" + mediatype = 'text/plain;charset=US-ASCII' headers = email.message_from_string( - "Content-type: %s\nContent-length: %d\n" % (mediatype, len(data))) + 'Content-type: %s\nContent-length: %d\n' % (mediatype, len(data))) return compat_urllib_response.addinfourl(io.BytesIO(data), headers, url) @@ -268,7 +268,7 @@ except ImportError: # Python 2 nv = name_value.split('=', 1) if len(nv) != 2: if strict_parsing: - raise ValueError("bad query field: %r" % (name_value,)) + raise ValueError('bad query field: %r' % (name_value,)) # Handle case of a control-name with no equal sign if keep_blank_values: nv.append('') @@ -433,7 +433,7 @@ if sys.version_info < (3, 0) and sys.platform == 'win32': else: compat_getpass = getpass.getpass -# Old 2.6 and 2.7 releases require kwargs to be bytes +# Python < 2.6.5 require kwargs to be bytes try: def _testfunc(x): pass @@ -466,7 +466,7 @@ if sys.version_info < (2, 7): if err is not None: raise err else: - raise socket.error("getaddrinfo returns an empty list") + raise socket.error('getaddrinfo returns an empty list') else: compat_socket_create_connection = socket.create_connection diff --git a/youtube_dl/downloader/common.py b/youtube_dl/downloader/common.py index b8bf8da..2d51540 100644 --- a/youtube_dl/downloader/common.py +++ b/youtube_dl/downloader/common.py @@ -5,9 +5,9 @@ import re import sys import time -from ..compat import compat_str from ..utils import ( encodeFilename, + error_to_compat_str, decodeArgument, format_bytes, timeconvert, @@ -45,6 +45,7 @@ class FileDownloader(object): (experimental) external_downloader_args: A list of additional command-line arguments for the external downloader. + hls_use_mpegts: Use the mpegts container for HLS videos. Subclasses of this one must re-define the real_download method. """ @@ -156,7 +157,7 @@ class FileDownloader(object): def slow_down(self, start_time, now, byte_counter): """Sleep if the download speed is over the rate limit.""" - rate_limit = self.params.get('ratelimit', None) + rate_limit = self.params.get('ratelimit') if rate_limit is None or byte_counter == 0: return if now is None: @@ -186,7 +187,7 @@ class FileDownloader(object): return os.rename(encodeFilename(old_filename), encodeFilename(new_filename)) except (IOError, OSError) as err: - self.report_error('unable to rename file: %s' % compat_str(err)) + self.report_error('unable to rename file: %s' % error_to_compat_str(err)) def try_utime(self, filename, last_modified_hdr): """Try to set the last-modified time of the given file.""" @@ -295,7 +296,7 @@ class FileDownloader(object): def report_retry(self, count, retries): """Report retry in case of HTTP error 5xx""" - self.to_screen('[download] Got server HTTP error. Retrying (attempt %d of %d)...' % (count, retries)) + self.to_screen('[download] Got server HTTP error. Retrying (attempt %d of %.0f)...' % (count, retries)) def report_file_already_downloaded(self, file_name): """Report file has already been fully downloaded.""" diff --git a/youtube_dl/downloader/dash.py b/youtube_dl/downloader/dash.py index 535f2a7..8b1b17c 100644 --- a/youtube_dl/downloader/dash.py +++ b/youtube_dl/downloader/dash.py @@ -1,66 +1,59 @@ from __future__ import unicode_literals +import os import re -from .common import FileDownloader -from ..utils import sanitized_Request +from .fragment import FragmentFD +from ..utils import ( + sanitize_open, + encodeFilename, +) -class DashSegmentsFD(FileDownloader): +class DashSegmentsFD(FragmentFD): """ Download segments in a DASH manifest """ - def real_download(self, filename, info_dict): - self.report_destination(filename) - tmpfilename = self.temp_name(filename) - base_url = info_dict['url'] - segment_urls = info_dict['segment_urls'] - - is_test = self.params.get('test', False) - remaining_bytes = self._TEST_FILE_SIZE if is_test else None - byte_counter = 0 - def append_url_to_file(outf, target_url, target_name, remaining_bytes=None): - self.to_screen('[DashSegments] %s: Downloading %s' % (info_dict['id'], target_name)) - req = sanitized_Request(target_url) - if remaining_bytes is not None: - req.add_header('Range', 'bytes=0-%d' % (remaining_bytes - 1)) + FD_NAME = 'dashsegments' - data = self.ydl.urlopen(req).read() + def real_download(self, filename, info_dict): + base_url = info_dict['url'] + segment_urls = [info_dict['segment_urls'][0]] if self.params.get('test', False) else info_dict['segment_urls'] + initialization_url = info_dict.get('initialization_url') - if remaining_bytes is not None: - data = data[:remaining_bytes] + ctx = { + 'filename': filename, + 'total_frags': len(segment_urls) + (1 if initialization_url else 0), + } - outf.write(data) - return len(data) + self._prepare_and_start_frag_download(ctx) def combine_url(base_url, target_url): if re.match(r'^https?://', target_url): return target_url return '%s%s%s' % (base_url, '' if base_url.endswith('/') else '/', target_url) - with open(tmpfilename, 'wb') as outf: - append_url_to_file( - outf, combine_url(base_url, info_dict['initialization_url']), - 'initialization segment') - for i, segment_url in enumerate(segment_urls): - segment_len = append_url_to_file( - outf, combine_url(base_url, segment_url), - 'segment %d / %d' % (i + 1, len(segment_urls)), - remaining_bytes) - byte_counter += segment_len - if remaining_bytes is not None: - remaining_bytes -= segment_len - if remaining_bytes <= 0: - break + segments_filenames = [] - self.try_rename(tmpfilename, filename) + def append_url_to_file(target_url, target_filename): + success = ctx['dl'].download(target_filename, {'url': combine_url(base_url, target_url)}) + if not success: + return False + down, target_sanitized = sanitize_open(target_filename, 'rb') + ctx['dest_stream'].write(down.read()) + down.close() + segments_filenames.append(target_sanitized) - self._hook_progress({ - 'downloaded_bytes': byte_counter, - 'total_bytes': byte_counter, - 'filename': filename, - 'status': 'finished', - }) + if initialization_url: + append_url_to_file(initialization_url, ctx['tmpfilename'] + '-Init') + for i, segment_url in enumerate(segment_urls): + segment_filename = '%s-Seg%d' % (ctx['tmpfilename'], i) + append_url_to_file(segment_url, segment_filename) + + self._finish_frag_download(ctx) + + for segment_file in segments_filenames: + os.remove(encodeFilename(segment_file)) return True diff --git a/youtube_dl/downloader/f4m.py b/youtube_dl/downloader/f4m.py index 6170cc1..fc96429 100644 --- a/youtube_dl/downloader/f4m.py +++ b/youtube_dl/downloader/f4m.py @@ -15,6 +15,7 @@ from ..compat import ( ) from ..utils import ( encodeFilename, + fix_xml_ampersands, sanitize_open, struct_pack, struct_unpack, @@ -272,15 +273,21 @@ class F4mFD(FragmentFD): return fragments_list def _parse_bootstrap_node(self, node, base_url): - if node.text is None: + # Sometimes non empty inline bootstrap info can be specified along + # with bootstrap url attribute (e.g. dummy inline bootstrap info + # contains whitespace characters in [1]). We will prefer bootstrap + # url over inline bootstrap info when present. + # 1. http://live-1-1.rutube.ru/stream/1024/HDS/SD/C2NKsS85HQNckgn5HdEmOQ/1454167650/S-s604419906/move/four/dirs/upper/1024-576p.f4m + bootstrap_url = node.get('url') + if bootstrap_url: bootstrap_url = compat_urlparse.urljoin( - base_url, node.attrib['url']) + base_url, bootstrap_url) boot_info = self._get_bootstrap_from_url(bootstrap_url) else: bootstrap_url = None bootstrap = base64.b64decode(node.text.encode('ascii')) boot_info = read_bootstrap_info(bootstrap) - return (boot_info, bootstrap_url) + return boot_info, bootstrap_url def real_download(self, filename, info_dict): man_url = info_dict['url'] @@ -288,7 +295,10 @@ class F4mFD(FragmentFD): self.to_screen('[%s] Downloading f4m manifest' % self.FD_NAME) urlh = self.ydl.urlopen(man_url) man_url = urlh.geturl() - manifest = urlh.read() + # Some manifests may be malformed, e.g. prosiebensat1 generated manifests + # (see https://github.com/rg3/youtube-dl/issues/6215#issuecomment-121704244 + # and https://github.com/rg3/youtube-dl/issues/7823) + manifest = fix_xml_ampersands(urlh.read().decode('utf-8', 'ignore')).strip() doc = compat_etree_fromstring(manifest) formats = [(int(f.attrib.get('bitrate', -1)), f) @@ -312,7 +322,8 @@ class F4mFD(FragmentFD): metadata = None fragments_list = build_fragments_list(boot_info) - if self.params.get('test', False): + test = self.params.get('test', False) + if test: # We only download the first fragment fragments_list = fragments_list[:1] total_frags = len(fragments_list) @@ -322,6 +333,7 @@ class F4mFD(FragmentFD): ctx = { 'filename': filename, 'total_frags': total_frags, + 'live': live, } self._prepare_frag_download(ctx) @@ -376,7 +388,7 @@ class F4mFD(FragmentFD): else: raise - if not fragments_list and live and bootstrap_url: + if not fragments_list and not test and live and bootstrap_url: fragments_list = self._update_live_fragments(bootstrap_url, frag_i) total_frags += len(fragments_list) if fragments_list and (fragments_list[0][1] > frag_i + 1): diff --git a/youtube_dl/downloader/fragment.py b/youtube_dl/downloader/fragment.py index 5a64b29..5bc9949 100644 --- a/youtube_dl/downloader/fragment.py +++ b/youtube_dl/downloader/fragment.py @@ -26,7 +26,11 @@ class FragmentFD(FileDownloader): self._start_frag_download(ctx) def _prepare_frag_download(self, ctx): - self.to_screen('[%s] Total fragments: %d' % (self.FD_NAME, ctx['total_frags'])) + if 'live' not in ctx: + ctx['live'] = False + self.to_screen( + '[%s] Total fragments: %s' + % (self.FD_NAME, ctx['total_frags'] if not ctx['live'] else 'unknown (live)')) self.report_destination(ctx['filename']) dl = HttpQuietDownloader( self.ydl, @@ -34,7 +38,7 @@ class FragmentFD(FileDownloader): 'continuedl': True, 'quiet': True, 'noprogress': True, - 'ratelimit': self.params.get('ratelimit', None), + 'ratelimit': self.params.get('ratelimit'), 'retries': self.params.get('retries', 0), 'test': self.params.get('test', False), } @@ -59,37 +63,44 @@ class FragmentFD(FileDownloader): 'filename': ctx['filename'], 'tmpfilename': ctx['tmpfilename'], } + start = time.time() - ctx['started'] = start + ctx.update({ + 'started': start, + # Total complete fragments downloaded so far in bytes + 'complete_frags_downloaded_bytes': 0, + # Amount of fragment's bytes downloaded by the time of the previous + # frag progress hook invocation + 'prev_frag_downloaded_bytes': 0, + }) def frag_progress_hook(s): if s['status'] not in ('downloading', 'finished'): return - frag_total_bytes = s.get('total_bytes', 0) - if s['status'] == 'finished': - state['downloaded_bytes'] += frag_total_bytes - state['frag_index'] += 1 - - estimated_size = ( - (state['downloaded_bytes'] + frag_total_bytes) / - (state['frag_index'] + 1) * total_frags) time_now = time.time() - state['total_bytes_estimate'] = estimated_size state['elapsed'] = time_now - start + frag_total_bytes = s.get('total_bytes') or 0 + if not ctx['live']: + estimated_size = ( + (ctx['complete_frags_downloaded_bytes'] + frag_total_bytes) / + (state['frag_index'] + 1) * total_frags) + state['total_bytes_estimate'] = estimated_size if s['status'] == 'finished': - progress = self.calc_percent(state['frag_index'], total_frags) + state['frag_index'] += 1 + state['downloaded_bytes'] += frag_total_bytes - ctx['prev_frag_downloaded_bytes'] + ctx['complete_frags_downloaded_bytes'] = state['downloaded_bytes'] + ctx['prev_frag_downloaded_bytes'] = 0 else: frag_downloaded_bytes = s['downloaded_bytes'] - frag_progress = self.calc_percent(frag_downloaded_bytes, - frag_total_bytes) - progress = self.calc_percent(state['frag_index'], total_frags) - progress += frag_progress / float(total_frags) - - state['eta'] = self.calc_eta( - start, time_now, estimated_size, state['downloaded_bytes'] + frag_downloaded_bytes) + state['downloaded_bytes'] += frag_downloaded_bytes - ctx['prev_frag_downloaded_bytes'] + if not ctx['live']: + state['eta'] = self.calc_eta( + start, time_now, estimated_size, + state['downloaded_bytes']) state['speed'] = s.get('speed') + ctx['prev_frag_downloaded_bytes'] = frag_downloaded_bytes self._hook_progress(state) ctx['dl'].add_progress_hook(frag_progress_hook) diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 92765a3..2a775bf 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import os import re import subprocess +import sys from .common import FileDownloader from .fragment import FragmentFD @@ -13,6 +14,7 @@ from ..utils import ( encodeArgument, encodeFilename, sanitize_open, + handle_youtubedl_headers, ) @@ -33,18 +35,34 @@ class HlsFD(FileDownloader): if info_dict['http_headers'] and re.match(r'^https?://', url): # Trailing \r\n after each HTTP header is important to prevent warning from ffmpeg/avconv: # [http @ 00000000003d2fa0] No trailing CRLF found in HTTP header. + headers = handle_youtubedl_headers(info_dict['http_headers']) args += [ '-headers', - ''.join('%s: %s\r\n' % (key, val) for key, val in info_dict['http_headers'].items() if key.lower() != 'accept-encoding')] + ''.join('%s: %s\r\n' % (key, val) for key, val in headers.items())] - args += ['-i', url, '-f', 'mp4', '-c', 'copy', '-bsf:a', 'aac_adtstoasc'] + args += ['-i', url, '-c', 'copy'] + if self.params.get('hls_use_mpegts', False): + args += ['-f', 'mpegts'] + else: + args += ['-f', 'mp4', '-bsf:a', 'aac_adtstoasc'] args = [encodeArgument(opt) for opt in args] args.append(encodeFilename(ffpp._ffmpeg_filename_argument(tmpfilename), True)) self._debug_cmd(args) - retval = subprocess.call(args) + proc = subprocess.Popen(args, stdin=subprocess.PIPE) + try: + retval = proc.wait() + except KeyboardInterrupt: + # subprocces.run would send the SIGKILL signal to ffmpeg and the + # mp4 file couldn't be played, but if we ask ffmpeg to quit it + # produces a file that is playable (this is mostly useful for live + # streams). Note that Windows is not affected and produces playable + # files (see https://github.com/rg3/youtube-dl/issues/8300). + if sys.platform != 'win32': + proc.communicate(b'q') + raise if retval == 0: fsize = os.path.getsize(encodeFilename(tmpfilename)) self.to_screen('\r[%s] %s bytes' % (args[0], fsize)) diff --git a/youtube_dl/downloader/http.py b/youtube_dl/downloader/http.py index 56840e0..f8b69d1 100644 --- a/youtube_dl/downloader/http.py +++ b/youtube_dl/downloader/http.py @@ -140,8 +140,8 @@ class HttpFD(FileDownloader): if data_len is not None: data_len = int(data_len) + resume_len - min_data_len = self.params.get("min_filesize", None) - max_data_len = self.params.get("max_filesize", None) + min_data_len = self.params.get('min_filesize') + max_data_len = self.params.get('max_filesize') if min_data_len is not None and data_len < min_data_len: self.to_screen('\r[download] File is smaller than min-filesize (%s bytes < %s bytes). Aborting.' % (data_len, min_data_len)) return False diff --git a/youtube_dl/downloader/rtmp.py b/youtube_dl/downloader/rtmp.py index 14d56db..9de6e70 100644 --- a/youtube_dl/downloader/rtmp.py +++ b/youtube_dl/downloader/rtmp.py @@ -94,15 +94,15 @@ class RtmpFD(FileDownloader): return proc.returncode url = info_dict['url'] - player_url = info_dict.get('player_url', None) - page_url = info_dict.get('page_url', None) - app = info_dict.get('app', None) - play_path = info_dict.get('play_path', None) - tc_url = info_dict.get('tc_url', None) - flash_version = info_dict.get('flash_version', None) + player_url = info_dict.get('player_url') + page_url = info_dict.get('page_url') + app = info_dict.get('app') + play_path = info_dict.get('play_path') + tc_url = info_dict.get('tc_url') + flash_version = info_dict.get('flash_version') live = info_dict.get('rtmp_live', False) - conn = info_dict.get('rtmp_conn', None) - protocol = info_dict.get('rtmp_protocol', None) + conn = info_dict.get('rtmp_conn') + protocol = info_dict.get('rtmp_protocol') real_time = info_dict.get('rtmp_real_time', False) no_resume = info_dict.get('no_resume', False) continue_dl = self.params.get('continuedl', True) diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 947b836..1ae606f 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -3,24 +3,34 @@ from __future__ import unicode_literals from .abc import ABCIE from .abc7news import Abc7NewsIE from .academicearth import AcademicEarthCourseIE +from .acast import ( + ACastIE, + ACastChannelIE, +) from .addanime import AddAnimeIE from .adobetv import ( AdobeTVIE, + AdobeTVShowIE, + AdobeTVChannelIE, AdobeTVVideoIE, ) from .adultswim import AdultSwimIE -from .aftenposten import AftenpostenIE +from .aenetworks import AENetworksIE from .aftonbladet import AftonbladetIE from .airmozilla import AirMozillaIE from .aljazeera import AlJazeeraIE from .alphaporno import AlphaPornoIE +from .animeondemand import AnimeOnDemandIE from .anitube import AnitubeIE from .anysex import AnySexIE from .aol import AolIE from .allocine import AllocineIE from .aparat import AparatIE from .appleconnect import AppleConnectIE -from .appletrailers import AppleTrailersIE +from .appletrailers import ( + AppleTrailersIE, + AppleTrailersSectionIE, +) from .archiveorg import ArchiveOrgIE from .ard import ( ARDIE, @@ -33,13 +43,16 @@ from .arte import ( ArteTVCreativeIE, ArteTVConcertIE, ArteTVFutureIE, + ArteTVCinemaIE, ArteTVDDCIE, + ArteTVMagazineIE, ArteTVEmbedIE, ) from .atresplayer import AtresPlayerIE from .atttechchannel import ATTTechChannelIE +from .audimedia import AudiMediaIE from .audiomack import AudiomackIE, AudiomackAlbumIE -from .azubu import AzubuIE +from .azubu import AzubuIE, AzubuLiveIE from .baidu import BaiduVideoIE from .bambuser import BambuserIE, BambuserChannelIE from .bandcamp import BandcampIE, BandcampAlbumIE @@ -52,10 +65,14 @@ from .beeg import BeegIE from .behindkink import BehindKinkIE from .beatportpro import BeatportProIE from .bet import BetIE +from .bigflix import BigflixIE from .bild import BildIE from .bilibili import BiliBiliIE +from .bleacherreport import ( + BleacherReportIE, + BleacherReportCMSIE, +) from .blinkx import BlinkxIE -from .bliptv import BlipTVIE, BlipTVUserIE from .bloomberg import BloombergIE from .bpb import BpbIE from .br import BRIE @@ -71,11 +88,18 @@ from .camdemy import ( CamdemyIE, CamdemyFolderIE ) -from .canal13cl import Canal13clIE from .canalplus import CanalplusIE from .canalc2 import Canalc2IE +from .canvas import CanvasIE +from .cbc import ( + CBCIE, + CBCPlayerIE, +) from .cbs import CBSIE -from .cbsnews import CBSNewsIE +from .cbsnews import ( + CBSNewsIE, + CBSNewsLiveVideoIE, +) from .cbssports import CBSSportsIE from .ccc import CCCIE from .ceskatelevize import CeskaTelevizeIE @@ -108,6 +132,7 @@ from .comcarcoff import ComCarCoffIE from .commonmistakes import CommonMistakesIE, UnicodeBOMIE from .condenast import CondeNastIE from .cracked import CrackedIE +from .crackle import CrackleIE from .criterion import CriterionIE from .crooksandliars import CrooksAndLiarsIE from .crunchyroll import ( @@ -116,15 +141,27 @@ from .crunchyroll import ( ) from .cspan import CSpanIE from .ctsnews import CtsNewsIE +from .cultureunplugged import CultureUnpluggedIE +from .cwtv import CWTVIE from .dailymotion import ( DailymotionIE, DailymotionPlaylistIE, DailymotionUserIE, DailymotionCloudIE, ) -from .daum import DaumIE +from .daum import ( + DaumIE, + DaumClipIE, + DaumPlaylistIE, + DaumUserIE, +) from .dbtv import DBTVIE -from .dcn import DCNIE +from .dcn import ( + DCNIE, + DCNVideoIE, + DCNLiveIE, + DCNSeasonIE, +) from .dctp import DctpTvIE from .deezer import DeezerPlaylistIE from .democracynow import DemocracynowIE @@ -171,7 +208,10 @@ from .everyonesmixtape import EveryonesMixtapeIE from .exfm import ExfmIE from .expotv import ExpoTVIE from .extremetube import ExtremeTubeIE -from .facebook import FacebookIE +from .facebook import ( + FacebookIE, + FacebookPostIE, +) from .faz import FazIE from .fc2 import FC2IE from .fczenit import FczenitIE @@ -184,10 +224,14 @@ from .flickr import FlickrIE from .folketinget import FolketingetIE from .footyroom import FootyRoomIE from .fourtube import FourTubeIE +from .fox import FOXIE from .foxgay import FoxgayIE from .foxnews import FoxNewsIE from .foxsports import FoxSportsIE -from .franceculture import FranceCultureIE +from .franceculture import ( + FranceCultureIE, + FranceCultureEmissionIE, +) from .franceinter import FranceInterIE from .francetv import ( PluzzIE, @@ -199,7 +243,9 @@ from .francetv import ( from .freesound import FreesoundIE from .freespeech import FreespeechIE from .freevideo import FreeVideoIE +from .funimation import FunimationIE from .funnyordie import FunnyOrDieIE +from .gameinformer import GameInformerIE from .gamekings import GamekingsIE from .gameone import ( GameOneIE, @@ -223,9 +269,11 @@ from .globo import ( from .godtube import GodTubeIE from .goldenmoustache import GoldenMoustacheIE from .golem import GolemIE +from .googledrive import GoogleDriveIE from .googleplus import GooglePlusIE from .googlesearch import GoogleSearchIE from .goshgay import GoshgayIE +from .gputechconf import GPUTechConfIE from .groupon import GrouponIE from .hark import HarkIE from .hearthisat import HearThisAtIE @@ -234,16 +282,20 @@ from .hellporno import HellPornoIE from .helsinki import HelsinkiIE from .hentaistigma import HentaiStigmaIE from .historicfilms import HistoricFilmsIE -from .history import HistoryIE from .hitbox import HitboxIE, HitboxLiveIE from .hornbunny import HornBunnyIE from .hotnewhiphop import HotNewHipHopIE +from .hotstar import HotStarIE from .howcast import HowcastIE from .howstuffworks import HowStuffWorksIE from .huffpost import HuffPostIE from .hypem import HypemIE from .iconosquare import IconosquareIE -from .ign import IGNIE, OneUPIE +from .ign import ( + IGNIE, + OneUPIE, + PCMagIE, +) from .imdb import ( ImdbIE, ImdbListIE @@ -267,11 +319,12 @@ from .ivi import ( IviIE, IviCompilationIE ) +from .ivideon import IvideonIE from .izlesene import IzleseneIE from .jadorecettepub import JadoreCettePubIE from .jeuxvideo import JeuxVideoIE from .jove import JoveIE -from .jukebox import JukeboxIE +from .jwplatform import JWPlatformIE from .jpopsukitv import JpopsukiIE from .kaltura import KalturaIE from .kanalplay import KanalPlayIE @@ -282,6 +335,7 @@ from .keezmovies import KeezMoviesIE from .khanacademy import KhanAcademyIE from .kickstarter import KickStarterIE from .keek import KeekIE +from .konserthusetplay import KonserthusetPlayIE from .kontrtube import KontrTubeIE from .krasview import KrasViewIE from .ku6 import Ku6IE @@ -296,10 +350,12 @@ from .kuwo import ( from .la7 import LA7IE from .laola1tv import Laola1TvIE from .lecture2go import Lecture2GoIE +from .lemonde import LemondeIE from .letv import ( LetvIE, LetvTvIE, - LetvPlaylistIE + LetvPlaylistIE, + LetvCloudIE, ) from .libsyn import LibsynIE from .lifenews import ( @@ -318,6 +374,7 @@ from .livestream import ( LivestreamShortenerIE, ) from .lnkgo import LnkGoIE +from .lovehomeporn import LoveHomePornIE from .lrt import LRTIE from .lynda import ( LyndaIE, @@ -326,7 +383,9 @@ from .lynda import ( from .m6 import M6IE from .macgamestore import MacGameStoreIE from .mailru import MailRuIE +from .makertv import MakerTVIE from .malemotion import MalemotionIE +from .matchtv import MatchTVIE from .mdr import MDRIE from .metacafe import MetacafeIE from .metacritic import MetacriticIE @@ -349,7 +408,6 @@ from .motherless import MotherlessIE from .motorsport import MotorsportIE from .movieclips import MovieClipsIE from .moviezine import MoviezineIE -from .movshare import MovShareIE from .mtv import ( MTVIE, MTVServicesEmbeddedIE, @@ -402,6 +460,7 @@ from .nextmedia import ( NextMediaActionNewsIE, AppleDailyIE, ) +from .nextmovie import NextMovieIE from .nfb import NFBIE from .nfl import NFLIE from .nhl import ( @@ -409,13 +468,20 @@ from .nhl import ( NHLNewsIE, NHLVideocenterIE, ) +from .nick import NickIE from .niconico import NiconicoIE, NiconicoPlaylistIE from .ninegag import NineGagIE from .noco import NocoIE from .normalboots import NormalbootsIE from .nosvideo import NosVideoIE from .nova import NovaIE -from .novamov import NovaMovIE +from .novamov import ( + NovaMovIE, + WholeCloudIE, + NowVideoIE, + VideoWeedIE, + CloudTimeIE, +) from .nowness import ( NownessIE, NownessPlaylistIE, @@ -425,15 +491,17 @@ from .nowtv import ( NowTVIE, NowTVListIE, ) -from .nowvideo import NowVideoIE +from .noz import NozIE from .npo import ( NPOIE, NPOLiveIE, NPORadioIE, NPORadioFragmentIE, + SchoolTVIE, VPROIE, WNLIE ) +from .npr import NprIE from .nrk import ( NRKIE, NRKPlaylistIE, @@ -453,12 +521,14 @@ from .ooyala import ( OoyalaIE, OoyalaExternalIE, ) +from .ora import OraTVIE from .orf import ( ORFTVthekIE, ORFOE1IE, ORFFM4IE, ORFIPTVIE, ) +from .pandoratv import PandoraTVIE from .parliamentliveuk import ParliamentLiveUKIE from .patreon import PatreonIE from .pbs import PBSIE @@ -471,6 +541,7 @@ from .planetaplay import PlanetaPlayIE from .pladform import PladformIE from .played import PlayedIE from .playfm import PlayFMIE +from .plays import PlaysTVIE from .playtvak import PlaytvakIE from .playvid import PlayvidIE from .playwire import PlaywireIE @@ -484,6 +555,7 @@ from .pornhd import PornHdIE from .pornhub import ( PornHubIE, PornHubPlaylistIE, + PornHubUserVideosIE, ) from .pornotube import PornotubeIE from .pornovoisines import PornoVoisinesIE @@ -506,18 +578,23 @@ from .radiode import RadioDeIE from .radiojavan import RadioJavanIE from .radiobremen import RadioBremenIE from .radiofrance import RadioFranceIE -from .rai import RaiIE +from .rai import ( + RaiTVIE, + RaiIE, +) from .rbmaradio import RBMARadioIE from .rds import RDSIE from .redtube import RedTubeIE +from .regiotv import RegioTVIE from .restudy import RestudyIE from .reverbnation import ReverbNationIE +from .revision3 import Revision3IE from .ringtv import RingTVIE from .ro220 import Ro220IE from .rottentomatoes import RottenTomatoesIE from .roxwel import RoxwelIE from .rtbf import RTBFIE -from .rte import RteIE +from .rte import RteIE, RteRadioIE from .rtlnl import RtlNlIE from .rtl2 import RTL2IE from .rtp import RTPIE @@ -525,6 +602,7 @@ from .rts import RTSIE from .rtve import RTVEALaCartaIE, RTVELiveIE, RTVEInfantilIE from .rtvnh import RTVNHIE from .ruhd import RUHDIE +from .ruleporn import RulePornIE from .rutube import ( RutubeIE, RutubeChannelIE, @@ -545,6 +623,7 @@ from .sbs import SBSIE from .scivee import SciVeeIE from .screencast import ScreencastIE from .screencastomatic import ScreencastOMaticIE +from .screenjunkies import ScreenJunkiesIE from .screenwavemedia import ScreenwaveMediaIE, TeamFourIE from .senateisvp import SenateISVPIE from .servingsys import ServingSysIE @@ -554,6 +633,10 @@ from .shahid import ShahidIE from .shared import SharedIE from .sharesix import ShareSixIE from .sina import SinaIE +from .skynewsarabia import ( + SkyNewsArabiaIE, + SkyNewsArabiaArticleIE, +) from .slideshare import SlideshareIE from .slutload import SlutloadIE from .smotri import ( @@ -568,10 +651,6 @@ from .snagfilms import ( ) from .snotr import SnotrIE from .sohu import SohuIE -from .soompi import ( - SoompiIE, - SoompiShowIE, -) from .soundcloud import ( SoundcloudIE, SoundcloudSetIE, @@ -603,7 +682,10 @@ from .sportbox import ( SportBoxEmbedIE, ) from .sportdeutschland import SportDeutschlandIE -from .srf import SrfIE +from .srgssr import ( + SRGSSRIE, + SRGSSRPlayIE, +) from .srmediathek import SRMediathekIE from .ssa import SSAIE from .stanfordoc import StanfordOpenClassroomIE @@ -630,6 +712,7 @@ from .teachingchannel import TeachingChannelIE from .teamcoco import TeamcocoIE from .techtalks import TechTalksIE from .ted import TEDIE +from .tele13 import Tele13IE from .telebruxelles import TeleBruxellesIE from .telecinco import TelecincoIE from .telegraaf import TelegraafIE @@ -637,8 +720,8 @@ from .telemb import TeleMBIE from .teletask import TeleTaskIE from .tenplay import TenPlayIE from .testurl import TestURLIE -from .testtube import TestTubeIE from .tf1 import TF1IE +from .theintercept import TheInterceptIE from .theonion import TheOnionIE from .theplatform import ( ThePlatformIE, @@ -648,7 +731,7 @@ from .thesixtyone import TheSixtyOneIE from .thisamericanlife import ThisAmericanLifeIE from .thisav import ThisAVIE from .tinypic import TinyPicIE -from .tlc import TlcIE, TlcDeIE +from .tlc import TlcDeIE from .tmz import ( TMZIE, TMZArticleIE, @@ -658,6 +741,7 @@ from .tnaflix import ( EMPFlixIE, MovieFapIE, ) +from .toggle import ToggleIE from .thvideo import ( THVideoIE, THVideoPlaylistIE @@ -666,12 +750,23 @@ from .toutv import TouTvIE from .toypics import ToypicsUserIE, ToypicsIE from .traileraddict import TrailerAddictIE from .trilulilu import TriluliluIE +from .trollvids import TrollvidsIE from .trutube import TruTubeIE from .tube8 import Tube8IE from .tubitv import TubiTvIE -from .tudou import TudouIE +from .tudou import ( + TudouIE, + TudouPlaylistIE, + TudouAlbumIE, +) from .tumblr import TumblrIE -from .tunein import TuneInIE +from .tunein import ( + TuneInClipIE, + TuneInStationIE, + TuneInProgramIE, + TuneInTopicIE, + TuneInShortenerIE, +) from .turbo import TurboIE from .tutv import TutvIE from .tv2 import ( @@ -684,10 +779,12 @@ from .tvc import ( TVCArticleIE, ) from .tvigle import TvigleIE +from .tvland import TVLandIE from .tvp import TvpIE, TvpSeriesIE from .tvplay import TVPlayIE from .tweakers import TweakersIE from .twentyfourvideo import TwentyFourVideoIE +from .twentymin import TwentyMinutenIE from .twentytwotracks import ( TwentyTwoTracksIE, TwentyTwoTracksGenreIE @@ -701,14 +798,18 @@ from .twitch import ( TwitchBookmarksIE, TwitchStreamIE, ) -from .twitter import TwitterCardIE, TwitterIE +from .twitter import ( + TwitterCardIE, + TwitterIE, + TwitterAmplifyIE, +) from .ubu import UbuIE from .udemy import ( UdemyIE, UdemyCourseIE ) from .udn import UDNEmbedIE -from .ultimedia import UltimediaIE +from .digiteka import DigitekaIE from .unistra import UnistraIE from .urort import UrortIE from .ustream import UstreamIE, UstreamChannelIE @@ -730,10 +831,18 @@ from .viddler import ViddlerIE from .videodetective import VideoDetectiveIE from .videofyme import VideofyMeIE from .videomega import VideoMegaIE +from .videomore import ( + VideomoreIE, + VideomoreVideoIE, + VideomoreSeasonIE, +) from .videopremium import VideoPremiumIE from .videott import VideoTtIE -from .videoweed import VideoWeedIE -from .vidme import VidmeIE +from .vidme import ( + VidmeIE, + VidmeUserIE, + VidmeUserLikesIE, +) from .vidzi import VidziIE from .vier import VierIE, VierVideosIE from .viewster import ViewsterIE @@ -783,6 +892,7 @@ from .webofstories import ( WebOfStoriesPlaylistIE, ) from .weibo import WeiboIE +from .weiqitv import WeiqiTVIE from .wimp import WimpIE from .wistia import WistiaIE from .worldstarhiphop import WorldStarHipHopIE @@ -834,7 +944,7 @@ from .youtube import ( YoutubeTruncatedIDIE, YoutubeTruncatedURLIE, YoutubeUserIE, - YoutubeUserPlaylistsIE, + YoutubePlaylistsIE, YoutubeWatchLaterIE, ) from .zapiks import ZapiksIE @@ -843,6 +953,7 @@ from .zingmp3 import ( ZingMp3SongIE, ZingMp3AlbumIE, ) +from .zippcast import ZippCastIE _ALL_CLASSES = [ klass diff --git a/youtube_dl/extractor/abc.py b/youtube_dl/extractor/abc.py index c0e5d1a..6a29e58 100644 --- a/youtube_dl/extractor/abc.py +++ b/youtube_dl/extractor/abc.py @@ -23,6 +23,7 @@ class ABCIE(InfoExtractor): 'title': 'Australia to help staff Ebola treatment centre in Sierra Leone', 'description': 'md5:809ad29c67a05f54eb41f2a105693a67', }, + 'skip': 'this video has expired', }, { 'url': 'http://www.abc.net.au/news/2015-08-17/warren-entsch-introduces-same-sex-marriage-bill/6702326', 'md5': 'db2a5369238b51f9811ad815b69dc086', @@ -36,6 +37,7 @@ class ABCIE(InfoExtractor): 'title': 'Marriage Equality: Warren Entsch introduces same sex marriage bill', }, 'add_ie': ['Youtube'], + 'skip': 'Not accessible from Travis CI server', }, { 'url': 'http://www.abc.net.au/news/2015-10-23/nab-lifts-interest-rates-following-westpac-and-cba/6880080', 'md5': 'b96eee7c9edf4fc5a358a0252881cc1f', @@ -58,6 +60,9 @@ class ABCIE(InfoExtractor): r'inline(?PVideo|Audio|YouTube)Data\.push\((?P[^)]+)\);', webpage) if mobj is None: + expired = self._html_search_regex(r'(?s)class="expired-(?:video|audio)".+?(.+?)', webpage, 'expired', None) + if expired: + raise ExtractorError('%s said: %s' % (self.IE_NAME, expired), expected=True) raise ExtractorError('Unable to extract video urls') urls_info = self._parse_json( diff --git a/youtube_dl/extractor/abc7news.py b/youtube_dl/extractor/abc7news.py index c04949c..122dc90 100644 --- a/youtube_dl/extractor/abc7news.py +++ b/youtube_dl/extractor/abc7news.py @@ -44,7 +44,6 @@ class Abc7NewsIE(InfoExtractor): 'contentURL', webpage, 'm3u8 url', fatal=True) formats = self._extract_m3u8_formats(m3u8, display_id, 'mp4') - self._sort_formats(formats) title = self._og_search_title(webpage).strip() description = self._og_search_description(webpage).strip() diff --git a/youtube_dl/extractor/acast.py b/youtube_dl/extractor/acast.py new file mode 100644 index 0000000..92eee81 --- /dev/null +++ b/youtube_dl/extractor/acast.py @@ -0,0 +1,72 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..compat import compat_str +from ..utils import int_or_none + + +class ACastIE(InfoExtractor): + IE_NAME = 'acast' + _VALID_URL = r'https?://(?:www\.)?acast\.com/(?P[^/]+)/(?P[^/#?]+)' + _TEST = { + 'url': 'https://www.acast.com/condenasttraveler/-where-are-you-taipei-101-taiwan', + 'md5': 'ada3de5a1e3a2a381327d749854788bb', + 'info_dict': { + 'id': '57de3baa-4bb0-487e-9418-2692c1277a34', + 'ext': 'mp3', + 'title': '"Where Are You?": Taipei 101, Taiwan', + 'timestamp': 1196172000000, + 'description': 'md5:a0b4ef3634e63866b542e5b1199a1a0e', + 'duration': 211, + } + } + + def _real_extract(self, url): + channel, display_id = re.match(self._VALID_URL, url).groups() + + embed_page = self._download_webpage( + re.sub('(?:www\.)?acast\.com', 'embedcdn.acast.com', url), display_id) + cast_data = self._parse_json(self._search_regex( + r'window\[\'acast/queries\'\]\s*=\s*([^;]+);', embed_page, 'acast data'), + display_id)['GetAcast/%s/%s' % (channel, display_id)] + + return { + 'id': compat_str(cast_data['id']), + 'display_id': display_id, + 'url': cast_data['blings'][0]['audio'], + 'title': cast_data['name'], + 'description': cast_data.get('description'), + 'thumbnail': cast_data.get('image'), + 'timestamp': int_or_none(cast_data.get('publishingDate')), + 'duration': int_or_none(cast_data.get('duration')), + } + + +class ACastChannelIE(InfoExtractor): + IE_NAME = 'acast:channel' + _VALID_URL = r'https?://(?:www\.)?acast\.com/(?P[^/#?]+)' + _TEST = { + 'url': 'https://www.acast.com/condenasttraveler', + 'info_dict': { + 'id': '50544219-29bb-499e-a083-6087f4cb7797', + 'title': 'Condé Nast Traveler Podcast', + 'description': 'md5:98646dee22a5b386626ae31866638fbd', + }, + 'playlist_mincount': 20, + } + _API_BASE_URL = 'https://www.acast.com/api/' + + @classmethod + def suitable(cls, url): + return False if ACastIE.suitable(url) else super(ACastChannelIE, cls).suitable(url) + + def _real_extract(self, url): + display_id = self._match_id(url) + channel_data = self._download_json(self._API_BASE_URL + 'channels/%s' % display_id, display_id) + casts = self._download_json(self._API_BASE_URL + 'channels/%s/acasts' % display_id, display_id) + entries = [self.url_result('https://www.acast.com/%s/%s' % (display_id, cast['url']), 'ACast') for cast in casts] + + return self.playlist_result(entries, compat_str(channel_data['id']), channel_data['name'], channel_data.get('description')) diff --git a/youtube_dl/extractor/adobetv.py b/youtube_dl/extractor/adobetv.py index 5e43adc..8753ee2 100644 --- a/youtube_dl/extractor/adobetv.py +++ b/youtube_dl/extractor/adobetv.py @@ -1,23 +1,32 @@ from __future__ import unicode_literals +import re + from .common import InfoExtractor +from ..compat import compat_str from ..utils import ( parse_duration, unified_strdate, str_to_int, + int_or_none, float_or_none, ISO639Utils, + determine_ext, ) -class AdobeTVIE(InfoExtractor): - _VALID_URL = r'https?://tv\.adobe\.com/watch/[^/]+/(?P[^/]+)' +class AdobeTVBaseIE(InfoExtractor): + _API_BASE_URL = 'http://tv.adobe.com/api/v4/' + + +class AdobeTVIE(AdobeTVBaseIE): + _VALID_URL = r'https?://tv\.adobe\.com/(?:(?Pfr|de|es|jp)/)?watch/(?P[^/]+)/(?P[^/]+)' _TEST = { 'url': 'http://tv.adobe.com/watch/the-complete-picture-with-julieanne-kost/quick-tip-how-to-draw-a-circle-around-an-object-in-photoshop/', 'md5': '9bc5727bcdd55251f35ad311ca74fa1e', 'info_dict': { - 'id': 'quick-tip-how-to-draw-a-circle-around-an-object-in-photoshop', + 'id': '10981', 'ext': 'mp4', 'title': 'Quick Tip - How to Draw a Circle Around an Object in Photoshop', 'description': 'md5:99ec318dc909d7ba2a1f2b038f7d2311', @@ -29,50 +38,106 @@ class AdobeTVIE(InfoExtractor): } def _real_extract(self, url): - video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) - - player = self._parse_json( - self._search_regex(r'html5player:\s*({.+?})\s*\n', webpage, 'player'), - video_id) + language, show_urlname, urlname = re.match(self._VALID_URL, url).groups() + if not language: + language = 'en' - title = player.get('title') or self._search_regex( - r'data-title="([^"]+)"', webpage, 'title') - description = self._og_search_description(webpage) - thumbnail = self._og_search_thumbnail(webpage) - - upload_date = unified_strdate( - self._html_search_meta('datepublished', webpage, 'upload date')) - - duration = parse_duration( - self._html_search_meta('duration', webpage, 'duration') or - self._search_regex( - r'Runtime:\s*(\d{2}:\d{2}:\d{2})', - webpage, 'duration', fatal=False)) - - view_count = str_to_int(self._search_regex( - r'

', - webpage, 'view count')) + video_data = self._download_json( + self._API_BASE_URL + 'episode/get/?language=%s&show_urlname=%s&urlname=%s&disclosure=standard' % (language, show_urlname, urlname), + urlname)['data'][0] formats = [{ - 'url': source['src'], - 'format_id': source.get('quality') or source['src'].split('-')[-1].split('.')[0] or None, - 'tbr': source.get('bitrate'), - } for source in player['sources']] + 'url': source['url'], + 'format_id': source.get('quality_level') or source['url'].split('-')[-1].split('.')[0] or None, + 'width': int_or_none(source.get('width')), + 'height': int_or_none(source.get('height')), + 'tbr': int_or_none(source.get('video_data_rate')), + } for source in video_data['videos']] self._sort_formats(formats) return { - 'id': video_id, - 'title': title, - 'description': description, - 'thumbnail': thumbnail, - 'upload_date': upload_date, - 'duration': duration, - 'view_count': view_count, + 'id': compat_str(video_data['id']), + 'title': video_data['title'], + 'description': video_data.get('description'), + 'thumbnail': video_data.get('thumbnail'), + 'upload_date': unified_strdate(video_data.get('start_date')), + 'duration': parse_duration(video_data.get('duration')), + 'view_count': str_to_int(video_data.get('playcount')), 'formats': formats, } +class AdobeTVPlaylistBaseIE(AdobeTVBaseIE): + def _parse_page_data(self, page_data): + return [self.url_result(self._get_element_url(element_data)) for element_data in page_data] + + def _extract_playlist_entries(self, url, display_id): + page = self._download_json(url, display_id) + entries = self._parse_page_data(page['data']) + for page_num in range(2, page['paging']['pages'] + 1): + entries.extend(self._parse_page_data( + self._download_json(url + '&page=%d' % page_num, display_id)['data'])) + return entries + + +class AdobeTVShowIE(AdobeTVPlaylistBaseIE): + _VALID_URL = r'https?://tv\.adobe\.com/(?:(?Pfr|de|es|jp)/)?show/(?P[^/]+)' + + _TEST = { + 'url': 'http://tv.adobe.com/show/the-complete-picture-with-julieanne-kost', + 'info_dict': { + 'id': '36', + 'title': 'The Complete Picture with Julieanne Kost', + 'description': 'md5:fa50867102dcd1aa0ddf2ab039311b27', + }, + 'playlist_mincount': 136, + } + + def _get_element_url(self, element_data): + return element_data['urls'][0] + + def _real_extract(self, url): + language, show_urlname = re.match(self._VALID_URL, url).groups() + if not language: + language = 'en' + query = 'language=%s&show_urlname=%s' % (language, show_urlname) + + show_data = self._download_json(self._API_BASE_URL + 'show/get/?%s' % query, show_urlname)['data'][0] + + return self.playlist_result( + self._extract_playlist_entries(self._API_BASE_URL + 'episode/?%s' % query, show_urlname), + compat_str(show_data['id']), + show_data['show_name'], + show_data['show_description']) + + +class AdobeTVChannelIE(AdobeTVPlaylistBaseIE): + _VALID_URL = r'https?://tv\.adobe\.com/(?:(?Pfr|de|es|jp)/)?channel/(?P[^/]+)(?:/(?P[^/]+))?' + + _TEST = { + 'url': 'http://tv.adobe.com/channel/development', + 'info_dict': { + 'id': 'development', + }, + 'playlist_mincount': 96, + } + + def _get_element_url(self, element_data): + return element_data['url'] + + def _real_extract(self, url): + language, channel_urlname, category_urlname = re.match(self._VALID_URL, url).groups() + if not language: + language = 'en' + query = 'language=%s&channel_urlname=%s' % (language, channel_urlname) + if category_urlname: + query += '&category_urlname=%s' % category_urlname + + return self.playlist_result( + self._extract_playlist_entries(self._API_BASE_URL + 'show/?%s' % query, channel_urlname), + channel_urlname) + + class AdobeTVVideoIE(InfoExtractor): _VALID_URL = r'https?://video\.tv\.adobe\.com/v/(?P\d+)' @@ -91,28 +156,25 @@ class AdobeTVVideoIE(InfoExtractor): def _real_extract(self, url): video_id = self._match_id(url) - - webpage = self._download_webpage(url, video_id) - - player_params = self._parse_json(self._search_regex( - r'var\s+bridge\s*=\s*([^;]+);', webpage, 'player parameters'), - video_id) + video_data = self._download_json(url + '?format=json', video_id) formats = [{ + 'format_id': '%s-%s' % (determine_ext(source['src']), source.get('height')), 'url': source['src'], - 'width': source.get('width'), - 'height': source.get('height'), - 'tbr': source.get('bitrate'), - } for source in player_params['sources']] + 'width': int_or_none(source.get('width')), + 'height': int_or_none(source.get('height')), + 'tbr': int_or_none(source.get('bitrate')), + } for source in video_data['sources']] + self._sort_formats(formats) # For both metadata and downloaded files the duration varies among # formats. I just pick the max one duration = max(filter(None, [ float_or_none(source.get('duration'), scale=1000) - for source in player_params['sources']])) + for source in video_data['sources']])) subtitles = {} - for translation in player_params.get('translations', []): + for translation in video_data.get('translations', []): lang_id = translation.get('language_w3c') or ISO639Utils.long2short(translation['language_medium']) if lang_id not in subtitles: subtitles[lang_id] = [] @@ -124,8 +186,9 @@ class AdobeTVVideoIE(InfoExtractor): return { 'id': video_id, 'formats': formats, - 'title': player_params['title'], - 'description': self._og_search_description(webpage), + 'title': video_data['title'], + 'description': video_data.get('description'), + 'thumbnail': video_data['video'].get('poster'), 'duration': duration, 'subtitles': subtitles, } diff --git a/youtube_dl/extractor/adultswim.py b/youtube_dl/extractor/adultswim.py index 3ae618e..8157da2 100644 --- a/youtube_dl/extractor/adultswim.py +++ b/youtube_dl/extractor/adultswim.py @@ -68,7 +68,7 @@ class AdultSwimIE(InfoExtractor): 'md5': '3e346a2ab0087d687a05e1e7f3b3e529', 'info_dict': { 'id': 'sY3cMUR_TbuE4YmdjzbIcQ-0', - 'ext': 'flv', + 'ext': 'mp4', 'title': 'Tim and Eric Awesome Show Great Job! - Dr. Steve Brule, For Your Wine', 'description': 'Dr. Brule reports live from Wine Country with a special report on wines. \r\nWatch Tim and Eric Awesome Show Great Job! episode #20, "Embarrassed" on Adult Swim.\r\n\r\n', }, @@ -79,6 +79,10 @@ class AdultSwimIE(InfoExtractor): 'title': 'Tim and Eric Awesome Show Great Job! - Dr. Steve Brule, For Your Wine', 'description': 'Dr. Brule reports live from Wine Country with a special report on wines. \r\nWatch Tim and Eric Awesome Show Great Job! episode #20, "Embarrassed" on Adult Swim.\r\n\r\n', }, + 'params': { + # m3u8 download + 'skip_download': True, + } }] @staticmethod @@ -183,7 +187,8 @@ class AdultSwimIE(InfoExtractor): media_url = file_el.text if determine_ext(media_url) == 'm3u8': formats.extend(self._extract_m3u8_formats( - media_url, segment_title, 'mp4', preference=0, m3u8_id='hls')) + media_url, segment_title, 'mp4', preference=0, + m3u8_id='hls', fatal=False)) else: formats.append({ 'format_id': '%s_%s' % (bitrate, ftype), diff --git a/youtube_dl/extractor/aenetworks.py b/youtube_dl/extractor/aenetworks.py new file mode 100644 index 0000000..6018ae7 --- /dev/null +++ b/youtube_dl/extractor/aenetworks.py @@ -0,0 +1,66 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import smuggle_url + + +class AENetworksIE(InfoExtractor): + IE_NAME = 'aenetworks' + IE_DESC = 'A+E Networks: A&E, Lifetime, History.com, FYI Network' + _VALID_URL = r'https?://(?:www\.)?(?:(?:history|aetv|mylifetime)\.com|fyi\.tv)/(?:[^/]+/)+(?P[^/]+?)(?:$|[?#])' + + _TESTS = [{ + 'url': 'http://www.history.com/topics/valentines-day/history-of-valentines-day/videos/bet-you-didnt-know-valentines-day?m=528e394da93ae&s=undefined&f=1&free=false', + 'info_dict': { + 'id': 'g12m5Gyt3fdR', + 'ext': 'mp4', + 'title': "Bet You Didn't Know: Valentine's Day", + 'description': 'md5:7b57ea4829b391995b405fa60bd7b5f7', + }, + 'params': { + # m3u8 download + 'skip_download': True, + }, + 'add_ie': ['ThePlatform'], + 'expected_warnings': ['JSON-LD'], + }, { + 'url': 'http://www.history.com/shows/mountain-men/season-1/episode-1', + 'info_dict': { + 'id': 'eg47EERs_JsZ', + 'ext': 'mp4', + 'title': 'Winter Is Coming', + 'description': 'md5:641f424b7a19d8e24f26dea22cf59d74', + }, + 'params': { + # m3u8 download + 'skip_download': True, + }, + 'add_ie': ['ThePlatform'], + }, { + 'url': 'http://www.aetv.com/shows/duck-dynasty/video/inlawful-entry', + 'only_matching': True + }, { + 'url': 'http://www.fyi.tv/shows/tiny-house-nation/videos/207-sq-ft-minnesota-prairie-cottage', + 'only_matching': True + }, { + 'url': 'http://www.mylifetime.com/shows/project-runway-junior/video/season-1/episode-6/superstar-clients', + 'only_matching': True + }] + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + video_url_re = [ + r'data-href="[^"]*/%s"[^>]+data-release-url="([^"]+)"' % video_id, + r"media_url\s*=\s*'([^']+)'" + ] + video_url = self._search_regex(video_url_re, webpage, 'video url') + + info = self._search_json_ld(webpage, video_id, fatal=False) + info.update({ + '_type': 'url_transparent', + 'url': smuggle_url(video_url, {'sig': {'key': 'crazyjava', 'secret': 's3cr3t'}}), + }) + return info diff --git a/youtube_dl/extractor/aftenposten.py b/youtube_dl/extractor/aftenposten.py deleted file mode 100644 index 0c00acf..0000000 --- a/youtube_dl/extractor/aftenposten.py +++ /dev/null @@ -1,23 +0,0 @@ -# coding: utf-8 -from __future__ import unicode_literals - -from .common import InfoExtractor - - -class AftenpostenIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?aftenposten\.no/webtv/(?:#!/)?video/(?P\d+)' - _TEST = { - 'url': 'http://www.aftenposten.no/webtv/#!/video/21039/trailer-sweatshop-i-can-t-take-any-more', - 'md5': 'fd828cd29774a729bf4d4425fe192972', - 'info_dict': { - 'id': '21039', - 'ext': 'mov', - 'title': 'TRAILER: "Sweatshop" - I can´t take any more', - 'description': 'md5:21891f2b0dd7ec2f78d84a50e54f8238', - 'timestamp': 1416927969, - 'upload_date': '20141125', - } - } - - def _real_extract(self, url): - return self.url_result('xstream:ap:%s' % self._match_id(url), 'Xstream') diff --git a/youtube_dl/extractor/allocine.py b/youtube_dl/extractor/allocine.py index 7d65b81..190bc2c 100644 --- a/youtube_dl/extractor/allocine.py +++ b/youtube_dl/extractor/allocine.py @@ -8,6 +8,8 @@ from .common import InfoExtractor from ..compat import compat_str from ..utils import ( qualities, + unescapeHTML, + xpath_element, ) @@ -31,7 +33,7 @@ class AllocineIE(InfoExtractor): 'id': '19540403', 'ext': 'mp4', 'title': 'Planes 2 Bande-annonce VF', - 'description': 'md5:eeaffe7c2d634525e21159b93acf3b1e', + 'description': 'Regardez la bande annonce du film Planes 2 (Planes 2 Bande-annonce VF). Planes 2, un film de Roberts Gannaway', 'thumbnail': 're:http://.*\.jpg', }, }, { @@ -41,7 +43,7 @@ class AllocineIE(InfoExtractor): 'id': '19544709', 'ext': 'mp4', 'title': 'Dragons 2 - Bande annonce finale VF', - 'description': 'md5:71742e3a74b0d692c7fce0dd2017a4ac', + 'description': 'md5:601d15393ac40f249648ef000720e7e3', 'thumbnail': 're:http://.*\.jpg', }, }, { @@ -59,14 +61,18 @@ class AllocineIE(InfoExtractor): if typ == 'film': video_id = self._search_regex(r'href="/video/player_gen_cmedia=([0-9]+).+"', webpage, 'video id') else: - player = self._search_regex(r'data-player=\'([^\']+)\'>', webpage, 'data player') - - player_data = json.loads(player) - video_id = compat_str(player_data['refMedia']) + player = self._search_regex(r'data-player=\'([^\']+)\'>', webpage, 'data player', default=None) + if player: + player_data = json.loads(player) + video_id = compat_str(player_data['refMedia']) + else: + model = self._search_regex(r'data-model="([^"]+)">', webpage, 'data model') + model_data = self._parse_json(unescapeHTML(model), display_id) + video_id = compat_str(model_data['id']) xml = self._download_xml('http://www.allocine.fr/ws/AcVisiondataV4.ashx?media=%s' % video_id, display_id) - video = xml.find('.//AcVisionVideo').attrib + video = xpath_element(xml, './/AcVisionVideo').attrib quality = qualities(['ld', 'md', 'hd']) formats = [] diff --git a/youtube_dl/extractor/amp.py b/youtube_dl/extractor/amp.py new file mode 100644 index 0000000..69e6baf --- /dev/null +++ b/youtube_dl/extractor/amp.py @@ -0,0 +1,81 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + int_or_none, + parse_iso8601, +) + + +class AMPIE(InfoExtractor): + # parse Akamai Adaptive Media Player feed + def _extract_feed_info(self, url): + item = self._download_json( + url, None, 'Downloading Akamai AMP feed', + 'Unable to download Akamai AMP feed')['channel']['item'] + + video_id = item['guid'] + + def get_media_node(name, default=None): + media_name = 'media-%s' % name + media_group = item.get('media-group') or item + return media_group.get(media_name) or item.get(media_name) or item.get(name, default) + + thumbnails = [] + media_thumbnail = get_media_node('thumbnail') + if media_thumbnail: + if isinstance(media_thumbnail, dict): + media_thumbnail = [media_thumbnail] + for thumbnail_data in media_thumbnail: + thumbnail = thumbnail_data['@attributes'] + thumbnails.append({ + 'url': self._proto_relative_url(thumbnail['url'], 'http:'), + 'width': int_or_none(thumbnail.get('width')), + 'height': int_or_none(thumbnail.get('height')), + }) + + subtitles = {} + media_subtitle = get_media_node('subTitle') + if media_subtitle: + if isinstance(media_subtitle, dict): + media_subtitle = [media_subtitle] + for subtitle_data in media_subtitle: + subtitle = subtitle_data['@attributes'] + lang = subtitle.get('lang') or 'en' + subtitles[lang] = [{'url': subtitle['href']}] + + formats = [] + media_content = get_media_node('content') + if isinstance(media_content, dict): + media_content = [media_content] + for media_data in media_content: + media = media_data['@attributes'] + media_type = media['type'] + if media_type == 'video/f4m': + formats.extend(self._extract_f4m_formats( + media['url'] + '?hdcore=3.4.0&plugin=aasp-3.4.0.132.124', + video_id, f4m_id='hds', fatal=False)) + elif media_type == 'application/x-mpegURL': + formats.extend(self._extract_m3u8_formats( + media['url'], video_id, 'mp4', m3u8_id='hls', fatal=False)) + else: + formats.append({ + 'format_id': media_data['media-category']['@attributes']['label'], + 'url': media['url'], + 'tbr': int_or_none(media.get('bitrate')), + 'filesize': int_or_none(media.get('fileSize')), + }) + + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': get_media_node('title'), + 'description': get_media_node('description'), + 'thumbnails': thumbnails, + 'timestamp': parse_iso8601(item.get('pubDate'), ' '), + 'duration': int_or_none(media_content[0].get('@attributes', {}).get('duration')), + 'subtitles': subtitles, + 'formats': formats, + } diff --git a/youtube_dl/extractor/animeondemand.py b/youtube_dl/extractor/animeondemand.py new file mode 100644 index 0000000..a7d8daf --- /dev/null +++ b/youtube_dl/extractor/animeondemand.py @@ -0,0 +1,160 @@ +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..compat import compat_urlparse +from ..utils import ( + determine_ext, + encode_dict, + ExtractorError, + sanitized_Request, + urlencode_postdata, +) + + +class AnimeOnDemandIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?anime-on-demand\.de/anime/(?P\d+)' + _LOGIN_URL = 'https://www.anime-on-demand.de/users/sign_in' + _APPLY_HTML5_URL = 'https://www.anime-on-demand.de/html5apply' + _NETRC_MACHINE = 'animeondemand' + _TEST = { + 'url': 'https://www.anime-on-demand.de/anime/161', + 'info_dict': { + 'id': '161', + 'title': 'Grimgar, Ashes and Illusions (OmU)', + 'description': 'md5:6681ce3c07c7189d255ac6ab23812d31', + }, + 'playlist_mincount': 4, + } + + def _login(self): + (username, password) = self._get_login_info() + if username is None: + return + + login_page = self._download_webpage( + self._LOGIN_URL, None, 'Downloading login page') + + login_form = self._form_hidden_inputs('new_user', login_page) + + login_form.update({ + 'user[login]': username, + 'user[password]': password, + }) + + post_url = self._search_regex( + r']+action=(["\'])(?P.+?)\1', login_page, + 'post url', default=self._LOGIN_URL, group='url') + + if not post_url.startswith('http'): + post_url = compat_urlparse.urljoin(self._LOGIN_URL, post_url) + + request = sanitized_Request( + post_url, urlencode_postdata(encode_dict(login_form))) + request.add_header('Referer', self._LOGIN_URL) + + response = self._download_webpage( + request, None, 'Logging in as %s' % username) + + if all(p not in response for p in ('>Logout<', 'href="/users/sign_out"')): + error = self._search_regex( + r'

(.+?)

', + response, 'error', default=None) + if error: + raise ExtractorError('Unable to login: %s' % error, expected=True) + raise ExtractorError('Unable to log in') + + def _real_initialize(self): + self._login() + + def _real_extract(self, url): + anime_id = self._match_id(url) + + webpage = self._download_webpage(url, anime_id) + + if 'data-playlist=' not in webpage: + self._download_webpage( + self._APPLY_HTML5_URL, anime_id, + 'Activating HTML5 beta', 'Unable to apply HTML5 beta') + webpage = self._download_webpage(url, anime_id) + + csrf_token = self._html_search_meta( + 'csrf-token', webpage, 'csrf token', fatal=True) + + anime_title = self._html_search_regex( + r'(?s)]+itemprop="name"[^>]*>(.+?)', + webpage, 'anime name') + anime_description = self._html_search_regex( + r'(?s)]+itemprop="description"[^>]*>(.+?)', + webpage, 'anime description', default=None) + + entries = [] + + for episode_html in re.findall(r'(?s)]+class="episodebox-title".+?>Episodeninhalt<', webpage): + m = re.search( + r'class="episodebox-title"[^>]+title="Episode (?P\d+) - (?P.+?)"', episode_html) + if not m: + continue + + episode_number = int(m.group('number')) + episode_title = m.group('title') + video_id = 'episode-%d' % episode_number + + common_info = { + 'id': video_id, + 'series': anime_title, + 'episode': episode_title, + 'episode_number': episode_number, + } + + formats = [] + + playlist_url = self._search_regex( + r'data-playlist=(["\'])(?P<url>.+?)\1', + episode_html, 'data playlist', default=None, group='url') + if playlist_url: + request = sanitized_Request( + compat_urlparse.urljoin(url, playlist_url), + headers={ + 'X-Requested-With': 'XMLHttpRequest', + 'X-CSRF-Token': csrf_token, + 'Referer': url, + 'Accept': 'application/json, text/javascript, */*; q=0.01', + }) + + playlist = self._download_json( + request, video_id, 'Downloading playlist JSON', fatal=False) + if playlist: + playlist = playlist['playlist'][0] + title = playlist['title'] + description = playlist.get('description') + for source in playlist.get('sources', []): + file_ = source.get('file') + if file_ and determine_ext(file_) == 'm3u8': + formats = self._extract_m3u8_formats( + file_, video_id, 'mp4', + entry_protocol='m3u8_native', m3u8_id='hls') + + if formats: + f = common_info.copy() + f.update({ + 'title': title, + 'description': description, + 'formats': formats, + }) + entries.append(f) + + m = re.search( + r'data-dialog-header=(["\'])(?P<title>.+?)\1[^>]+href=(["\'])(?P<href>.+?)\3[^>]*>Teaser<', + episode_html) + if m: + f = common_info.copy() + f.update({ + 'id': '%s-teaser' % f['id'], + 'title': m.group('title'), + 'url': compat_urlparse.urljoin(url, m.group('href')), + }) + entries.append(f) + + return self.playlist_result(entries, anime_id, anime_title, anime_description) diff --git a/youtube_dl/extractor/anitube.py b/youtube_dl/extractor/anitube.py index 23f942a..2fd912d 100644 --- a/youtube_dl/extractor/anitube.py +++ b/youtube_dl/extractor/anitube.py @@ -1,11 +1,9 @@ from __future__ import unicode_literals -import re +from .nuevo import NuevoBaseIE -from .common import InfoExtractor - -class AnitubeIE(InfoExtractor): +class AnitubeIE(NuevoBaseIE): IE_NAME = 'anitube.se' _VALID_URL = r'https?://(?:www\.)?anitube\.se/video/(?P<id>\d+)' @@ -22,38 +20,11 @@ class AnitubeIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) key = self._search_regex( r'src=["\']https?://[^/]+/embed/([A-Za-z0-9_-]+)', webpage, 'key') - config_xml = self._download_xml( - 'http://www.anitube.se/nuevo/econfig.php?key=%s' % key, key) - - video_title = config_xml.find('title').text - thumbnail = config_xml.find('image').text - duration = float(config_xml.find('duration').text) - - formats = [] - video_url = config_xml.find('file') - if video_url is not None: - formats.append({ - 'format_id': 'sd', - 'url': video_url.text, - }) - video_url = config_xml.find('filehd') - if video_url is not None: - formats.append({ - 'format_id': 'hd', - 'url': video_url.text, - }) - - return { - 'id': video_id, - 'title': video_title, - 'thumbnail': thumbnail, - 'duration': duration, - 'formats': formats - } + return self._extract_nuevo( + 'http://www.anitube.se/nuevo/econfig.php?key=%s' % key, video_id) diff --git a/youtube_dl/extractor/appletrailers.py b/youtube_dl/extractor/appletrailers.py index f68dc32..be40f85 100644 --- a/youtube_dl/extractor/appletrailers.py +++ b/youtube_dl/extractor/appletrailers.py @@ -11,7 +11,8 @@ from ..utils import ( class AppleTrailersIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?trailers\.apple\.com/(?:trailers|ca)/(?P<company>[^/]+)/(?P<movie>[^/]+)' + IE_NAME = 'appletrailers' + _VALID_URL = r'https?://(?:www\.|movie)?trailers\.apple\.com/(?:trailers|ca)/(?P<company>[^/]+)/(?P<movie>[^/]+)' _TESTS = [{ 'url': 'http://trailers.apple.com/trailers/wb/manofsteel/', 'info_dict': { @@ -63,9 +64,18 @@ class AppleTrailersIE(InfoExtractor): }, }, ] + }, { + 'url': 'http://trailers.apple.com/trailers/magnolia/blackthorn/', + 'info_dict': { + 'id': 'blackthorn', + }, + 'playlist_mincount': 2, }, { 'url': 'http://trailers.apple.com/ca/metropole/autrui/', 'only_matching': True, + }, { + 'url': 'http://movietrailers.apple.com/trailers/focus_features/kuboandthetwostrings/', + 'only_matching': True, }] _JSON_RE = r'iTunes.playURL\((.*?)\);' @@ -79,7 +89,7 @@ class AppleTrailersIE(InfoExtractor): def fix_html(s): s = re.sub(r'(?s)<script[^<]*?>.*?</script>', '', s) - s = re.sub(r'<img ([^<]*?)>', r'<img \1/>', s) + s = re.sub(r'<img ([^<]*?)/?>', r'<img \1/>', s) # The ' in the onClick attributes are not escaped, it couldn't be parsed # like: http://trailers.apple.com/trailers/wb/gravity/ @@ -96,6 +106,9 @@ class AppleTrailersIE(InfoExtractor): trailer_info_json = self._search_regex(self._JSON_RE, on_click, 'trailer info') trailer_info = json.loads(trailer_info_json) + first_url = trailer_info.get('url') + if not first_url: + continue title = trailer_info['title'] video_id = movie + '-' + re.sub(r'[^a-zA-Z0-9]', '', title).lower() thumbnail = li.find('.//img').attrib['src'] @@ -107,7 +120,6 @@ class AppleTrailersIE(InfoExtractor): if m: duration = 60 * int(m.group('minutes')) + int(m.group('seconds')) - first_url = trailer_info['url'] trailer_id = first_url.split('/')[-1].rpartition('_')[0].lower() settings_json_url = compat_urlparse.urljoin(url, 'includes/settings/%s.json' % trailer_id) settings = self._download_json(settings_json_url, trailer_id, 'Downloading settings json') @@ -144,3 +156,76 @@ class AppleTrailersIE(InfoExtractor): 'id': movie, 'entries': playlist, } + + +class AppleTrailersSectionIE(InfoExtractor): + IE_NAME = 'appletrailers:section' + _SECTIONS = { + 'justadded': { + 'feed_path': 'just_added', + 'title': 'Just Added', + }, + 'exclusive': { + 'feed_path': 'exclusive', + 'title': 'Exclusive', + }, + 'justhd': { + 'feed_path': 'just_hd', + 'title': 'Just HD', + }, + 'mostpopular': { + 'feed_path': 'most_pop', + 'title': 'Most Popular', + }, + 'moviestudios': { + 'feed_path': 'studios', + 'title': 'Movie Studios', + }, + } + _VALID_URL = r'https?://(?:www\.)?trailers\.apple\.com/#section=(?P<id>%s)' % '|'.join(_SECTIONS) + _TESTS = [{ + 'url': 'http://trailers.apple.com/#section=justadded', + 'info_dict': { + 'title': 'Just Added', + 'id': 'justadded', + }, + 'playlist_mincount': 80, + }, { + 'url': 'http://trailers.apple.com/#section=exclusive', + 'info_dict': { + 'title': 'Exclusive', + 'id': 'exclusive', + }, + 'playlist_mincount': 80, + }, { + 'url': 'http://trailers.apple.com/#section=justhd', + 'info_dict': { + 'title': 'Just HD', + 'id': 'justhd', + }, + 'playlist_mincount': 80, + }, { + 'url': 'http://trailers.apple.com/#section=mostpopular', + 'info_dict': { + 'title': 'Most Popular', + 'id': 'mostpopular', + }, + 'playlist_mincount': 80, + }, { + 'url': 'http://trailers.apple.com/#section=moviestudios', + 'info_dict': { + 'title': 'Movie Studios', + 'id': 'moviestudios', + }, + 'playlist_mincount': 80, + }] + + def _real_extract(self, url): + section = self._match_id(url) + section_data = self._download_json( + 'http://trailers.apple.com/trailers/home/feeds/%s.json' % self._SECTIONS[section]['feed_path'], + section) + entries = [ + self.url_result('http://trailers.apple.com' + e['location']) + for e in section_data] + return self.playlist_result(entries, section, self._SECTIONS[section]['title']) diff --git a/youtube_dl/extractor/ard.py b/youtube_dl/extractor/ard.py index 73be6d2..9fb8491 100644 --- a/youtube_dl/extractor/ard.py +++ b/youtube_dl/extractor/ard.py @@ -110,13 +110,15 @@ class ARDMediathekIE(InfoExtractor): server = stream.get('_server') for stream_url in stream_urls: ext = determine_ext(stream_url) + if quality != 'auto' and ext in ('f4m', 'm3u8'): + continue if ext == 'f4m': formats.extend(self._extract_f4m_formats( stream_url + '?hdcore=3.1.1&plugin=aasp-3.1.1.69.124', - video_id, preference=-1, f4m_id='hds')) + video_id, preference=-1, f4m_id='hds', fatal=False)) elif ext == 'm3u8': formats.extend(self._extract_m3u8_formats( - stream_url, video_id, 'mp4', preference=1, m3u8_id='hls')) + stream_url, video_id, 'mp4', preference=1, m3u8_id='hls', fatal=False)) else: if server and server.startswith('rtmp'): f = { diff --git a/youtube_dl/extractor/arte.py b/youtube_dl/extractor/arte.py index 2a00da3..efde7e2 100644 --- a/youtube_dl/extractor/arte.py +++ b/youtube_dl/extractor/arte.py @@ -13,6 +13,7 @@ from ..utils import ( unified_strdate, get_element_by_attribute, int_or_none, + NO_DEFAULT, qualities, ) @@ -22,7 +23,7 @@ from ..utils import ( class ArteTvIE(InfoExtractor): - _VALID_URL = r'http://videos\.arte\.tv/(?P<lang>fr|de)/.*-(?P<id>.*?)\.html' + _VALID_URL = r'http://videos\.arte\.tv/(?P<lang>fr|de|en|es)/.*-(?P<id>.*?)\.html' IE_NAME = 'arte.tv' def _real_extract(self, url): @@ -62,15 +63,19 @@ class ArteTvIE(InfoExtractor): class ArteTVPlus7IE(InfoExtractor): IE_NAME = 'arte.tv:+7' - _VALID_URL = r'https?://(?:www\.)?arte\.tv/guide/(?P<lang>fr|de)/(?:(?:sendungen|emissions)/)?(?P<id>.*?)/(?P<name>.*?)(\?.*)?' + _VALID_URL = r'https?://(?:www\.)?arte\.tv/guide/(?P<lang>fr|de|en|es)/(?:(?:sendungen|emissions|embed)/)?(?P<id>[^/]+)/(?P<name>[^/?#&+])' @classmethod def _extract_url_info(cls, url): mobj = re.match(cls._VALID_URL, url) lang = mobj.group('lang') - # This is not a real id, it can be for example AJT for the news - # http://www.arte.tv/guide/fr/emissions/AJT/arte-journal - video_id = mobj.group('id') + query = compat_parse_qs(compat_urllib_parse_urlparse(url).query) + if 'vid' in query: + video_id = query['vid'][0] + else: + # This is not a real id, it can be for example AJT for the news + # http://www.arte.tv/guide/fr/emissions/AJT/arte-journal + video_id = mobj.group('id') return video_id, lang def _real_extract(self, url): @@ -79,16 +84,50 @@ class ArteTVPlus7IE(InfoExtractor): return self._extract_from_webpage(webpage, video_id, lang) def _extract_from_webpage(self, webpage, video_id, lang): + patterns_templates = (r'arte_vp_url=["\'](.*?%s.*?)["\']', r'data-url=["\']([^"]+%s[^"]+)["\']') + ids = (video_id, '') + # some pages contain multiple videos (like + # http://www.arte.tv/guide/de/sendungen/XEN/xenius/?vid=055918-015_PLUS7-D), + # so we first try to look for json URLs that contain the video id from + # the 'vid' parameter. + patterns = [t % re.escape(_id) for _id in ids for t in patterns_templates] json_url = self._html_search_regex( - [r'arte_vp_url=["\'](.*?)["\']', r'data-url=["\']([^"]+)["\']'], - webpage, 'json vp url', default=None) + patterns, webpage, 'json vp url', default=None) if not json_url: - iframe_url = self._html_search_regex( - r'<iframe[^>]+src=(["\'])(?P<url>.+\bjson_url=.+?)\1', - webpage, 'iframe url', group='url') - json_url = compat_parse_qs( - compat_urllib_parse_urlparse(iframe_url).query)['json_url'][0] - return self._extract_from_json_url(json_url, video_id, lang) + def find_iframe_url(webpage, default=NO_DEFAULT): + return self._html_search_regex( + r'<iframe[^>]+src=(["\'])(?P<url>.+\bjson_url=.+?)\1', + webpage, 'iframe url', group='url', default=default) + + iframe_url = find_iframe_url(webpage, None) + if not iframe_url: + embed_url = self._html_search_regex( + r'arte_vp_url_oembed=\'([^\']+?)\'', webpage, 'embed url', default=None) + if embed_url: + player = self._download_json( + embed_url, video_id, 'Downloading player page') + iframe_url = find_iframe_url(player['html']) + # en and es URLs produce react-based pages with different layout (e.g. + # http://www.arte.tv/guide/en/053330-002-A/carnival-italy?zone=world) + if not iframe_url: + program = self._search_regex( + r'program\s*:\s*({.+?["\']embed_html["\'].+?}),?\s*\n', + webpage, 'program', default=None) + if program: + embed_html = self._parse_json(program, video_id) + if embed_html: + iframe_url = find_iframe_url(embed_html['embed_html']) + if iframe_url: + json_url = compat_parse_qs( + compat_urllib_parse_urlparse(iframe_url).query)['json_url'][0] + if json_url: + return self._extract_from_json_url(json_url, video_id, lang) + # Differend kind of embed URL (e.g. + # http://www.arte.tv/magazine/trepalium/fr/episode-0406-replay-trepalium) + embed_url = self._search_regex( + r'<iframe[^>]+src=(["\'])(?P<url>.+?)\1', + webpage, 'embed url', group='url') + return self.url_result(embed_url) def _extract_from_json_url(self, json_url, video_id, lang): info = self._download_json(json_url, video_id) @@ -96,7 +135,7 @@ class ArteTVPlus7IE(InfoExtractor): upload_date_str = player_info.get('shootingDate') if not upload_date_str: - upload_date_str = player_info.get('VDA', '').split(' ')[0] + upload_date_str = (player_info.get('VRA') or player_info.get('VDA') or '').split(' ')[0] title = player_info['VTI'].strip() subtitle = player_info.get('VSU', '').strip() @@ -112,27 +151,30 @@ class ArteTVPlus7IE(InfoExtractor): } qfunc = qualities(['HQ', 'MQ', 'EQ', 'SQ']) + LANGS = { + 'fr': 'F', + 'de': 'A', + 'en': 'E[ANG]', + 'es': 'E[ESP]', + } + formats = [] for format_id, format_dict in player_info['VSR'].items(): f = dict(format_dict) versionCode = f.get('versionCode') - - langcode = { - 'fr': 'F', - 'de': 'A', - }.get(lang, lang) - lang_rexs = [r'VO?%s' % langcode, r'VO?.-ST%s' % langcode] - lang_pref = ( - None if versionCode is None else ( - 10 if any(re.match(r, versionCode) for r in lang_rexs) - else -10)) + langcode = LANGS.get(lang, lang) + lang_rexs = [r'VO?%s-' % re.escape(langcode), r'VO?.-ST%s$' % re.escape(langcode)] + lang_pref = None + if versionCode: + matched_lang_rexs = [r for r in lang_rexs if re.match(r, versionCode)] + lang_pref = -10 if not matched_lang_rexs else 10 * len(matched_lang_rexs) source_pref = 0 if versionCode is not None: # The original version with subtitles has lower relevance - if re.match(r'VO-ST(F|A)', versionCode): + if re.match(r'VO-ST(F|A|E)', versionCode): source_pref -= 10 # The version with sourds/mal subtitles has also lower relevance - elif re.match(r'VO?(F|A)-STM\1', versionCode): + elif re.match(r'VO?(F|A|E)-STM\1', versionCode): source_pref -= 9 format = { 'format_id': format_id, @@ -165,7 +207,7 @@ class ArteTVPlus7IE(InfoExtractor): # It also uses the arte_vp_url url from the webpage to extract the information class ArteTVCreativeIE(ArteTVPlus7IE): IE_NAME = 'arte.tv:creative' - _VALID_URL = r'https?://creative\.arte\.tv/(?P<lang>fr|de)/(?:magazine?/)?(?P<id>[^?#]+)' + _VALID_URL = r'https?://creative\.arte\.tv/(?P<lang>fr|de|en|es)/(?:magazine?/)?(?P<id>[^/?#&]+)' _TESTS = [{ 'url': 'http://creative.arte.tv/de/magazin/agentur-amateur-corporate-design', @@ -189,30 +231,25 @@ class ArteTVCreativeIE(ArteTVPlus7IE): class ArteTVFutureIE(ArteTVPlus7IE): IE_NAME = 'arte.tv:future' - _VALID_URL = r'https?://future\.arte\.tv/(?P<lang>fr|de)/(thema|sujet)/.*?#article-anchor-(?P<id>\d+)' + _VALID_URL = r'https?://future\.arte\.tv/(?P<lang>fr|de|en|es)/(?P<id>[^/?#&]+)' - _TEST = { - 'url': 'http://future.arte.tv/fr/sujet/info-sciences#article-anchor-7081', + _TESTS = [{ + 'url': 'http://future.arte.tv/fr/info-sciences/les-ecrevisses-aussi-sont-anxieuses', 'info_dict': { - 'id': '5201', + 'id': '050940-028-A', 'ext': 'mp4', - 'title': 'Les champignons au secours de la planète', - 'upload_date': '20131101', + 'title': 'Les écrevisses aussi peuvent être anxieuses', + 'upload_date': '20140902', }, - } - - def _real_extract(self, url): - anchor_id, lang = self._extract_url_info(url) - webpage = self._download_webpage(url, anchor_id) - row = self._search_regex( - r'(?s)id="%s"[^>]*>.+?(<div[^>]*arte_vp_url[^>]*>)' % anchor_id, - webpage, 'row') - return self._extract_from_webpage(row, anchor_id, lang) + }, { + 'url': 'http://future.arte.tv/fr/la-science-est-elle-responsable', + 'only_matching': True, + }] class ArteTVDDCIE(ArteTVPlus7IE): IE_NAME = 'arte.tv:ddc' - _VALID_URL = r'https?://ddc\.arte\.tv/(?P<lang>emission|folge)/(?P<id>.+)' + _VALID_URL = r'https?://ddc\.arte\.tv/(?P<lang>emission|folge)/(?P<id>[^/?#&]+)' def _real_extract(self, url): video_id, lang = self._extract_url_info(url) @@ -230,7 +267,7 @@ class ArteTVDDCIE(ArteTVPlus7IE): class ArteTVConcertIE(ArteTVPlus7IE): IE_NAME = 'arte.tv:concert' - _VALID_URL = r'https?://concert\.arte\.tv/(?P<lang>de|fr)/(?P<id>.+)' + _VALID_URL = r'https?://concert\.arte\.tv/(?P<lang>fr|de|en|es)/(?P<id>[^/?#&]+)' _TEST = { 'url': 'http://concert.arte.tv/de/notwist-im-pariser-konzertclub-divan-du-monde', @@ -245,6 +282,54 @@ class ArteTVConcertIE(ArteTVPlus7IE): } +class ArteTVCinemaIE(ArteTVPlus7IE): + IE_NAME = 'arte.tv:cinema' + _VALID_URL = r'https?://cinema\.arte\.tv/(?P<lang>fr|de|en|es)/(?P<id>.+)' + + _TEST = { + 'url': 'http://cinema.arte.tv/de/node/38291', + 'md5': '6b275511a5107c60bacbeeda368c3aa1', + 'info_dict': { + 'id': '055876-000_PWA12025-D', + 'ext': 'mp4', + 'title': 'Tod auf dem Nil', + 'upload_date': '20160122', + 'description': 'md5:7f749bbb77d800ef2be11d54529b96bc', + }, + } + + +class ArteTVMagazineIE(ArteTVPlus7IE): + IE_NAME = 'arte.tv:magazine' + _VALID_URL = r'https?://(?:www\.)?arte\.tv/magazine/[^/]+/(?P<lang>fr|de|en|es)/(?P<id>[^/?#&]+)' + + _TESTS = [{ + # Embedded via <iframe src="http://www.arte.tv/arte_vp/index.php?json_url=..." + 'url': 'http://www.arte.tv/magazine/trepalium/fr/entretien-avec-le-realisateur-vincent-lannoo-trepalium', + 'md5': '2a9369bcccf847d1c741e51416299f25', + 'info_dict': { + 'id': '065965-000-A', + 'ext': 'mp4', + 'title': 'Trepalium - Extrait Ep.01', + 'upload_date': '20160121', + }, + }, { + # Embedded via <iframe src="http://www.arte.tv/guide/fr/embed/054813-004-A/medium" + 'url': 'http://www.arte.tv/magazine/trepalium/fr/episode-0406-replay-trepalium', + 'md5': 'fedc64fc7a946110fe311634e79782ca', + 'info_dict': { + 'id': '054813-004_PLUS7-F', + 'ext': 'mp4', + 'title': 'Trepalium (4/6)', + 'description': 'md5:10057003c34d54e95350be4f9b05cb40', + 'upload_date': '20160218', + }, + }, { + 'url': 'http://www.arte.tv/magazine/metropolis/de/frank-woeste-german-paris-metropolis', + 'only_matching': True, + }] + + class ArteTVEmbedIE(ArteTVPlus7IE): IE_NAME = 'arte.tv:embed' _VALID_URL = r'''(?x) diff --git a/youtube_dl/extractor/atresplayer.py b/youtube_dl/extractor/atresplayer.py index 50e47ba..b8f9ae0 100644 --- a/youtube_dl/extractor/atresplayer.py +++ b/youtube_dl/extractor/atresplayer.py @@ -2,6 +2,8 @@ from __future__ import unicode_literals import time import hmac +import hashlib +import re from .common import InfoExtractor from ..compat import ( @@ -32,6 +34,19 @@ class AtresPlayerIE(InfoExtractor): 'duration': 5527.6, 'thumbnail': 're:^https?://.*\.jpg$', }, + 'skip': 'This video is only available for registered users' + }, + { + 'url': 'http://www.atresplayer.com/television/especial/videoencuentros/temporada-1/capitulo-112-david-bustamante_2014121600375.html', + 'md5': '0d0e918533bbd4b263f2de4d197d4aac', + 'info_dict': { + 'id': 'capitulo-112-david-bustamante', + 'ext': 'flv', + 'title': 'David Bustamante', + 'description': 'md5:f33f1c0a05be57f6708d4dd83a3b81c6', + 'duration': 1439.0, + 'thumbnail': 're:^https?://.*\.jpg$', + }, }, { 'url': 'http://www.atresplayer.com/television/series/el-secreto-de-puente-viejo/el-chico-de-los-tres-lunares/capitulo-977-29-12-14_2014122400174.html', @@ -50,6 +65,13 @@ class AtresPlayerIE(InfoExtractor): _LOGIN_URL = 'https://servicios.atresplayer.com/j_spring_security_check' + _ERRORS = { + 'UNPUBLISHED': 'We\'re sorry, but this video is not yet available.', + 'DELETED': 'This video has expired and is no longer available for online streaming.', + 'GEOUNPUBLISHED': 'We\'re sorry, but this video is not available in your region due to right restrictions.', + # 'PREMIUM': 'PREMIUM', + } + def _real_initialize(self): self._login() @@ -83,58 +105,72 @@ class AtresPlayerIE(InfoExtractor): episode_id = self._search_regex( r'episode="([^"]+)"', webpage, 'episode id') + request = sanitized_Request( + self._PLAYER_URL_TEMPLATE % episode_id, + headers={'User-Agent': self._USER_AGENT}) + player = self._download_json(request, episode_id, 'Downloading player JSON') + + episode_type = player.get('typeOfEpisode') + error_message = self._ERRORS.get(episode_type) + if error_message: + raise ExtractorError( + '%s returned error: %s' % (self.IE_NAME, error_message), expected=True) + + formats = [] + video_url = player.get('urlVideo') + if video_url: + format_info = { + 'url': video_url, + 'format_id': 'http', + } + mobj = re.search(r'(?P<bitrate>\d+)K_(?P<width>\d+)x(?P<height>\d+)', video_url) + if mobj: + format_info.update({ + 'width': int_or_none(mobj.group('width')), + 'height': int_or_none(mobj.group('height')), + 'tbr': int_or_none(mobj.group('bitrate')), + }) + formats.append(format_info) + timestamp = int_or_none(self._download_webpage( self._TIME_API_URL, video_id, 'Downloading timestamp', fatal=False), 1000, time.time()) timestamp_shifted = compat_str(timestamp + self._TIMESTAMP_SHIFT) token = hmac.new( self._MAGIC.encode('ascii'), - (episode_id + timestamp_shifted).encode('utf-8') + (episode_id + timestamp_shifted).encode('utf-8'), hashlib.md5 ).hexdigest() - formats = [] - for fmt in ['windows', 'android_tablet']: - request = sanitized_Request( - self._URL_VIDEO_TEMPLATE.format(fmt, episode_id, timestamp_shifted, token)) - request.add_header('User-Agent', self._USER_AGENT) - - fmt_json = self._download_json( - request, video_id, 'Downloading %s video JSON' % fmt) - - result = fmt_json.get('resultDes') - if result.lower() != 'ok': - raise ExtractorError( - '%s returned error: %s' % (self.IE_NAME, result), expected=True) - - for format_id, video_url in fmt_json['resultObject'].items(): - if format_id == 'token' or not video_url.startswith('http'): - continue - if video_url.endswith('/Manifest'): - if 'geodeswowsmpra3player' in video_url: - f4m_path = video_url.split('smil:', 1)[-1].split('free_', 1)[0] - f4m_url = 'http://drg.antena3.com/{0}hds/es/sd.f4m'.format(f4m_path) - # this videos are protected by DRM, the f4m downloader doesn't support them - continue - else: - f4m_url = video_url[:-9] + '/manifest.f4m' - formats.extend(self._extract_f4m_formats(f4m_url, video_id)) - else: - formats.append({ - 'url': video_url, - 'format_id': 'android-%s' % format_id, - 'preference': 1, - }) - self._sort_formats(formats) + request = sanitized_Request( + self._URL_VIDEO_TEMPLATE.format('windows', episode_id, timestamp_shifted, token), + headers={'User-Agent': self._USER_AGENT}) - player = self._download_json( - self._PLAYER_URL_TEMPLATE % episode_id, - episode_id) + fmt_json = self._download_json( + request, video_id, 'Downloading windows video JSON') + + result = fmt_json.get('resultDes') + if result.lower() != 'ok': + raise ExtractorError( + '%s returned error: %s' % (self.IE_NAME, result), expected=True) + + for format_id, video_url in fmt_json['resultObject'].items(): + if format_id == 'token' or not video_url.startswith('http'): + continue + if 'geodeswowsmpra3player' in video_url: + f4m_path = video_url.split('smil:', 1)[-1].split('free_', 1)[0] + f4m_url = 'http://drg.antena3.com/{0}hds/es/sd.f4m'.format(f4m_path) + # this videos are protected by DRM, the f4m downloader doesn't support them + continue + else: + f4m_url = video_url[:-9] + '/manifest.f4m' + formats.extend(self._extract_f4m_formats(f4m_url, video_id, f4m_id='hds', fatal=False)) + self._sort_formats(formats) path_data = player.get('pathData') episode = self._download_xml( - self._EPISODE_URL_TEMPLATE % path_data, - video_id, 'Downloading episode XML') + self._EPISODE_URL_TEMPLATE % path_data, video_id, + 'Downloading episode XML') duration = float_or_none(xpath_text( episode, './media/asset/info/technical/contentDuration', 'duration')) diff --git a/youtube_dl/extractor/audimedia.py b/youtube_dl/extractor/audimedia.py new file mode 100644 index 0000000..3b2effa --- /dev/null +++ b/youtube_dl/extractor/audimedia.py @@ -0,0 +1,80 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + int_or_none, + parse_iso8601, + sanitized_Request, +) + + +class AudiMediaIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?audimedia\.tv/(?:en|de)/vid/(?P<id>[^/?#]+)' + _TEST = { + 'url': 'https://audimedia.tv/en/vid/60-seconds-of-audi-sport-104-2015-wec-bahrain-rookie-test', + 'md5': '79a8b71c46d49042609795ab59779b66', + 'info_dict': { + 'id': '1565', + 'ext': 'mp4', + 'title': '60 Seconds of Audi Sport 104/2015 - WEC Bahrain, Rookie Test', + 'description': 'md5:60e5d30a78ced725f7b8d34370762941', + 'upload_date': '20151124', + 'timestamp': 1448354940, + 'duration': 74022, + 'view_count': int, + } + } + # extracted from https://audimedia.tv/assets/embed/embedded-player.js (dataSourceAuthToken) + _AUTH_TOKEN = 'e25b42847dba18c6c8816d5d8ce94c326e06823ebf0859ed164b3ba169be97f2' + + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + + raw_payload = self._search_regex(r'<script[^>]+class="amtv-embed"[^>]+id="([^"]+)"', webpage, 'raw payload') + _, stage_mode, video_id, lang = raw_payload.split('-') + + # TODO: handle s and e stage_mode (live streams and ended live streams) + if stage_mode not in ('s', 'e'): + request = sanitized_Request( + 'https://audimedia.tv/api/video/v1/videos/%s?embed[]=video_versions&embed[]=thumbnail_image&where[content_language_iso]=%s' % (video_id, lang), + headers={'X-Auth-Token': self._AUTH_TOKEN}) + json_data = self._download_json(request, video_id)['results'] + formats = [] + + stream_url_hls = json_data.get('stream_url_hls') + if stream_url_hls: + formats.extend(self._extract_m3u8_formats( + stream_url_hls, video_id, 'mp4', + entry_protocol='m3u8_native', m3u8_id='hls', fatal=False)) + + stream_url_hds = json_data.get('stream_url_hds') + if stream_url_hds: + formats.extend(self._extract_f4m_formats( + stream_url_hds + '?hdcore=3.4.0', + video_id, f4m_id='hds', fatal=False)) + + for video_version in json_data.get('video_versions'): + video_version_url = video_version.get('download_url') or video_version.get('stream_url') + if not video_version_url: + continue + formats.append({ + 'url': video_version_url, + 'width': int_or_none(video_version.get('width')), + 'height': int_or_none(video_version.get('height')), + 'abr': int_or_none(video_version.get('audio_bitrate')), + 'vbr': int_or_none(video_version.get('video_bitrate')), + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': json_data['title'], + 'description': json_data.get('subtitle'), + 'thumbnail': json_data.get('thumbnail_image', {}).get('file'), + 'timestamp': parse_iso8601(json_data.get('publication_date')), + 'duration': int_or_none(json_data.get('duration')), + 'view_count': int_or_none(json_data.get('view_count')), + 'formats': formats, + } diff --git a/youtube_dl/extractor/audiomack.py b/youtube_dl/extractor/audiomack.py index 693ba22..3eed912 100644 --- a/youtube_dl/extractor/audiomack.py +++ b/youtube_dl/extractor/audiomack.py @@ -56,7 +56,7 @@ class AudiomackIE(InfoExtractor): # API is inconsistent with errors if 'url' not in api_response or not api_response['url'] or 'error' in api_response: - raise ExtractorError('Invalid url %s', url) + raise ExtractorError('Invalid url %s' % url) # Audiomack wraps a lot of soundcloud tracks in their branded wrapper # if so, pass the work off to the soundcloud extractor diff --git a/youtube_dl/extractor/azubu.py b/youtube_dl/extractor/azubu.py index 0961d33..011edf1 100644 --- a/youtube_dl/extractor/azubu.py +++ b/youtube_dl/extractor/azubu.py @@ -3,7 +3,11 @@ from __future__ import unicode_literals import json from .common import InfoExtractor -from ..utils import float_or_none +from ..utils import ( + ExtractorError, + float_or_none, + sanitized_Request, +) class AzubuIE(InfoExtractor): @@ -91,3 +95,37 @@ class AzubuIE(InfoExtractor): 'view_count': view_count, 'formats': formats, } + + +class AzubuLiveIE(InfoExtractor): + _VALID_URL = r'http://www.azubu.tv/(?P<id>[^/]+)$' + + _TEST = { + 'url': 'http://www.azubu.tv/MarsTVMDLen', + 'only_matching': True, + } + + def _real_extract(self, url): + user = self._match_id(url) + + info = self._download_json( + 'http://api.azubu.tv/public/modules/last-video/{0}/info'.format(user), + user)['data'] + if info['type'] != 'STREAM': + raise ExtractorError('{0} is not streaming live'.format(user), expected=True) + + req = sanitized_Request( + 'https://edge-elb.api.brightcove.com/playback/v1/accounts/3361910549001/videos/ref:' + info['reference_id']) + req.add_header('Accept', 'application/json;pk=BCpkADawqM1gvI0oGWg8dxQHlgT8HkdE2LnAlWAZkOlznO39bSZX726u4JqnDsK3MDXcO01JxXK2tZtJbgQChxgaFzEVdHRjaDoxaOu8hHOO8NYhwdxw9BzvgkvLUlpbDNUuDoc4E4wxDToV') + bc_info = self._download_json(req, user) + m3u8_url = next(source['src'] for source in bc_info['sources'] if source['container'] == 'M2TS') + formats = self._extract_m3u8_formats(m3u8_url, user, ext='mp4') + + return { + 'id': info['id'], + 'title': self._live_title(info['title']), + 'uploader_id': user, + 'formats': formats, + 'is_live': True, + 'thumbnail': bc_info['poster'], + } diff --git a/youtube_dl/extractor/baidu.py b/youtube_dl/extractor/baidu.py index e37ee44..76b21e5 100644 --- a/youtube_dl/extractor/baidu.py +++ b/youtube_dl/extractor/baidu.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..compat import compat_urlparse +from ..utils import unescapeHTML class BaiduVideoIE(InfoExtractor): @@ -14,8 +14,8 @@ class BaiduVideoIE(InfoExtractor): 'url': 'http://v.baidu.com/comic/1069.htm?frp=bdbrand&q=%E4%B8%AD%E5%8D%8E%E5%B0%8F%E5%BD%93%E5%AE%B6', 'info_dict': { 'id': '1069', - 'title': '中华小当家 TV版 (全52集)', - 'description': 'md5:395a419e41215e531c857bb037bbaf80', + 'title': '中华小当家 TV版国语', + 'description': 'md5:51be07afe461cf99fa61231421b5397c', }, 'playlist_count': 52, }, { @@ -25,45 +25,32 @@ class BaiduVideoIE(InfoExtractor): 'title': 're:^奔跑吧兄弟', 'description': 'md5:1bf88bad6d850930f542d51547c089b8', }, - 'playlist_mincount': 3, + 'playlist_mincount': 12, }] + def _call_api(self, path, category, playlist_id, note): + return self._download_json('http://app.video.baidu.com/%s/?worktype=adnative%s&id=%s' % ( + path, category, playlist_id), playlist_id, note) + def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - playlist_id = mobj.group('id') - category = category2 = mobj.group('type') + category, playlist_id = re.match(self._VALID_URL, url).groups() if category == 'show': - category2 = 'tvshow' - - webpage = self._download_webpage(url, playlist_id) - - playlist_title = self._html_search_regex( - r'title\s*:\s*(["\'])(?P<title>[^\']+)\1', webpage, - 'playlist title', group='title') - playlist_description = self._html_search_regex( - r'<input[^>]+class="j-data-intro"[^>]+value="([^"]+)"/>', webpage, - playlist_id, 'playlist description') + category = 'tvshow' + if category == 'tv': + category = 'tvplay' - site = self._html_search_regex( - r'filterSite\s*:\s*["\']([^"]*)["\']', webpage, - 'primary provider site') - api_result = self._download_json( - 'http://v.baidu.com/%s_intro/?dtype=%sPlayUrl&id=%s&site=%s' % ( - category, category2, playlist_id, site), - playlist_id, 'Get playlist links') + playlist_detail = self._call_api( + 'xqinfo', category, playlist_id, 'Download playlist JSON metadata') - entries = [] - for episode in api_result[0]['episodes']: - episode_id = '%s_%s' % (playlist_id, episode['episode']) + playlist_title = playlist_detail['title'] + playlist_description = unescapeHTML(playlist_detail.get('intro')) - redirect_page = self._download_webpage( - compat_urlparse.urljoin(url, episode['url']), episode_id, - note='Download Baidu redirect page') - real_url = self._html_search_regex( - r'location\.replace\("([^"]+)"\)', redirect_page, 'real URL') + episodes_detail = self._call_api( + 'xqsingle', category, playlist_id, 'Download episodes JSON metadata') - entries.append(self.url_result( - real_url, video_title=episode['single_title'])) + entries = [self.url_result( + episode['url'], video_title=episode['title'] + ) for episode in episodes_detail['videos']] return self.playlist_result( entries, playlist_id, playlist_title, playlist_description) diff --git a/youtube_dl/extractor/bbc.py b/youtube_dl/extractor/bbc.py index 33b296e..9d0dfb9 100644 --- a/youtube_dl/extractor/bbc.py +++ b/youtube_dl/extractor/bbc.py @@ -22,7 +22,18 @@ from ..compat import ( class BBCCoUkIE(InfoExtractor): IE_NAME = 'bbc.co.uk' IE_DESC = 'BBC iPlayer' - _VALID_URL = r'https?://(?:www\.)?bbc\.co\.uk/(?:(?:programmes/(?!articles/)|iplayer(?:/[^/]+)?/(?:episode/|playlist/))|music/clips[/#])(?P<id>[\da-z]{8})' + _ID_REGEX = r'[pb][\da-z]{7}' + _VALID_URL = r'''(?x) + https?:// + (?:www\.)?bbc\.co\.uk/ + (?: + programmes/(?!articles/)| + iplayer(?:/[^/]+)?/(?:episode/|playlist/)| + music/clips[/#]| + radio/player/ + ) + (?P<id>%s) + ''' % _ID_REGEX _MEDIASELECTOR_URLS = [ # Provides HQ HLS streams with even better quality that pc mediaset but fails @@ -46,9 +57,8 @@ class BBCCoUkIE(InfoExtractor): 'info_dict': { 'id': 'b039d07m', 'ext': 'flv', - 'title': 'Kaleidoscope, Leonard Cohen', + 'title': 'Leonard Cohen, Kaleidoscope - BBC Radio 4', 'description': 'The Canadian poet and songwriter reflects on his musical career.', - 'duration': 1740, }, 'params': { # rtmp download @@ -76,7 +86,7 @@ class BBCCoUkIE(InfoExtractor): 'id': 'b00yng1d', 'ext': 'flv', 'title': 'The Voice UK: Series 3: Blind Auditions 5', - 'description': "Emma Willis and Marvin Humes present the fifth set of blind auditions in the singing competition, as the coaches continue to build their teams based on voice alone.", + 'description': 'Emma Willis and Marvin Humes present the fifth set of blind auditions in the singing competition, as the coaches continue to build their teams based on voice alone.', 'duration': 5100, }, 'params': { @@ -111,16 +121,17 @@ class BBCCoUkIE(InfoExtractor): 'params': { # rtmp download 'skip_download': True, - } + }, + 'skip': 'Episode is no longer available on BBC iPlayer Radio', }, { - 'url': 'http://www.bbc.co.uk/music/clips/p02frcc3', + 'url': 'http://www.bbc.co.uk/music/clips/p022h44b', 'note': 'Audio', 'info_dict': { - 'id': 'p02frcch', + 'id': 'p022h44j', 'ext': 'flv', - 'title': 'Pete Tong, Past, Present and Future Special, Madeon - After Hours mix', - 'description': 'French house superstar Madeon takes us out of the club and onto the after party.', - 'duration': 3507, + 'title': 'BBC Proms Music Guides, Rachmaninov: Symphonic Dances', + 'description': "In this Proms Music Guide, Andrew McGregor looks at Rachmaninov's Symphonic Dances.", + 'duration': 227, }, 'params': { # rtmp download @@ -171,13 +182,25 @@ class BBCCoUkIE(InfoExtractor): }, { # iptv-all mediaset fails with geolocation however there is no geo restriction # for this programme at all - 'url': 'http://www.bbc.co.uk/programmes/b06bp7lf', + 'url': 'http://www.bbc.co.uk/programmes/b06rkn85', 'info_dict': { - 'id': 'b06bp7kf', + 'id': 'b06rkms3', 'ext': 'flv', - 'title': "Annie Mac's Friday Night, B.Traits sits in for Annie", - 'description': 'B.Traits sits in for Annie Mac with a Mini-Mix from Disclosure.', - 'duration': 10800, + 'title': "Best of the Mini-Mixes 2015: Part 3, Annie Mac's Friday Night - BBC Radio 1", + 'description': "Annie has part three in the Best of the Mini-Mixes 2015, plus the year's Most Played!", + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + }, { + # compact player (https://github.com/rg3/youtube-dl/issues/8147) + 'url': 'http://www.bbc.co.uk/programmes/p028bfkf/player', + 'info_dict': { + 'id': 'p028bfkj', + 'ext': 'flv', + 'title': 'Extract from BBC documentary Look Stranger - Giant Leeks and Magic Brews', + 'description': 'Extract from BBC documentary Look Stranger - Giant Leeks and Magic Brews', }, 'params': { # rtmp download @@ -192,6 +215,9 @@ class BBCCoUkIE(InfoExtractor): }, { 'url': 'http://www.bbc.co.uk/iplayer/cbeebies/episode/b0480276/bing-14-atchoo', 'only_matching': True, + }, { + 'url': 'http://www.bbc.co.uk/radio/player/p03cchwf', + 'only_matching': True, } ] @@ -222,11 +248,9 @@ class BBCCoUkIE(InfoExtractor): elif transfer_format == 'dash': pass elif transfer_format == 'hls': - m3u8_formats = self._extract_m3u8_formats( + formats.extend(self._extract_m3u8_formats( href, programme_id, ext='mp4', entry_protocol='m3u8_native', - m3u8_id=supplier, fatal=False) - if m3u8_formats: - formats.extend(m3u8_formats) + m3u8_id=supplier, fatal=False)) # Direct link else: formats.append({ @@ -453,6 +477,7 @@ class BBCCoUkIE(InfoExtractor): webpage = self._download_webpage(url, group_id, 'Downloading video page') programme_id = None + duration = None tviplayer = self._search_regex( r'mediator\.bind\(({.+?})\s*,\s*document\.getElementById', @@ -465,14 +490,19 @@ class BBCCoUkIE(InfoExtractor): if not programme_id: programme_id = self._search_regex( - r'"vpid"\s*:\s*"([\da-z]{8})"', webpage, 'vpid', fatal=False, default=None) + r'"vpid"\s*:\s*"(%s)"' % self._ID_REGEX, webpage, 'vpid', fatal=False, default=None) if programme_id: formats, subtitles = self._download_media_selector(programme_id) - title = self._og_search_title(webpage) + title = self._og_search_title(webpage, default=None) or self._html_search_regex( + (r'<h2[^>]+id="parent-title"[^>]*>(.+?)</h2>', + r'<div[^>]+class="info"[^>]*>\s*<h1>(.+?)</h1>'), webpage, 'title') description = self._search_regex( - r'<p class="[^"]*medium-description[^"]*">([^<]+)</p>', - webpage, 'description', fatal=False) + (r'<p class="[^"]*medium-description[^"]*">([^<]+)</p>', + r'<div[^>]+class="info_+synopsis"[^>]*>([^<]+)</div>'), + webpage, 'description', default=None) + if not description: + description = self._html_search_meta('description', webpage) else: programme_id, title, description, duration, formats, subtitles = self._download_playlist(group_id) @@ -586,6 +616,7 @@ class BBCIE(BBCCoUkIE): 'ext': 'mp4', 'title': '''Judge Mindy Glazer: "I'm sorry to see you here... I always wondered what happened to you"''', 'duration': 56, + 'description': '''Judge Mindy Glazer: "I'm sorry to see you here... I always wondered what happened to you"''', }, 'params': { 'skip_download': True, @@ -702,19 +733,10 @@ class BBCIE(BBCCoUkIE): webpage = self._download_webpage(url, playlist_id) - timestamp = None - playlist_title = None - playlist_description = None - - ld = self._parse_json( - self._search_regex( - r'(?s)<script type="application/ld\+json">(.+?)</script>', - webpage, 'ld json', default='{}'), - playlist_id, fatal=False) - if ld: - timestamp = parse_iso8601(ld.get('datePublished')) - playlist_title = ld.get('headline') - playlist_description = ld.get('articleBody') + json_ld_info = self._search_json_ld(webpage, playlist_id, default=None) + timestamp = json_ld_info.get('timestamp') + playlist_title = json_ld_info.get('title') + playlist_description = json_ld_info.get('description') if not timestamp: timestamp = parse_iso8601(self._search_regex( @@ -728,6 +750,7 @@ class BBCIE(BBCCoUkIE): # article with multiple videos embedded with playlist.sxml (e.g. # http://www.bbc.com/sport/0/football/34475836) playlists = re.findall(r'<param[^>]+name="playlist"[^>]+value="([^"]+)"', webpage) + playlists.extend(re.findall(r'data-media-id="([^"]+/playlist\.sxml)"', webpage)) if playlists: entries = [ self._extract_from_playlist_sxml(playlist_url, playlist_id, timestamp) @@ -780,8 +803,9 @@ class BBCIE(BBCCoUkIE): # single video story (e.g. http://www.bbc.com/travel/story/20150625-sri-lankas-spicy-secret) programme_id = self._search_regex( - [r'data-video-player-vpid="([\da-z]{8})"', - r'<param[^>]+name="externalIdentifier"[^>]+value="([\da-z]{8})"'], + [r'data-video-player-vpid="(%s)"' % self._ID_REGEX, + r'<param[^>]+name="externalIdentifier"[^>]+value="(%s)"' % self._ID_REGEX, + r'videoId\s*:\s*["\'](%s)["\']' % self._ID_REGEX], webpage, 'vpid', default=None) if programme_id: @@ -816,7 +840,7 @@ class BBCIE(BBCCoUkIE): # Multiple video article (e.g. # http://www.bbc.co.uk/blogs/adamcurtis/entries/3662a707-0af9-3149-963f-47bea720b460) - EMBED_URL = r'https?://(?:www\.)?bbc\.co\.uk/(?:[^/]+/)+[\da-z]{8}(?:\b[^"]+)?' + EMBED_URL = r'https?://(?:www\.)?bbc\.co\.uk/(?:[^/]+/)+%s(?:\b[^"]+)?' % self._ID_REGEX entries = [] for match in extract_all(r'new\s+SMP\(({.+?})\)'): embed_url = match.get('playerSettings', {}).get('externalEmbedUrl') diff --git a/youtube_dl/extractor/beeg.py b/youtube_dl/extractor/beeg.py index 61bc2f7..34c2a75 100644 --- a/youtube_dl/extractor/beeg.py +++ b/youtube_dl/extractor/beeg.py @@ -1,6 +1,11 @@ from __future__ import unicode_literals from .common import InfoExtractor +from ..compat import ( + compat_chr, + compat_ord, + compat_urllib_parse_unquote, +) from ..utils import ( int_or_none, parse_iso8601, @@ -29,7 +34,38 @@ class BeegIE(InfoExtractor): video_id = self._match_id(url) video = self._download_json( - 'http://beeg.com/api/v1/video/%s' % video_id, video_id) + 'https://api.beeg.com/api/v5/video/%s' % video_id, video_id) + + def split(o, e): + def cut(s, x): + n.append(s[:x]) + return s[x:] + n = [] + r = len(o) % e + if r > 0: + o = cut(o, r) + while len(o) > e: + o = cut(o, e) + n.append(o) + return n + + def decrypt_key(key): + # Reverse engineered from http://static.beeg.com/cpl/1105.js + a = '5ShMcIQlssOd7zChAIOlmeTZDaUxULbJRnywYaiB' + e = compat_urllib_parse_unquote(key) + o = ''.join([ + compat_chr(compat_ord(e[n]) - compat_ord(a[n % len(a)]) % 21) + for n in range(len(e))]) + return ''.join(split(o, 3)[::-1]) + + def decrypt_url(encrypted_url): + encrypted_url = self._proto_relative_url( + encrypted_url.replace('{DATA_MARKERS}', ''), 'https:') + key = self._search_regex( + r'/key=(.*?)%2Cend=', encrypted_url, 'key', default=None) + if not key: + return encrypted_url + return encrypted_url.replace(key, decrypt_key(key)) formats = [] for format_id, video_url in video.items(): @@ -40,7 +76,7 @@ class BeegIE(InfoExtractor): if not height: continue formats.append({ - 'url': self._proto_relative_url(video_url.replace('{DATA_MARKERS}', ''), 'http:'), + 'url': decrypt_url(video_url), 'format_id': format_id, 'height': int(height), }) diff --git a/youtube_dl/extractor/bigflix.py b/youtube_dl/extractor/bigflix.py new file mode 100644 index 0000000..33762ad --- /dev/null +++ b/youtube_dl/extractor/bigflix.py @@ -0,0 +1,85 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import base64 +import re + +from .common import InfoExtractor +from ..compat import compat_urllib_parse_unquote + + +class BigflixIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?bigflix\.com/.+/(?P<id>[0-9]+)' + _TESTS = [{ + 'url': 'http://www.bigflix.com/Hindi-movies/Action-movies/Singham-Returns/16537', + 'md5': 'ec76aa9b1129e2e5b301a474e54fab74', + 'info_dict': { + 'id': '16537', + 'ext': 'mp4', + 'title': 'Singham Returns', + 'description': 'md5:3d2ba5815f14911d5cc6a501ae0cf65d', + } + }, { + # 2 formats + 'url': 'http://www.bigflix.com/Tamil-movies/Drama-movies/Madarasapatinam/16070', + 'info_dict': { + 'id': '16070', + 'ext': 'mp4', + 'title': 'Madarasapatinam', + 'description': 'md5:63b9b8ed79189c6f0418c26d9a3452ca', + 'formats': 'mincount:2', + }, + 'params': { + 'skip_download': True, + } + }, { + # multiple formats + 'url': 'http://www.bigflix.com/Malayalam-movies/Drama-movies/Indian-Rupee/15967', + 'only_matching': True, + }] + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + title = self._html_search_regex( + r'<div[^>]+class=["\']pagetitle["\'][^>]*>(.+?)</div>', + webpage, 'title') + + def decode_url(quoted_b64_url): + return base64.b64decode(compat_urllib_parse_unquote( + quoted_b64_url).encode('ascii')).decode('utf-8') + + formats = [] + for height, encoded_url in re.findall( + r'ContentURL_(\d{3,4})[pP][^=]+=([^&]+)', webpage): + video_url = decode_url(encoded_url) + f = { + 'url': video_url, + 'format_id': '%sp' % height, + 'height': int(height), + } + if video_url.startswith('rtmp'): + f['ext'] = 'flv' + formats.append(f) + + file_url = self._search_regex( + r'file=([^&]+)', webpage, 'video url', default=None) + if file_url: + video_url = decode_url(file_url) + if all(f['url'] != video_url for f in formats): + formats.append({ + 'url': decode_url(file_url), + }) + + self._sort_formats(formats) + + description = self._html_search_meta('description', webpage) + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'formats': formats + } diff --git a/youtube_dl/extractor/bilibili.py b/youtube_dl/extractor/bilibili.py index 6c66a12..59beb11 100644 --- a/youtube_dl/extractor/bilibili.py +++ b/youtube_dl/extractor/bilibili.py @@ -2,143 +2,109 @@ from __future__ import unicode_literals import re -import itertools -import json from .common import InfoExtractor -from ..compat import ( - compat_etree_fromstring, -) +from ..compat import compat_str from ..utils import ( int_or_none, - unified_strdate, + unescapeHTML, ExtractorError, + xpath_text, ) class BiliBiliIE(InfoExtractor): - _VALID_URL = r'http://www\.bilibili\.(?:tv|com)/video/av(?P<id>[0-9]+)/' + _VALID_URL = r'http://www\.bilibili\.(?:tv|com)/video/av(?P<id>\d+)(?:/index_(?P<page_num>\d+).html)?' _TESTS = [{ 'url': 'http://www.bilibili.tv/video/av1074402/', 'md5': '2c301e4dab317596e837c3e7633e7d86', 'info_dict': { - 'id': '1074402_part1', + 'id': '1554319', 'ext': 'flv', 'title': '【金坷垃】金泡沫', - 'duration': 308, + 'duration': 308313, 'upload_date': '20140420', 'thumbnail': 're:^https?://.+\.jpg', + 'description': 'md5:ce18c2a2d2193f0df2917d270f2e5923', + 'timestamp': 1397983878, + 'uploader': '菊子桑', }, }, { 'url': 'http://www.bilibili.com/video/av1041170/', 'info_dict': { 'id': '1041170', 'title': '【BD1080P】刀语【诸神&异域】', + 'description': '这是个神奇的故事~每个人不留弹幕不给走哦~切利哦!~', + 'uploader': '枫叶逝去', + 'timestamp': 1396501299, }, 'playlist_count': 9, }] def _real_extract(self, url): - video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) - - if '(此视频不存在或被删除)' in webpage: - raise ExtractorError( - 'The video does not exist or was deleted', expected=True) - - if '>你没有权限浏览! 由于版权相关问题 我们不对您所在的地区提供服务<' in webpage: - raise ExtractorError( - 'The video is not available in your region due to copyright reasons', - expected=True) - - video_code = self._search_regex( - r'(?s)<div itemprop="video".*?>(.*?)</div>', webpage, 'video code') - - title = self._html_search_meta( - 'media:title', video_code, 'title', fatal=True) - duration_str = self._html_search_meta( - 'duration', video_code, 'duration') - if duration_str is None: - duration = None - else: - duration_mobj = re.match( - r'^T(?:(?P<hours>[0-9]+)H)?(?P<minutes>[0-9]+)M(?P<seconds>[0-9]+)S$', - duration_str) - duration = ( - int_or_none(duration_mobj.group('hours'), default=0) * 3600 + - int(duration_mobj.group('minutes')) * 60 + - int(duration_mobj.group('seconds'))) - upload_date = unified_strdate(self._html_search_meta( - 'uploadDate', video_code, fatal=False)) - thumbnail = self._html_search_meta( - 'thumbnailUrl', video_code, 'thumbnail', fatal=False) - - cid = self._search_regex(r'cid=(\d+)', webpage, 'cid') - - entries = [] - - lq_page = self._download_webpage( - 'http://interface.bilibili.com/v_cdn_play?appkey=1&cid=%s' % cid, - video_id, - note='Downloading LQ video info' + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + page_num = mobj.group('page_num') or '1' + + view_data = self._download_json( + 'http://api.bilibili.com/view?type=json&appkey=8e9fc618fbd41e28&id=%s&page=%s' % (video_id, page_num), + video_id) + if 'error' in view_data: + raise ExtractorError('%s said: %s' % (self.IE_NAME, view_data['error']), expected=True) + + cid = view_data['cid'] + title = unescapeHTML(view_data['title']) + + doc = self._download_xml( + 'http://interface.bilibili.com/v_cdn_play?appkey=8e9fc618fbd41e28&cid=%s' % cid, + cid, + 'Downloading page %s/%s' % (page_num, view_data['pages']) ) - try: - err_info = json.loads(lq_page) - raise ExtractorError( - 'BiliBili said: ' + err_info['error_text'], expected=True) - except ValueError: - pass - lq_doc = compat_etree_fromstring(lq_page) - lq_durls = lq_doc.findall('./durl') + if xpath_text(doc, './result') == 'error': + raise ExtractorError('%s said: %s' % (self.IE_NAME, xpath_text(doc, './message')), expected=True) - hq_doc = self._download_xml( - 'http://interface.bilibili.com/playurl?appkey=1&cid=%s' % cid, - video_id, - note='Downloading HQ video info', - fatal=False, - ) - if hq_doc is not False: - hq_durls = hq_doc.findall('./durl') - assert len(lq_durls) == len(hq_durls) - else: - hq_durls = itertools.repeat(None) + entries = [] - i = 1 - for lq_durl, hq_durl in zip(lq_durls, hq_durls): + for durl in doc.findall('./durl'): + size = xpath_text(durl, ['./filesize', './size']) formats = [{ - 'format_id': 'lq', - 'quality': 1, - 'url': lq_durl.find('./url').text, - 'filesize': int_or_none( - lq_durl.find('./size'), get_attr='text'), + 'url': durl.find('./url').text, + 'filesize': int_or_none(size), + 'ext': 'flv', }] - if hq_durl is not None: - formats.append({ - 'format_id': 'hq', - 'quality': 2, - 'ext': 'flv', - 'url': hq_durl.find('./url').text, - 'filesize': int_or_none( - hq_durl.find('./size'), get_attr='text'), - }) - self._sort_formats(formats) + backup_urls = durl.find('./backup_url') + if backup_urls is not None: + for backup_url in backup_urls.findall('./url'): + formats.append({'url': backup_url.text}) + formats.reverse() entries.append({ - 'id': '%s_part%d' % (video_id, i), + 'id': '%s_part%s' % (cid, xpath_text(durl, './order')), 'title': title, + 'duration': int_or_none(xpath_text(durl, './length'), 1000), 'formats': formats, - 'duration': duration, - 'upload_date': upload_date, - 'thumbnail': thumbnail, }) - i += 1 - - return { - '_type': 'multi_video', - 'entries': entries, - 'id': video_id, - 'title': title + info = { + 'id': compat_str(cid), + 'title': title, + 'description': view_data.get('description'), + 'thumbnail': view_data.get('pic'), + 'uploader': view_data.get('author'), + 'timestamp': int_or_none(view_data.get('created')), + 'view_count': int_or_none(view_data.get('play')), + 'duration': int_or_none(xpath_text(doc, './timelength')), } + + if len(entries) == 1: + entries[0].update(info) + return entries[0] + else: + info.update({ + '_type': 'multi_video', + 'id': video_id, + 'entries': entries, + }) + return info diff --git a/youtube_dl/extractor/bleacherreport.py b/youtube_dl/extractor/bleacherreport.py new file mode 100644 index 0000000..38bda3a --- /dev/null +++ b/youtube_dl/extractor/bleacherreport.py @@ -0,0 +1,106 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from .amp import AMPIE +from ..utils import ( + ExtractorError, + int_or_none, + parse_iso8601, +) + + +class BleacherReportIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?bleacherreport\.com/articles/(?P<id>\d+)' + _TESTS = [{ + 'url': 'http://bleacherreport.com/articles/2496438-fsu-stat-projections-is-jalen-ramsey-best-defensive-player-in-college-football', + 'md5': 'a3ffc3dc73afdbc2010f02d98f990f20', + 'info_dict': { + 'id': '2496438', + 'ext': 'mp4', + 'title': 'FSU Stat Projections: Is Jalen Ramsey Best Defensive Player in College Football?', + 'uploader_id': 3992341, + 'description': 'CFB, ACC, Florida State', + 'timestamp': 1434380212, + 'upload_date': '20150615', + 'uploader': 'Team Stream Now ', + }, + 'add_ie': ['Ooyala'], + }, { + 'url': 'http://bleacherreport.com/articles/2586817-aussie-golfers-get-fright-of-their-lives-after-being-chased-by-angry-kangaroo', + 'md5': 'af5f90dc9c7ba1c19d0a3eac806bbf50', + 'info_dict': { + 'id': '2586817', + 'ext': 'mp4', + 'title': 'Aussie Golfers Get Fright of Their Lives After Being Chased by Angry Kangaroo', + 'timestamp': 1446839961, + 'uploader': 'Sean Fay', + 'description': 'md5:825e94e0f3521df52fa83b2ed198fa20', + 'uploader_id': 6466954, + 'upload_date': '20151011', + }, + 'add_ie': ['Youtube'], + }] + + def _real_extract(self, url): + article_id = self._match_id(url) + + article_data = self._download_json('http://api.bleacherreport.com/api/v1/articles/%s' % article_id, article_id)['article'] + + thumbnails = [] + primary_photo = article_data.get('primaryPhoto') + if primary_photo: + thumbnails = [{ + 'url': primary_photo['url'], + 'width': primary_photo.get('width'), + 'height': primary_photo.get('height'), + }] + + info = { + '_type': 'url_transparent', + 'id': article_id, + 'title': article_data['title'], + 'uploader': article_data.get('author', {}).get('name'), + 'uploader_id': article_data.get('authorId'), + 'timestamp': parse_iso8601(article_data.get('createdAt')), + 'thumbnails': thumbnails, + 'comment_count': int_or_none(article_data.get('commentsCount')), + 'view_count': int_or_none(article_data.get('hitCount')), + } + + video = article_data.get('video') + if video: + video_type = video['type'] + if video_type == 'cms.bleacherreport.com': + info['url'] = 'http://bleacherreport.com/video_embed?id=%s' % video['id'] + elif video_type == 'ooyala.com': + info['url'] = 'ooyala:%s' % video['id'] + elif video_type == 'youtube.com': + info['url'] = video['id'] + elif video_type == 'vine.co': + info['url'] = 'https://vine.co/v/%s' % video['id'] + else: + info['url'] = video_type + video['id'] + return info + else: + raise ExtractorError('no video in the article', expected=True) + + +class BleacherReportCMSIE(AMPIE): + _VALID_URL = r'https?://(?:www\.)?bleacherreport\.com/video_embed\?id=(?P<id>[0-9a-f-]{36})' + _TESTS = [{ + 'url': 'http://bleacherreport.com/video_embed?id=8fd44c2f-3dc5-4821-9118-2c825a98c0e1', + 'md5': '8c2c12e3af7805152675446c905d159b', + 'info_dict': { + 'id': '8fd44c2f-3dc5-4821-9118-2c825a98c0e1', + 'ext': 'flv', + 'title': 'Cena vs. Rollins Would Expose the Heavyweight Division', + 'description': 'md5:984afb4ade2f9c0db35f3267ed88b36e', + }, + }] + + def _real_extract(self, url): + video_id = self._match_id(url) + info = self._extract_feed_info('http://cms.bleacherreport.com/media/items/%s/akamai.json' % video_id) + info['id'] = video_id + return info diff --git a/youtube_dl/extractor/bliptv.py b/youtube_dl/extractor/bliptv.py deleted file mode 100644 index 35375f7..0000000 --- a/youtube_dl/extractor/bliptv.py +++ /dev/null @@ -1,290 +0,0 @@ -from __future__ import unicode_literals - -import re - -from .common import InfoExtractor - -from ..compat import compat_urlparse -from ..utils import ( - clean_html, - int_or_none, - parse_iso8601, - sanitized_Request, - unescapeHTML, - xpath_text, - xpath_with_ns, -) - - -class BlipTVIE(InfoExtractor): - _VALID_URL = r'https?://(?:\w+\.)?blip\.tv/(?:(?:.+-|rss/flash/)(?P<id>\d+)|((?:play/|api\.swf#)(?P<lookup_id>[\da-zA-Z+_]+)))' - - _TESTS = [ - { - 'url': 'http://blip.tv/cbr/cbr-exclusive-gotham-city-imposters-bats-vs-jokerz-short-3-5796352', - 'md5': '80baf1ec5c3d2019037c1c707d676b9f', - 'info_dict': { - 'id': '5779306', - 'ext': 'm4v', - 'title': 'CBR EXCLUSIVE: "Gotham City Imposters" Bats VS Jokerz Short 3', - 'description': 'md5:9bc31f227219cde65e47eeec8d2dc596', - 'timestamp': 1323138843, - 'upload_date': '20111206', - 'uploader': 'cbr', - 'uploader_id': '679425', - 'duration': 81, - } - }, - { - # https://github.com/rg3/youtube-dl/pull/2274 - 'note': 'Video with subtitles', - 'url': 'http://blip.tv/play/h6Uag5OEVgI.html', - 'md5': '309f9d25b820b086ca163ffac8031806', - 'info_dict': { - 'id': '6586561', - 'ext': 'mp4', - 'title': 'Red vs. Blue Season 11 Episode 1', - 'description': 'One-Zero-One', - 'timestamp': 1371261608, - 'upload_date': '20130615', - 'uploader': 'redvsblue', - 'uploader_id': '792887', - 'duration': 279, - } - }, - { - # https://bugzilla.redhat.com/show_bug.cgi?id=967465 - 'url': 'http://a.blip.tv/api.swf#h6Uag5KbVwI', - 'md5': '314e87b1ebe7a48fcbfdd51b791ce5a6', - 'info_dict': { - 'id': '6573122', - 'ext': 'mov', - 'upload_date': '20130520', - 'description': 'Two hapless space marines argue over what to do when they realize they have an astronomically huge problem on their hands.', - 'title': 'Red vs. Blue Season 11 Trailer', - 'timestamp': 1369029609, - 'uploader': 'redvsblue', - 'uploader_id': '792887', - } - }, - { - 'url': 'http://blip.tv/play/gbk766dkj4Yn', - 'md5': 'fe0a33f022d49399a241e84a8ea8b8e3', - 'info_dict': { - 'id': '1749452', - 'ext': 'mp4', - 'upload_date': '20090208', - 'description': 'Witness the first appearance of the Nostalgia Critic character, as Doug reviews the movie Transformers.', - 'title': 'Nostalgia Critic: Transformers', - 'timestamp': 1234068723, - 'uploader': 'NostalgiaCritic', - 'uploader_id': '246467', - } - }, - { - # https://github.com/rg3/youtube-dl/pull/4404 - 'note': 'Audio only', - 'url': 'http://blip.tv/hilarios-productions/weekly-manga-recap-kingdom-7119982', - 'md5': '76c0a56f24e769ceaab21fbb6416a351', - 'info_dict': { - 'id': '7103299', - 'ext': 'flv', - 'title': 'Weekly Manga Recap: Kingdom', - 'description': 'And then Shin breaks the enemy line, and he's all like HWAH! And then he slices a guy and it's all like FWASHING! And... it's really hard to describe the best parts of this series without breaking down into sound effects, okay?', - 'timestamp': 1417660321, - 'upload_date': '20141204', - 'uploader': 'The Rollo T', - 'uploader_id': '407429', - 'duration': 7251, - 'vcodec': 'none', - } - }, - { - # missing duration - 'url': 'http://blip.tv/rss/flash/6700880', - 'info_dict': { - 'id': '6684191', - 'ext': 'm4v', - 'title': 'Cowboy Bebop: Gateway Shuffle Review', - 'description': 'md5:3acc480c0f9ae157f5fe88547ecaf3f8', - 'timestamp': 1386639757, - 'upload_date': '20131210', - 'uploader': 'sfdebris', - 'uploader_id': '706520', - } - } - ] - - @staticmethod - def _extract_url(webpage): - mobj = re.search(r'<meta\s[^>]*https?://api\.blip\.tv/\w+/redirect/\w+/(\d+)', webpage) - if mobj: - return 'http://blip.tv/a/a-' + mobj.group(1) - mobj = re.search(r'<(?:iframe|embed|object)\s[^>]*(https?://(?:\w+\.)?blip\.tv/(?:play/|api\.swf#)[a-zA-Z0-9_]+)', webpage) - if mobj: - return mobj.group(1) - - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - lookup_id = mobj.group('lookup_id') - - # See https://github.com/rg3/youtube-dl/issues/857 and - # https://github.com/rg3/youtube-dl/issues/4197 - if lookup_id: - urlh = self._request_webpage( - 'http://blip.tv/play/%s' % lookup_id, lookup_id, 'Resolving lookup id') - url = compat_urlparse.urlparse(urlh.geturl()) - qs = compat_urlparse.parse_qs(url.query) - mobj = re.match(self._VALID_URL, qs['file'][0]) - - video_id = mobj.group('id') - - rss = self._download_xml('http://blip.tv/rss/flash/%s' % video_id, video_id, 'Downloading video RSS') - - def _x(p): - return xpath_with_ns(p, { - 'blip': 'http://blip.tv/dtd/blip/1.0', - 'media': 'http://search.yahoo.com/mrss/', - 'itunes': 'http://www.itunes.com/dtds/podcast-1.0.dtd', - }) - - item = rss.find('channel/item') - - video_id = xpath_text(item, _x('blip:item_id'), 'video id') or lookup_id - title = xpath_text(item, 'title', 'title', fatal=True) - description = clean_html(xpath_text(item, _x('blip:puredescription'), 'description')) - timestamp = parse_iso8601(xpath_text(item, _x('blip:datestamp'), 'timestamp')) - uploader = xpath_text(item, _x('blip:user'), 'uploader') - uploader_id = xpath_text(item, _x('blip:userid'), 'uploader id') - duration = int_or_none(xpath_text(item, _x('blip:runtime'), 'duration')) - media_thumbnail = item.find(_x('media:thumbnail')) - thumbnail = (media_thumbnail.get('url') if media_thumbnail is not None - else xpath_text(item, 'image', 'thumbnail')) - categories = [category.text for category in item.findall('category') if category is not None] - - formats = [] - subtitles_urls = {} - - media_group = item.find(_x('media:group')) - for media_content in media_group.findall(_x('media:content')): - url = media_content.get('url') - role = media_content.get(_x('blip:role')) - msg = self._download_webpage( - url + '?showplayer=20140425131715&referrer=http://blip.tv&mask=7&skin=flashvars&view=url', - video_id, 'Resolving URL for %s' % role) - real_url = compat_urlparse.parse_qs(msg.strip())['message'][0] - - media_type = media_content.get('type') - if media_type == 'text/srt' or url.endswith('.srt'): - LANGS = { - 'english': 'en', - } - lang = role.rpartition('-')[-1].strip().lower() - langcode = LANGS.get(lang, lang) - subtitles_urls[langcode] = url - elif media_type.startswith('video/'): - formats.append({ - 'url': real_url, - 'format_id': role, - 'format_note': media_type, - 'vcodec': media_content.get(_x('blip:vcodec')) or 'none', - 'acodec': media_content.get(_x('blip:acodec')), - 'filesize': media_content.get('filesize'), - 'width': int_or_none(media_content.get('width')), - 'height': int_or_none(media_content.get('height')), - }) - self._check_formats(formats, video_id) - self._sort_formats(formats) - - subtitles = self.extract_subtitles(video_id, subtitles_urls) - - return { - 'id': video_id, - 'title': title, - 'description': description, - 'timestamp': timestamp, - 'uploader': uploader, - 'uploader_id': uploader_id, - 'duration': duration, - 'thumbnail': thumbnail, - 'categories': categories, - 'formats': formats, - 'subtitles': subtitles, - } - - def _get_subtitles(self, video_id, subtitles_urls): - subtitles = {} - for lang, url in subtitles_urls.items(): - # For some weird reason, blip.tv serves a video instead of subtitles - # when we request with a common UA - req = sanitized_Request(url) - req.add_header('User-Agent', 'youtube-dl') - subtitles[lang] = [{ - # The extension is 'srt' but it's actually an 'ass' file - 'ext': 'ass', - 'data': self._download_webpage(req, None, note=False), - }] - return subtitles - - -class BlipTVUserIE(InfoExtractor): - _VALID_URL = r'(?:(?:https?://(?:\w+\.)?blip\.tv/)|bliptvuser:)(?!api\.swf)([^/]+)/*$' - _PAGE_SIZE = 12 - IE_NAME = 'blip.tv:user' - _TEST = { - 'url': 'http://blip.tv/actone', - 'info_dict': { - 'id': 'actone', - 'title': 'Act One: The Series', - }, - 'playlist_count': 5, - } - - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - username = mobj.group(1) - - page_base = 'http://m.blip.tv/pr/show_get_full_episode_list?users_id=%s&lite=0&esi=1' - - page = self._download_webpage(url, username, 'Downloading user page') - mobj = re.search(r'data-users-id="([^"]+)"', page) - page_base = page_base % mobj.group(1) - title = self._og_search_title(page) - - # Download video ids using BlipTV Ajax calls. Result size per - # query is limited (currently to 12 videos) so we need to query - # page by page until there are no video ids - it means we got - # all of them. - - video_ids = [] - pagenum = 1 - - while True: - url = page_base + "&page=" + str(pagenum) - page = self._download_webpage( - url, username, 'Downloading video ids from page %d' % pagenum) - - # Extract video identifiers - ids_in_page = [] - - for mobj in re.finditer(r'href="/([^"]+)"', page): - if mobj.group(1) not in ids_in_page: - ids_in_page.append(unescapeHTML(mobj.group(1))) - - video_ids.extend(ids_in_page) - - # A little optimization - if current page is not - # "full", ie. does not contain PAGE_SIZE video ids then - # we can assume that this page is the last one - there - # are no more ids on further pages - no need to query - # again. - - if len(ids_in_page) < self._PAGE_SIZE: - break - - pagenum += 1 - - urls = ['http://blip.tv/%s' % video_id for video_id in video_ids] - url_entries = [self.url_result(vurl, 'BlipTV') for vurl in urls] - return self.playlist_result( - url_entries, playlist_title=title, playlist_id=username) diff --git a/youtube_dl/extractor/bloomberg.py b/youtube_dl/extractor/bloomberg.py index 11ace91..13343bc 100644 --- a/youtube_dl/extractor/bloomberg.py +++ b/youtube_dl/extractor/bloomberg.py @@ -6,7 +6,7 @@ from .common import InfoExtractor class BloombergIE(InfoExtractor): - _VALID_URL = r'https?://www\.bloomberg\.com/news/[^/]+/[^/]+/(?P<id>[^/?#]+)' + _VALID_URL = r'https?://(?:www\.)?bloomberg\.com/(?:[^/]+/)*(?P<id>[^/?#]+)' _TESTS = [{ 'url': 'http://www.bloomberg.com/news/videos/b/aaeae121-5949-481e-a1ce-4562db6f5df2', @@ -20,22 +20,32 @@ class BloombergIE(InfoExtractor): }, { 'url': 'http://www.bloomberg.com/news/articles/2015-11-12/five-strange-things-that-have-been-happening-in-financial-markets', 'only_matching': True, + }, { + 'url': 'http://www.bloomberg.com/politics/videos/2015-11-25/karl-rove-on-jeb-bush-s-struggles-stopping-trump', + 'only_matching': True, }] def _real_extract(self, url): name = self._match_id(url) webpage = self._download_webpage(url, name) - video_id = self._search_regex(r'"bmmrId":"(.+?)"', webpage, 'id') + video_id = self._search_regex( + r'["\']bmmrId["\']\s*:\s*(["\'])(?P<url>.+?)\1', + webpage, 'id', group='url') title = re.sub(': Video$', '', self._og_search_title(webpage)) embed_info = self._download_json( 'http://www.bloomberg.com/api/embed?id=%s' % video_id, video_id) formats = [] for stream in embed_info['streams']: - if stream["muxing_format"] == "TS": - formats.extend(self._extract_m3u8_formats(stream['url'], video_id)) + stream_url = stream.get('url') + if not stream_url: + continue + if stream['muxing_format'] == 'TS': + formats.extend(self._extract_m3u8_formats( + stream_url, video_id, 'mp4', m3u8_id='hls', fatal=False)) else: - formats.extend(self._extract_f4m_formats(stream['url'], video_id)) + formats.extend(self._extract_f4m_formats( + stream_url, video_id, f4m_id='hds', fatal=False)) self._sort_formats(formats) return { diff --git a/youtube_dl/extractor/bpb.py b/youtube_dl/extractor/bpb.py index 510813f..c28e729 100644 --- a/youtube_dl/extractor/bpb.py +++ b/youtube_dl/extractor/bpb.py @@ -1,7 +1,13 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor +from ..utils import ( + js_to_json, + determine_ext, +) class BpbIE(InfoExtractor): @@ -10,7 +16,8 @@ class BpbIE(InfoExtractor): _TEST = { 'url': 'http://www.bpb.de/mediathek/297/joachim-gauck-zu-1989-und-die-erinnerung-an-die-ddr', - 'md5': '0792086e8e2bfbac9cdf27835d5f2093', + # md5 fails in Python 2.6 due to buggy server response and wrong handling of urllib2 + 'md5': 'c4f84c8a8044ca9ff68bb8441d300b3f', 'info_dict': { 'id': '297', 'ext': 'mp4', @@ -25,13 +32,26 @@ class BpbIE(InfoExtractor): title = self._html_search_regex( r'<h2 class="white">(.*?)</h2>', webpage, 'title') - video_url = self._html_search_regex( - r'(http://film\.bpb\.de/player/dokument_[0-9]+\.mp4)', - webpage, 'video URL') + video_info_dicts = re.findall( + r"({\s*src:\s*'http://film\.bpb\.de/[^}]+})", webpage) + + formats = [] + for video_info in video_info_dicts: + video_info = self._parse_json(video_info, video_id, transform_source=js_to_json) + quality = video_info['quality'] + video_url = video_info['src'] + formats.append({ + 'url': video_url, + 'preference': 10 if quality == 'high' else 0, + 'format_note': quality, + 'format_id': '%s-%s' % (quality, determine_ext(video_url)), + }) + + self._sort_formats(formats) return { 'id': video_id, - 'url': video_url, + 'formats': formats, 'title': title, 'description': self._og_search_description(webpage), } diff --git a/youtube_dl/extractor/br.py b/youtube_dl/extractor/br.py index 66e394e..11cf498 100644 --- a/youtube_dl/extractor/br.py +++ b/youtube_dl/extractor/br.py @@ -1,18 +1,21 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor from ..utils import ( ExtractorError, int_or_none, parse_duration, + xpath_element, + xpath_text, ) class BRIE(InfoExtractor): IE_DESC = 'Bayerischer Rundfunk Mediathek' - _VALID_URL = r'https?://(?:www\.)?br\.de/(?:[a-z0-9\-_]+/)+(?P<id>[a-z0-9\-_]+)\.html' - _BASE_URL = 'http://www.br.de' + _VALID_URL = r'(?P<base_url>https?://(?:www\.)?br(?:-klassik)?\.de)/(?:[a-z0-9\-_]+/)+(?P<id>[a-z0-9\-_]+)\.html' _TESTS = [ { @@ -22,7 +25,7 @@ class BRIE(InfoExtractor): 'id': '48f656ef-287e-486f-be86-459122db22cc', 'ext': 'mp4', 'title': 'Die böse Überraschung', - 'description': 'Betriebliche Altersvorsorge: Die böse Überraschung', + 'description': 'md5:ce9ac81b466ce775b8018f6801b48ac9', 'duration': 180, 'uploader': 'Reinhard Weber', 'upload_date': '20150422', @@ -30,23 +33,23 @@ class BRIE(InfoExtractor): }, { 'url': 'http://www.br.de/nachrichten/oberbayern/inhalt/muenchner-polizeipraesident-schreiber-gestorben-100.html', - 'md5': 'a44396d73ab6a68a69a568fae10705bb', + 'md5': 'af3a3a4aa43ff0ce6a89504c67f427ef', 'info_dict': { 'id': 'a4b83e34-123d-4b81-9f4e-c0d3121a4e05', - 'ext': 'mp4', + 'ext': 'flv', 'title': 'Manfred Schreiber ist tot', - 'description': 'Abendschau kompakt: Manfred Schreiber ist tot', + 'description': 'md5:b454d867f2a9fc524ebe88c3f5092d97', 'duration': 26, } }, { - 'url': 'http://www.br.de/radio/br-klassik/sendungen/allegro/premiere-urauffuehrung-the-land-2015-dance-festival-muenchen-100.html', + 'url': 'https://www.br-klassik.de/audio/peeping-tom-premierenkritik-dance-festival-muenchen-100.html', 'md5': '8b5b27c0b090f3b35eac4ab3f7a73d3d', 'info_dict': { 'id': '74c603c9-26d3-48bb-b85b-079aeed66e0b', 'ext': 'aac', 'title': 'Kurzweilig und sehr bewegend', - 'description': '"The Land" von Peeping Tom: Kurzweilig und sehr bewegend', + 'description': 'md5:0351996e3283d64adeb38ede91fac54e', 'duration': 296, } }, @@ -57,7 +60,7 @@ class BRIE(InfoExtractor): 'id': '6ba73750-d405-45d3-861d-1ce8c524e059', 'ext': 'mp4', 'title': 'Umweltbewusster Häuslebauer', - 'description': 'Uwe Erdelt: Umweltbewusster Häuslebauer', + 'description': 'md5:d52dae9792d00226348c1dbb13c9bae2', 'duration': 116, } }, @@ -68,7 +71,7 @@ class BRIE(InfoExtractor): 'id': 'd982c9ce-8648-4753-b358-98abb8aec43d', 'ext': 'mp4', 'title': 'Folge 1 - Metaphysik', - 'description': 'Kant für Anfänger: Folge 1 - Metaphysik', + 'description': 'md5:bb659990e9e59905c3d41e369db1fbe3', 'duration': 893, 'uploader': 'Eva Maria Steimle', 'upload_date': '20140117', @@ -77,28 +80,31 @@ class BRIE(InfoExtractor): ] def _real_extract(self, url): - display_id = self._match_id(url) + base_url, display_id = re.search(self._VALID_URL, url).groups() page = self._download_webpage(url, display_id) xml_url = self._search_regex( r"return BRavFramework\.register\(BRavFramework\('avPlayer_(?:[a-f0-9-]{36})'\)\.setup\({dataURL:'(/(?:[a-z0-9\-]+/)+[a-z0-9/~_.-]+)'}\)\);", page, 'XMLURL') - xml = self._download_xml(self._BASE_URL + xml_url, None) + xml = self._download_xml(base_url + xml_url, display_id) medias = [] for xml_media in xml.findall('video') + xml.findall('audio'): + media_id = xml_media.get('externalId') media = { - 'id': xml_media.get('externalId'), - 'title': xml_media.find('title').text, - 'duration': parse_duration(xml_media.find('duration').text), - 'formats': self._extract_formats(xml_media.find('assets')), - 'thumbnails': self._extract_thumbnails(xml_media.find('teaserImage/variants')), - 'description': ' '.join(xml_media.find('shareTitle').text.splitlines()), - 'webpage_url': xml_media.find('permalink').text + 'id': media_id, + 'title': xpath_text(xml_media, 'title', 'title', True), + 'duration': parse_duration(xpath_text(xml_media, 'duration')), + 'formats': self._extract_formats(xpath_element( + xml_media, 'assets'), media_id), + 'thumbnails': self._extract_thumbnails(xpath_element( + xml_media, 'teaserImage/variants'), base_url), + 'description': xpath_text(xml_media, 'desc'), + 'webpage_url': xpath_text(xml_media, 'permalink'), + 'uploader': xpath_text(xml_media, 'author'), } - if xml_media.find('author').text: - media['uploader'] = xml_media.find('author').text - if xml_media.find('broadcastDate').text: - media['upload_date'] = ''.join(reversed(xml_media.find('broadcastDate').text.split('.'))) + broadcast_date = xpath_text(xml_media, 'broadcastDate') + if broadcast_date: + media['upload_date'] = ''.join(reversed(broadcast_date.split('.'))) medias.append(media) if len(medias) > 1: @@ -109,35 +115,54 @@ class BRIE(InfoExtractor): raise ExtractorError('No media entries found') return medias[0] - def _extract_formats(self, assets): - - def text_or_none(asset, tag): - elem = asset.find(tag) - return None if elem is None else elem.text - - formats = [{ - 'url': text_or_none(asset, 'downloadUrl'), - 'ext': text_or_none(asset, 'mediaType'), - 'format_id': asset.get('type'), - 'width': int_or_none(text_or_none(asset, 'frameWidth')), - 'height': int_or_none(text_or_none(asset, 'frameHeight')), - 'tbr': int_or_none(text_or_none(asset, 'bitrateVideo')), - 'abr': int_or_none(text_or_none(asset, 'bitrateAudio')), - 'vcodec': text_or_none(asset, 'codecVideo'), - 'acodec': text_or_none(asset, 'codecAudio'), - 'container': text_or_none(asset, 'mediaType'), - 'filesize': int_or_none(text_or_none(asset, 'size')), - } for asset in assets.findall('asset') - if asset.find('downloadUrl') is not None] - + def _extract_formats(self, assets, media_id): + formats = [] + for asset in assets.findall('asset'): + format_url = xpath_text(asset, ['downloadUrl', 'url']) + asset_type = asset.get('type') + if asset_type == 'HDS': + formats.extend(self._extract_f4m_formats( + format_url + '?hdcore=3.2.0', media_id, f4m_id='hds', fatal=False)) + elif asset_type == 'HLS': + formats.extend(self._extract_m3u8_formats( + format_url, media_id, 'mp4', 'm3u8_native', m3u8_id='hds', fatal=False)) + else: + format_info = { + 'ext': xpath_text(asset, 'mediaType'), + 'width': int_or_none(xpath_text(asset, 'frameWidth')), + 'height': int_or_none(xpath_text(asset, 'frameHeight')), + 'tbr': int_or_none(xpath_text(asset, 'bitrateVideo')), + 'abr': int_or_none(xpath_text(asset, 'bitrateAudio')), + 'vcodec': xpath_text(asset, 'codecVideo'), + 'acodec': xpath_text(asset, 'codecAudio'), + 'container': xpath_text(asset, 'mediaType'), + 'filesize': int_or_none(xpath_text(asset, 'size')), + } + format_url = self._proto_relative_url(format_url) + if format_url: + http_format_info = format_info.copy() + http_format_info.update({ + 'url': format_url, + 'format_id': 'http-%s' % asset_type, + }) + formats.append(http_format_info) + server_prefix = xpath_text(asset, 'serverPrefix') + if server_prefix: + rtmp_format_info = format_info.copy() + rtmp_format_info.update({ + 'url': server_prefix, + 'play_path': xpath_text(asset, 'fileName'), + 'format_id': 'rtmp-%s' % asset_type, + }) + formats.append(rtmp_format_info) self._sort_formats(formats) return formats - def _extract_thumbnails(self, variants): + def _extract_thumbnails(self, variants, base_url): thumbnails = [{ - 'url': self._BASE_URL + variant.find('url').text, - 'width': int_or_none(variant.find('width').text), - 'height': int_or_none(variant.find('height').text), - } for variant in variants.findall('variant')] + 'url': base_url + xpath_text(variant, 'url'), + 'width': int_or_none(xpath_text(variant, 'width')), + 'height': int_or_none(xpath_text(variant, 'height')), + } for variant in variants.findall('variant') if xpath_text(variant, 'url')] thumbnails.sort(key=lambda x: x['width'] * x['height'], reverse=True) return thumbnails diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index f5ebae1..c947337 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -355,7 +355,7 @@ class BrightcoveLegacyIE(InfoExtractor): class BrightcoveNewIE(InfoExtractor): IE_NAME = 'brightcove:new' - _VALID_URL = r'https?://players\.brightcove\.net/(?P<account_id>\d+)/(?P<player_id>[^/]+)_(?P<embed>[^/]+)/index\.html\?.*videoId=(?P<video_id>\d+)' + _VALID_URL = r'https?://players\.brightcove\.net/(?P<account_id>\d+)/(?P<player_id>[^/]+)_(?P<embed>[^/]+)/index\.html\?.*videoId=(?P<video_id>(?:ref:)?\d+)' _TESTS = [{ 'url': 'http://players.brightcove.net/929656772001/e41d32dc-ec74-459e-a845-6c69f7b724ea_default/index.html?videoId=4463358922001', 'md5': 'c8100925723840d4b0d243f7025703be', @@ -387,14 +387,24 @@ class BrightcoveNewIE(InfoExtractor): 'params': { 'skip_download': True, } + }, { + # ref: prefixed video id + 'url': 'http://players.brightcove.net/3910869709001/21519b5c-4b3b-4363-accb-bdc8f358f823_default/index.html?videoId=ref:7069442', + 'only_matching': True, }] + @staticmethod + def _extract_url(webpage): + urls = BrightcoveNewIE._extract_urls(webpage) + return urls[0] if urls else None + @staticmethod def _extract_urls(webpage): # Reference: # 1. http://docs.brightcove.com/en/video-cloud/brightcove-player/guides/publish-video.html#setvideoiniframe - # 2. http://docs.brightcove.com/en/video-cloud/brightcove-player/guides/publish-video.html#setvideousingjavascript) + # 2. http://docs.brightcove.com/en/video-cloud/brightcove-player/guides/publish-video.html#setvideousingjavascript # 3. http://docs.brightcove.com/en/video-cloud/brightcove-player/guides/embed-in-page.html + # 4. https://support.brightcove.com/en/video-cloud/docs/dynamically-assigning-videos-player entries = [] @@ -407,9 +417,10 @@ class BrightcoveNewIE(InfoExtractor): for video_id, account_id, player_id, embed in re.findall( # According to examples from [3] it's unclear whether video id # may be optional and what to do when it is + # According to [4] data-video-id may be prefixed with ref: r'''(?sx) <video[^>]+ - data-video-id=["\'](\d+)["\'][^>]*>.*? + data-video-id=["\']((?:ref:)?\d+)["\'][^>]*>.*? </video>.*? <script[^>]+ src=["\'](?:https?:)?//players\.brightcove\.net/ @@ -458,11 +469,9 @@ class BrightcoveNewIE(InfoExtractor): if source_type == 'application/x-mpegURL': if not src: continue - m3u8_formats = self._extract_m3u8_formats( + formats.extend(self._extract_m3u8_formats( src, video_id, 'mp4', entry_protocol='m3u8_native', - m3u8_id='hls', fatal=False) - if m3u8_formats: - formats.extend(m3u8_formats) + m3u8_id='hls', fatal=False)) else: streaming_src = source.get('streaming_src') stream_name, app_name = source.get('stream_name'), source.get('app_name') diff --git a/youtube_dl/extractor/byutv.py b/youtube_dl/extractor/byutv.py index 3b2de51..dda9805 100644 --- a/youtube_dl/extractor/byutv.py +++ b/youtube_dl/extractor/byutv.py @@ -14,9 +14,10 @@ class BYUtvIE(InfoExtractor): 'info_dict': { 'id': 'studio-c-season-5-episode-5', 'ext': 'mp4', - 'description': 'md5:5438d33774b6bdc662f9485a340401cc', + 'description': 'md5:e07269172baff037f8e8bf9956bc9747', 'title': 'Season 5 Episode 5', - 'thumbnail': 're:^https?://.*\.jpg$' + 'thumbnail': 're:^https?://.*\.jpg$', + 'duration': 1486.486, }, 'params': { 'skip_download': True, diff --git a/youtube_dl/extractor/canal13cl.py b/youtube_dl/extractor/canal13cl.py deleted file mode 100644 index 93241fe..0000000 --- a/youtube_dl/extractor/canal13cl.py +++ /dev/null @@ -1,48 +0,0 @@ -# coding: utf-8 -from __future__ import unicode_literals - -import re - -from .common import InfoExtractor - - -class Canal13clIE(InfoExtractor): - _VALID_URL = r'^http://(?:www\.)?13\.cl/(?:[^/?#]+/)*(?P<id>[^/?#]+)' - _TEST = { - 'url': 'http://www.13.cl/t13/nacional/el-circulo-de-hierro-de-michelle-bachelet-en-su-regreso-a-la-moneda', - 'md5': '4cb1fa38adcad8fea88487a078831755', - 'info_dict': { - 'id': '1403022125', - 'display_id': 'el-circulo-de-hierro-de-michelle-bachelet-en-su-regreso-a-la-moneda', - 'ext': 'mp4', - 'title': 'El "círculo de hierro" de Michelle Bachelet en su regreso a La Moneda', - 'description': '(Foto: Agencia Uno) En nueve días más, Michelle Bachelet va a asumir por segunda vez como presidenta de la República. Entre aquellos que la acompañarán hay caras que se repiten y otras que se consolidan en su entorno de colaboradores más cercanos.', - } - } - - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - display_id = mobj.group('id') - - webpage = self._download_webpage(url, display_id) - - title = self._html_search_meta( - 'twitter:title', webpage, 'title', fatal=True) - description = self._html_search_meta( - 'twitter:description', webpage, 'description') - url = self._html_search_regex( - r'articuloVideo = \"(.*?)\"', webpage, 'url') - real_id = self._search_regex( - r'[^0-9]([0-9]{7,})[^0-9]', url, 'id', default=display_id) - thumbnail = self._html_search_regex( - r'articuloImagen = \"(.*?)\"', webpage, 'thumbnail') - - return { - 'id': real_id, - 'display_id': display_id, - 'url': url, - 'title': title, - 'description': description, - 'ext': 'mp4', - 'thumbnail': thumbnail, - } diff --git a/youtube_dl/extractor/canalc2.py b/youtube_dl/extractor/canalc2.py index f6a1ff3..f1f128c 100644 --- a/youtube_dl/extractor/canalc2.py +++ b/youtube_dl/extractor/canalc2.py @@ -9,9 +9,9 @@ from ..utils import parse_duration class Canalc2IE(InfoExtractor): IE_NAME = 'canalc2.tv' - _VALID_URL = r'https?://(?:www\.)?canalc2\.tv/video/(?P<id>\d+)' + _VALID_URL = r'https?://(?:(?:www\.)?canalc2\.tv/video/|archives-canalc2\.u-strasbg\.fr/video\.asp\?.*\bidVideo=)(?P<id>\d+)' - _TEST = { + _TESTS = [{ 'url': 'http://www.canalc2.tv/video/12163', 'md5': '060158428b650f896c542dfbb3d6487f', 'info_dict': { @@ -23,24 +23,36 @@ class Canalc2IE(InfoExtractor): 'params': { 'skip_download': True, # Requires rtmpdump } - } + }, { + 'url': 'http://archives-canalc2.u-strasbg.fr/video.asp?idVideo=11427&voir=oui', + 'only_matching': True, + }] def _real_extract(self, url): video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) - video_url = self._search_regex( - r'jwplayer\((["\'])Player\1\)\.setup\({[^}]*file\s*:\s*(["\'])(?P<file>.+?)\2', - webpage, 'video_url', group='file') - formats = [{'url': video_url}] - if video_url.startswith('rtmp://'): - rtmp = re.search(r'^(?P<url>rtmp://[^/]+/(?P<app>.+/))(?P<play_path>mp4:.+)$', video_url) - formats[0].update({ - 'url': rtmp.group('url'), - 'ext': 'flv', - 'app': rtmp.group('app'), - 'play_path': rtmp.group('play_path'), - 'page_url': url, - }) + + webpage = self._download_webpage( + 'http://www.canalc2.tv/video/%s' % video_id, video_id) + + formats = [] + for _, video_url in re.findall(r'file\s*=\s*(["\'])(.+?)\1', webpage): + if video_url.startswith('rtmp://'): + rtmp = re.search( + r'^(?P<url>rtmp://[^/]+/(?P<app>.+/))(?P<play_path>mp4:.+)$', video_url) + formats.append({ + 'url': rtmp.group('url'), + 'format_id': 'rtmp', + 'ext': 'flv', + 'app': rtmp.group('app'), + 'play_path': rtmp.group('play_path'), + 'page_url': url, + }) + else: + formats.append({ + 'url': video_url, + 'format_id': 'http', + }) + self._sort_formats(formats) title = self._html_search_regex( r'(?s)class="[^"]*col_description[^"]*">.*?<h3>(.*?)</h3>', webpage, 'title') diff --git a/youtube_dl/extractor/canalplus.py b/youtube_dl/extractor/canalplus.py index 004372f..25b2d4e 100644 --- a/youtube_dl/extractor/canalplus.py +++ b/youtube_dl/extractor/canalplus.py @@ -10,13 +10,14 @@ from ..utils import ( unified_strdate, url_basename, qualities, + int_or_none, ) class CanalplusIE(InfoExtractor): IE_DESC = 'canalplus.fr, piwiplus.fr and d8.tv' _VALID_URL = r'https?://(?:www\.(?P<site>canalplus\.fr|piwiplus\.fr|d8\.tv|itele\.fr)/.*?/(?P<path>.*)|player\.canalplus\.fr/#/(?P<id>[0-9]+))' - _VIDEO_INFO_TEMPLATE = 'http://service.canal-plus.com/video/rest/getVideosLiees/%s/%s' + _VIDEO_INFO_TEMPLATE = 'http://service.canal-plus.com/video/rest/getVideosLiees/%s/%s?format=json' _SITE_ID_MAP = { 'canalplus.fr': 'cplus', 'piwiplus.fr': 'teletoon', @@ -26,10 +27,10 @@ class CanalplusIE(InfoExtractor): _TESTS = [{ 'url': 'http://www.canalplus.fr/c-emissions/pid1830-c-zapping.html?vid=1263092', - 'md5': 'b3481d7ca972f61e37420798d0a9d934', + 'md5': '12164a6f14ff6df8bd628e8ba9b10b78', 'info_dict': { 'id': '1263092', - 'ext': 'flv', + 'ext': 'mp4', 'title': 'Le Zapping - 13/05/15', 'description': 'md5:09738c0d06be4b5d06a0940edb0da73f', 'upload_date': '20150513', @@ -56,10 +57,10 @@ class CanalplusIE(InfoExtractor): 'skip': 'videos get deleted after a while', }, { 'url': 'http://www.itele.fr/france/video/aubervilliers-un-lycee-en-colere-111559', - 'md5': 'f3a46edcdf28006598ffaf5b30e6a2d4', + 'md5': '38b8f7934def74f0d6f3ba6c036a5f82', 'info_dict': { 'id': '1213714', - 'ext': 'flv', + 'ext': 'mp4', 'title': 'Aubervilliers : un lycée en colère - Le 11/02/2015 à 06h45', 'description': 'md5:8216206ec53426ea6321321f3b3c16db', 'upload_date': '20150211', @@ -82,15 +83,16 @@ class CanalplusIE(InfoExtractor): webpage, 'video id', group='id') info_url = self._VIDEO_INFO_TEMPLATE % (site_id, video_id) - doc = self._download_xml(info_url, video_id, 'Downloading video XML') + video_data = self._download_json(info_url, video_id, 'Downloading video JSON') - video_info = [video for video in doc if video.find('ID').text == video_id][0] - media = video_info.find('MEDIA') - infos = video_info.find('INFOS') + if isinstance(video_data, list): + video_data = [video for video in video_data if video.get('ID') == video_id][0] + media = video_data['MEDIA'] + infos = video_data['INFOS'] - preference = qualities(['MOBILE', 'BAS_DEBIT', 'HAUT_DEBIT', 'HD', 'HLS', 'HDS']) + preference = qualities(['MOBILE', 'BAS_DEBIT', 'HAUT_DEBIT', 'HD']) - fmt_url = next(iter(media.find('VIDEOS'))).text + fmt_url = next(iter(media.get('VIDEOS'))) if '/geo' in fmt_url.lower(): response = self._request_webpage( HEADRequest(fmt_url), video_id, @@ -101,35 +103,42 @@ class CanalplusIE(InfoExtractor): expected=True) formats = [] - for fmt in media.find('VIDEOS'): - format_url = fmt.text + for format_id, format_url in media['VIDEOS'].items(): if not format_url: continue - format_id = fmt.tag if format_id == 'HLS': formats.extend(self._extract_m3u8_formats( - format_url, video_id, 'mp4', preference=preference(format_id))) + format_url, video_id, 'mp4', 'm3u8_native', m3u8_id=format_id, fatal=False)) elif format_id == 'HDS': formats.extend(self._extract_f4m_formats( - format_url + '?hdcore=2.11.3', video_id, preference=preference(format_id))) + format_url + '?hdcore=2.11.3', video_id, f4m_id=format_id, fatal=False)) else: formats.append({ - 'url': format_url, + # the secret extracted ya function in http://player.canalplus.fr/common/js/canalPlayer.js + 'url': format_url + '?secret=pqzerjlsmdkjfoiuerhsdlfknaes', 'format_id': format_id, 'preference': preference(format_id), }) self._sort_formats(formats) + thumbnails = [{ + 'id': image_id, + 'url': image_url, + } for image_id, image_url in media.get('images', {}).items()] + + titrage = infos['TITRAGE'] + return { 'id': video_id, 'display_id': display_id, - 'title': '%s - %s' % (infos.find('TITRAGE/TITRE').text, - infos.find('TITRAGE/SOUS_TITRE').text), - 'upload_date': unified_strdate(infos.find('PUBLICATION/DATE').text), - 'thumbnail': media.find('IMAGES/GRAND').text, - 'description': infos.find('DESCRIPTION').text, - 'view_count': int(infos.find('NB_VUES').text), - 'like_count': int(infos.find('NB_LIKES').text), - 'comment_count': int(infos.find('NB_COMMENTS').text), + 'title': '%s - %s' % (titrage['TITRE'], + titrage['SOUS_TITRE']), + 'upload_date': unified_strdate(infos.get('PUBLICATION', {}).get('DATE')), + 'thumbnails': thumbnails, + 'description': infos.get('DESCRIPTION'), + 'duration': int_or_none(infos.get('DURATION')), + 'view_count': int_or_none(infos.get('NB_VUES')), + 'like_count': int_or_none(infos.get('NB_LIKES')), + 'comment_count': int_or_none(infos.get('NB_COMMENTS')), 'formats': formats, } diff --git a/youtube_dl/extractor/canvas.py b/youtube_dl/extractor/canvas.py new file mode 100644 index 0000000..ec6d24d --- /dev/null +++ b/youtube_dl/extractor/canvas.py @@ -0,0 +1,94 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import float_or_none + + +class CanvasIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?canvas\.be/video/(?:[^/]+/)*(?P<id>[^/?#&]+)' + _TESTS = [{ + 'url': 'http://www.canvas.be/video/de-afspraak/najaar-2015/de-afspraak-veilt-voor-de-warmste-week', + 'md5': 'ea838375a547ac787d4064d8c7860a6c', + 'info_dict': { + 'id': 'mz-ast-5e5f90b6-2d72-4c40-82c2-e134f884e93e', + 'display_id': 'de-afspraak-veilt-voor-de-warmste-week', + 'ext': 'mp4', + 'title': 'De afspraak veilt voor de Warmste Week', + 'description': 'md5:24cb860c320dc2be7358e0e5aa317ba6', + 'thumbnail': 're:^https?://.*\.jpg$', + 'duration': 49.02, + } + }, { + # with subtitles + 'url': 'http://www.canvas.be/video/panorama/2016/pieter-0167', + 'info_dict': { + 'id': 'mz-ast-5240ff21-2d30-4101-bba6-92b5ec67c625', + 'display_id': 'pieter-0167', + 'ext': 'mp4', + 'title': 'Pieter 0167', + 'description': 'md5:943cd30f48a5d29ba02c3a104dc4ec4e', + 'thumbnail': 're:^https?://.*\.jpg$', + 'duration': 2553.08, + 'subtitles': { + 'nl': [{ + 'ext': 'vtt', + }], + }, + }, + 'params': { + 'skip_download': True, + } + }] + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + title = self._search_regex( + r'<h1[^>]+class="video__body__header__title"[^>]*>(.+?)</h1>', + webpage, 'title', default=None) or self._og_search_title(webpage) + + video_id = self._html_search_regex( + r'data-video=(["\'])(?P<id>.+?)\1', webpage, 'video id', group='id') + + data = self._download_json( + 'https://mediazone.vrt.be/api/v1/canvas/assets/%s' % video_id, display_id) + + formats = [] + for target in data['targetUrls']: + format_url, format_type = target.get('url'), target.get('type') + if not format_url or not format_type: + continue + if format_type == 'HLS': + formats.extend(self._extract_m3u8_formats( + format_url, display_id, entry_protocol='m3u8_native', + ext='mp4', preference=0, fatal=False, m3u8_id=format_type)) + elif format_type == 'HDS': + formats.extend(self._extract_f4m_formats( + format_url, display_id, f4m_id=format_type, fatal=False)) + else: + formats.append({ + 'format_id': format_type, + 'url': format_url, + }) + self._sort_formats(formats) + + subtitles = {} + subtitle_urls = data.get('subtitleUrls') + if isinstance(subtitle_urls, list): + for subtitle in subtitle_urls: + subtitle_url = subtitle.get('url') + if subtitle_url and subtitle.get('type') == 'CLOSED': + subtitles.setdefault('nl', []).append({'url': subtitle_url}) + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'description': self._og_search_description(webpage), + 'formats': formats, + 'duration': float_or_none(data.get('duration'), 1000), + 'thumbnail': data.get('posterImageUrl'), + 'subtitles': subtitles, + } diff --git a/youtube_dl/extractor/cbc.py b/youtube_dl/extractor/cbc.py new file mode 100644 index 0000000..d8aa310 --- /dev/null +++ b/youtube_dl/extractor/cbc.py @@ -0,0 +1,113 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import js_to_json + + +class CBCIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?cbc\.ca/(?:[^/]+/)+(?P<id>[^/?#]+)' + _TESTS = [{ + # with mediaId + 'url': 'http://www.cbc.ca/22minutes/videos/clips-season-23/don-cherry-play-offs', + 'info_dict': { + 'id': '2682904050', + 'ext': 'flv', + 'title': 'Don Cherry – All-Stars', + 'description': 'Don Cherry has a bee in his bonnet about AHL player John Scott because that guy’s got heart.', + 'timestamp': 1454475540, + 'upload_date': '20160203', + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + }, { + # with clipId + 'url': 'http://www.cbc.ca/archives/entry/1978-robin-williams-freestyles-on-90-minutes-live', + 'info_dict': { + 'id': '2487345465', + 'ext': 'flv', + 'title': 'Robin Williams freestyles on 90 Minutes Live', + 'description': 'Wacky American comedian Robin Williams shows off his infamous "freestyle" comedic talents while being interviewed on CBC\'s 90 Minutes Live.', + 'upload_date': '19700101', + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + }, { + # multiple iframes + 'url': 'http://www.cbc.ca/natureofthings/blog/birds-eye-view-from-vancouvers-burrard-street-bridge-how-we-got-the-shot', + 'playlist': [{ + 'info_dict': { + 'id': '2680832926', + 'ext': 'flv', + 'title': 'An Eagle\'s-Eye View Off Burrard Bridge', + 'description': 'Hercules the eagle flies from Vancouver\'s Burrard Bridge down to a nearby park with a mini-camera strapped to his back.', + 'upload_date': '19700101', + }, + }, { + 'info_dict': { + 'id': '2658915080', + 'ext': 'flv', + 'title': 'Fly like an eagle!', + 'description': 'Eagle equipped with a mini camera flies from the world\'s tallest tower', + 'upload_date': '19700101', + }, + }], + 'params': { + # rtmp download + 'skip_download': True, + }, + }] + + @classmethod + def suitable(cls, url): + return False if CBCPlayerIE.suitable(url) else super(CBCIE, cls).suitable(url) + + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + player_init = self._search_regex( + r'CBC\.APP\.Caffeine\.initInstance\(({.+?})\);', webpage, 'player init', + default=None) + if player_init: + player_info = self._parse_json(player_init, display_id, js_to_json) + media_id = player_info.get('mediaId') + if not media_id: + clip_id = player_info['clipId'] + media_id = self._download_json( + 'http://feed.theplatform.com/f/h9dtGB/punlNGjMlc1F?fields=id&byContent=byReleases%3DbyId%253D' + clip_id, + clip_id)['entries'][0]['id'].split('/')[-1] + return self.url_result('cbcplayer:%s' % media_id, 'CBCPlayer', media_id) + else: + entries = [self.url_result('cbcplayer:%s' % media_id, 'CBCPlayer', media_id) for media_id in re.findall(r'<iframe[^>]+src="[^"]+?mediaId=(\d+)"', webpage)] + return self.playlist_result(entries) + + +class CBCPlayerIE(InfoExtractor): + _VALID_URL = r'(?:cbcplayer:|https?://(?:www\.)?cbc\.ca/(?:player/play/|i/caffeine/syndicate/\?mediaId=))(?P<id>\d+)' + _TEST = { + 'url': 'http://www.cbc.ca/player/play/2683190193', + 'info_dict': { + 'id': '2683190193', + 'ext': 'flv', + 'title': 'Gerry Runs a Sweat Shop', + 'description': 'md5:b457e1c01e8ff408d9d801c1c2cd29b0', + 'timestamp': 1455067800, + 'upload_date': '20160210', + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + return self.url_result( + 'http://feed.theplatform.com/f/ExhSPC/vms_5akSXx4Ng_Zn?byGuid=%s' % video_id, + 'ThePlatformFeed', video_id) diff --git a/youtube_dl/extractor/cbsnews.py b/youtube_dl/extractor/cbsnews.py index f9a64a0..7319ee1 100644 --- a/youtube_dl/extractor/cbsnews.py +++ b/youtube_dl/extractor/cbsnews.py @@ -1,15 +1,17 @@ # encoding: utf-8 from __future__ import unicode_literals -import re -import json - from .common import InfoExtractor +from .theplatform import ThePlatformIE +from ..utils import ( + parse_duration, + find_xpath_attr, +) -class CBSNewsIE(InfoExtractor): +class CBSNewsIE(ThePlatformIE): IE_DESC = 'CBS News' - _VALID_URL = r'http://(?:www\.)?cbsnews\.com/(?:[^/]+/)+(?P<id>[\da-z_-]+)' + _VALID_URL = r'http://(?:www\.)?cbsnews\.com/(?:news|videos)/(?P<id>[\da-z_-]+)' _TESTS = [ { @@ -30,56 +32,57 @@ class CBSNewsIE(InfoExtractor): 'url': 'http://www.cbsnews.com/videos/fort-hood-shooting-army-downplays-mental-illness-as-cause-of-attack/', 'info_dict': { 'id': 'fort-hood-shooting-army-downplays-mental-illness-as-cause-of-attack', - 'ext': 'flv', + 'ext': 'mp4', 'title': 'Fort Hood shooting: Army downplays mental illness as cause of attack', 'thumbnail': 're:^https?://.*\.jpg$', 'duration': 205, + 'subtitles': { + 'en': [{ + 'ext': 'ttml', + }], + }, }, 'params': { - # rtmp download + # m3u8 download 'skip_download': True, }, }, ] + def _parse_smil_subtitles(self, smil, namespace=None, subtitles_lang='en'): + closed_caption_e = find_xpath_attr(smil, self._xpath_ns('.//param', namespace), 'name', 'ClosedCaptionURL') + return { + 'en': [{ + 'ext': 'ttml', + 'url': closed_caption_e.attrib['value'], + }] + } if closed_caption_e is not None and closed_caption_e.attrib.get('value') else [] + def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - video_info = json.loads(self._html_search_regex( + video_info = self._parse_json(self._html_search_regex( r'(?:<ul class="media-list items" id="media-related-items"><li data-video-info|<div id="cbsNewsVideoPlayer" data-video-player-options)=\'({.+?})\'', - webpage, 'video JSON info')) + webpage, 'video JSON info'), video_id) item = video_info['item'] if 'item' in video_info else video_info title = item.get('articleTitle') or item.get('hed') duration = item.get('duration') thumbnail = item.get('mediaImage') or item.get('thumbnail') + subtitles = {} formats = [] for format_id in ['RtmpMobileLow', 'RtmpMobileHigh', 'Hls', 'RtmpDesktop']: - uri = item.get('media' + format_id + 'URI') - if not uri: + pid = item.get('media' + format_id) + if not pid: continue - fmt = { - 'url': uri, - 'format_id': format_id, - } - if uri.startswith('rtmp'): - play_path = re.sub( - r'{slistFilePath}', '', - uri.split('<break>')[-1].split('{break}')[-1]) - fmt.update({ - 'app': 'ondemand?auth=cbs', - 'play_path': 'mp4:' + play_path, - 'player_url': 'http://www.cbsnews.com/[[IMPORT]]/vidtech.cbsinteractive.com/player/3_3_0/CBSI_PLAYER_HD.swf', - 'page_url': 'http://www.cbsnews.com', - 'ext': 'flv', - }) - elif uri.endswith('.m3u8'): - fmt['ext'] = 'mp4' - formats.append(fmt) + release_url = 'http://link.theplatform.com/s/dJ5BDC/%s?format=SMIL&mbr=true' % pid + tp_formats, tp_subtitles = self._extract_theplatform_smil(release_url, video_id, 'Downloading %s SMIL data' % pid) + formats.extend(tp_formats) + subtitles = self._merge_subtitles(subtitles, tp_subtitles) + self._sort_formats(formats) return { 'id': video_id, @@ -87,4 +90,43 @@ class CBSNewsIE(InfoExtractor): 'thumbnail': thumbnail, 'duration': duration, 'formats': formats, + 'subtitles': subtitles, + } + + +class CBSNewsLiveVideoIE(InfoExtractor): + IE_DESC = 'CBS News Live Videos' + _VALID_URL = r'http://(?:www\.)?cbsnews\.com/live/video/(?P<id>[\da-z_-]+)' + + _TEST = { + 'url': 'http://www.cbsnews.com/live/video/clinton-sanders-prepare-to-face-off-in-nh/', + 'info_dict': { + 'id': 'clinton-sanders-prepare-to-face-off-in-nh', + 'ext': 'flv', + 'title': 'Clinton, Sanders Prepare To Face Off In NH', + 'duration': 334, + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + video_info = self._parse_json(self._html_search_regex( + r'data-story-obj=\'({.+?})\'', webpage, 'video JSON info'), video_id)['story'] + + hdcore_sign = 'hdcore=3.3.1' + f4m_formats = self._extract_f4m_formats(video_info['url'] + '&' + hdcore_sign, video_id) + if f4m_formats: + for entry in f4m_formats: + # URLs without the extra param induce an 404 error + entry.update({'extra_param_to_segment_url': hdcore_sign}) + + return { + 'id': video_id, + 'title': video_info['headline'], + 'thumbnail': video_info.get('thumbnail_url_hd') or video_info.get('thumbnail_url_sd'), + 'duration': parse_duration(video_info.get('segmentDur')), + 'formats': f4m_formats, } diff --git a/youtube_dl/extractor/ccc.py b/youtube_dl/extractor/ccc.py index 6924eac..dda2c09 100644 --- a/youtube_dl/extractor/ccc.py +++ b/youtube_dl/extractor/ccc.py @@ -5,6 +5,7 @@ import re from .common import InfoExtractor from ..utils import ( int_or_none, + parse_duration, qualities, unified_strdate, ) @@ -12,21 +13,25 @@ from ..utils import ( class CCCIE(InfoExtractor): IE_NAME = 'media.ccc.de' - _VALID_URL = r'https?://(?:www\.)?media\.ccc\.de/[^?#]+/[^?#/]*?_(?P<id>[0-9]{8,})._[^?#/]*\.html' + _VALID_URL = r'https?://(?:www\.)?media\.ccc\.de/v/(?P<id>[^/?#&]+)' - _TEST = { - 'url': 'http://media.ccc.de/browse/congress/2013/30C3_-_5443_-_en_-_saal_g_-_201312281830_-_introduction_to_processor_design_-_byterazor.html#video', + _TESTS = [{ + 'url': 'https://media.ccc.de/v/30C3_-_5443_-_en_-_saal_g_-_201312281830_-_introduction_to_processor_design_-_byterazor#video', 'md5': '3a1eda8f3a29515d27f5adb967d7e740', 'info_dict': { - 'id': '20131228183', + 'id': '30C3_-_5443_-_en_-_saal_g_-_201312281830_-_introduction_to_processor_design_-_byterazor', 'ext': 'mp4', 'title': 'Introduction to Processor Design', - 'description': 'md5:5ddbf8c734800267f2cee4eab187bc1b', + 'description': 'md5:80be298773966f66d56cb11260b879af', 'thumbnail': 're:^https?://.*\.jpg$', 'view_count': int, - 'upload_date': '20131229', + 'upload_date': '20131228', + 'duration': 3660, } - } + }, { + 'url': 'https://media.ccc.de/v/32c3-7368-shopshifting#download', + 'only_matching': True, + }] def _real_extract(self, url): video_id = self._match_id(url) @@ -40,21 +45,25 @@ class CCCIE(InfoExtractor): title = self._html_search_regex( r'(?s)<h1>(.*?)</h1>', webpage, 'title') description = self._html_search_regex( - r"(?s)<p class='description'>(.*?)</p>", + r'(?s)<h3>About</h3>(.+?)<h3>', webpage, 'description', fatal=False) upload_date = unified_strdate(self._html_search_regex( - r"(?s)<span class='[^']*fa-calendar-o'></span>(.*?)</li>", + r"(?s)<span[^>]+class='[^']*fa-calendar-o'[^>]*>(.+?)</span>", webpage, 'upload date', fatal=False)) view_count = int_or_none(self._html_search_regex( r"(?s)<span class='[^']*fa-eye'></span>(.*?)</li>", webpage, 'view count', fatal=False)) + duration = parse_duration(self._html_search_regex( + r'(?s)<span[^>]+class=(["\']).*?fa-clock-o.*?\1[^>]*></span>(?P<duration>.+?)</li', + webpage, 'duration', fatal=False, group='duration')) matches = re.finditer(r'''(?xs) - <(?:span|div)\s+class='label\s+filetype'>(?P<format>.*?)</(?:span|div)>\s* + <(?:span|div)\s+class='label\s+filetype'>(?P<format>[^<]*)</(?:span|div)>\s* + <(?:span|div)\s+class='label\s+filetype'>(?P<lang>[^<]*)</(?:span|div)>\s* <a\s+download\s+href='(?P<http_url>[^']+)'>\s* (?: .*? - <a\s+href='(?P<torrent_url>[^']+\.torrent)' + <a\s+(?:download\s+)?href='(?P<torrent_url>[^']+\.torrent)' )?''', webpage) formats = [] for m in matches: @@ -62,12 +71,15 @@ class CCCIE(InfoExtractor): format_id = self._search_regex( r'.*/([a-z0-9_-]+)/[^/]*$', m.group('http_url'), 'format id', default=None) + if format_id: + format_id = m.group('lang') + '-' + format_id vcodec = 'h264' if 'h264' in format_id else ( 'none' if format_id in ('mp3', 'opus') else None ) formats.append({ 'format_id': format_id, 'format': format, + 'language': m.group('lang'), 'url': m.group('http_url'), 'vcodec': vcodec, 'preference': preference(format_id), @@ -95,5 +107,6 @@ class CCCIE(InfoExtractor): 'thumbnail': thumbnail, 'view_count': view_count, 'upload_date': upload_date, + 'duration': duration, 'formats': formats, } diff --git a/youtube_dl/extractor/ceskatelevize.py b/youtube_dl/extractor/ceskatelevize.py index 6f7b2a7..b27b4e6 100644 --- a/youtube_dl/extractor/ceskatelevize.py +++ b/youtube_dl/extractor/ceskatelevize.py @@ -177,16 +177,16 @@ class CeskaTelevizeIE(InfoExtractor): for divider in [1000, 60, 60, 100]: components.append(msec % divider) msec //= divider - return "{3:02}:{2:02}:{1:02},{0:03}".format(*components) + return '{3:02}:{2:02}:{1:02},{0:03}'.format(*components) def _fix_subtitle(subtitle): for line in subtitle.splitlines(): - m = re.match(r"^\s*([0-9]+);\s*([0-9]+)\s+([0-9]+)\s*$", line) + m = re.match(r'^\s*([0-9]+);\s*([0-9]+)\s+([0-9]+)\s*$', line) if m: yield m.group(1) start, stop = (_msectotimecode(int(t)) for t in m.groups()[1:]) - yield "{0} --> {1}".format(start, stop) + yield '{0} --> {1}'.format(start, stop) else: yield line - return "\r\n".join(_fix_subtitle(subtitles)) + return '\r\n'.join(_fix_subtitle(subtitles)) diff --git a/youtube_dl/extractor/chaturbate.py b/youtube_dl/extractor/chaturbate.py index 0b67ba6..242fba3 100644 --- a/youtube_dl/extractor/chaturbate.py +++ b/youtube_dl/extractor/chaturbate.py @@ -23,6 +23,8 @@ class ChaturbateIE(InfoExtractor): 'only_matching': True, }] + _ROOM_OFFLINE = 'Room is currently offline' + def _real_extract(self, url): video_id = self._match_id(url) @@ -34,9 +36,16 @@ class ChaturbateIE(InfoExtractor): if not m3u8_url: error = self._search_regex( - r'<span[^>]+class=(["\'])desc_span\1[^>]*>(?P<error>[^<]+)</span>', - webpage, 'error', group='error') - raise ExtractorError(error, expected=True) + [r'<span[^>]+class=(["\'])desc_span\1[^>]*>(?P<error>[^<]+)</span>', + r'<div[^>]+id=(["\'])defchat\1[^>]*>\s*<p><strong>(?P<error>[^<]+)<'], + webpage, 'error', group='error', default=None) + if not error: + if any(p not in webpage for p in ( + self._ROOM_OFFLINE, 'offline_tipping', 'tip_offline')): + error = self._ROOM_OFFLINE + if error: + raise ExtractorError(error, expected=True) + raise ExtractorError('Unable to find stream URL') formats = self._extract_m3u8_formats(m3u8_url, video_id, ext='mp4') diff --git a/youtube_dl/extractor/cinemassacre.py b/youtube_dl/extractor/cinemassacre.py index fd1770d..6d9cd8a 100644 --- a/youtube_dl/extractor/cinemassacre.py +++ b/youtube_dl/extractor/cinemassacre.py @@ -5,7 +5,6 @@ import re from .common import InfoExtractor from ..utils import ExtractorError -from .bliptv import BlipTVIE from .screenwavemedia import ScreenwaveMediaIE @@ -34,18 +33,17 @@ class CinemassacreIE(InfoExtractor): }, }, { - # blip.tv embedded video + # Youtube embedded video 'url': 'http://cinemassacre.com/2006/12/07/chronologically-confused-about-bad-movie-and-video-game-sequel-titles/', - 'md5': 'ca9b3c8dd5a66f9375daeb5135f5a3de', + 'md5': 'df4cf8a1dcedaec79a73d96d83b99023', 'info_dict': { - 'id': '4065369', - 'ext': 'flv', + 'id': 'OEVzPCY2T-g', + 'ext': 'mp4', 'title': 'AVGN: Chronologically Confused about Bad Movie and Video Game Sequel Titles', 'upload_date': '20061207', - 'uploader': 'cinemassacre', - 'uploader_id': '250778', - 'timestamp': 1283233867, - 'description': 'md5:0a108c78d130676b207d0f6d029ecffd', + 'uploader': 'Cinemassacre', + 'uploader_id': 'JamesNintendoNerd', + 'description': 'md5:784734696c2b8b7f4b8625cc799e07f6', } }, { @@ -88,8 +86,6 @@ class CinemassacreIE(InfoExtractor): r'<iframe[^>]+src="(?P<url>(?:https?:)?//(?:[^.]+\.)?youtube\.com/.+?)"', ], webpage, 'player data URL', default=None, group='url') - if not playerdata_url: - playerdata_url = BlipTVIE._extract_url(webpage) if not playerdata_url: raise ExtractorError('Unable to find player data') diff --git a/youtube_dl/extractor/clipfish.py b/youtube_dl/extractor/clipfish.py index 7af9035..3a47f6f 100644 --- a/youtube_dl/extractor/clipfish.py +++ b/youtube_dl/extractor/clipfish.py @@ -1,14 +1,9 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor from ..utils import ( - determine_ext, int_or_none, - js_to_json, - parse_iso8601, - remove_end, + unified_strdate, ) @@ -21,48 +16,47 @@ class ClipfishIE(InfoExtractor): 'id': '3966754', 'ext': 'mp4', 'title': 'FIFA 14 - E3 2013 Trailer', - 'timestamp': 1370938118, + 'description': 'Video zu FIFA 14: E3 2013 Trailer', 'upload_date': '20130611', 'duration': 82, + 'view_count': int, } } def _real_extract(self, url): video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) - - video_info = self._parse_json( - js_to_json(self._html_search_regex( - '(?s)videoObject\s*=\s*({.+?});', webpage, 'video object')), - video_id) + video_info = self._download_json( + 'http://www.clipfish.de/devapi/id/%s?format=json&apikey=hbbtv' % video_id, + video_id)['items'][0] formats = [] - for video_url in re.findall(r'var\s+videourl\s*=\s*"([^"]+)"', webpage): - ext = determine_ext(video_url) - if ext == 'm3u8': - formats.append({ - 'url': video_url.replace('de.hls.fra.clipfish.de', 'hls.fra.clipfish.de'), - 'ext': 'mp4', - 'format_id': 'hls', - }) - else: - formats.append({ - 'url': video_url, - 'format_id': ext, - }) - self._sort_formats(formats) - title = remove_end(self._og_search_title(webpage), ' - Video') - thumbnail = self._og_search_thumbnail(webpage) - duration = int_or_none(video_info.get('length')) - timestamp = parse_iso8601(self._html_search_meta('uploadDate', webpage, 'upload date')) + m3u8_url = video_info.get('media_videourl_hls') + if m3u8_url: + formats.append({ + 'url': m3u8_url.replace('de.hls.fra.clipfish.de', 'hls.fra.clipfish.de'), + 'ext': 'mp4', + 'format_id': 'hls', + }) + + mp4_url = video_info.get('media_videourl') + if mp4_url: + formats.append({ + 'url': mp4_url, + 'format_id': 'mp4', + 'width': int_or_none(video_info.get('width')), + 'height': int_or_none(video_info.get('height')), + 'tbr': int_or_none(video_info.get('bitrate')), + }) return { 'id': video_id, - 'title': title, + 'title': video_info['title'], + 'description': video_info.get('descr'), 'formats': formats, - 'thumbnail': thumbnail, - 'duration': duration, - 'timestamp': timestamp, + 'thumbnail': video_info.get('media_content_thumbnail_large') or video_info.get('media_thumbnail'), + 'duration': int_or_none(video_info.get('media_length')), + 'upload_date': unified_strdate(video_info.get('pubDate')), + 'view_count': int_or_none(video_info.get('media_views')) } diff --git a/youtube_dl/extractor/cliphunter.py b/youtube_dl/extractor/cliphunter.py index d46592c..2996b6b 100644 --- a/youtube_dl/extractor/cliphunter.py +++ b/youtube_dl/extractor/cliphunter.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from .common import InfoExtractor -from ..utils import determine_ext +from ..utils import int_or_none _translation_table = { @@ -42,31 +42,26 @@ class CliphunterIE(InfoExtractor): video_title = self._search_regex( r'mediaTitle = "([^"]+)"', webpage, 'title') - fmts = {} - for fmt in ('mp4', 'flv'): - fmt_list = self._parse_json(self._search_regex( - r'var %sjson\s*=\s*(\[.*?\]);' % fmt, webpage, '%s formats' % fmt), video_id) - for f in fmt_list: - fmts[f['fname']] = _decode(f['sUrl']) - - qualities = self._parse_json(self._search_regex( - r'var player_btns\s*=\s*(.*?);\n', webpage, 'quality info'), video_id) + gexo_files = self._parse_json( + self._search_regex( + r'var\s+gexoFiles\s*=\s*({.+?});', webpage, 'gexo files'), + video_id) formats = [] - for fname, url in fmts.items(): - f = { - 'url': url, - } - if fname in qualities: - qual = qualities[fname] - f.update({ - 'format_id': '%s_%sp' % (determine_ext(url), qual['h']), - 'width': qual['w'], - 'height': qual['h'], - 'tbr': qual['br'], - }) - formats.append(f) - + for format_id, f in gexo_files.items(): + video_url = f.get('url') + if not video_url: + continue + fmt = f.get('fmt') + height = f.get('h') + format_id = '%s_%sp' % (fmt, height) if fmt and height else format_id + formats.append({ + 'url': _decode(video_url), + 'format_id': format_id, + 'width': int_or_none(f.get('w')), + 'height': int_or_none(height), + 'tbr': int_or_none(f.get('br')), + }) self._sort_formats(formats) thumbnail = self._search_regex( diff --git a/youtube_dl/extractor/cnet.py b/youtube_dl/extractor/cnet.py index 5dd69bf..5c3908f 100644 --- a/youtube_dl/extractor/cnet.py +++ b/youtube_dl/extractor/cnet.py @@ -1,15 +1,11 @@ # coding: utf-8 from __future__ import unicode_literals -import json +from .theplatform import ThePlatformIE +from ..utils import int_or_none -from .common import InfoExtractor -from ..utils import ( - ExtractorError, -) - -class CNETIE(InfoExtractor): +class CNETIE(ThePlatformIE): _VALID_URL = r'https?://(?:www\.)?cnet\.com/videos/(?P<id>[^/]+)/' _TESTS = [{ 'url': 'http://www.cnet.com/videos/hands-on-with-microsofts-windows-8-1-update/', @@ -18,25 +14,20 @@ class CNETIE(InfoExtractor): 'ext': 'flv', 'title': 'Hands-on with Microsoft Windows 8.1 Update', 'description': 'The new update to the Windows 8 OS brings improved performance for mouse and keyboard users.', - 'thumbnail': 're:^http://.*/flmswindows8.jpg$', 'uploader_id': '6085384d-619e-11e3-b231-14feb5ca9861', 'uploader': 'Sarah Mitroff', + 'duration': 70, }, - 'params': { - 'skip_download': 'requires rtmpdump', - } }, { 'url': 'http://www.cnet.com/videos/whiny-pothole-tweets-at-local-government-when-hit-by-cars-tomorrow-daily-187/', 'info_dict': { 'id': '56527b93-d25d-44e3-b738-f989ce2e49ba', 'ext': 'flv', + 'title': 'Whiny potholes tweet at local government when hit by cars (Tomorrow Daily 187)', 'description': 'Khail and Ashley wonder what other civic woes can be solved by self-tweeting objects, investigate a new kind of VR camera and watch an origami robot self-assemble, walk, climb, dig and dissolve. #TDPothole', 'uploader_id': 'b163284d-6b73-44fc-b3e6-3da66c392d40', 'uploader': 'Ashley Esqueda', - 'title': 'Whiny potholes tweet at local government when hit by cars (Tomorrow Daily 187)', - }, - 'params': { - 'skip_download': True, # requires rtmpdump + 'duration': 1482, }, }] @@ -45,26 +36,13 @@ class CNETIE(InfoExtractor): webpage = self._download_webpage(url, display_id) data_json = self._html_search_regex( - r"<div class=\"cnetVideoPlayer\"\s+.*?data-cnet-video-options='([^']+)'", + r"data-cnet-video(?:-uvp)?-options='([^']+)'", webpage, 'data json') - data = json.loads(data_json) - vdata = data['video'] - if not vdata: - vdata = data['videos'][0] - if not vdata: - raise ExtractorError('Cannot find video data') - - mpx_account = data['config']['players']['default']['mpx_account'] - vid = vdata['files'].get('rtmp', vdata['files']['hds']) - tp_link = 'http://link.theplatform.com/s/%s/%s' % (mpx_account, vid) + data = self._parse_json(data_json, display_id) + vdata = data.get('video') or data['videos'][0] video_id = vdata['id'] - title = vdata.get('headline') - if title is None: - title = vdata.get('title') - if title is None: - raise ExtractorError('Cannot find title!') - thumbnail = vdata.get('image', {}).get('path') + title = vdata['title'] author = vdata.get('author') if author: uploader = '%s %s' % (author['firstName'], author['lastName']) @@ -73,13 +51,34 @@ class CNETIE(InfoExtractor): uploader = None uploader_id = None + mpx_account = data['config']['uvpConfig']['default']['mpx_account'] + + metadata = self.get_metadata('%s/%s' % (mpx_account, list(vdata['files'].values())[0]), video_id) + description = vdata.get('description') or metadata.get('description') + duration = int_or_none(vdata.get('duration')) or metadata.get('duration') + + formats = [] + subtitles = {} + for (fkey, vid) in vdata['files'].items(): + if fkey == 'hls_phone' and 'hls_tablet' in vdata['files']: + continue + release_url = 'http://link.theplatform.com/s/%s/%s?format=SMIL&mbr=true' % (mpx_account, vid) + if fkey == 'hds': + release_url += '&manifest=f4m' + tp_formats, tp_subtitles = self._extract_theplatform_smil(release_url, video_id, 'Downloading %s SMIL data' % fkey) + formats.extend(tp_formats) + subtitles = self._merge_subtitles(subtitles, tp_subtitles) + self._sort_formats(formats) + return { - '_type': 'url_transparent', - 'url': tp_link, 'id': video_id, 'display_id': display_id, 'title': title, + 'description': description, + 'thumbnail': metadata.get('thumbnail'), + 'duration': duration, 'uploader': uploader, 'uploader_id': uploader_id, - 'thumbnail': thumbnail, + 'subtitles': subtitles, + 'formats': formats, } diff --git a/youtube_dl/extractor/cnn.py b/youtube_dl/extractor/cnn.py index 3b1bd40..53489a1 100644 --- a/youtube_dl/extractor/cnn.py +++ b/youtube_dl/extractor/cnn.py @@ -26,14 +26,14 @@ class CNNIE(InfoExtractor): 'upload_date': '20130609', }, }, { - "url": "http://edition.cnn.com/video/?/video/us/2013/08/21/sot-student-gives-epic-speech.georgia-institute-of-technology&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rss%2Fcnn_topstories+%28RSS%3A+Top+Stories%29", - "md5": "b5cc60c60a3477d185af8f19a2a26f4e", - "info_dict": { + 'url': 'http://edition.cnn.com/video/?/video/us/2013/08/21/sot-student-gives-epic-speech.georgia-institute-of-technology&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rss%2Fcnn_topstories+%28RSS%3A+Top+Stories%29', + 'md5': 'b5cc60c60a3477d185af8f19a2a26f4e', + 'info_dict': { 'id': 'us/2013/08/21/sot-student-gives-epic-speech.georgia-institute-of-technology', 'ext': 'mp4', - "title": "Student's epic speech stuns new freshmen", - "description": "A Georgia Tech student welcomes the incoming freshmen with an epic speech backed by music from \"2001: A Space Odyssey.\"", - "upload_date": "20130821", + 'title': "Student's epic speech stuns new freshmen", + 'description': "A Georgia Tech student welcomes the incoming freshmen with an epic speech backed by music from \"2001: A Space Odyssey.\"", + 'upload_date': '20130821', } }, { 'url': 'http://www.cnn.com/video/data/2.0/video/living/2014/12/22/growing-america-nashville-salemtown-board-episode-1.hln.html', diff --git a/youtube_dl/extractor/collegerama.py b/youtube_dl/extractor/collegerama.py index 40667a0..f9e8419 100644 --- a/youtube_dl/extractor/collegerama.py +++ b/youtube_dl/extractor/collegerama.py @@ -46,9 +46,9 @@ class CollegeRamaIE(InfoExtractor): video_id = self._match_id(url) player_options_request = { - "getPlayerOptionsRequest": { - "ResourceId": video_id, - "QueryString": "", + 'getPlayerOptionsRequest': { + 'ResourceId': video_id, + 'QueryString': '', } } diff --git a/youtube_dl/extractor/comcarcoff.py b/youtube_dl/extractor/comcarcoff.py index 81f3d76..7dff684 100644 --- a/youtube_dl/extractor/comcarcoff.py +++ b/youtube_dl/extractor/comcarcoff.py @@ -1,10 +1,13 @@ # encoding: utf-8 from __future__ import unicode_literals -import json - from .common import InfoExtractor -from ..utils import parse_iso8601 +from ..compat import compat_str +from ..utils import ( + int_or_none, + parse_duration, + parse_iso8601, +) class ComCarCoffIE(InfoExtractor): @@ -12,13 +15,13 @@ class ComCarCoffIE(InfoExtractor): _TESTS = [{ 'url': 'http://comediansincarsgettingcoffee.com/miranda-sings-happy-thanksgiving-miranda/', 'info_dict': { - 'id': 'miranda-sings-happy-thanksgiving-miranda', + 'id': '2494164', 'ext': 'mp4', 'upload_date': '20141127', 'timestamp': 1417107600, + 'duration': 1232, 'title': 'Happy Thanksgiving Miranda', 'description': 'Jerry Seinfeld and his special guest Miranda Sings cruise around town in search of coffee, complaining and apologizing along the way.', - 'thumbnail': 'http://ccc.crackle.com/images/s5e4_thumb.jpg', }, 'params': { 'skip_download': 'requires ffmpeg', @@ -31,27 +34,36 @@ class ComCarCoffIE(InfoExtractor): display_id = 'comediansincarsgettingcoffee.com' webpage = self._download_webpage(url, display_id) - full_data = json.loads(self._search_regex( - r'<script type="application/json" id="videoData">(?P<json>.+?)</script>', - webpage, 'full data json')) + full_data = self._parse_json( + self._search_regex( + r'window\.app\s*=\s*({.+?});\n', webpage, 'full data json'), + display_id)['videoData'] - video_id = full_data['activeVideo']['video'] - video_data = full_data.get('videos', {}).get(video_id) or full_data['singleshots'][video_id] + display_id = full_data['activeVideo']['video'] + video_data = full_data.get('videos', {}).get(display_id) or full_data['singleshots'][display_id] + video_id = compat_str(video_data['mediaId']) thumbnails = [{ 'url': video_data['images']['thumb'], }, { 'url': video_data['images']['poster'], }] - formats = self._extract_m3u8_formats( - video_data['mediaUrl'], video_id, ext='mp4') + + timestamp = int_or_none(video_data.get('pubDateTime')) or parse_iso8601( + video_data.get('pubDate')) + duration = int_or_none(video_data.get('durationSeconds')) or parse_duration( + video_data.get('duration')) return { + '_type': 'url_transparent', + 'url': 'crackle:%s' % video_id, 'id': video_id, 'display_id': display_id, 'title': video_data['title'], 'description': video_data.get('description'), - 'timestamp': parse_iso8601(video_data.get('pubDate')), + 'timestamp': timestamp, + 'duration': duration, 'thumbnails': thumbnails, - 'formats': formats, + 'season_number': int_or_none(video_data.get('season')), + 'episode_number': int_or_none(video_data.get('episode')), 'webpage_url': 'http://comediansincarsgettingcoffee.com/%s' % (video_data.get('urlSlug', video_data.get('slug'))), } diff --git a/youtube_dl/extractor/comedycentral.py b/youtube_dl/extractor/comedycentral.py index 3e4bd10..5b1b996 100644 --- a/youtube_dl/extractor/comedycentral.py +++ b/youtube_dl/extractor/comedycentral.py @@ -16,11 +16,11 @@ from ..utils import ( class ComedyCentralIE(MTVServicesInfoExtractor): _VALID_URL = r'''(?x)https?://(?:www\.)?cc\.com/ - (video-clips|episodes|cc-studios|video-collections|full-episodes) + (video-clips|episodes|cc-studios|video-collections|full-episodes|shows) /(?P<title>.*)''' _FEED_URL = 'http://comedycentral.com/feeds/mrss/' - _TEST = { + _TESTS = [{ 'url': 'http://www.cc.com/video-clips/kllhuv/stand-up-greg-fitzsimmons--uncensored---too-good-of-a-mother', 'md5': 'c4f48e9eda1b16dd10add0744344b6d8', 'info_dict': { @@ -29,7 +29,10 @@ class ComedyCentralIE(MTVServicesInfoExtractor): 'title': 'CC:Stand-Up|Greg Fitzsimmons: Life on Stage|Uncensored - Too Good of a Mother', 'description': 'After a certain point, breastfeeding becomes c**kblocking.', }, - } + }, { + 'url': 'http://www.cc.com/shows/the-daily-show-with-trevor-noah/interviews/6yx39d/exclusive-rand-paul-extended-interview', + 'only_matching': True, + }] class ComedyCentralShowsIE(MTVServicesInfoExtractor): @@ -192,7 +195,7 @@ class ComedyCentralShowsIE(MTVServicesInfoExtractor): if len(altMovieParams) == 0: raise ExtractorError('unable to find Flash URL in webpage ' + url) else: - mMovieParams = [("http://media.mtvnservices.com/" + altMovieParams[0], altMovieParams[0])] + mMovieParams = [('http://media.mtvnservices.com/' + altMovieParams[0], altMovieParams[0])] uri = mMovieParams[0][1] # Correct cc.com in uri diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index eb9bfa3..14f5756 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -10,6 +10,7 @@ import re import socket import sys import time +import math from ..compat import ( compat_cookiejar, @@ -18,7 +19,6 @@ from ..compat import ( compat_http_client, compat_urllib_error, compat_urllib_parse, - compat_urllib_parse_urlparse, compat_urlparse, compat_str, compat_etree_fromstring, @@ -30,10 +30,12 @@ from ..utils import ( clean_html, compiled_regex_type, determine_ext, + error_to_compat_str, ExtractorError, fix_xml_ampersands, float_or_none, int_or_none, + parse_iso8601, RegexNotFoundError, sanitize_filename, sanitized_Request, @@ -42,6 +44,9 @@ from ..utils import ( url_basename, xpath_text, xpath_with_ns, + determine_protocol, + parse_duration, + mimetype2ext, ) @@ -107,8 +112,9 @@ class InfoExtractor(object): -2 or smaller for less than default. < -1000 to hide the format (if there is another one which is strictly better) - * language_preference Is this in the correct requested - language? + * language Language code, e.g. "de" or "en-US". + * language_preference Is this in the language mentioned in + the URL? 10 if it's what the URL is about, -1 for default (don't know), -10 otherwise, other values reserved for now. @@ -167,7 +173,7 @@ class InfoExtractor(object): "ext" will be calculated from URL if missing automatic_captions: Like 'subtitles', used by the YoutubeIE for automatically generated captions - duration: Length of the video in seconds, as an integer. + duration: Length of the video in seconds, as an integer or float. view_count: How many users have watched the video on the platform. like_count: Number of positive ratings of the video dislike_count: Number of negative ratings of the video @@ -199,6 +205,26 @@ class InfoExtractor(object): end_time: Time in seconds where the reproduction should end, as specified in the URL. + The following fields should only be used when the video belongs to some logical + chapter or section: + + chapter: Name or title of the chapter the video belongs to. + chapter_number: Number of the chapter the video belongs to, as an integer. + chapter_id: Id of the chapter the video belongs to, as a unicode string. + + The following fields should only be used when the video is an episode of some + series or programme: + + series: Title of the series or programme the video episode belongs to. + season: Title of the season the video episode belongs to. + season_number: Number of the season the video episode belongs to, as an integer. + season_id: Id of the season the video episode belongs to, as a unicode string. + episode: Title of the video episode. Unlike mandatory video title field, + this field should denote the exact title of the video episode + without any kind of decoration. + episode_number: Number of the video episode within a season, as an integer. + episode_id: Id of the video episode, as a unicode string. + Unless mentioned otherwise, the fields should be Unicode strings. Unless mentioned otherwise, None is equivalent to absence of information. @@ -291,9 +317,9 @@ class InfoExtractor(object): except ExtractorError: raise except compat_http_client.IncompleteRead as e: - raise ExtractorError('A network error has occured.', cause=e, expected=True) + raise ExtractorError('A network error has occurred.', cause=e, expected=True) except (KeyError, StopIteration) as e: - raise ExtractorError('An extractor error has occured.', cause=e) + raise ExtractorError('An extractor error has occurred.', cause=e) def set_downloader(self, downloader): """Sets the downloader for this IE.""" @@ -332,7 +358,8 @@ class InfoExtractor(object): return False if errnote is None: errnote = 'Unable to download webpage' - errmsg = '%s: %s' % (errnote, compat_str(err)) + + errmsg = '%s: %s' % (errnote, error_to_compat_str(err)) if fatal: raise ExtractorError(errmsg, sys.exc_info()[2], cause=err) else: @@ -610,7 +637,7 @@ class InfoExtractor(object): downloader_params = self._downloader.params # Attempt to use provided username and password or .netrc data - if downloader_params.get('username', None) is not None: + if downloader_params.get('username') is not None: username = downloader_params['username'] password = downloader_params['password'] elif downloader_params.get('usenetrc', False): @@ -622,7 +649,7 @@ class InfoExtractor(object): else: raise netrc.NetrcParseError('No authenticators for %s' % self._NETRC_MACHINE) except (IOError, netrc.NetrcParseError) as err: - self._downloader.report_warning('parsing .netrc: %s' % compat_str(err)) + self._downloader.report_warning('parsing .netrc: %s' % error_to_compat_str(err)) return (username, password) @@ -637,7 +664,7 @@ class InfoExtractor(object): return None downloader_params = self._downloader.params - if downloader_params.get('twofactor', None) is not None: + if downloader_params.get('twofactor') is not None: return downloader_params['twofactor'] return compat_getpass('Type %s and press [Return]: ' % note) @@ -718,7 +745,7 @@ class InfoExtractor(object): 'mature': 17, 'restricted': 19, } - return RATING_TABLE.get(rating.lower(), None) + return RATING_TABLE.get(rating.lower()) def _family_friendly_search(self, html): # See http://schema.org/VideoObject @@ -733,12 +760,48 @@ class InfoExtractor(object): '0': 18, 'false': 18, } - return RATING_TABLE.get(family_friendly.lower(), None) + return RATING_TABLE.get(family_friendly.lower()) def _twitter_search_player(self, html): return self._html_search_meta('twitter:player', html, 'twitter card player') + def _search_json_ld(self, html, video_id, **kwargs): + json_ld = self._search_regex( + r'(?s)<script[^>]+type=(["\'])application/ld\+json\1[^>]*>(?P<json_ld>.+?)</script>', + html, 'JSON-LD', group='json_ld', **kwargs) + if not json_ld: + return {} + return self._json_ld(json_ld, video_id, fatal=kwargs.get('fatal', True)) + + def _json_ld(self, json_ld, video_id, fatal=True): + if isinstance(json_ld, compat_str): + json_ld = self._parse_json(json_ld, video_id, fatal=fatal) + if not json_ld: + return {} + info = {} + if json_ld.get('@context') == 'http://schema.org': + item_type = json_ld.get('@type') + if item_type == 'TVEpisode': + info.update({ + 'episode': unescapeHTML(json_ld.get('name')), + 'episode_number': int_or_none(json_ld.get('episodeNumber')), + 'description': unescapeHTML(json_ld.get('description')), + }) + part_of_season = json_ld.get('partOfSeason') + if isinstance(part_of_season, dict) and part_of_season.get('@type') == 'TVSeason': + info['season_number'] = int_or_none(part_of_season.get('seasonNumber')) + part_of_series = json_ld.get('partOfSeries') + if isinstance(part_of_series, dict) and part_of_series.get('@type') == 'TVSeries': + info['series'] = unescapeHTML(part_of_series.get('name')) + elif item_type == 'Article': + info.update({ + 'timestamp': parse_iso8601(json_ld.get('datePublished')), + 'title': unescapeHTML(json_ld.get('headline')), + 'description': unescapeHTML(json_ld.get('articleBody')), + }) + return dict((k, v) for k, v in info.items() if v is not None) + @staticmethod def _hidden_inputs(html): html = re.sub(r'<!--(?:(?!<!--).)*-->', '', html) @@ -765,6 +828,12 @@ class InfoExtractor(object): if not formats: raise ExtractorError('No video formats found') + for f in formats: + # Automatically determine tbr when missing based on abr and vbr (improves + # formats sorting in some cases) + if 'tbr' not in f and f.get('abr') is not None and f.get('vbr') is not None: + f['tbr'] = f['abr'] + f['vbr'] + def _formats_key(f): # TODO remove the following workaround from ..utils import determine_ext @@ -776,14 +845,12 @@ class InfoExtractor(object): preference = f.get('preference') if preference is None: - proto = f.get('protocol') - if proto is None: - proto = compat_urllib_parse_urlparse(f.get('url', '')).scheme - - preference = 0 if proto in ['http', 'https'] else -0.1 + preference = 0 if f.get('ext') in ['f4f', 'f4m']: # Not yet supported preference -= 0.5 + proto_preference = 0 if determine_protocol(f) in ['http', 'https'] else -0.1 + if f.get('vcodec') == 'none': # audio only if self._downloader.params.get('prefer_free_formats'): ORDER = ['aac', 'mp3', 'm4a', 'webm', 'ogg', 'opus'] @@ -814,6 +881,7 @@ class InfoExtractor(object): f.get('vbr') if f.get('vbr') is not None else -1, f.get('height') if f.get('height') is not None else -1, f.get('width') if f.get('width') is not None else -1, + proto_preference, ext_preference, f.get('abr') if f.get('abr') is not None else -1, audio_ext_preference, @@ -832,6 +900,16 @@ class InfoExtractor(object): item='%s video format' % f.get('format_id') if f.get('format_id') else 'video'), formats) + @staticmethod + def _remove_duplicate_formats(formats): + format_urls = set() + unique_formats = [] + for f in formats: + if f['url'] not in format_urls: + format_urls.add(f['url']) + unique_formats.append(f) + formats[:] = unique_formats + def _is_valid_url(self, url, video_id, item='video'): url = self._proto_relative_url(url, scheme='http:') # For now assume non HTTP(S) URLs always valid @@ -883,7 +961,7 @@ class InfoExtractor(object): fatal=fatal) if manifest is False: - return manifest + return [] formats = [] manifest_version = '1.0' @@ -909,10 +987,8 @@ class InfoExtractor(object): # may differ leading to inability to resolve the format by requested # bitrate in f4m downloader if determine_ext(manifest_url) == 'f4m': - f4m_formats = self._extract_f4m_formats( - manifest_url, video_id, preference, f4m_id, fatal=fatal) - if f4m_formats: - formats.extend(f4m_formats) + formats.extend(self._extract_f4m_formats( + manifest_url, video_id, preference, f4m_id, fatal=fatal)) continue tbr = int_or_none(media_el.attrib.get('bitrate')) formats.append({ @@ -954,9 +1030,21 @@ class InfoExtractor(object): errnote=errnote or 'Failed to download m3u8 information', fatal=fatal) if res is False: - return res + return [] m3u8_doc, urlh = res m3u8_url = urlh.geturl() + # A Media Playlist Tag MUST NOT appear in a Master Playlist + # https://tools.ietf.org/html/draft-pantos-http-live-streaming-17#section-4.3.3 + # The EXT-X-TARGETDURATION tag is REQUIRED for every M3U8 Media Playlists + # https://tools.ietf.org/html/draft-pantos-http-live-streaming-17#section-4.3.3.1 + if '#EXT-X-TARGETDURATION' in m3u8_doc: + return [{ + 'url': m3u8_url, + 'format_id': m3u8_id, + 'ext': ext, + 'protocol': entry_protocol, + 'preference': preference, + }] last_info = None last_media = None kv_rex = re.compile( @@ -1001,9 +1089,9 @@ class InfoExtractor(object): # TODO: looks like video codec is not always necessarily goes first va_codecs = codecs.split(',') if va_codecs[0]: - f['vcodec'] = va_codecs[0].partition('.')[0] + f['vcodec'] = va_codecs[0] if len(va_codecs) > 1 and va_codecs[1]: - f['acodec'] = va_codecs[1].partition('.')[0] + f['acodec'] = va_codecs[1] resolution = last_info.get('RESOLUTION') if resolution: width_str, height_str = resolution.split('x') @@ -1107,12 +1195,15 @@ class InfoExtractor(object): formats = [] rtmp_count = 0 http_count = 0 + m3u8_count = 0 + srcs = [] videos = smil.findall(self._xpath_ns('.//video', namespace)) for video in videos: src = video.get('src') - if not src: + if not src or src in srcs: continue + srcs.append(src) bitrate = float_or_none(video.get('system-bitrate') or video.get('systemBitrate'), 1000) filesize = int_or_none(video.get('size') or video.get('fileSize')) @@ -1144,12 +1235,20 @@ class InfoExtractor(object): continue src_url = src if src.startswith('http') else compat_urlparse.urljoin(base, src) + src_url = src_url.strip() if proto == 'm3u8' or src_ext == 'm3u8': m3u8_formats = self._extract_m3u8_formats( src_url, video_id, ext or 'mp4', m3u8_id='hls', fatal=False) - if m3u8_formats: - formats.extend(m3u8_formats) + if len(m3u8_formats) == 1: + m3u8_count += 1 + m3u8_formats[0].update({ + 'format_id': 'hls-%d' % (m3u8_count if bitrate is None else bitrate), + 'tbr': bitrate, + 'width': width, + 'height': height, + }) + formats.extend(m3u8_formats) continue if src_ext == 'f4m': @@ -1161,9 +1260,7 @@ class InfoExtractor(object): } f4m_url += '&' if '?' in f4m_url else '?' f4m_url += compat_urllib_parse.urlencode(f4m_params) - f4m_formats = self._extract_f4m_formats(f4m_url, video_id, f4m_id='hds', fatal=False) - if f4m_formats: - formats.extend(f4m_formats) + formats.extend(self._extract_f4m_formats(f4m_url, video_id, f4m_id='hds', fatal=False)) continue if src_url.startswith('http') and self._is_valid_url(src, video_id): @@ -1184,21 +1281,14 @@ class InfoExtractor(object): return formats def _parse_smil_subtitles(self, smil, namespace=None, subtitles_lang='en'): + urls = [] subtitles = {} for num, textstream in enumerate(smil.findall(self._xpath_ns('.//textstream', namespace))): src = textstream.get('src') - if not src: + if not src or src in urls: continue - ext = textstream.get('ext') or determine_ext(src) - if not ext: - type_ = textstream.get('type') - SUBTITLES_TYPES = { - 'text/vtt': 'vtt', - 'text/srt': 'srt', - 'application/smptett+xml': 'tt', - } - if type_ in SUBTITLES_TYPES: - ext = SUBTITLES_TYPES[type_] + urls.append(src) + ext = textstream.get('ext') or determine_ext(src) or mimetype2ext(textstream.get('type')) lang = textstream.get('systemLanguage') or textstream.get('systemLanguageName') or textstream.get('lang') or subtitles_lang subtitles.setdefault(lang, []).append({ 'url': src, @@ -1249,10 +1339,167 @@ class InfoExtractor(object): }) return entries + def _extract_mpd_formats(self, mpd_url, video_id, mpd_id=None, note=None, errnote=None, fatal=True, formats_dict={}): + res = self._download_webpage_handle( + mpd_url, video_id, + note=note or 'Downloading MPD manifest', + errnote=errnote or 'Failed to download MPD manifest', + fatal=fatal) + if res is False: + return [] + mpd, urlh = res + mpd_base_url = re.match(r'https?://.+/', urlh.geturl()).group() + + return self._parse_mpd_formats( + compat_etree_fromstring(mpd.encode('utf-8')), mpd_id, mpd_base_url, formats_dict=formats_dict) + + def _parse_mpd_formats(self, mpd_doc, mpd_id=None, mpd_base_url='', formats_dict={}): + if mpd_doc.get('type') == 'dynamic': + return [] + + namespace = self._search_regex(r'(?i)^{([^}]+)?}MPD$', mpd_doc.tag, 'namespace', default=None) + + def _add_ns(path): + return self._xpath_ns(path, namespace) + + def is_drm_protected(element): + return element.find(_add_ns('ContentProtection')) is not None + + def extract_multisegment_info(element, ms_parent_info): + ms_info = ms_parent_info.copy() + segment_list = element.find(_add_ns('SegmentList')) + if segment_list is not None: + segment_urls_e = segment_list.findall(_add_ns('SegmentURL')) + if segment_urls_e: + ms_info['segment_urls'] = [segment.attrib['media'] for segment in segment_urls_e] + initialization = segment_list.find(_add_ns('Initialization')) + if initialization is not None: + ms_info['initialization_url'] = initialization.attrib['sourceURL'] + else: + segment_template = element.find(_add_ns('SegmentTemplate')) + if segment_template is not None: + start_number = segment_template.get('startNumber') + if start_number: + ms_info['start_number'] = int(start_number) + segment_timeline = segment_template.find(_add_ns('SegmentTimeline')) + if segment_timeline is not None: + s_e = segment_timeline.findall(_add_ns('S')) + if s_e: + ms_info['total_number'] = 0 + for s in s_e: + ms_info['total_number'] += 1 + int(s.get('r', '0')) + else: + timescale = segment_template.get('timescale') + if timescale: + ms_info['timescale'] = int(timescale) + segment_duration = segment_template.get('duration') + if segment_duration: + ms_info['segment_duration'] = int(segment_duration) + media_template = segment_template.get('media') + if media_template: + ms_info['media_template'] = media_template + initialization = segment_template.get('initialization') + if initialization: + ms_info['initialization_url'] = initialization + else: + initialization = segment_template.find(_add_ns('Initialization')) + if initialization is not None: + ms_info['initialization_url'] = initialization.attrib['sourceURL'] + return ms_info + + mpd_duration = parse_duration(mpd_doc.get('mediaPresentationDuration')) + formats = [] + for period in mpd_doc.findall(_add_ns('Period')): + period_duration = parse_duration(period.get('duration')) or mpd_duration + period_ms_info = extract_multisegment_info(period, { + 'start_number': 1, + 'timescale': 1, + }) + for adaptation_set in period.findall(_add_ns('AdaptationSet')): + if is_drm_protected(adaptation_set): + continue + adaption_set_ms_info = extract_multisegment_info(adaptation_set, period_ms_info) + for representation in adaptation_set.findall(_add_ns('Representation')): + if is_drm_protected(representation): + continue + representation_attrib = adaptation_set.attrib.copy() + representation_attrib.update(representation.attrib) + mime_type = representation_attrib.get('mimeType') + content_type = mime_type.split('/')[0] if mime_type else representation_attrib.get('contentType') + if content_type == 'text': + # TODO implement WebVTT downloading + pass + elif content_type == 'video' or content_type == 'audio': + base_url = '' + for element in (representation, adaptation_set, period, mpd_doc): + base_url_e = element.find(_add_ns('BaseURL')) + if base_url_e is not None: + base_url = base_url_e.text + base_url + if re.match(r'^https?://', base_url): + break + if mpd_base_url and not re.match(r'^https?://', base_url): + if not mpd_base_url.endswith('/') and not base_url.startswith('/'): + mpd_base_url += '/' + base_url = mpd_base_url + base_url + representation_id = representation_attrib.get('id') + lang = representation_attrib.get('lang') + url_el = representation.find(_add_ns('BaseURL')) + filesize = int_or_none(url_el.attrib.get('{http://youtube.com/yt/2012/10/10}contentLength') if url_el is not None else None) + f = { + 'format_id': '%s-%s' % (mpd_id, representation_id) if mpd_id else representation_id, + 'url': base_url, + 'width': int_or_none(representation_attrib.get('width')), + 'height': int_or_none(representation_attrib.get('height')), + 'tbr': int_or_none(representation_attrib.get('bandwidth'), 1000), + 'asr': int_or_none(representation_attrib.get('audioSamplingRate')), + 'fps': int_or_none(representation_attrib.get('frameRate')), + 'vcodec': 'none' if content_type == 'audio' else representation_attrib.get('codecs'), + 'acodec': 'none' if content_type == 'video' else representation_attrib.get('codecs'), + 'language': lang if lang not in ('mul', 'und', 'zxx', 'mis') else None, + 'format_note': 'DASH %s' % content_type, + 'filesize': filesize, + } + representation_ms_info = extract_multisegment_info(representation, adaption_set_ms_info) + if 'segment_urls' not in representation_ms_info and 'media_template' in representation_ms_info: + if 'total_number' not in representation_ms_info and 'segment_duration': + segment_duration = float(representation_ms_info['segment_duration']) / float(representation_ms_info['timescale']) + representation_ms_info['total_number'] = int(math.ceil(float(period_duration) / segment_duration)) + media_template = representation_ms_info['media_template'] + media_template = media_template.replace('$RepresentationID$', representation_id) + media_template = re.sub(r'\$(Number|Bandwidth)(?:%(0\d+)d)?\$', r'%(\1)\2d', media_template) + media_template.replace('$$', '$') + representation_ms_info['segment_urls'] = [media_template % {'Number': segment_number, 'Bandwidth': representation_attrib.get('bandwidth')} for segment_number in range(representation_ms_info['start_number'], representation_ms_info['total_number'] + representation_ms_info['start_number'])] + if 'segment_urls' in representation_ms_info: + f.update({ + 'segment_urls': representation_ms_info['segment_urls'], + 'protocol': 'http_dash_segments', + }) + if 'initialization_url' in representation_ms_info: + initialization_url = representation_ms_info['initialization_url'].replace('$RepresentationID$', representation_id) + f.update({ + 'initialization_url': initialization_url, + }) + if not f.get('url'): + f['url'] = initialization_url + try: + existing_format = next( + fo for fo in formats + if fo['format_id'] == representation_id) + except StopIteration: + full_info = formats_dict.get(representation_id, {}).copy() + full_info.update(f) + formats.append(full_info) + else: + existing_format.update(f) + else: + self.report_warning('Unknown MIME type %s in DASH manifest' % mime_type) + self._sort_formats(formats) + return formats + def _live_title(self, name): """ Generate the title for a live video """ now = datetime.datetime.now() - now_str = now.strftime("%Y-%m-%d %H:%M") + now_str = now.strftime('%Y-%m-%d %H:%M') return name + ' ' + now_str def _int(self, v, name, fatal=False, **kwargs): @@ -1325,7 +1572,7 @@ class InfoExtractor(object): return {} def _get_subtitles(self, *args, **kwargs): - raise NotImplementedError("This method must be implemented by subclasses") + raise NotImplementedError('This method must be implemented by subclasses') @staticmethod def _merge_subtitle_items(subtitle_list1, subtitle_list2): @@ -1351,7 +1598,7 @@ class InfoExtractor(object): return {} def _get_automatic_captions(self, *args, **kwargs): - raise NotImplementedError("This method must be implemented by subclasses") + raise NotImplementedError('This method must be implemented by subclasses') class SearchInfoExtractor(InfoExtractor): @@ -1391,7 +1638,7 @@ class SearchInfoExtractor(InfoExtractor): def _get_n_results(self, query, n): """Get a specified number of results for a query""" - raise NotImplementedError("This method must be implemented by subclasses") + raise NotImplementedError('This method must be implemented by subclasses') @property def SEARCH_KEY(self): diff --git a/youtube_dl/extractor/crackle.py b/youtube_dl/extractor/crackle.py new file mode 100644 index 0000000..79238cc --- /dev/null +++ b/youtube_dl/extractor/crackle.py @@ -0,0 +1,95 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import int_or_none + + +class CrackleIE(InfoExtractor): + _VALID_URL = r'(?:crackle:|https?://(?:www\.)?crackle\.com/(?:playlist/\d+/|(?:[^/]+/)+))(?P<id>\d+)' + _TEST = { + 'url': 'http://www.crackle.com/the-art-of-more/2496419', + 'info_dict': { + 'id': '2496419', + 'ext': 'mp4', + 'title': 'Heavy Lies the Head', + 'description': 'md5:bb56aa0708fe7b9a4861535f15c3abca', + }, + 'params': { + # m3u8 download + 'skip_download': True, + } + } + + # extracted from http://legacyweb-us.crackle.com/flash/QueryReferrer.ashx + _SUBTITLE_SERVER = 'http://web-us-az.crackle.com' + _UPLYNK_OWNER_ID = 'e8773f7770a44dbd886eee4fca16a66b' + _THUMBNAIL_TEMPLATE = 'http://images-us-am.crackle.com/%stnl_1920x1080.jpg?ts=20140107233116?c=635333335057637614' + + # extracted from http://legacyweb-us.crackle.com/flash/ReferrerRedirect.ashx + _MEDIA_FILE_SLOTS = { + 'c544.flv': { + 'width': 544, + 'height': 306, + }, + '360p.mp4': { + 'width': 640, + 'height': 360, + }, + '480p.mp4': { + 'width': 852, + 'height': 478, + }, + '480p_1mbps.mp4': { + 'width': 852, + 'height': 478, + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + item = self._download_xml( + 'http://legacyweb-us.crackle.com/app/revamp/vidwallcache.aspx?flags=-1&fm=%s' % video_id, + video_id).find('i') + title = item.attrib['t'] + + thumbnail = None + subtitles = {} + formats = self._extract_m3u8_formats( + 'http://content.uplynk.com/ext/%s/%s.m3u8' % (self._UPLYNK_OWNER_ID, video_id), + video_id, 'mp4', m3u8_id='hls', fatal=None) + path = item.attrib.get('p') + if path: + thumbnail = self._THUMBNAIL_TEMPLATE % path + http_base_url = 'http://ahttp.crackle.com/' + path + for mfs_path, mfs_info in self._MEDIA_FILE_SLOTS.items(): + formats.append({ + 'url': http_base_url + mfs_path, + 'format_id': 'http-' + mfs_path.split('.')[0], + 'width': mfs_info['width'], + 'height': mfs_info['height'], + }) + for cc in item.findall('cc'): + locale = cc.attrib.get('l') + v = cc.attrib.get('v') + if locale and v: + if locale not in subtitles: + subtitles[locale] = [] + subtitles[locale] = [{ + 'url': '%s/%s%s_%s.xml' % (self._SUBTITLE_SERVER, path, locale, v), + 'ext': 'ttml', + }] + self._sort_formats(formats, ('width', 'height', 'tbr', 'format_id')) + + return { + 'id': video_id, + 'title': title, + 'description': item.attrib.get('d'), + 'duration': int(item.attrib.get('r'), 16) if item.attrib.get('r') else None, + 'series': item.attrib.get('sn'), + 'season_number': int_or_none(item.attrib.get('se')), + 'episode_number': int_or_none(item.attrib.get('ep')), + 'thumbnail': thumbnail, + 'subtitles': subtitles, + 'formats': formats, + } diff --git a/youtube_dl/extractor/crunchyroll.py b/youtube_dl/extractor/crunchyroll.py index 00d943f..c7032ff 100644 --- a/youtube_dl/extractor/crunchyroll.py +++ b/youtube_dl/extractor/crunchyroll.py @@ -180,40 +180,40 @@ class CrunchyrollIE(CrunchyrollBaseIE): return assvalue output = '[Script Info]\n' - output += 'Title: %s\n' % sub_root.attrib["title"] + output += 'Title: %s\n' % sub_root.attrib['title'] output += 'ScriptType: v4.00+\n' - output += 'WrapStyle: %s\n' % sub_root.attrib["wrap_style"] - output += 'PlayResX: %s\n' % sub_root.attrib["play_res_x"] - output += 'PlayResY: %s\n' % sub_root.attrib["play_res_y"] + output += 'WrapStyle: %s\n' % sub_root.attrib['wrap_style'] + output += 'PlayResX: %s\n' % sub_root.attrib['play_res_x'] + output += 'PlayResY: %s\n' % sub_root.attrib['play_res_y'] output += """ScaledBorderAndShadow: yes [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding """ for style in sub_root.findall('./styles/style'): - output += 'Style: ' + style.attrib["name"] - output += ',' + style.attrib["font_name"] - output += ',' + style.attrib["font_size"] - output += ',' + style.attrib["primary_colour"] - output += ',' + style.attrib["secondary_colour"] - output += ',' + style.attrib["outline_colour"] - output += ',' + style.attrib["back_colour"] - output += ',' + ass_bool(style.attrib["bold"]) - output += ',' + ass_bool(style.attrib["italic"]) - output += ',' + ass_bool(style.attrib["underline"]) - output += ',' + ass_bool(style.attrib["strikeout"]) - output += ',' + style.attrib["scale_x"] - output += ',' + style.attrib["scale_y"] - output += ',' + style.attrib["spacing"] - output += ',' + style.attrib["angle"] - output += ',' + style.attrib["border_style"] - output += ',' + style.attrib["outline"] - output += ',' + style.attrib["shadow"] - output += ',' + style.attrib["alignment"] - output += ',' + style.attrib["margin_l"] - output += ',' + style.attrib["margin_r"] - output += ',' + style.attrib["margin_v"] - output += ',' + style.attrib["encoding"] + output += 'Style: ' + style.attrib['name'] + output += ',' + style.attrib['font_name'] + output += ',' + style.attrib['font_size'] + output += ',' + style.attrib['primary_colour'] + output += ',' + style.attrib['secondary_colour'] + output += ',' + style.attrib['outline_colour'] + output += ',' + style.attrib['back_colour'] + output += ',' + ass_bool(style.attrib['bold']) + output += ',' + ass_bool(style.attrib['italic']) + output += ',' + ass_bool(style.attrib['underline']) + output += ',' + ass_bool(style.attrib['strikeout']) + output += ',' + style.attrib['scale_x'] + output += ',' + style.attrib['scale_y'] + output += ',' + style.attrib['spacing'] + output += ',' + style.attrib['angle'] + output += ',' + style.attrib['border_style'] + output += ',' + style.attrib['outline'] + output += ',' + style.attrib['shadow'] + output += ',' + style.attrib['alignment'] + output += ',' + style.attrib['margin_l'] + output += ',' + style.attrib['margin_r'] + output += ',' + style.attrib['margin_v'] + output += ',' + style.attrib['encoding'] output += '\n' output += """ @@ -222,15 +222,15 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text """ for event in sub_root.findall('./events/event'): output += 'Dialogue: 0' - output += ',' + event.attrib["start"] - output += ',' + event.attrib["end"] - output += ',' + event.attrib["style"] - output += ',' + event.attrib["name"] - output += ',' + event.attrib["margin_l"] - output += ',' + event.attrib["margin_r"] - output += ',' + event.attrib["margin_v"] - output += ',' + event.attrib["effect"] - output += ',' + event.attrib["text"] + output += ',' + event.attrib['start'] + output += ',' + event.attrib['end'] + output += ',' + event.attrib['style'] + output += ',' + event.attrib['name'] + output += ',' + event.attrib['margin_l'] + output += ',' + event.attrib['margin_r'] + output += ',' + event.attrib['margin_v'] + output += ',' + event.attrib['effect'] + output += ',' + event.attrib['text'] output += '\n' return output @@ -329,8 +329,10 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text streamdata_req, video_id, note='Downloading media info for %s' % video_format) stream_info = streamdata.find('./{default}preload/stream_info') - video_url = stream_info.find('./host').text - video_play_path = stream_info.find('./file').text + video_url = xpath_text(stream_info, './host') + video_play_path = xpath_text(stream_info, './file') + if not video_url or not video_play_path: + continue metadata = stream_info.find('./metadata') format_info = { 'format': video_format, @@ -374,7 +376,7 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text class CrunchyrollShowPlaylistIE(CrunchyrollBaseIE): - IE_NAME = "crunchyroll:playlist" + IE_NAME = 'crunchyroll:playlist' _VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.com/(?!(?:news|anime-news|library|forum|launchcalendar|lineup|store|comics|freetrial|login))(?P<id>[\w\-]+))/?(?:\?|$)' _TESTS = [{ diff --git a/youtube_dl/extractor/cspan.py b/youtube_dl/extractor/cspan.py index fbefd37..b8b9d05 100644 --- a/youtube_dl/extractor/cspan.py +++ b/youtube_dl/extractor/cspan.py @@ -9,6 +9,7 @@ from ..utils import ( find_xpath_attr, smuggle_url, determine_ext, + ExtractorError, ) from .senateisvp import SenateISVPIE @@ -18,33 +19,32 @@ class CSpanIE(InfoExtractor): IE_DESC = 'C-SPAN' _TESTS = [{ 'url': 'http://www.c-span.org/video/?313572-1/HolderonV', - 'md5': '8e44ce11f0f725527daccc453f553eb0', + 'md5': '94b29a4f131ff03d23471dd6f60b6a1d', 'info_dict': { 'id': '315139', 'ext': 'mp4', 'title': 'Attorney General Eric Holder on Voting Rights Act Decision', - 'description': 'Attorney General Eric Holder spoke to reporters following the Supreme Court decision in Shelby County v. Holder in which the court ruled that the preclearance provisions of the Voting Rights Act could not be enforced until Congress established new guidelines for review.', + 'description': 'Attorney General Eric Holder speaks to reporters following the Supreme Court decision in [Shelby County v. Holder], in which the court ruled that the preclearance provisions of the Voting Rights Act could not be enforced.', }, 'skip': 'Regularly fails on travis, for unknown reasons', }, { 'url': 'http://www.c-span.org/video/?c4486943/cspan-international-health-care-models', - # For whatever reason, the served video alternates between - # two different ones + 'md5': '8e5fbfabe6ad0f89f3012a7943c1287b', 'info_dict': { - 'id': '340723', + 'id': 'c4486943', 'ext': 'mp4', - 'title': 'International Health Care Models', + 'title': 'CSPAN - International Health Care Models', 'description': 'md5:7a985a2d595dba00af3d9c9f0783c967', } }, { 'url': 'http://www.c-span.org/video/?318608-1/gm-ignition-switch-recall', - 'md5': '446562a736c6bf97118e389433ed88d4', + 'md5': '2ae5051559169baadba13fc35345ae74', 'info_dict': { 'id': '342759', 'ext': 'mp4', 'title': 'General Motors Ignition Switch Recall', 'duration': 14848, - 'description': 'md5:70c7c3b8fa63fa60d42772440596034c' + 'description': 'md5:118081aedd24bf1d3b68b3803344e7f3' }, }, { # Video from senate.gov @@ -57,67 +57,94 @@ class CSpanIE(InfoExtractor): }] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - page_id = mobj.group('id') - webpage = self._download_webpage(url, page_id) - video_id = self._search_regex(r'progid=\'?([0-9]+)\'?>', webpage, 'video id') + video_id = self._match_id(url) + video_type = None + webpage = self._download_webpage(url, video_id) + # We first look for clipid, because clipprog always appears before + patterns = [r'id=\'clip(%s)\'\s*value=\'([0-9]+)\'' % t for t in ('id', 'prog')] + results = list(filter(None, (re.search(p, webpage) for p in patterns))) + if results: + matches = results[0] + video_type, video_id = matches.groups() + video_type = 'clip' if video_type == 'id' else 'program' + else: + m = re.search(r'data-(?P<type>clip|prog)id=["\'](?P<id>\d+)', webpage) + if m: + video_id = m.group('id') + video_type = 'program' if m.group('type') == 'prog' else 'clip' + else: + senate_isvp_url = SenateISVPIE._search_iframe_url(webpage) + if senate_isvp_url: + title = self._og_search_title(webpage) + surl = smuggle_url(senate_isvp_url, {'force_title': title}) + return self.url_result(surl, 'SenateISVP', video_id, title) + if video_type is None or video_id is None: + raise ExtractorError('unable to find video id and type') - description = self._html_search_regex( - [ - # The full description - r'<div class=\'expandable\'>(.*?)<a href=\'#\'', - # If the description is small enough the other div is not - # present, otherwise this is a stripped version - r'<p class=\'initial\'>(.*?)</p>' - ], - webpage, 'description', flags=re.DOTALL, default=None) + def get_text_attr(d, attr): + return d.get(attr, {}).get('#text') - info_url = 'http://c-spanvideo.org/videoLibrary/assets/player/ajax-player.php?os=android&html5=program&id=' + video_id - data = self._download_json(info_url, video_id) + data = self._download_json( + 'http://www.c-span.org/assets/player/ajax-player.php?os=android&html5=%s&id=%s' % (video_type, video_id), + video_id)['video'] + if data['@status'] != 'Success': + raise ExtractorError('%s said: %s' % (self.IE_NAME, get_text_attr(data, 'error')), expected=True) doc = self._download_xml( - 'http://www.c-span.org/common/services/flashXml.php?programid=' + video_id, + 'http://www.c-span.org/common/services/flashXml.php?%sid=%s' % (video_type, video_id), video_id) + description = self._html_search_meta('description', webpage) + title = find_xpath_attr(doc, './/string', 'name', 'title').text thumbnail = find_xpath_attr(doc, './/string', 'name', 'poster').text - senate_isvp_url = SenateISVPIE._search_iframe_url(webpage) - if senate_isvp_url: - surl = smuggle_url(senate_isvp_url, {'force_title': title}) - return self.url_result(surl, 'SenateISVP', video_id, title) - - files = data['video']['files'] - try: - capfile = data['video']['capfile']['#text'] - except KeyError: - capfile = None + files = data['files'] + capfile = get_text_attr(data, 'capfile') - entries = [{ - 'id': '%s_%d' % (video_id, partnum + 1), - 'title': ( - title if len(files) == 1 else - '%s part %d' % (title, partnum + 1)), - 'url': unescapeHTML(f['path']['#text']), - 'description': description, - 'thumbnail': thumbnail, - 'duration': int_or_none(f.get('length', {}).get('#text')), - 'subtitles': { - 'en': [{ - 'url': capfile, - 'ext': determine_ext(capfile, 'dfxp') - }], - } if capfile else None, - } for partnum, f in enumerate(files)] + entries = [] + for partnum, f in enumerate(files): + formats = [] + for quality in f['qualities']: + formats.append({ + 'format_id': '%s-%sp' % (get_text_attr(quality, 'bitrate'), get_text_attr(quality, 'height')), + 'url': unescapeHTML(get_text_attr(quality, 'file')), + 'height': int_or_none(get_text_attr(quality, 'height')), + 'tbr': int_or_none(get_text_attr(quality, 'bitrate')), + }) + if not formats: + path = unescapeHTML(get_text_attr(f, 'path')) + if not path: + continue + formats = self._extract_m3u8_formats( + path, video_id, 'mp4', entry_protocol='m3u8_native', + m3u8_id='hls') if determine_ext(path) == 'm3u8' else [{'url': path, }] + self._sort_formats(formats) + entries.append({ + 'id': '%s_%d' % (video_id, partnum + 1), + 'title': ( + title if len(files) == 1 else + '%s part %d' % (title, partnum + 1)), + 'formats': formats, + 'description': description, + 'thumbnail': thumbnail, + 'duration': int_or_none(get_text_attr(f, 'length')), + 'subtitles': { + 'en': [{ + 'url': capfile, + 'ext': determine_ext(capfile, 'dfxp') + }], + } if capfile else None, + }) if len(entries) == 1: entry = dict(entries[0]) - entry['id'] = video_id + entry['id'] = 'c' + video_id if video_type == 'clip' else video_id return entry else: return { '_type': 'playlist', 'entries': entries, 'title': title, - 'id': video_id, + 'id': 'c' + video_id if video_type == 'clip' else video_id, } diff --git a/youtube_dl/extractor/cultureunplugged.py b/youtube_dl/extractor/cultureunplugged.py new file mode 100644 index 0000000..9c764fe --- /dev/null +++ b/youtube_dl/extractor/cultureunplugged.py @@ -0,0 +1,63 @@ +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import int_or_none + + +class CultureUnpluggedIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?cultureunplugged\.com/documentary/watch-online/play/(?P<id>\d+)(?:/(?P<display_id>[^/]+))?' + _TESTS = [{ + 'url': 'http://www.cultureunplugged.com/documentary/watch-online/play/53662/The-Next--Best-West', + 'md5': 'ac6c093b089f7d05e79934dcb3d228fc', + 'info_dict': { + 'id': '53662', + 'display_id': 'The-Next--Best-West', + 'ext': 'mp4', + 'title': 'The Next, Best West', + 'description': 'md5:0423cd00833dea1519cf014e9d0903b1', + 'thumbnail': 're:^https?://.*\.jpg$', + 'creator': 'Coldstream Creative', + 'duration': 2203, + 'view_count': int, + } + }, { + 'url': 'http://www.cultureunplugged.com/documentary/watch-online/play/53662', + 'only_matching': True, + }] + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + display_id = mobj.group('display_id') or video_id + + movie_data = self._download_json( + 'http://www.cultureunplugged.com/movie-data/cu-%s.json' % video_id, display_id) + + video_url = movie_data['url'] + title = movie_data['title'] + + description = movie_data.get('synopsis') + creator = movie_data.get('producer') + duration = int_or_none(movie_data.get('duration')) + view_count = int_or_none(movie_data.get('views')) + + thumbnails = [{ + 'url': movie_data['%s_thumb' % size], + 'id': size, + 'preference': preference, + } for preference, size in enumerate(( + 'small', 'large')) if movie_data.get('%s_thumb' % size)] + + return { + 'id': video_id, + 'display_id': display_id, + 'url': video_url, + 'title': title, + 'description': description, + 'creator': creator, + 'duration': duration, + 'view_count': view_count, + 'thumbnails': thumbnails, + } diff --git a/youtube_dl/extractor/cwtv.py b/youtube_dl/extractor/cwtv.py new file mode 100644 index 0000000..36af670 --- /dev/null +++ b/youtube_dl/extractor/cwtv.py @@ -0,0 +1,88 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + int_or_none, + parse_iso8601, +) + + +class CWTVIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?cw(?:tv|seed)\.com/shows/(?:[^/]+/){2}\?play=(?P<id>[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})' + _TESTS = [{ + 'url': 'http://cwtv.com/shows/arrow/legends-of-yesterday/?play=6b15e985-9345-4f60-baf8-56e96be57c63', + 'info_dict': { + 'id': '6b15e985-9345-4f60-baf8-56e96be57c63', + 'ext': 'mp4', + 'title': 'Legends of Yesterday', + 'description': 'Oliver and Barry Allen take Kendra Saunders and Carter Hall to a remote location to keep them hidden from Vandal Savage while they figure out how to defeat him.', + 'duration': 2665, + 'series': 'Arrow', + 'season_number': 4, + 'season': '4', + 'episode_number': 8, + 'upload_date': '20151203', + 'timestamp': 1449122100, + }, + 'params': { + # m3u8 download + 'skip_download': True, + } + }, { + 'url': 'http://www.cwseed.com/shows/whose-line-is-it-anyway/jeff-davis-4/?play=24282b12-ead2-42f2-95ad-26770c2c6088', + 'info_dict': { + 'id': '24282b12-ead2-42f2-95ad-26770c2c6088', + 'ext': 'mp4', + 'title': 'Jeff Davis 4', + 'description': 'Jeff Davis is back to make you laugh.', + 'duration': 1263, + 'series': 'Whose Line Is It Anyway?', + 'season_number': 11, + 'season': '11', + 'episode_number': 20, + 'upload_date': '20151006', + 'timestamp': 1444107300, + }, + 'params': { + # m3u8 download + 'skip_download': True, + } + }] + + def _real_extract(self, url): + video_id = self._match_id(url) + video_data = self._download_json( + 'http://metaframe.digitalsmiths.tv/v2/CWtv/assets/%s/partner/132?format=json' % video_id, video_id) + + formats = self._extract_m3u8_formats( + video_data['videos']['variantplaylist']['uri'], video_id, 'mp4') + + thumbnails = [{ + 'url': image['uri'], + 'width': image.get('width'), + 'height': image.get('height'), + } for image_id, image in video_data['images'].items() if image.get('uri')] if video_data.get('images') else None + + video_metadata = video_data['assetFields'] + + subtitles = { + 'en': [{ + 'url': video_metadata['UnicornCcUrl'], + }], + } if video_metadata.get('UnicornCcUrl') else None + + return { + 'id': video_id, + 'title': video_metadata['title'], + 'description': video_metadata.get('description'), + 'duration': int_or_none(video_metadata.get('duration')), + 'series': video_metadata.get('seriesName'), + 'season_number': int_or_none(video_metadata.get('seasonNumber')), + 'season': video_metadata.get('seasonName'), + 'episode_number': int_or_none(video_metadata.get('episodeNumber')), + 'timestamp': parse_iso8601(video_data.get('startTime')), + 'thumbnails': thumbnails, + 'formats': formats, + 'subtitles': subtitles, + } diff --git a/youtube_dl/extractor/dailymotion.py b/youtube_dl/extractor/dailymotion.py index ab7f3ae..2e6226e 100644 --- a/youtube_dl/extractor/dailymotion.py +++ b/youtube_dl/extractor/dailymotion.py @@ -7,10 +7,10 @@ import itertools from .common import InfoExtractor -from ..compat import compat_str from ..utils import ( - ExtractorError, determine_ext, + error_to_compat_str, + ExtractorError, int_or_none, parse_iso8601, sanitized_Request, @@ -37,7 +37,7 @@ class DailymotionBaseInfoExtractor(InfoExtractor): class DailymotionIE(DailymotionBaseInfoExtractor): - _VALID_URL = r'(?i)(?:https?://)?(?:(www|touch)\.)?dailymotion\.[a-z]{2,3}/(?:(embed|#)/)?video/(?P<id>[^/?_]+)' + _VALID_URL = r'(?i)(?:https?://)?(?:(www|touch)\.)?dailymotion\.[a-z]{2,3}/(?:(?:embed|swf|#)/)?video/(?P<id>[^/?_]+)' IE_NAME = 'dailymotion' _FORMATS = [ @@ -99,6 +99,15 @@ class DailymotionIE(DailymotionBaseInfoExtractor): { 'url': 'http://www.dailymotion.com/video/xhza0o', 'only_matching': True, + }, + # with subtitles + { + 'url': 'http://www.dailymotion.com/video/x20su5f_the-power-of-nightmares-1-the-rise-of-the-politics-of-fear-bbc-2004_news', + 'only_matching': True, + }, + { + 'url': 'http://www.dailymotion.com/swf/video/x3n92nf', + 'only_matching': True, } ] @@ -113,16 +122,21 @@ class DailymotionIE(DailymotionBaseInfoExtractor): description = self._og_search_description(webpage) or self._html_search_meta( 'description', webpage, 'description') - view_count = str_to_int(self._search_regex( - [r'<meta[^>]+itemprop="interactionCount"[^>]+content="UserPlays:(\d+)"', - r'video_views_count[^>]+>\s+([\d\.,]+)'], - webpage, 'view count', fatal=False)) + view_count_str = self._search_regex( + (r'<meta[^>]+itemprop="interactionCount"[^>]+content="UserPlays:([\s\d,.]+)"', + r'video_views_count[^>]+>\s+([\s\d\,.]+)'), + webpage, 'view count', fatal=False) + if view_count_str: + view_count_str = re.sub(r'\s', '', view_count_str) + view_count = str_to_int(view_count_str) comment_count = int_or_none(self._search_regex( r'<meta[^>]+itemprop="interactionCount"[^>]+content="UserComments:(\d+)"', webpage, 'comment count', fatal=False)) player_v5 = self._search_regex( - [r'buildPlayer\(({.+?})\);', r'playerV5\s*=\s*dmp\.create\([^,]+?,\s*({.+?})\);'], + [r'buildPlayer\(({.+?})\);\n', # See https://github.com/rg3/youtube-dl/issues/7826 + r'playerV5\s*=\s*dmp\.create\([^,]+?,\s*({.+?})\);', + r'buildPlayer\(({.+?})\);'], webpage, 'player v5', default=None) if player_v5: player = self._parse_json(player_v5, video_id) @@ -141,19 +155,16 @@ class DailymotionIE(DailymotionBaseInfoExtractor): continue ext = determine_ext(media_url) if type_ == 'application/x-mpegURL' or ext == 'm3u8': - m3u8_formats = self._extract_m3u8_formats( - media_url, video_id, 'mp4', m3u8_id='hls', fatal=False) - if m3u8_formats: - formats.extend(m3u8_formats) + formats.extend(self._extract_m3u8_formats( + media_url, video_id, 'mp4', preference=-1, + m3u8_id='hls', fatal=False)) elif type_ == 'application/f4m' or ext == 'f4m': - f4m_formats = self._extract_f4m_formats( - media_url, video_id, preference=-1, f4m_id='hds', fatal=False) - if f4m_formats: - formats.extend(f4m_formats) + formats.extend(self._extract_f4m_formats( + media_url, video_id, preference=-1, f4m_id='hds', fatal=False)) else: f = { 'url': media_url, - 'format_id': quality, + 'format_id': 'http-%s' % quality, } m = re.search(r'H264-(?P<width>\d+)x(?P<height>\d+)', media_url) if m: @@ -172,11 +183,13 @@ class DailymotionIE(DailymotionBaseInfoExtractor): uploader_id = metadata.get('owner', {}).get('id') subtitles = {} - for subtitle_lang, subtitle in metadata.get('subtitles', {}).get('data', {}).items(): - subtitles[subtitle_lang] = [{ - 'ext': determine_ext(subtitle_url), - 'url': subtitle_url, - } for subtitle_url in subtitle.get('urls', [])] + subtitles_data = metadata.get('subtitles', {}).get('data', {}) + if subtitles_data and isinstance(subtitles_data, dict): + for subtitle_lang, subtitle in subtitles_data.items(): + subtitles[subtitle_lang] = [{ + 'ext': determine_ext(subtitle_url), + 'url': subtitle_url, + } for subtitle_url in subtitle.get('urls', [])] return { 'id': video_id, @@ -269,7 +282,7 @@ class DailymotionIE(DailymotionBaseInfoExtractor): 'https://api.dailymotion.com/video/%s/subtitles?fields=id,language,url' % video_id, video_id, note=False) except ExtractorError as err: - self._downloader.report_warning('unable to download video subtitles: %s' % compat_str(err)) + self._downloader.report_warning('unable to download video subtitles: %s' % error_to_compat_str(err)) return {} info = json.loads(sub_list) if (info['total'] > 0): @@ -330,7 +343,7 @@ class DailymotionPlaylistIE(DailymotionBaseInfoExtractor): class DailymotionUserIE(DailymotionPlaylistIE): IE_NAME = 'dailymotion:user' - _VALID_URL = r'https?://(?:www\.)?dailymotion\.[a-z]{2,3}/(?!(?:embed|#|video|playlist)/)(?:(?:old/)?user/)?(?P<user>[^/]+)' + _VALID_URL = r'https?://(?:www\.)?dailymotion\.[a-z]{2,3}/(?!(?:embed|swf|#|video|playlist)/)(?:(?:old/)?user/)?(?P<user>[^/]+)' _PAGE_TEMPLATE = 'http://www.dailymotion.com/user/%s/%s' _TESTS = [{ 'url': 'https://www.dailymotion.com/user/nqtv', @@ -386,13 +399,13 @@ class DailymotionCloudIE(DailymotionBaseInfoExtractor): }] @classmethod - def _extract_dmcloud_url(self, webpage): - mobj = re.search(r'<iframe[^>]+src=[\'"](%s)[\'"]' % self._VALID_EMBED_URL, webpage) + def _extract_dmcloud_url(cls, webpage): + mobj = re.search(r'<iframe[^>]+src=[\'"](%s)[\'"]' % cls._VALID_EMBED_URL, webpage) if mobj: return mobj.group(1) mobj = re.search( - r'<input[^>]+id=[\'"]dmcloudUrlEmissionSelect[\'"][^>]+value=[\'"](%s)[\'"]' % self._VALID_EMBED_URL, + r'<input[^>]+id=[\'"]dmcloudUrlEmissionSelect[\'"][^>]+value=[\'"](%s)[\'"]' % cls._VALID_EMBED_URL, webpage) if mobj: return mobj.group(1) diff --git a/youtube_dl/extractor/daum.py b/youtube_dl/extractor/daum.py index 934da76..c84c510 100644 --- a/youtube_dl/extractor/daum.py +++ b/youtube_dl/extractor/daum.py @@ -3,56 +3,91 @@ from __future__ import unicode_literals import re +import itertools from .common import InfoExtractor from ..compat import ( + compat_parse_qs, compat_urllib_parse, + compat_urllib_parse_unquote, + compat_urlparse, +) +from ..utils import ( + int_or_none, + str_to_int, + xpath_text, + unescapeHTML, ) class DaumIE(InfoExtractor): - _VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/(?:v/|.*?clipid=)(?P<id>[^?#&]+)' + _VALID_URL = r'https?://(?:(?:m\.)?tvpot\.daum\.net/v/|videofarm\.daum\.net/controller/player/VodPlayer\.swf\?vid=)(?P<id>[^?#&]+)' IE_NAME = 'daum.net' _TESTS = [{ - 'url': 'http://tvpot.daum.net/clip/ClipView.do?clipid=52554690', + 'url': 'http://tvpot.daum.net/v/vab4dyeDBysyBssyukBUjBz', 'info_dict': { - 'id': '52554690', + 'id': 'vab4dyeDBysyBssyukBUjBz', 'ext': 'mp4', - 'title': 'DOTA 2GETHER 시즌2 6회 - 2부', - 'description': 'DOTA 2GETHER 시즌2 6회 - 2부', - 'upload_date': '20130831', - 'duration': 3868, + 'title': '마크 헌트 vs 안토니오 실바', + 'description': 'Mark Hunt vs Antonio Silva', + 'upload_date': '20131217', + 'thumbnail': 're:^https?://.*\.(?:jpg|png)', + 'duration': 2117, + 'view_count': int, + 'comment_count': int, }, }, { - 'url': 'http://tvpot.daum.net/v/vab4dyeDBysyBssyukBUjBz', - 'only_matching': True, + 'url': 'http://m.tvpot.daum.net/v/65139429', + 'info_dict': { + 'id': '65139429', + 'ext': 'mp4', + 'title': '1297회, \'아빠 아들로 태어나길 잘 했어\' 민수, 감동의 눈물[아빠 어디가] 20150118', + 'description': 'md5:79794514261164ff27e36a21ad229fc5', + 'upload_date': '20150604', + 'thumbnail': 're:^https?://.*\.(?:jpg|png)', + 'duration': 154, + 'view_count': int, + 'comment_count': int, + }, }, { 'url': 'http://tvpot.daum.net/v/07dXWRka62Y%24', 'only_matching': True, + }, { + 'url': 'http://videofarm.daum.net/controller/player/VodPlayer.swf?vid=vwIpVpCQsT8%24&ref=', + 'info_dict': { + 'id': 'vwIpVpCQsT8$', + 'ext': 'flv', + 'title': '01-Korean War ( Trouble on the horizon )', + 'description': '\nKorean War 01\nTrouble on the horizon\n전쟁의 먹구름', + 'upload_date': '20080223', + 'thumbnail': 're:^https?://.*\.(?:jpg|png)', + 'duration': 249, + 'view_count': int, + 'comment_count': int, + }, }] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - canonical_url = 'http://tvpot.daum.net/v/%s' % video_id - webpage = self._download_webpage(canonical_url, video_id) - full_id = self._search_regex( - r'src=["\']http://videofarm\.daum\.net/controller/video/viewer/Video\.html\?.*?vid=(.+?)[&"\']', - webpage, 'full id') - query = compat_urllib_parse.urlencode({'vid': full_id}) + video_id = compat_urllib_parse_unquote(self._match_id(url)) + query = compat_urllib_parse.urlencode({'vid': video_id}) + movie_data = self._download_json( + 'http://videofarm.daum.net/controller/api/closed/v1_2/IntegratedMovieData.json?' + query, + video_id, 'Downloading video formats info') + + # For urls like http://m.tvpot.daum.net/v/65139429, where the video_id is really a clipid + if not movie_data.get('output_list', {}).get('output_list') and re.match(r'^\d+$', video_id): + return self.url_result('http://tvpot.daum.net/clip/ClipView.do?clipid=%s' % video_id) + info = self._download_xml( 'http://tvpot.daum.net/clip/ClipInfoXml.do?' + query, video_id, 'Downloading video info') - urls = self._download_xml( - 'http://videofarm.daum.net/controller/api/open/v1_2/MovieData.apixml?' + query, - video_id, 'Downloading video formats info') formats = [] - for format_el in urls.findall('result/output_list/output_list'): - profile = format_el.attrib['profile'] + for format_el in movie_data['output_list']['output_list']: + profile = format_el['profile'] format_query = compat_urllib_parse.urlencode({ - 'vid': full_id, + 'vid': video_id, 'profile': profile, }) url_doc = self._download_xml( @@ -62,14 +97,202 @@ class DaumIE(InfoExtractor): formats.append({ 'url': format_url, 'format_id': profile, + 'width': int_or_none(format_el.get('width')), + 'height': int_or_none(format_el.get('height')), + 'filesize': int_or_none(format_el.get('filesize')), }) + self._sort_formats(formats) return { 'id': video_id, 'title': info.find('TITLE').text, 'formats': formats, - 'thumbnail': self._og_search_thumbnail(webpage), - 'description': info.find('CONTENTS').text, - 'duration': int(info.find('DURATION').text), + 'thumbnail': xpath_text(info, 'THUMB_URL'), + 'description': xpath_text(info, 'CONTENTS'), + 'duration': int_or_none(xpath_text(info, 'DURATION')), 'upload_date': info.find('REGDTTM').text[:8], + 'view_count': str_to_int(xpath_text(info, 'PLAY_CNT')), + 'comment_count': str_to_int(xpath_text(info, 'COMMENT_CNT')), } + + +class DaumClipIE(InfoExtractor): + _VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/(?:clip/ClipView.(?:do|tv)|mypot/View.do)\?.*?clipid=(?P<id>\d+)' + IE_NAME = 'daum.net:clip' + _URL_TEMPLATE = 'http://tvpot.daum.net/clip/ClipView.do?clipid=%s' + + _TESTS = [{ + 'url': 'http://tvpot.daum.net/clip/ClipView.do?clipid=52554690', + 'info_dict': { + 'id': '52554690', + 'ext': 'mp4', + 'title': 'DOTA 2GETHER 시즌2 6회 - 2부', + 'description': 'DOTA 2GETHER 시즌2 6회 - 2부', + 'upload_date': '20130831', + 'thumbnail': 're:^https?://.*\.(?:jpg|png)', + 'duration': 3868, + 'view_count': int, + }, + }, { + 'url': 'http://m.tvpot.daum.net/clip/ClipView.tv?clipid=54999425', + 'only_matching': True, + }] + + @classmethod + def suitable(cls, url): + return False if DaumPlaylistIE.suitable(url) or DaumUserIE.suitable(url) else super(DaumClipIE, cls).suitable(url) + + def _real_extract(self, url): + video_id = self._match_id(url) + clip_info = self._download_json( + 'http://tvpot.daum.net/mypot/json/GetClipInfo.do?clipid=%s' % video_id, + video_id, 'Downloading clip info')['clip_bean'] + + return { + '_type': 'url_transparent', + 'id': video_id, + 'url': 'http://tvpot.daum.net/v/%s' % clip_info['vid'], + 'title': unescapeHTML(clip_info['title']), + 'thumbnail': clip_info.get('thumb_url'), + 'description': clip_info.get('contents'), + 'duration': int_or_none(clip_info.get('duration')), + 'upload_date': clip_info.get('up_date')[:8], + 'view_count': int_or_none(clip_info.get('play_count')), + 'ie_key': 'Daum', + } + + +class DaumListIE(InfoExtractor): + def _get_entries(self, list_id, list_id_type): + name = None + entries = [] + for pagenum in itertools.count(1): + list_info = self._download_json( + 'http://tvpot.daum.net/mypot/json/GetClipInfo.do?size=48&init=true&order=date&page=%d&%s=%s' % ( + pagenum, list_id_type, list_id), list_id, 'Downloading list info - %s' % pagenum) + + entries.extend([ + self.url_result( + 'http://tvpot.daum.net/v/%s' % clip['vid']) + for clip in list_info['clip_list'] + ]) + + if not name: + name = list_info.get('playlist_bean', {}).get('name') or \ + list_info.get('potInfo', {}).get('name') + + if not list_info.get('has_more'): + break + + return name, entries + + def _check_clip(self, url, list_id): + query_dict = compat_parse_qs(compat_urlparse.urlparse(url).query) + if 'clipid' in query_dict: + clip_id = query_dict['clipid'][0] + if self._downloader.params.get('noplaylist'): + self.to_screen('Downloading just video %s because of --no-playlist' % clip_id) + return self.url_result(DaumClipIE._URL_TEMPLATE % clip_id, 'DaumClip') + else: + self.to_screen('Downloading playlist %s - add --no-playlist to just download video' % list_id) + + +class DaumPlaylistIE(DaumListIE): + _VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/mypot/(?:View\.do|Top\.tv)\?.*?playlistid=(?P<id>[0-9]+)' + IE_NAME = 'daum.net:playlist' + _URL_TEMPLATE = 'http://tvpot.daum.net/mypot/View.do?playlistid=%s' + + _TESTS = [{ + 'note': 'Playlist url with clipid', + 'url': 'http://tvpot.daum.net/mypot/View.do?playlistid=6213966&clipid=73806844', + 'info_dict': { + 'id': '6213966', + 'title': 'Woorissica Official', + }, + 'playlist_mincount': 181 + }, { + 'note': 'Playlist url with clipid - noplaylist', + 'url': 'http://tvpot.daum.net/mypot/View.do?playlistid=6213966&clipid=73806844', + 'info_dict': { + 'id': '73806844', + 'ext': 'mp4', + 'title': '151017 Airport', + 'upload_date': '20160117', + }, + 'params': { + 'noplaylist': True, + 'skip_download': True, + } + }] + + @classmethod + def suitable(cls, url): + return False if DaumUserIE.suitable(url) else super(DaumPlaylistIE, cls).suitable(url) + + def _real_extract(self, url): + list_id = self._match_id(url) + + clip_result = self._check_clip(url, list_id) + if clip_result: + return clip_result + + name, entries = self._get_entries(list_id, 'playlistid') + + return self.playlist_result(entries, list_id, name) + + +class DaumUserIE(DaumListIE): + _VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/mypot/(?:View|Top)\.(?:do|tv)\?.*?ownerid=(?P<id>[0-9a-zA-Z]+)' + IE_NAME = 'daum.net:user' + + _TESTS = [{ + 'url': 'http://tvpot.daum.net/mypot/View.do?ownerid=o2scDLIVbHc0', + 'info_dict': { + 'id': 'o2scDLIVbHc0', + 'title': '마이 리틀 텔레비전', + }, + 'playlist_mincount': 213 + }, { + 'url': 'http://tvpot.daum.net/mypot/View.do?ownerid=o2scDLIVbHc0&clipid=73801156', + 'info_dict': { + 'id': '73801156', + 'ext': 'mp4', + 'title': '[미공개] 김구라, 오만석이 부릅니다 \'오케피\' - 마이 리틀 텔레비전 20160116', + 'upload_date': '20160117', + 'description': 'md5:5e91d2d6747f53575badd24bd62b9f36' + }, + 'params': { + 'noplaylist': True, + 'skip_download': True, + } + }, { + 'note': 'Playlist url has ownerid and playlistid, playlistid takes precedence', + 'url': 'http://tvpot.daum.net/mypot/View.do?ownerid=o2scDLIVbHc0&playlistid=6196631', + 'info_dict': { + 'id': '6196631', + 'title': '마이 리틀 텔레비전 - 20160109', + }, + 'playlist_count': 11 + }, { + 'url': 'http://tvpot.daum.net/mypot/Top.do?ownerid=o2scDLIVbHc0', + 'only_matching': True, + }, { + 'url': 'http://m.tvpot.daum.net/mypot/Top.tv?ownerid=45x1okb1If50&playlistid=3569733', + 'only_matching': True, + }] + + def _real_extract(self, url): + list_id = self._match_id(url) + + clip_result = self._check_clip(url, list_id) + if clip_result: + return clip_result + + query_dict = compat_parse_qs(compat_urlparse.urlparse(url).query) + if 'playlistid' in query_dict: + playlist_id = query_dict['playlistid'][0] + return self.url_result(DaumPlaylistIE._URL_TEMPLATE % playlist_id, 'DaumPlaylist') + + name, entries = self._get_entries(list_id, 'ownerid') + + return self.playlist_result(entries, list_id, name) diff --git a/youtube_dl/extractor/dbtv.py b/youtube_dl/extractor/dbtv.py index 2122176..133cdc5 100644 --- a/youtube_dl/extractor/dbtv.py +++ b/youtube_dl/extractor/dbtv.py @@ -13,8 +13,8 @@ from ..utils import ( class DBTVIE(InfoExtractor): - _VALID_URL = r'http://dbtv\.no/(?P<id>[0-9]+)#(?P<display_id>.+)' - _TEST = { + _VALID_URL = r'https?://(?:www\.)?dbtv\.no/(?:(?:lazyplayer|player)/)?(?P<id>[0-9]+)(?:#(?P<display_id>.+))?' + _TESTS = [{ 'url': 'http://dbtv.no/3649835190001#Skulle_teste_ut_fornøyelsespark,_men_kollegaen_var_bare_opptatt_av_bikinikroppen', 'md5': 'b89953ed25dacb6edb3ef6c6f430f8bc', 'info_dict': { @@ -30,12 +30,18 @@ class DBTVIE(InfoExtractor): 'view_count': int, 'categories': list, } - } + }, { + 'url': 'http://dbtv.no/3649835190001', + 'only_matching': True, + }, { + 'url': 'http://www.dbtv.no/lazyplayer/4631135248001', + 'only_matching': True, + }] def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) video_id = mobj.group('id') - display_id = mobj.group('display_id') + display_id = mobj.group('display_id') or video_id data = self._download_json( 'http://api.dbtv.no/discovery/%s' % video_id, display_id) diff --git a/youtube_dl/extractor/dcn.py b/youtube_dl/extractor/dcn.py index 9737cff..15a1c40 100644 --- a/youtube_dl/extractor/dcn.py +++ b/youtube_dl/extractor/dcn.py @@ -1,26 +1,90 @@ # coding: utf-8 from __future__ import unicode_literals +import re +import base64 + from .common import InfoExtractor -from ..compat import compat_urllib_parse +from ..compat import ( + compat_urllib_parse, + compat_str, +) from ..utils import ( int_or_none, parse_iso8601, sanitized_Request, + smuggle_url, + unsmuggle_url, ) class DCNIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?dcndigital\.ae/(?:#/)?(?:video/.+|show/\d+/.+?)/(?P<id>\d+)' + _VALID_URL = r'https?://(?:www\.)?dcndigital\.ae/(?:#/)?show/(?P<show_id>\d+)/[^/]+(?:/(?P<video_id>\d+)/(?P<season_id>\d+))?' + + def _real_extract(self, url): + show_id, video_id, season_id = re.match(self._VALID_URL, url).groups() + if video_id and int(video_id) > 0: + return self.url_result( + 'http://www.dcndigital.ae/media/%s' % video_id, 'DCNVideo') + elif season_id and int(season_id) > 0: + return self.url_result(smuggle_url( + 'http://www.dcndigital.ae/program/season/%s' % season_id, + {'show_id': show_id}), 'DCNSeason') + else: + return self.url_result( + 'http://www.dcndigital.ae/program/%s' % show_id, 'DCNSeason') + + +class DCNBaseIE(InfoExtractor): + def _extract_video_info(self, video_data, video_id, is_live): + title = video_data.get('title_en') or video_data['title_ar'] + img = video_data.get('img') + thumbnail = 'http://admin.mangomolo.com/analytics/%s' % img if img else None + duration = int_or_none(video_data.get('duration')) + description = video_data.get('description_en') or video_data.get('description_ar') + timestamp = parse_iso8601(video_data.get('create_time'), ' ') + + return { + 'id': video_id, + 'title': self._live_title(title) if is_live else title, + 'description': description, + 'thumbnail': thumbnail, + 'duration': duration, + 'timestamp': timestamp, + 'is_live': is_live, + } + + def _extract_video_formats(self, webpage, video_id, entry_protocol): + formats = [] + m3u8_url = self._html_search_regex( + r'file\s*:\s*"([^"]+)', webpage, 'm3u8 url', fatal=False) + if m3u8_url: + formats.extend(self._extract_m3u8_formats( + m3u8_url, video_id, 'mp4', entry_protocol, m3u8_id='hls', fatal=None)) + + rtsp_url = self._search_regex( + r'<a[^>]+href="(rtsp://[^"]+)"', webpage, 'rtsp url', fatal=False) + if rtsp_url: + formats.append({ + 'url': rtsp_url, + 'format_id': 'rtsp', + }) + + self._sort_formats(formats) + return formats + + +class DCNVideoIE(DCNBaseIE): + IE_NAME = 'dcn:video' + _VALID_URL = r'https?://(?:www\.)?dcndigital\.ae/(?:#/)?(?:video/[^/]+|media|catchup/[^/]+/[^/]+)/(?P<id>\d+)' _TEST = { - 'url': 'http://www.dcndigital.ae/#/show/199074/%D8%B1%D8%AD%D9%84%D8%A9-%D8%A7%D9%84%D8%B9%D9%85%D8%B1-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-1/17375/6887', + 'url': 'http://www.dcndigital.ae/#/video/%D8%B1%D8%AD%D9%84%D8%A9-%D8%A7%D9%84%D8%B9%D9%85%D8%B1-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-1/17375', 'info_dict': { 'id': '17375', 'ext': 'mp4', 'title': 'رحلة العمر : الحلقة 1', 'description': 'md5:0156e935d870acb8ef0a66d24070c6d6', - 'thumbnail': 're:^https?://.*\.jpg$', 'duration': 2041, 'timestamp': 1227504126, 'upload_date': '20081124', @@ -37,46 +101,96 @@ class DCNIE(InfoExtractor): request = sanitized_Request( 'http://admin.mangomolo.com/analytics/index.php/plus/video?id=%s' % video_id, headers={'Origin': 'http://www.dcndigital.ae'}) - - video = self._download_json(request, video_id) - title = video.get('title_en') or video['title_ar'] + video_data = self._download_json(request, video_id) + info = self._extract_video_info(video_data, video_id, False) webpage = self._download_webpage( 'http://admin.mangomolo.com/analytics/index.php/customers/embed/video?' + compat_urllib_parse.urlencode({ - 'id': video['id'], - 'user_id': video['user_id'], - 'signature': video['signature'], + 'id': video_data['id'], + 'user_id': video_data['user_id'], + 'signature': video_data['signature'], 'countries': 'Q0M=', 'filter': 'DENY', }), video_id) + info['formats'] = self._extract_video_formats(webpage, video_id, 'm3u8_native') + return info - m3u8_url = self._html_search_regex(r'file:\s*"([^"]+)', webpage, 'm3u8 url') - formats = self._extract_m3u8_formats( - m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id='hls') - rtsp_url = self._search_regex( - r'<a[^>]+href="(rtsp://[^"]+)"', webpage, 'rtsp url', fatal=False) - if rtsp_url: - formats.append({ - 'url': rtsp_url, - 'format_id': 'rtsp', +class DCNLiveIE(DCNBaseIE): + IE_NAME = 'dcn:live' + _VALID_URL = r'https?://(?:www\.)?dcndigital\.ae/(?:#/)?live/(?P<id>\d+)' + + def _real_extract(self, url): + channel_id = self._match_id(url) + + request = sanitized_Request( + 'http://admin.mangomolo.com/analytics/index.php/plus/getchanneldetails?channel_id=%s' % channel_id, + headers={'Origin': 'http://www.dcndigital.ae'}) + + channel_data = self._download_json(request, channel_id) + info = self._extract_video_info(channel_data, channel_id, True) + + webpage = self._download_webpage( + 'http://admin.mangomolo.com/analytics/index.php/customers/embed/index?' + + compat_urllib_parse.urlencode({ + 'id': base64.b64encode(channel_data['user_id'].encode()).decode(), + 'channelid': base64.b64encode(channel_data['id'].encode()).decode(), + 'signature': channel_data['signature'], + 'countries': 'Q0M=', + 'filter': 'DENY', + }), channel_id) + info['formats'] = self._extract_video_formats(webpage, channel_id, 'm3u8') + return info + + +class DCNSeasonIE(InfoExtractor): + IE_NAME = 'dcn:season' + _VALID_URL = r'https?://(?:www\.)?dcndigital\.ae/(?:#/)?program/(?:(?P<show_id>\d+)|season/(?P<season_id>\d+))' + _TEST = { + 'url': 'http://dcndigital.ae/#/program/205024/%D9%85%D8%AD%D8%A7%D8%B6%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D9%8A%D8%AE-%D8%A7%D9%84%D8%B4%D8%B9%D8%B1%D8%A7%D9%88%D9%8A', + 'info_dict': + { + 'id': '7910', + 'title': 'محاضرات الشيخ الشعراوي', + }, + 'playlist_mincount': 27, + } + + def _real_extract(self, url): + url, smuggled_data = unsmuggle_url(url, {}) + show_id, season_id = re.match(self._VALID_URL, url).groups() + + data = {} + if season_id: + data['season'] = season_id + show_id = smuggled_data.get('show_id') + if show_id is None: + request = sanitized_Request( + 'http://admin.mangomolo.com/analytics/index.php/plus/season_info?id=%s' % season_id, + headers={'Origin': 'http://www.dcndigital.ae'}) + season = self._download_json(request, season_id) + show_id = season['id'] + data['show_id'] = show_id + request = sanitized_Request( + 'http://admin.mangomolo.com/analytics/index.php/plus/show', + compat_urllib_parse.urlencode(data), + { + 'Origin': 'http://www.dcndigital.ae', + 'Content-Type': 'application/x-www-form-urlencoded' }) - self._sort_formats(formats) + show = self._download_json(request, show_id) + if not season_id: + season_id = show['default_season'] + for season in show['seasons']: + if season['id'] == season_id: + title = season.get('title_en') or season['title_ar'] - img = video.get('img') - thumbnail = 'http://admin.mangomolo.com/analytics/%s' % img if img else None - duration = int_or_none(video.get('duration')) - description = video.get('description_en') or video.get('description_ar') - timestamp = parse_iso8601(video.get('create_time') or video.get('update_time'), ' ') + entries = [] + for video in show['videos']: + video_id = compat_str(video['id']) + entries.append(self.url_result( + 'http://www.dcndigital.ae/media/%s' % video_id, 'DCNVideo', video_id)) - return { - 'id': video_id, - 'title': title, - 'description': description, - 'thumbnail': thumbnail, - 'duration': duration, - 'timestamp': timestamp, - 'formats': formats, - } + return self.playlist_result(entries, season_id, title) diff --git a/youtube_dl/extractor/digiteka.py b/youtube_dl/extractor/digiteka.py new file mode 100644 index 0000000..7bb79ff --- /dev/null +++ b/youtube_dl/extractor/digiteka.py @@ -0,0 +1,112 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import int_or_none + + +class DigitekaIE(InfoExtractor): + _VALID_URL = r'''(?x) + https?://(?:www\.)?(?:digiteka\.net|ultimedia\.com)/ + (?: + deliver/ + (?P<embed_type> + generic| + musique + ) + (?:/[^/]+)*/ + (?: + src| + article + )| + default/index/video + (?P<site_type> + generic| + music + ) + /id + )/(?P<id>[\d+a-z]+)''' + _TESTS = [{ + # news + 'url': 'https://www.ultimedia.com/default/index/videogeneric/id/s8uk0r', + 'md5': '276a0e49de58c7e85d32b057837952a2', + 'info_dict': { + 'id': 's8uk0r', + 'ext': 'mp4', + 'title': 'Loi sur la fin de vie: le texte prévoit un renforcement des directives anticipées', + 'thumbnail': 're:^https?://.*\.jpg', + 'duration': 74, + 'upload_date': '20150317', + 'timestamp': 1426604939, + 'uploader_id': '3fszv', + }, + }, { + # music + 'url': 'https://www.ultimedia.com/default/index/videomusic/id/xvpfp8', + 'md5': '2ea3513813cf230605c7e2ffe7eca61c', + 'info_dict': { + 'id': 'xvpfp8', + 'ext': 'mp4', + 'title': 'Two - C\'est La Vie (clip)', + 'thumbnail': 're:^https?://.*\.jpg', + 'duration': 233, + 'upload_date': '20150224', + 'timestamp': 1424760500, + 'uploader_id': '3rfzk', + }, + }, { + 'url': 'https://www.digiteka.net/deliver/generic/iframe/mdtk/01637594/src/lqm3kl/zone/1/showtitle/1/autoplay/yes', + 'only_matching': True, + }] + + @staticmethod + def _extract_url(webpage): + mobj = re.search( + r'<(?:iframe|script)[^>]+src=["\'](?P<url>(?:https?:)?//(?:www\.)?ultimedia\.com/deliver/(?:generic|musique)(?:/[^/]+)*/(?:src|article)/[\d+a-z]+)', + webpage) + if mobj: + return mobj.group('url') + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + video_type = mobj.group('embed_type') or mobj.group('site_type') + if video_type == 'music': + video_type = 'musique' + + deliver_info = self._download_json( + 'http://www.ultimedia.com/deliver/video?video=%s&topic=%s' % (video_id, video_type), + video_id) + + yt_id = deliver_info.get('yt_id') + if yt_id: + return self.url_result(yt_id, 'Youtube') + + jwconf = deliver_info['jwconf'] + + formats = [] + for source in jwconf['playlist'][0]['sources']: + formats.append({ + 'url': source['file'], + 'format_id': source.get('label'), + }) + + self._sort_formats(formats) + + title = deliver_info['title'] + thumbnail = jwconf.get('image') + duration = int_or_none(deliver_info.get('duration')) + timestamp = int_or_none(deliver_info.get('release_time')) + uploader_id = deliver_info.get('owner_id') + + return { + 'id': video_id, + 'title': title, + 'thumbnail': thumbnail, + 'duration': duration, + 'timestamp': timestamp, + 'uploader_id': uploader_id, + 'formats': formats, + } diff --git a/youtube_dl/extractor/discovery.py b/youtube_dl/extractor/discovery.py index d6723ec..ce680a9 100644 --- a/youtube_dl/extractor/discovery.py +++ b/youtube_dl/extractor/discovery.py @@ -9,7 +9,17 @@ from ..compat import compat_str class DiscoveryIE(InfoExtractor): - _VALID_URL = r'http://www\.discovery\.com\/[a-zA-Z0-9\-]*/[a-zA-Z0-9\-]*/videos/(?P<id>[a-zA-Z0-9_\-]*)(?:\.htm)?' + _VALID_URL = r'''(?x)http://(?:www\.)?(?: + discovery| + investigationdiscovery| + discoverylife| + animalplanet| + ahctv| + destinationamerica| + sciencechannel| + tlc| + velocity + )\.com/(?:[^/]+/)*(?P<id>[^./?#]+)''' _TESTS = [{ 'url': 'http://www.discovery.com/tv-shows/mythbusters/videos/mission-impossible-outtakes.htm', 'info_dict': { @@ -21,8 +31,8 @@ class DiscoveryIE(InfoExtractor): 'don\'t miss Adam moon-walking as Jamie ... behind Jamie\'s' ' back.'), 'duration': 156, - 'timestamp': 1303099200, - 'upload_date': '20110418', + 'timestamp': 1302032462, + 'upload_date': '20110405', }, 'params': { 'skip_download': True, # requires ffmpeg @@ -33,27 +43,38 @@ class DiscoveryIE(InfoExtractor): 'id': 'mythbusters-the-simpsons', 'title': 'MythBusters: The Simpsons', }, - 'playlist_count': 9, + 'playlist_mincount': 10, + }, { + 'url': 'http://www.animalplanet.com/longfin-eels-maneaters/', + 'info_dict': { + 'id': '78326', + 'ext': 'mp4', + 'title': 'Longfin Eels: Maneaters?', + 'description': 'Jeremy Wade tests whether or not New Zealand\'s longfin eels are man-eaters by covering himself in fish guts and getting in the water with them.', + 'upload_date': '20140725', + 'timestamp': 1406246400, + 'duration': 116, + }, }] def _real_extract(self, url): - video_id = self._match_id(url) - info = self._download_json(url + '?flat=1', video_id) + display_id = self._match_id(url) + info = self._download_json(url + '?flat=1', display_id) video_title = info.get('playlist_title') or info.get('video_title') entries = [{ 'id': compat_str(video_info['id']), 'formats': self._extract_m3u8_formats( - video_info['src'], video_id, ext='mp4', + video_info['src'], display_id, 'mp4', 'm3u8_native', m3u8_id='hls', note='Download m3u8 information for video %d' % (idx + 1)), 'title': video_info['title'], 'description': video_info.get('description'), 'duration': parse_duration(video_info.get('video_length')), - 'webpage_url': video_info.get('href'), + 'webpage_url': video_info.get('href') or video_info.get('url'), 'thumbnail': video_info.get('thumbnailURL'), 'alt_title': video_info.get('secondary_title'), 'timestamp': parse_iso8601(video_info.get('publishedDate')), } for idx, video_info in enumerate(info['playlist'])] - return self.playlist_result(entries, video_id, video_title) + return self.playlist_result(entries, display_id, video_title) diff --git a/youtube_dl/extractor/dramafever.py b/youtube_dl/extractor/dramafever.py index d836c1a..d35e888 100644 --- a/youtube_dl/extractor/dramafever.py +++ b/youtube_dl/extractor/dramafever.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import itertools -from .common import InfoExtractor +from .amp import AMPIE from ..compat import ( compat_HTTPError, compat_urllib_parse, @@ -12,14 +12,12 @@ from ..compat import ( from ..utils import ( ExtractorError, clean_html, - determine_ext, int_or_none, - parse_iso8601, sanitized_Request, ) -class DramaFeverBaseIE(InfoExtractor): +class DramaFeverBaseIE(AMPIE): _LOGIN_URL = 'https://www.dramafever.com/accounts/login/' _NETRC_MACHINE = 'dramafever' @@ -69,71 +67,56 @@ class DramaFeverBaseIE(InfoExtractor): class DramaFeverIE(DramaFeverBaseIE): IE_NAME = 'dramafever' _VALID_URL = r'https?://(?:www\.)?dramafever\.com/drama/(?P<id>[0-9]+/[0-9]+)(?:/|$)' - _TEST = { + _TESTS = [{ 'url': 'http://www.dramafever.com/drama/4512/1/Cooking_with_Shin/', 'info_dict': { 'id': '4512.1', - 'ext': 'flv', + 'ext': 'mp4', 'title': 'Cooking with Shin 4512.1', 'description': 'md5:a8eec7942e1664a6896fcd5e1287bfd0', + 'episode': 'Episode 1', + 'episode_number': 1, 'thumbnail': 're:^https?://.*\.jpg', 'timestamp': 1404336058, 'upload_date': '20140702', 'duration': 343, - } - } + }, + 'params': { + # m3u8 download + 'skip_download': True, + }, + }, { + 'url': 'http://www.dramafever.com/drama/4826/4/Mnet_Asian_Music_Awards_2015/?ap=1', + 'info_dict': { + 'id': '4826.4', + 'ext': 'mp4', + 'title': 'Mnet Asian Music Awards 2015 4826.4', + 'description': 'md5:3ff2ee8fedaef86e076791c909cf2e91', + 'episode': 'Mnet Asian Music Awards 2015 - Part 3', + 'episode_number': 4, + 'thumbnail': 're:^https?://.*\.jpg', + 'timestamp': 1450213200, + 'upload_date': '20151215', + 'duration': 5602, + }, + 'params': { + # m3u8 download + 'skip_download': True, + }, + }] def _real_extract(self, url): video_id = self._match_id(url).replace('/', '.') try: - feed = self._download_json( - 'http://www.dramafever.com/amp/episode/feed.json?guid=%s' % video_id, - video_id, 'Downloading episode JSON')['channel']['item'] + info = self._extract_feed_info( + 'http://www.dramafever.com/amp/episode/feed.json?guid=%s' % video_id) except ExtractorError as e: if isinstance(e.cause, compat_HTTPError): raise ExtractorError( 'Currently unavailable in your country.', expected=True) raise - media_group = feed.get('media-group', {}) - - formats = [] - for media_content in media_group['media-content']: - src = media_content.get('@attributes', {}).get('url') - if not src: - continue - ext = determine_ext(src) - if ext == 'f4m': - formats.extend(self._extract_f4m_formats( - src, video_id, f4m_id='hds')) - elif ext == 'm3u8': - formats.extend(self._extract_m3u8_formats( - src, video_id, 'mp4', m3u8_id='hls')) - else: - formats.append({ - 'url': src, - }) - self._sort_formats(formats) - - title = media_group.get('media-title') - description = media_group.get('media-description') - duration = int_or_none(media_group['media-content'][0].get('@attributes', {}).get('duration')) - thumbnail = self._proto_relative_url( - media_group.get('media-thumbnail', {}).get('@attributes', {}).get('url')) - timestamp = parse_iso8601(feed.get('pubDate'), ' ') - - subtitles = {} - for media_subtitle in media_group.get('media-subTitle', []): - lang = media_subtitle.get('@attributes', {}).get('lang') - href = media_subtitle.get('@attributes', {}).get('href') - if not lang or not href: - continue - subtitles[lang] = [{ - 'ext': 'ttml', - 'url': href, - }] - series_id, episode_number = video_id.split('.') episode_info = self._download_json( # We only need a single episode info, so restricting page size to one episode @@ -143,24 +126,24 @@ class DramaFeverIE(DramaFeverBaseIE): video_id, 'Downloading episode info JSON', fatal=False) if episode_info: value = episode_info.get('value') - if value: - subfile = value[0].get('subfile') or value[0].get('new_subfile') - if subfile and subfile != 'http://www.dramafever.com/st/': - subtitles.setdefault('English', []).append({ - 'ext': 'srt', - 'url': subfile, - }) - - return { - 'id': video_id, - 'title': title, - 'description': description, - 'thumbnail': thumbnail, - 'timestamp': timestamp, - 'duration': duration, - 'formats': formats, - 'subtitles': subtitles, - } + if isinstance(value, list): + for v in value: + if v.get('type') == 'Episode': + subfile = v.get('subfile') or v.get('new_subfile') + if subfile and subfile != 'http://www.dramafever.com/st/': + info.setdefault('subtitles', {}).setdefault('English', []).append({ + 'ext': 'srt', + 'url': subfile, + }) + episode_number = int_or_none(v.get('number')) + episode_fallback = 'Episode' + if episode_number: + episode_fallback += ' %d' % episode_number + info['episode'] = v.get('title') or episode_fallback + info['episode_number'] = episode_number + break + + return info class DramaFeverSeriesIE(DramaFeverBaseIE): diff --git a/youtube_dl/extractor/drbonanza.py b/youtube_dl/extractor/drbonanza.py index 8b98b01..01271f8 100644 --- a/youtube_dl/extractor/drbonanza.py +++ b/youtube_dl/extractor/drbonanza.py @@ -87,7 +87,7 @@ class DRBonanzaIE(InfoExtractor): formats = [] for file in info['Files']: - if info['Type'] == "Video": + if info['Type'] == 'Video': if file['Type'] in video_types: format = parse_filename_info(file['Location']) format.update({ @@ -101,10 +101,10 @@ class DRBonanzaIE(InfoExtractor): if '/bonanza/' in rtmp_url: format['play_path'] = rtmp_url.split('/bonanza/')[1] formats.append(format) - elif file['Type'] == "Thumb": + elif file['Type'] == 'Thumb': thumbnail = file['Location'] - elif info['Type'] == "Audio": - if file['Type'] == "Audio": + elif info['Type'] == 'Audio': + if file['Type'] == 'Audio': format = parse_filename_info(file['Location']) format.update({ 'url': file['Location'], @@ -112,7 +112,7 @@ class DRBonanzaIE(InfoExtractor): 'vcodec': 'none', }) formats.append(format) - elif file['Type'] == "Thumb": + elif file['Type'] == 'Thumb': thumbnail = file['Location'] description = '%s\n%s\n%s\n' % ( diff --git a/youtube_dl/extractor/dreisat.py b/youtube_dl/extractor/dreisat.py index 8ac8587..028144f 100644 --- a/youtube_dl/extractor/dreisat.py +++ b/youtube_dl/extractor/dreisat.py @@ -2,14 +2,10 @@ from __future__ import unicode_literals import re -from .common import InfoExtractor -from ..utils import ( - ExtractorError, - unified_strdate, -) +from .zdf import ZDFIE -class DreiSatIE(InfoExtractor): +class DreiSatIE(ZDFIE): IE_NAME = '3sat' _VALID_URL = r'(?:http://)?(?:www\.)?3sat\.de/mediathek/(?:index\.php|mediathek\.php)?\?(?:(?:mode|display)=[^&]+&)*obj=(?P<id>[0-9]+)$' _TESTS = [ @@ -35,53 +31,4 @@ class DreiSatIE(InfoExtractor): mobj = re.match(self._VALID_URL, url) video_id = mobj.group('id') details_url = 'http://www.3sat.de/mediathek/xmlservice/web/beitragsDetails?ak=web&id=%s' % video_id - details_doc = self._download_xml(details_url, video_id, 'Downloading video details') - - status_code = details_doc.find('./status/statuscode') - if status_code is not None and status_code.text != 'ok': - code = status_code.text - if code == 'notVisibleAnymore': - message = 'Video %s is not available' % video_id - else: - message = '%s returned error: %s' % (self.IE_NAME, code) - raise ExtractorError(message, expected=True) - - thumbnail_els = details_doc.findall('.//teaserimage') - thumbnails = [{ - 'width': int(te.attrib['key'].partition('x')[0]), - 'height': int(te.attrib['key'].partition('x')[2]), - 'url': te.text, - } for te in thumbnail_els] - - information_el = details_doc.find('.//information') - video_title = information_el.find('./title').text - video_description = information_el.find('./detail').text - - details_el = details_doc.find('.//details') - video_uploader = details_el.find('./channel').text - upload_date = unified_strdate(details_el.find('./airtime').text) - - format_els = details_doc.findall('.//formitaet') - formats = [{ - 'format_id': fe.attrib['basetype'], - 'width': int(fe.find('./width').text), - 'height': int(fe.find('./height').text), - 'url': fe.find('./url').text, - 'filesize': int(fe.find('./filesize').text), - 'video_bitrate': int(fe.find('./videoBitrate').text), - } for fe in format_els - if not fe.find('./url').text.startswith('http://www.metafilegenerator.de/')] - - self._sort_formats(formats) - - return { - '_type': 'video', - 'id': video_id, - 'title': video_title, - 'formats': formats, - 'description': video_description, - 'thumbnails': thumbnails, - 'thumbnail': thumbnails[-1]['url'], - 'uploader': video_uploader, - 'upload_date': upload_date, - } + return self.extract_from_xml_url(video_id, details_url) diff --git a/youtube_dl/extractor/drtv.py b/youtube_dl/extractor/drtv.py index baa24c6..2d74ff8 100644 --- a/youtube_dl/extractor/drtv.py +++ b/youtube_dl/extractor/drtv.py @@ -91,7 +91,7 @@ class DRTVIE(InfoExtractor): subtitles_list = asset.get('SubtitlesList') if isinstance(subtitles_list, list): LANGS = { - 'Danish': 'dk', + 'Danish': 'da', } for subs in subtitles_list: lang = subs['Language'] diff --git a/youtube_dl/extractor/eighttracks.py b/youtube_dl/extractor/eighttracks.py index 0b61ea0..9a44f89 100644 --- a/youtube_dl/extractor/eighttracks.py +++ b/youtube_dl/extractor/eighttracks.py @@ -17,85 +17,85 @@ class EightTracksIE(InfoExtractor): IE_NAME = '8tracks' _VALID_URL = r'https?://8tracks\.com/(?P<user>[^/]+)/(?P<id>[^/#]+)(?:#.*)?$' _TEST = { - "name": "EightTracks", - "url": "http://8tracks.com/ytdl/youtube-dl-test-tracks-a", - "info_dict": { + 'name': 'EightTracks', + 'url': 'http://8tracks.com/ytdl/youtube-dl-test-tracks-a', + 'info_dict': { 'id': '1336550', 'display_id': 'youtube-dl-test-tracks-a', - "description": "test chars: \"'/\\ä↭", - "title": "youtube-dl test tracks \"'/\\ä↭<>", + 'description': "test chars: \"'/\\ä↭", + 'title': "youtube-dl test tracks \"'/\\ä↭<>", }, - "playlist": [ + 'playlist': [ { - "md5": "96ce57f24389fc8734ce47f4c1abcc55", - "info_dict": { - "id": "11885610", - "ext": "m4a", - "title": "youtue-dl project<>\"' - youtube-dl test track 1 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': '96ce57f24389fc8734ce47f4c1abcc55', + 'info_dict': { + 'id': '11885610', + 'ext': 'm4a', + 'title': "youtue-dl project<>\"' - youtube-dl test track 1 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } }, { - "md5": "4ab26f05c1f7291ea460a3920be8021f", - "info_dict": { - "id": "11885608", - "ext": "m4a", - "title": "youtube-dl project - youtube-dl test track 2 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': '4ab26f05c1f7291ea460a3920be8021f', + 'info_dict': { + 'id': '11885608', + 'ext': 'm4a', + 'title': "youtube-dl project - youtube-dl test track 2 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } }, { - "md5": "d30b5b5f74217410f4689605c35d1fd7", - "info_dict": { - "id": "11885679", - "ext": "m4a", - "title": "youtube-dl project as well - youtube-dl test track 3 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': 'd30b5b5f74217410f4689605c35d1fd7', + 'info_dict': { + 'id': '11885679', + 'ext': 'm4a', + 'title': "youtube-dl project as well - youtube-dl test track 3 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } }, { - "md5": "4eb0a669317cd725f6bbd336a29f923a", - "info_dict": { - "id": "11885680", - "ext": "m4a", - "title": "youtube-dl project as well - youtube-dl test track 4 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': '4eb0a669317cd725f6bbd336a29f923a', + 'info_dict': { + 'id': '11885680', + 'ext': 'm4a', + 'title': "youtube-dl project as well - youtube-dl test track 4 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } }, { - "md5": "1893e872e263a2705558d1d319ad19e8", - "info_dict": { - "id": "11885682", - "ext": "m4a", - "title": "PH - youtube-dl test track 5 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': '1893e872e263a2705558d1d319ad19e8', + 'info_dict': { + 'id': '11885682', + 'ext': 'm4a', + 'title': "PH - youtube-dl test track 5 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } }, { - "md5": "b673c46f47a216ab1741ae8836af5899", - "info_dict": { - "id": "11885683", - "ext": "m4a", - "title": "PH - youtube-dl test track 6 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': 'b673c46f47a216ab1741ae8836af5899', + 'info_dict': { + 'id': '11885683', + 'ext': 'm4a', + 'title': "PH - youtube-dl test track 6 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } }, { - "md5": "1d74534e95df54986da7f5abf7d842b7", - "info_dict": { - "id": "11885684", - "ext": "m4a", - "title": "phihag - youtube-dl test track 7 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': '1d74534e95df54986da7f5abf7d842b7', + 'info_dict': { + 'id': '11885684', + 'ext': 'm4a', + 'title': "phihag - youtube-dl test track 7 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } }, { - "md5": "f081f47af8f6ae782ed131d38b9cd1c0", - "info_dict": { - "id": "11885685", - "ext": "m4a", - "title": "phihag - youtube-dl test track 8 \"'/\\\u00e4\u21ad", - "uploader_id": "ytdl" + 'md5': 'f081f47af8f6ae782ed131d38b9cd1c0', + 'info_dict': { + 'id': '11885685', + 'ext': 'm4a', + 'title': "phihag - youtube-dl test track 8 \"'/\\\u00e4\u21ad", + 'uploader_id': 'ytdl' } } ] diff --git a/youtube_dl/extractor/einthusan.py b/youtube_dl/extractor/einthusan.py index 5dfea0d..f733970 100644 --- a/youtube_dl/extractor/einthusan.py +++ b/youtube_dl/extractor/einthusan.py @@ -1,9 +1,12 @@ # coding: utf-8 from __future__ import unicode_literals -import re - from .common import InfoExtractor +from ..compat import compat_urlparse +from ..utils import ( + remove_start, + sanitized_Request, +) class EinthusanIE(InfoExtractor): @@ -34,27 +37,33 @@ class EinthusanIE(InfoExtractor): ] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - webpage = self._download_webpage(url, video_id) + video_id = self._match_id(url) + + request = sanitized_Request(url) + request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 5.2; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0') + webpage = self._download_webpage(request, video_id) + + title = self._html_search_regex( + r'<h1><a[^>]+class=["\']movie-title["\'][^>]*>(.+?)</a></h1>', + webpage, 'title') - video_title = self._html_search_regex( - r'<h1><a class="movie-title".*?>(.*?)</a></h1>', webpage, 'title') + video_id = self._search_regex( + r'data-movieid=["\'](\d+)', webpage, 'video id', default=video_id) - video_url = self._html_search_regex( - r'''(?s)jwplayer\("mediaplayer"\)\.setup\({.*?'file': '([^']+)'.*?}\);''', - webpage, 'video url') + video_url = self._download_webpage( + 'http://cdn.einthusan.com/geturl/%s/hd/London,Washington,Toronto,Dallas,San,Sydney/' + % video_id, video_id) description = self._html_search_meta('description', webpage) thumbnail = self._html_search_regex( r'''<a class="movie-cover-wrapper".*?><img src=["'](.*?)["'].*?/></a>''', webpage, "thumbnail url", fatal=False) if thumbnail is not None: - thumbnail = thumbnail.replace('..', 'http://www.einthusan.com') + thumbnail = compat_urlparse.urljoin(url, remove_start(thumbnail, '..')) return { 'id': video_id, - 'title': video_title, + 'title': title, 'url': video_url, 'thumbnail': thumbnail, 'description': description, diff --git a/youtube_dl/extractor/eitb.py b/youtube_dl/extractor/eitb.py index c83845f..713cb7b 100644 --- a/youtube_dl/extractor/eitb.py +++ b/youtube_dl/extractor/eitb.py @@ -65,18 +65,14 @@ class EitbIE(InfoExtractor): if token_data: token = token_data.get('token') if token: - m3u8_formats = self._extract_m3u8_formats( - '%s?hdnts=%s' % (hls_url, token), video_id, m3u8_id='hls', fatal=False) - if m3u8_formats: - formats.extend(m3u8_formats) + formats.extend(self._extract_m3u8_formats( + '%s?hdnts=%s' % (hls_url, token), video_id, m3u8_id='hls', fatal=False)) hds_url = media.get('HDS_SURL') if hds_url: - f4m_formats = self._extract_f4m_formats( + formats.extend(self._extract_f4m_formats( '%s?hdcore=3.7.0' % hds_url.replace('euskalsvod', 'euskalvod'), - video_id, f4m_id='hds', fatal=False) - if f4m_formats: - formats.extend(f4m_formats) + video_id, f4m_id='hds', fatal=False)) self._sort_formats(formats) diff --git a/youtube_dl/extractor/ellentv.py b/youtube_dl/extractor/ellentv.py index 02c6a46..4c8190d 100644 --- a/youtube_dl/extractor/ellentv.py +++ b/youtube_dl/extractor/ellentv.py @@ -13,12 +13,12 @@ class EllenTVIE(InfoExtractor): _VALID_URL = r'https?://(?:www\.)?(?:ellentv|ellentube)\.com/videos/(?P<id>[a-z0-9_-]+)' _TEST = { 'url': 'http://www.ellentv.com/videos/0-ipq1gsai/', - 'md5': '8e3c576bf2e9bfff4d76565f56f94c9c', + 'md5': '4294cf98bc165f218aaa0b89e0fd8042', 'info_dict': { 'id': '0_ipq1gsai', - 'ext': 'mp4', + 'ext': 'mov', 'title': 'Fast Fingers of Fate', - 'description': 'md5:587e79fbbd0d73b148bc596d99ce48e6', + 'description': 'md5:3539013ddcbfa64b2a6d1b38d910868a', 'timestamp': 1428035648, 'upload_date': '20150403', 'uploader_id': 'batchUser', @@ -72,7 +72,7 @@ class EllenTVClipsIE(InfoExtractor): def _extract_playlist(self, webpage): json_string = self._search_regex(r'playerView.addClips\(\[\{(.*?)\}\]\);', webpage, 'json') try: - return json.loads("[{" + json_string + "}]") + return json.loads('[{' + json_string + '}]') except ValueError as ve: raise ExtractorError('Failed to download JSON', cause=ve) diff --git a/youtube_dl/extractor/espn.py b/youtube_dl/extractor/espn.py index e6f8f03..db4b263 100644 --- a/youtube_dl/extractor/espn.py +++ b/youtube_dl/extractor/espn.py @@ -1,18 +1,30 @@ from __future__ import unicode_literals from .common import InfoExtractor +from ..utils import remove_end class ESPNIE(InfoExtractor): _VALID_URL = r'https?://espn\.go\.com/(?:[^/]+/)*(?P<id>[^/]+)' - _WORKING = False _TESTS = [{ 'url': 'http://espn.go.com/video/clip?id=10365079', 'info_dict': { 'id': 'FkYWtmazr6Ed8xmvILvKLWjd4QvYZpzG', 'ext': 'mp4', - 'title': 'dm_140128_30for30Shorts___JudgingJewellv2', - 'description': '', + 'title': '30 for 30 Shorts: Judging Jewell', + 'description': None, + }, + 'params': { + # m3u8 download + 'skip_download': True, + }, + }, { + # intl video, from http://www.espnfc.us/video/mls-highlights/150/video/2743663/must-see-moments-best-of-the-mls-season + 'url': 'http://espn.go.com/video/clip?id=2743663', + 'info_dict': { + 'id': '50NDFkeTqRHB0nXBOK-RGdSG5YQPuxHg', + 'ext': 'mp4', + 'title': 'Must-See Moments: Best of the MLS season', }, 'params': { # m3u8 download @@ -41,15 +53,26 @@ class ESPNIE(InfoExtractor): webpage = self._download_webpage(url, video_id) video_id = self._search_regex( - r'class="video-play-button"[^>]+data-id="(\d+)', - webpage, 'video id') + r'class=(["\']).*?video-play-button.*?\1[^>]+data-id=["\'](?P<id>\d+)', + webpage, 'video id', group='id') + cms = 'espn' + if 'data-source="intl"' in webpage: + cms = 'intl' + player_url = 'https://espn.go.com/video/iframe/twitter/?id=%s&cms=%s' % (video_id, cms) player = self._download_webpage( - 'https://espn.go.com/video/iframe/twitter/?id=%s' % video_id, video_id) + player_url, video_id) pcode = self._search_regex( r'["\']pcode=([^"\']+)["\']', player, 'pcode') - return self.url_result( - 'ooyalaexternal:espn:%s:%s' % (video_id, pcode), - 'OoyalaExternal') + title = remove_end( + self._og_search_title(webpage), + '- ESPN Video').strip() + + return { + '_type': 'url_transparent', + 'url': 'ooyalaexternal:%s:%s:%s' % (cms, video_id, pcode), + 'ie_key': 'OoyalaExternal', + 'title': title, + } diff --git a/youtube_dl/extractor/esri.py b/youtube_dl/extractor/esri.py index bf5d201..d4205d7 100644 --- a/youtube_dl/extractor/esri.py +++ b/youtube_dl/extractor/esri.py @@ -61,7 +61,7 @@ class EsriVideoIE(InfoExtractor): webpage, 'duration', fatal=False)) upload_date = unified_strdate(self._html_search_meta( - 'last-modified', webpage, 'upload date', fatal=None)) + 'last-modified', webpage, 'upload date', fatal=False)) return { 'id': video_id, diff --git a/youtube_dl/extractor/everyonesmixtape.py b/youtube_dl/extractor/everyonesmixtape.py index 493d38a..84a9b75 100644 --- a/youtube_dl/extractor/everyonesmixtape.py +++ b/youtube_dl/extractor/everyonesmixtape.py @@ -14,14 +14,14 @@ class EveryonesMixtapeIE(InfoExtractor): _TESTS = [{ 'url': 'http://everyonesmixtape.com/#/mix/m7m0jJAbMQi/5', - "info_dict": { + 'info_dict': { 'id': '5bfseWNmlds', 'ext': 'mp4', - "title": "Passion Pit - \"Sleepyhead\" (Official Music Video)", - "uploader": "FKR.TV", - "uploader_id": "frenchkissrecords", - "description": "Music video for \"Sleepyhead\" from Passion Pit's debut EP Chunk Of Change.\nBuy on iTunes: https://itunes.apple.com/us/album/chunk-of-change-ep/id300087641\n\nDirected by The Wilderness.\n\nhttp://www.passionpitmusic.com\nhttp://www.frenchkissrecords.com", - "upload_date": "20081015" + 'title': "Passion Pit - \"Sleepyhead\" (Official Music Video)", + 'uploader': 'FKR.TV', + 'uploader_id': 'frenchkissrecords', + 'description': "Music video for \"Sleepyhead\" from Passion Pit's debut EP Chunk Of Change.\nBuy on iTunes: https://itunes.apple.com/us/album/chunk-of-change-ep/id300087641\n\nDirected by The Wilderness.\n\nhttp://www.passionpitmusic.com\nhttp://www.frenchkissrecords.com", + 'upload_date': '20081015' }, 'params': { 'skip_download': True, # This is simply YouTube diff --git a/youtube_dl/extractor/exfm.py b/youtube_dl/extractor/exfm.py index 4de02ae..0c0fe6d 100644 --- a/youtube_dl/extractor/exfm.py +++ b/youtube_dl/extractor/exfm.py @@ -41,7 +41,7 @@ class ExfmIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) song_id = mobj.group('id') - info_url = "http://ex.fm/api/v3/song/%s" % song_id + info_url = 'http://ex.fm/api/v3/song/%s' % song_id info = self._download_json(info_url, song_id)['song'] song_url = info['url'] if re.match(self._SOUNDCLOUD_URL, song_url) is not None: diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index fd85441..0a9a5ca 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -6,12 +6,14 @@ import socket from .common import InfoExtractor from ..compat import ( + compat_etree_fromstring, compat_http_client, - compat_str, compat_urllib_error, compat_urllib_parse_unquote, + compat_urllib_parse_unquote_plus, ) from ..utils import ( + error_to_compat_str, ExtractorError, limit_length, sanitized_Request, @@ -23,19 +25,30 @@ from ..utils import ( class FacebookIE(InfoExtractor): _VALID_URL = r'''(?x) - https?://(?:\w+\.)?facebook\.com/ - (?:[^#]*?\#!/)? - (?: - (?:video/video\.php|photo\.php|video\.php|video/embed)\?(?:.*?) - (?:v|video_id)=| - [^/]+/videos/(?:[^/]+/)? - ) - (?P<id>[0-9]+) - (?:.*)''' + (?: + https?:// + (?:\w+\.)?facebook\.com/ + (?:[^#]*?\#!/)? + (?: + (?: + video/video\.php| + photo\.php| + video\.php| + video/embed + )\?(?:.*?)(?:v|video_id)=| + [^/]+/videos/(?:[^/]+/)? + )| + facebook: + ) + (?P<id>[0-9]+) + ''' _LOGIN_URL = 'https://www.facebook.com/login.php?next=http%3A%2F%2Ffacebook.com%2Fhome.php&login_attempt=1' _CHECKPOINT_URL = 'https://www.facebook.com/checkpoint/?next=http%3A%2F%2Ffacebook.com%2Fhome.php&_fb_noscript=1' _NETRC_MACHINE = 'facebook' IE_NAME = 'facebook' + + _CHROME_USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36' + _TESTS = [{ 'url': 'https://www.facebook.com/video.php?v=637842556329505&fref=nf', 'md5': '6a40d33c0eccbb1af76cf0485a052659', @@ -57,6 +70,16 @@ class FacebookIE(InfoExtractor): 'expected_warnings': [ 'title' ] + }, { + 'note': 'Video with DASH manifest', + 'url': 'https://www.facebook.com/video.php?v=957955867617029', + 'md5': '54706e4db4f5ad58fbad82dde1f1213f', + 'info_dict': { + 'id': '957955867617029', + 'ext': 'mp4', + 'title': 'When you post epic content on instagram.com/433 8 million followers, this is ...', + 'uploader': 'Demy de Zeeuw', + }, }, { 'url': 'https://www.facebook.com/video.php?v=10204634152394104', 'only_matching': True, @@ -66,6 +89,9 @@ class FacebookIE(InfoExtractor): }, { 'url': 'https://www.facebook.com/ChristyClarkForBC/videos/vb.22819070941/10153870694020942/?type=2&theater', 'only_matching': True, + }, { + 'url': 'facebook:544765982287235', + 'only_matching': True, }] def _login(self): @@ -74,7 +100,7 @@ class FacebookIE(InfoExtractor): return login_page_req = sanitized_Request(self._LOGIN_URL) - login_page_req.add_header('Cookie', 'locale=en_US') + self._set_cookie('facebook.com', 'locale', 'en_US') login_page = self._download_webpage(login_page_req, None, note='Downloading login page', errnote='Unable to download login page') @@ -100,13 +126,25 @@ class FacebookIE(InfoExtractor): login_results = self._download_webpage(request, None, note='Logging in', errnote='unable to fetch login page') if re.search(r'<form(.*)name="login"(.*)</form>', login_results) is not None: - self._downloader.report_warning('unable to log in: bad username/password, or exceded login rate limit (~3/min). Check credentials or wait.') + error = self._html_search_regex( + r'(?s)<div[^>]+class=(["\']).*?login_error_box.*?\1[^>]*><div[^>]*>.*?</div><div[^>]*>(?P<error>.+?)</div>', + login_results, 'login error', default=None, group='error') + if error: + raise ExtractorError('Unable to login: %s' % error, expected=True) + self._downloader.report_warning('unable to log in: bad username/password, or exceeded login rate limit (~3/min). Check credentials or wait.') + return + + fb_dtsg = self._search_regex( + r'name="fb_dtsg" value="(.+?)"', login_results, 'fb_dtsg', default=None) + h = self._search_regex( + r'name="h"\s+(?:\w+="[^"]+"\s+)*?value="([^"]+)"', login_results, 'h', default=None) + + if not fb_dtsg or not h: return check_form = { - 'fb_dtsg': self._search_regex(r'name="fb_dtsg" value="(.+?)"', login_results, 'fb_dtsg'), - 'h': self._search_regex( - r'name="h"\s+(?:\w+="[^"]+"\s+)*?value="([^"]+)"', login_results, 'h'), + 'fb_dtsg': fb_dtsg, + 'h': h, 'name_action_selected': 'dont_save', } check_req = sanitized_Request(self._CHECKPOINT_URL, urlencode_postdata(check_form)) @@ -114,9 +152,9 @@ class FacebookIE(InfoExtractor): check_response = self._download_webpage(check_req, None, note='Confirming login') if re.search(r'id="checkpointSubmitButton"', check_response) is not None: - self._downloader.report_warning('Unable to confirm login, you have to login in your brower and authorize the login.') + self._downloader.report_warning('Unable to confirm login, you have to login in your browser and authorize the login.') except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: - self._downloader.report_warning('unable to log in: %s' % compat_str(err)) + self._downloader.report_warning('unable to log in: %s' % error_to_compat_str(err)) return def _real_initialize(self): @@ -124,13 +162,36 @@ class FacebookIE(InfoExtractor): def _real_extract(self, url): video_id = self._match_id(url) - url = 'https://www.facebook.com/video/video.php?v=%s' % video_id - webpage = self._download_webpage(url, video_id) + req = sanitized_Request('https://www.facebook.com/video/video.php?v=%s' % video_id) + req.add_header('User-Agent', self._CHROME_USER_AGENT) + webpage = self._download_webpage(req, video_id) + + video_data = None BEFORE = '{swf.addParam(param[0], param[1]);});\n' AFTER = '.forEach(function(variable) {swf.addVariable(variable[0], variable[1]);});' m = re.search(re.escape(BEFORE) + '(.*?)' + re.escape(AFTER), webpage) - if not m: + if m: + data = dict(json.loads(m.group(1))) + params_raw = compat_urllib_parse_unquote(data['params']) + video_data = json.loads(params_raw)['video_data'] + + def video_data_list2dict(video_data): + ret = {} + for item in video_data: + format_id = item['stream_type'] + ret.setdefault(format_id, []).append(item) + return ret + + if not video_data: + server_js_data = self._parse_json(self._search_regex( + r'handleServerJS\(({.+})\);', webpage, 'server js data'), video_id) + for item in server_js_data.get('instances', []): + if item[1][0] == 'VideoConfig': + video_data = video_data_list2dict(item[2][0]['videoData']) + break + + if not video_data: m_msg = re.search(r'class="[^"]*uiInterstitialContent[^"]*"><div>(.*?)</div>', webpage) if m_msg is not None: raise ExtractorError( @@ -138,12 +199,9 @@ class FacebookIE(InfoExtractor): expected=True) else: raise ExtractorError('Cannot parse data') - data = dict(json.loads(m.group(1))) - params_raw = compat_urllib_parse_unquote(data['params']) - params = json.loads(params_raw) formats = [] - for format_id, f in params['video_data'].items(): + for format_id, f in video_data.items(): if not f or not isinstance(f, list): continue for quality in ('sd', 'hd'): @@ -155,16 +213,22 @@ class FacebookIE(InfoExtractor): 'url': src, 'preference': -10 if format_id == 'progressive' else 0, }) + dash_manifest = f[0].get('dash_manifest') + if dash_manifest: + formats.extend(self._parse_mpd_formats( + compat_etree_fromstring(compat_urllib_parse_unquote_plus(dash_manifest)))) if not formats: raise ExtractorError('Cannot find video formats') + self._sort_formats(formats) + video_title = self._html_search_regex( r'<h2\s+[^>]*class="uiHeaderTitle"[^>]*>([^<]*)</h2>', webpage, 'title', default=None) if not video_title: video_title = self._html_search_regex( r'(?s)<span class="fbPhotosPhotoCaption".*?id="fbPhotoPageCaption"><span class="hasCaption">(.*?)</span>', - webpage, 'alternative title', fatal=False) + webpage, 'alternative title', default=None) video_title = limit_length(video_title, 80) if not video_title: video_title = 'Facebook video #%s' % video_id @@ -176,3 +240,33 @@ class FacebookIE(InfoExtractor): 'formats': formats, 'uploader': uploader, } + + +class FacebookPostIE(InfoExtractor): + IE_NAME = 'facebook:post' + _VALID_URL = r'https?://(?:\w+\.)?facebook\.com/[^/]+/posts/(?P<id>\d+)' + _TEST = { + 'url': 'https://www.facebook.com/maxlayn/posts/10153807558977570', + 'md5': '037b1fa7f3c2d02b7a0d7bc16031ecc6', + 'info_dict': { + 'id': '544765982287235', + 'ext': 'mp4', + 'title': '"What are you doing running in the snow?"', + 'uploader': 'FailArmy', + } + } + + def _real_extract(self, url): + post_id = self._match_id(url) + + webpage = self._download_webpage(url, post_id) + + entries = [ + self.url_result('facebook:%s' % video_id, FacebookIE.ie_key()) + for video_id in self._parse_json( + self._search_regex( + r'(["\'])video_ids\1\s*:\s*(?P<ids>\[.+?\])', + webpage, 'video ids', group='ids'), + post_id)] + + return self.playlist_result(entries, post_id) diff --git a/youtube_dl/extractor/faz.py b/youtube_dl/extractor/faz.py index cebdd01..fd53545 100644 --- a/youtube_dl/extractor/faz.py +++ b/youtube_dl/extractor/faz.py @@ -2,6 +2,11 @@ from __future__ import unicode_literals from .common import InfoExtractor +from ..utils import ( + xpath_element, + xpath_text, + int_or_none, +) class FazIE(InfoExtractor): @@ -37,31 +42,32 @@ class FazIE(InfoExtractor): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) + description = self._og_search_description(webpage) config_xml_url = self._search_regex( - r'writeFLV\(\'(.+?)\',', webpage, 'config xml url') + r'videoXMLURL\s*=\s*"([^"]+)', webpage, 'config xml url') config = self._download_xml( config_xml_url, video_id, 'Downloading config xml') - encodings = config.find('ENCODINGS') + encodings = xpath_element(config, 'ENCODINGS', 'encodings', True) formats = [] for pref, code in enumerate(['LOW', 'HIGH', 'HQ']): - encoding = encodings.find(code) - if encoding is None: - continue - encoding_url = encoding.find('FILENAME').text - formats.append({ - 'url': encoding_url, - 'format_id': code.lower(), - 'quality': pref, - }) + encoding = xpath_element(encodings, code) + if encoding is not None: + encoding_url = xpath_text(encoding, 'FILENAME') + if encoding_url: + formats.append({ + 'url': encoding_url, + 'format_id': code.lower(), + 'quality': pref, + 'tbr': int_or_none(xpath_text(encoding, 'AVERAGEBITRATE')), + }) self._sort_formats(formats) - descr = self._html_search_regex( - r'<p class="Content Copy">(.*?)</p>', webpage, 'description', fatal=False) return { 'id': video_id, 'title': self._og_search_title(webpage), 'formats': formats, - 'description': descr, - 'thumbnail': config.find('STILL/STILL_BIG').text, + 'description': description.strip() if description else None, + 'thumbnail': xpath_text(config, 'STILL/STILL_BIG'), + 'duration': int_or_none(xpath_text(config, 'DURATION')), } diff --git a/youtube_dl/extractor/fc2.py b/youtube_dl/extractor/fc2.py index 92e8c57..9580f5c 100644 --- a/youtube_dl/extractor/fc2.py +++ b/youtube_dl/extractor/fc2.py @@ -37,8 +37,8 @@ class FC2IE(InfoExtractor): 'params': { 'username': 'ytdl@yt-dl.org', 'password': '(snip)', - 'skip': 'requires actual password' - } + }, + 'skip': 'requires actual password', }, { 'url': 'http://video.fc2.com/en/a/content/20130926eZpARwsF', 'only_matching': True, @@ -87,7 +87,7 @@ class FC2IE(InfoExtractor): mimi = hashlib.md5((video_id + '_gGddgPfeaf_gzyr').encode('utf-8')).hexdigest() info_url = ( - "http://video.fc2.com/ginfo.php?mimi={1:s}&href={2:s}&v={0:s}&fversion=WIN%2011%2C6%2C602%2C180&from=2&otag=0&upid={0:s}&tk=null&". + 'http://video.fc2.com/ginfo.php?mimi={1:s}&href={2:s}&v={0:s}&fversion=WIN%2011%2C6%2C602%2C180&from=2&otag=0&upid={0:s}&tk=null&'. format(video_id, mimi, compat_urllib_request.quote(refer, safe=b'').replace('.', '%2E'))) info_webpage = self._download_webpage( diff --git a/youtube_dl/extractor/fktv.py b/youtube_dl/extractor/fktv.py index 40ea278..5f6e65d 100644 --- a/youtube_dl/extractor/fktv.py +++ b/youtube_dl/extractor/fktv.py @@ -1,12 +1,10 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor from ..utils import ( clean_html, determine_ext, - ExtractorError, + js_to_json, ) @@ -32,24 +30,22 @@ class FKTVIE(InfoExtractor): 'http://fernsehkritik.tv/folge-%s/play' % episode, episode) title = clean_html(self._html_search_regex( '<h3>([^<]+)</h3>', webpage, 'title')) - matches = re.search( - r'(?s)<video(?:(?!poster)[^>])+(?:poster="([^"]+)")?[^>]*>(.*)</video>', - webpage) - if matches is None: - raise ExtractorError('Unable to extract the video') - - poster, sources = matches.groups() - if poster is None: - self.report_warning('unable to extract thumbnail') - - urls = re.findall(r'<source[^>]+src="([^"]+)"', sources) - formats = [{ - 'url': furl, - 'format_id': determine_ext(furl), - } for furl in urls] + thumbnail = self._search_regex(r'POSTER\s*=\s*"([^"]+)', webpage, 'thumbnail', fatal=False) + sources = self._parse_json(self._search_regex(r'(?s)MEDIA\s*=\s*(\[.+?\]);', webpage, 'media'), episode, js_to_json) + + formats = [] + for source in sources: + furl = source.get('src') + if furl: + formats.append({ + 'url': furl, + 'format_id': determine_ext(furl), + }) + self._sort_formats(formats) + return { 'id': episode, 'title': title, 'formats': formats, - 'thumbnail': poster, + 'thumbnail': thumbnail, } diff --git a/youtube_dl/extractor/flickr.py b/youtube_dl/extractor/flickr.py index 91cd46e..18f439d 100644 --- a/youtube_dl/extractor/flickr.py +++ b/youtube_dl/extractor/flickr.py @@ -1,67 +1,93 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor +from ..compat import compat_urllib_parse from ..utils import ( ExtractorError, - find_xpath_attr, - sanitized_Request, + int_or_none, + qualities, ) class FlickrIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.|secure\.)?flickr\.com/photos/(?P<uploader_id>[\w\-_@]+)/(?P<id>\d+).*' + _VALID_URL = r'https?://(?:www\.|secure\.)?flickr\.com/photos/[\w\-_@]+/(?P<id>\d+)' _TEST = { 'url': 'http://www.flickr.com/photos/forestwander-nature-pictures/5645318632/in/photostream/', - 'md5': '6fdc01adbc89d72fc9c4f15b4a4ba87b', + 'md5': '164fe3fa6c22e18d448d4d5af2330f31', 'info_dict': { 'id': '5645318632', - 'ext': 'mp4', - "description": "Waterfalls in the Springtime at Dark Hollow Waterfalls. These are located just off of Skyline Drive in Virginia. They are only about 6/10 of a mile hike but it is a pretty steep hill and a good climb back up.", - "uploader_id": "forestwander-nature-pictures", - "title": "Dark Hollow Waterfalls" + 'ext': 'mpg', + 'description': 'Waterfalls in the Springtime at Dark Hollow Waterfalls. These are located just off of Skyline Drive in Virginia. They are only about 6/10 of a mile hike but it is a pretty steep hill and a good climb back up.', + 'title': 'Dark Hollow Waterfalls', + 'duration': 19, + 'timestamp': 1303528740, + 'upload_date': '20110423', + 'uploader_id': '10922353@N03', + 'uploader': 'Forest Wander', + 'comment_count': int, + 'view_count': int, + 'tags': list, } } - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) + _API_BASE_URL = 'https://api.flickr.com/services/rest?' - video_id = mobj.group('id') - video_uploader_id = mobj.group('uploader_id') - webpage_url = 'http://www.flickr.com/photos/' + video_uploader_id + '/' + video_id - req = sanitized_Request(webpage_url) - req.add_header( - 'User-Agent', - # it needs a more recent version - 'Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20150101 Firefox/38.0 (Chrome)') - webpage = self._download_webpage(req, video_id) + def _call_api(self, method, video_id, api_key, note, secret=None): + query = { + 'photo_id': video_id, + 'method': 'flickr.%s' % method, + 'api_key': api_key, + 'format': 'json', + 'nojsoncallback': 1, + } + if secret: + query['secret'] = secret + data = self._download_json(self._API_BASE_URL + compat_urllib_parse.urlencode(query), video_id, note) + if data['stat'] != 'ok': + raise ExtractorError(data['message']) + return data - secret = self._search_regex(r'secret"\s*:\s*"(\w+)"', webpage, 'secret') + def _real_extract(self, url): + video_id = self._match_id(url) - first_url = 'https://secure.flickr.com/apps/video/video_mtl_xml.gne?v=x&photo_id=' + video_id + '&secret=' + secret + '&bitrate=700&target=_self' - first_xml = self._download_xml(first_url, video_id, 'Downloading first data webpage') + api_key = self._download_json( + 'https://www.flickr.com/hermes_error_beacon.gne', video_id, + 'Downloading api key')['site_key'] - node_id = find_xpath_attr( - first_xml, './/{http://video.yahoo.com/YEP/1.0/}Item', 'id', - 'id').text + video_info = self._call_api( + 'photos.getInfo', video_id, api_key, 'Downloading video info')['photo'] + if video_info['media'] == 'video': + streams = self._call_api( + 'video.getStreamInfo', video_id, api_key, + 'Downloading streams info', video_info['secret'])['streams'] - second_url = 'https://secure.flickr.com/video_playlist.gne?node_id=' + node_id + '&tech=flash&mode=playlist&bitrate=700&secret=' + secret + '&rd=video.yahoo.com&noad=1' - second_xml = self._download_xml(second_url, video_id, 'Downloading second data webpage') + preference = qualities( + ['288p', 'iphone_wifi', '100', '300', '700', '360p', 'appletv', '720p', '1080p', 'orig']) - self.report_extraction(video_id) + formats = [] + for stream in streams['stream']: + stream_type = str(stream.get('type')) + formats.append({ + 'format_id': stream_type, + 'url': stream['_content'], + 'preference': preference(stream_type), + }) + self._sort_formats(formats) - stream = second_xml.find('.//STREAM') - if stream is None: - raise ExtractorError('Unable to extract video url') - video_url = stream.attrib['APP'] + stream.attrib['FULLPATH'] + owner = video_info.get('owner', {}) - return { - 'id': video_id, - 'url': video_url, - 'ext': 'mp4', - 'title': self._og_search_title(webpage), - 'description': self._og_search_description(webpage), - 'thumbnail': self._og_search_thumbnail(webpage), - 'uploader_id': video_uploader_id, - } + return { + 'id': video_id, + 'title': video_info['title']['_content'], + 'description': video_info.get('description', {}).get('_content'), + 'formats': formats, + 'timestamp': int_or_none(video_info.get('dateuploaded')), + 'duration': int_or_none(video_info.get('video', {}).get('duration')), + 'uploader_id': owner.get('nsid'), + 'uploader': owner.get('realname'), + 'comment_count': int_or_none(video_info.get('comments', {}).get('_content')), + 'view_count': int_or_none(video_info.get('views')), + 'tags': [tag.get('_content') for tag in video_info.get('tags', {}).get('tag', [])] + } + else: + raise ExtractorError('not a video', expected=True) diff --git a/youtube_dl/extractor/footyroom.py b/youtube_dl/extractor/footyroom.py index 4c7dbca..370fd00 100644 --- a/youtube_dl/extractor/footyroom.py +++ b/youtube_dl/extractor/footyroom.py @@ -13,6 +13,7 @@ class FootyRoomIE(InfoExtractor): 'title': 'Schalke 04 0 – 2 Real Madrid', }, 'playlist_count': 3, + 'skip': 'Video for this match is not available', }, { 'url': 'http://footyroom.com/georgia-0-2-germany-2015-03/', 'info_dict': { diff --git a/youtube_dl/extractor/fox.py b/youtube_dl/extractor/fox.py new file mode 100644 index 0000000..fa05af5 --- /dev/null +++ b/youtube_dl/extractor/fox.py @@ -0,0 +1,36 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import smuggle_url + + +class FOXIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?fox\.com/watch/(?P<id>[0-9]+)' + _TEST = { + 'url': 'http://www.fox.com/watch/255180355939/7684182528', + 'md5': 'ebd296fcc41dd4b19f8115d8461a3165', + 'info_dict': { + 'id': '255180355939', + 'ext': 'mp4', + 'title': 'Official Trailer: Gotham', + 'description': 'Tracing the rise of the great DC Comics Super-Villains and vigilantes, Gotham reveals an entirely new chapter that has never been told.', + 'duration': 129, + }, + 'add_ie': ['ThePlatform'], + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + release_url = self._parse_json(self._search_regex( + r'"fox_pdk_player"\s*:\s*({[^}]+?})', webpage, 'fox_pdk_player'), + video_id)['release_url'] + '&switch=http' + + return { + '_type': 'url_transparent', + 'ie_key': 'ThePlatform', + 'url': smuggle_url(release_url, {'force_smil_url': True}), + 'id': video_id, + } diff --git a/youtube_dl/extractor/foxnews.py b/youtube_dl/extractor/foxnews.py index 3a4a591..318ac01 100644 --- a/youtube_dl/extractor/foxnews.py +++ b/youtube_dl/extractor/foxnews.py @@ -2,14 +2,10 @@ from __future__ import unicode_literals import re -from .common import InfoExtractor -from ..utils import ( - parse_iso8601, - int_or_none, -) +from .amp import AMPIE -class FoxNewsIE(InfoExtractor): +class FoxNewsIE(AMPIE): IE_DESC = 'Fox News and Fox Business Video' _VALID_URL = r'https?://(?P<host>video\.fox(?:news|business)\.com)/v/(?:video-embed\.html\?video_id=)?(?P<id>\d+)' _TESTS = [ @@ -20,10 +16,10 @@ class FoxNewsIE(InfoExtractor): 'id': '3937480', 'ext': 'flv', 'title': 'Frozen in Time', - 'description': 'Doctors baffled by 16-year-old girl that is the size of a toddler', + 'description': '16-year-old girl is size of toddler', 'duration': 265, - 'timestamp': 1304411491, - 'upload_date': '20110503', + # 'timestamp': 1304411491, + # 'upload_date': '20110503', 'thumbnail': 're:^https?://.*\.jpg$', }, }, @@ -34,10 +30,10 @@ class FoxNewsIE(InfoExtractor): 'id': '3922535568001', 'ext': 'mp4', 'title': "Rep. Luis Gutierrez on if Obama's immigration plan is legal", - 'description': "Congressman discusses the president's executive action", + 'description': "Congressman discusses president's plan", 'duration': 292, - 'timestamp': 1417662047, - 'upload_date': '20141204', + # 'timestamp': 1417662047, + # 'upload_date': '20141204', 'thumbnail': 're:^https?://.*\.jpg$', }, }, @@ -52,52 +48,9 @@ class FoxNewsIE(InfoExtractor): ] def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - host = mobj.group('host') + host, video_id = re.match(self._VALID_URL, url).groups() - video = self._download_json( - 'http://%s/v/feed/video/%s.js?template=fox' % (host, video_id), video_id) - - item = video['channel']['item'] - title = item['title'] - description = item['description'] - timestamp = parse_iso8601(item['dc-date']) - - media_group = item['media-group'] - duration = None - formats = [] - for media in media_group['media-content']: - attributes = media['@attributes'] - video_url = attributes['url'] - if video_url.endswith('.f4m'): - formats.extend(self._extract_f4m_formats(video_url + '?hdcore=3.4.0&plugin=aasp-3.4.0.132.124', video_id)) - elif video_url.endswith('.m3u8'): - formats.extend(self._extract_m3u8_formats(video_url, video_id, 'flv')) - elif not video_url.endswith('.smil'): - duration = int_or_none(attributes.get('duration')) - formats.append({ - 'url': video_url, - 'format_id': media['media-category']['@attributes']['label'], - 'preference': 1, - 'vbr': int_or_none(attributes.get('bitrate')), - 'filesize': int_or_none(attributes.get('fileSize')) - }) - self._sort_formats(formats) - - media_thumbnail = media_group['media-thumbnail']['@attributes'] - thumbnails = [{ - 'url': media_thumbnail['url'], - 'width': int_or_none(media_thumbnail.get('width')), - 'height': int_or_none(media_thumbnail.get('height')), - }] if media_thumbnail else [] - - return { - 'id': video_id, - 'title': title, - 'description': description, - 'duration': duration, - 'timestamp': timestamp, - 'formats': formats, - 'thumbnails': thumbnails, - } + info = self._extract_feed_info( + 'http://%s/v/feed/video/%s.js?template=fox' % (host, video_id)) + info['id'] = video_id + return info diff --git a/youtube_dl/extractor/franceculture.py b/youtube_dl/extractor/franceculture.py index 1e83a4e..e2ca962 100644 --- a/youtube_dl/extractor/franceculture.py +++ b/youtube_dl/extractor/franceculture.py @@ -8,6 +8,7 @@ from ..compat import ( from ..utils import ( determine_ext, int_or_none, + ExtractorError, ) @@ -22,14 +23,13 @@ class FranceCultureIE(InfoExtractor): 'alt_title': 'Carnet nomade | 13-14', 'vcodec': 'none', 'upload_date': '20140301', - 'thumbnail': r're:^http://www\.franceculture\.fr/.*/images/player/Carnet-nomade\.jpg$', - 'description': 'startswith:Avec :Jean-Baptiste Péretié pour son documentaire sur Arte "La revanche des « geeks », une enquête menée aux Etats', + 'thumbnail': r're:^http://static\.franceculture\.fr/.*/images/player/Carnet-nomade\.jpg$', + 'description': 'startswith:Avec :Jean-Baptiste Péretié pour son documentaire sur Arte "La revanche', 'timestamp': 1393700400, } } - def _real_extract(self, url): - video_id = self._match_id(url) + def _extract_from_player(self, url, video_id): webpage = self._download_webpage(url, video_id) video_path = self._search_regex( @@ -42,6 +42,9 @@ class FranceCultureIE(InfoExtractor): r'<a id="player".*?>\s+<img src="([^"]+)"', webpage, 'thumbnail', fatal=False) + display_id = self._search_regex( + r'<span class="path-diffusion">emission-(.*?)</span>', webpage, 'display_id') + title = self._html_search_regex( r'<span class="title-diffusion">(.*?)</span>', webpage, 'title') alt_title = self._html_search_regex( @@ -66,4 +69,37 @@ class FranceCultureIE(InfoExtractor): 'alt_title': alt_title, 'thumbnail': thumbnail, 'description': description, + 'display_id': display_id, } + + def _real_extract(self, url): + video_id = self._match_id(url) + return self._extract_from_player(url, video_id) + + +class FranceCultureEmissionIE(FranceCultureIE): + _VALID_URL = r'https?://(?:www\.)?franceculture\.fr/emission-(?P<id>[^?#]+)' + _TEST = { + 'url': 'http://www.franceculture.fr/emission-les-carnets-de-la-creation-jean-gabriel-periot-cineaste-2015-10-13', + 'info_dict': { + 'title': 'Jean-Gabriel Périot, cinéaste', + 'alt_title': 'Les Carnets de la création', + 'id': '5093239', + 'display_id': 'les-carnets-de-la-creation-jean-gabriel-periot-cineaste-2015-10-13', + 'ext': 'mp3', + 'timestamp': 1444762500, + 'upload_date': '20151013', + 'description': 'startswith:Aujourd\'hui dans "Les carnets de la création", le cinéaste', + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + video_path = self._html_search_regex( + r'<a class="rf-player-open".*?href="([^"]+)"', webpage, 'video path', 'no_path_player') + if video_path == 'no_path_player': + raise ExtractorError('no player : no sound in this page.', expected=True) + new_id = self._search_regex('play=(?P<id>[0-9]+)', video_path, 'new_id', group='id') + video_url = compat_urlparse.urljoin(url, video_path) + return self._extract_from_player(video_url, new_id) diff --git a/youtube_dl/extractor/franceinter.py b/youtube_dl/extractor/franceinter.py index 6613ee1..0388ba0 100644 --- a/youtube_dl/extractor/franceinter.py +++ b/youtube_dl/extractor/franceinter.py @@ -1,8 +1,6 @@ # coding: utf-8 from __future__ import unicode_literals -import re - from .common import InfoExtractor from ..utils import int_or_none @@ -12,7 +10,7 @@ class FranceInterIE(InfoExtractor): _TEST = { 'url': 'http://www.franceinter.fr/player/reecouter?play=793962', 'md5': '4764932e466e6f6c79c317d2e74f6884', - "info_dict": { + 'info_dict': { 'id': '793962', 'ext': 'mp3', 'title': 'L’Histoire dans les jeux vidéo', @@ -23,8 +21,7 @@ class FranceInterIE(InfoExtractor): } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) @@ -33,7 +30,7 @@ class FranceInterIE(InfoExtractor): video_url = 'http://www.franceinter.fr/' + path title = self._html_search_regex( - r'<span class="title">(.+?)</span>', webpage, 'title') + r'<span class="title-diffusion">(.+?)</span>', webpage, 'title') description = self._html_search_regex( r'<span class="description">(.*?)</span>', webpage, 'description', fatal=False) diff --git a/youtube_dl/extractor/francetv.py b/youtube_dl/extractor/francetv.py index 8e60cf6..3f4ac30 100644 --- a/youtube_dl/extractor/francetv.py +++ b/youtube_dl/extractor/francetv.py @@ -289,7 +289,7 @@ class FranceTVIE(FranceTVBaseInfoExtractor): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) video_id, catalogue = self._html_search_regex( - r'href="http://videos?\.francetv\.fr/video/([^@]+@[^"]+)"', + r'(?:href=|player\.setVideo\(\s*)"http://videos?\.francetv\.fr/video/([^@]+@[^"]+)"', webpage, 'video ID').split('@') return self._extract_video(video_id, catalogue) diff --git a/youtube_dl/extractor/freevideo.py b/youtube_dl/extractor/freevideo.py index f755e3c..c7bec02 100644 --- a/youtube_dl/extractor/freevideo.py +++ b/youtube_dl/extractor/freevideo.py @@ -12,8 +12,8 @@ class FreeVideoIE(InfoExtractor): 'info_dict': { 'id': 'vysukany-zadecek-22033', 'ext': 'mp4', - "title": "vysukany-zadecek-22033", - "age_limit": 18, + 'title': 'vysukany-zadecek-22033', + 'age_limit': 18, }, 'skip': 'Blocked outside .cz', } diff --git a/youtube_dl/extractor/funimation.py b/youtube_dl/extractor/funimation.py new file mode 100644 index 0000000..0f37ed7 --- /dev/null +++ b/youtube_dl/extractor/funimation.py @@ -0,0 +1,191 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + clean_html, + determine_ext, + encode_dict, + int_or_none, + sanitized_Request, + ExtractorError, + urlencode_postdata +) + + +class FunimationIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?funimation\.com/shows/[^/]+/videos/(?:official|promotional)/(?P<id>[^/?#&]+)' + + _NETRC_MACHINE = 'funimation' + + _TESTS = [{ + 'url': 'http://www.funimation.com/shows/air/videos/official/breeze', + 'info_dict': { + 'id': '658', + 'display_id': 'breeze', + 'ext': 'mp4', + 'title': 'Air - 1 - Breeze', + 'description': 'md5:1769f43cd5fc130ace8fd87232207892', + 'thumbnail': 're:https?://.*\.jpg', + }, + }, { + 'url': 'http://www.funimation.com/shows/hacksign/videos/official/role-play', + 'info_dict': { + 'id': '31128', + 'display_id': 'role-play', + 'ext': 'mp4', + 'title': '.hack//SIGN - 1 - Role Play', + 'description': 'md5:b602bdc15eef4c9bbb201bb6e6a4a2dd', + 'thumbnail': 're:https?://.*\.jpg', + }, + }, { + 'url': 'http://www.funimation.com/shows/attack-on-titan-junior-high/videos/promotional/broadcast-dub-preview', + 'info_dict': { + 'id': '9635', + 'display_id': 'broadcast-dub-preview', + 'ext': 'mp4', + 'title': 'Attack on Titan: Junior High - Broadcast Dub Preview', + 'description': 'md5:f8ec49c0aff702a7832cd81b8a44f803', + 'thumbnail': 're:https?://.*\.(?:jpg|png)', + }, + }] + + def _login(self): + (username, password) = self._get_login_info() + if username is None: + return + data = urlencode_postdata(encode_dict({ + 'email_field': username, + 'password_field': password, + })) + login_request = sanitized_Request('http://www.funimation.com/login', data, headers={ + 'User-Agent': 'Mozilla/5.0 (Windows NT 5.2; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0', + 'Content-Type': 'application/x-www-form-urlencoded' + }) + login_page = self._download_webpage( + login_request, None, 'Logging in as %s' % username) + if any(p in login_page for p in ('funimation.com/logout', '>Log Out<')): + return + error = self._html_search_regex( + r'(?s)<div[^>]+id=["\']errorMessages["\'][^>]*>(.+?)</div>', + login_page, 'error messages', default=None) + if error: + raise ExtractorError('Unable to login: %s' % error, expected=True) + raise ExtractorError('Unable to log in') + + def _real_initialize(self): + self._login() + + def _real_extract(self, url): + display_id = self._match_id(url) + + errors = [] + formats = [] + + ERRORS_MAP = { + 'ERROR_MATURE_CONTENT_LOGGED_IN': 'matureContentLoggedIn', + 'ERROR_MATURE_CONTENT_LOGGED_OUT': 'matureContentLoggedOut', + 'ERROR_SUBSCRIPTION_LOGGED_OUT': 'subscriptionLoggedOut', + 'ERROR_VIDEO_EXPIRED': 'videoExpired', + 'ERROR_TERRITORY_UNAVAILABLE': 'territoryUnavailable', + 'SVODBASIC_SUBSCRIPTION_IN_PLAYER': 'basicSubscription', + 'SVODNON_SUBSCRIPTION_IN_PLAYER': 'nonSubscription', + 'ERROR_PLAYER_NOT_RESPONDING': 'playerNotResponding', + 'ERROR_UNABLE_TO_CONNECT_TO_CDN': 'unableToConnectToCDN', + 'ERROR_STREAM_NOT_FOUND': 'streamNotFound', + } + + USER_AGENTS = ( + # PC UA is served with m3u8 that provides some bonus lower quality formats + ('pc', 'Mozilla/5.0 (Windows NT 5.2; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0'), + # Mobile UA allows to extract direct links and also does not fail when + # PC UA fails with hulu error (e.g. + # http://www.funimation.com/shows/hacksign/videos/official/role-play) + ('mobile', 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36'), + ) + + for kind, user_agent in USER_AGENTS: + request = sanitized_Request(url) + request.add_header('User-Agent', user_agent) + webpage = self._download_webpage( + request, display_id, 'Downloading %s webpage' % kind) + + playlist = self._parse_json( + self._search_regex( + r'var\s+playersData\s*=\s*(\[.+?\]);\n', + webpage, 'players data'), + display_id)[0]['playlist'] + + items = next(item['items'] for item in playlist if item.get('items')) + item = next(item for item in items if item.get('itemAK') == display_id) + + error_messages = {} + video_error_messages = self._search_regex( + r'var\s+videoErrorMessages\s*=\s*({.+?});\n', + webpage, 'error messages', default=None) + if video_error_messages: + error_messages_json = self._parse_json(video_error_messages, display_id, fatal=False) + if error_messages_json: + for _, error in error_messages_json.items(): + type_ = error.get('type') + description = error.get('description') + content = error.get('content') + if type_ == 'text' and description and content: + error_message = ERRORS_MAP.get(description) + if error_message: + error_messages[error_message] = content + + for video in item.get('videoSet', []): + auth_token = video.get('authToken') + if not auth_token: + continue + funimation_id = video.get('FUNImationID') or video.get('videoId') + preference = 1 if video.get('languageMode') == 'dub' else 0 + if not auth_token.startswith('?'): + auth_token = '?%s' % auth_token + for quality, height in (('sd', 480), ('hd', 720), ('hd1080', 1080)): + format_url = video.get('%sUrl' % quality) + if not format_url: + continue + if not format_url.startswith(('http', '//')): + errors.append(format_url) + continue + if determine_ext(format_url) == 'm3u8': + formats.extend(self._extract_m3u8_formats( + format_url + auth_token, display_id, 'mp4', entry_protocol='m3u8_native', + preference=preference, m3u8_id='%s-hls' % funimation_id, fatal=False)) + else: + tbr = int_or_none(self._search_regex( + r'-(\d+)[Kk]', format_url, 'tbr', default=None)) + formats.append({ + 'url': format_url + auth_token, + 'format_id': '%s-http-%dp' % (funimation_id, height), + 'height': height, + 'tbr': tbr, + 'preference': preference, + }) + + if not formats and errors: + raise ExtractorError( + '%s returned error: %s' + % (self.IE_NAME, clean_html(error_messages.get(errors[0], errors[0]))), + expected=True) + + self._sort_formats(formats) + + title = item['title'] + artist = item.get('artist') + if artist: + title = '%s - %s' % (artist, title) + description = self._og_search_description(webpage) or item.get('description') + thumbnail = self._og_search_thumbnail(webpage) or item.get('posterUrl') + video_id = item.get('itemId') or display_id + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'formats': formats, + } diff --git a/youtube_dl/extractor/funnyordie.py b/youtube_dl/extractor/funnyordie.py index 7f21d74..4c4a87e 100644 --- a/youtube_dl/extractor/funnyordie.py +++ b/youtube_dl/extractor/funnyordie.py @@ -51,10 +51,8 @@ class FunnyOrDieIE(InfoExtractor): formats = [] - m3u8_formats = self._extract_m3u8_formats( - m3u8_url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False) - if m3u8_formats: - formats.extend(m3u8_formats) + formats.extend(self._extract_m3u8_formats( + m3u8_url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False)) bitrates = [int(bitrate) for bitrate in re.findall(r'[,/]v(\d+)[,/]', m3u8_url)] bitrates.sort() diff --git a/youtube_dl/extractor/gameinformer.py b/youtube_dl/extractor/gameinformer.py new file mode 100644 index 0000000..25870c1 --- /dev/null +++ b/youtube_dl/extractor/gameinformer.py @@ -0,0 +1,43 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..compat import compat_str +from ..utils import int_or_none + + +class GameInformerIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?gameinformer\.com/(?:[^/]+/)*(?P<id>.+)\.aspx' + _TEST = { + 'url': 'http://www.gameinformer.com/b/features/archive/2015/09/26/replay-animal-crossing.aspx', + 'info_dict': { + 'id': '4515472681001', + 'ext': 'm3u8', + 'title': 'Replay - Animal Crossing', + 'description': 'md5:2e211891b215c85d061adc7a4dd2d930', + 'timestamp': 1443457610706, + }, + 'params': { + # m3u8 download + 'skip_download': True, + }, + } + + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + + bc_api_url = self._search_regex(r"getVideo\('([^']+)'", webpage, 'brightcove api url') + json_data = self._download_json( + bc_api_url + '&video_fields=id,name,shortDescription,publishedDate,videoStillURL,length,IOSRenditions', + display_id) + + return { + 'id': compat_str(json_data['id']), + 'display_id': display_id, + 'url': json_data['IOSRenditions'][0]['url'], + 'title': json_data['name'], + 'description': json_data.get('shortDescription'), + 'timestamp': int_or_none(json_data.get('publishedDate')), + 'duration': int_or_none(json_data.get('length')), + } diff --git a/youtube_dl/extractor/gamekings.py b/youtube_dl/extractor/gamekings.py index 027f55e..f6b9046 100644 --- a/youtube_dl/extractor/gamekings.py +++ b/youtube_dl/extractor/gamekings.py @@ -6,24 +6,29 @@ from ..utils import ( xpath_text, xpath_with_ns, ) +from .youtube import YoutubeIE class GamekingsIE(InfoExtractor): - _VALID_URL = r'http://www\.gamekings\.tv/(?:videos|nieuws)/(?P<id>[^/]+)' + _VALID_URL = r'http://www\.gamekings\.nl/(?:videos|nieuws)/(?P<id>[^/]+)' _TESTS = [{ - 'url': 'http://www.gamekings.tv/videos/phoenix-wright-ace-attorney-dual-destinies-review/', - # MD5 is flaky, seems to change regularly - # 'md5': '2f32b1f7b80fdc5cb616efb4f387f8a3', + # YouTube embed video + 'url': 'http://www.gamekings.nl/videos/phoenix-wright-ace-attorney-dual-destinies-review/', + 'md5': '5208d3a17adeaef829a7861887cb9029', 'info_dict': { - 'id': 'phoenix-wright-ace-attorney-dual-destinies-review', + 'id': 'HkSQKetlGOU', 'ext': 'mp4', - 'title': 'Phoenix Wright: Ace Attorney \u2013 Dual Destinies Review', - 'description': 'md5:36fd701e57e8c15ac8682a2374c99731', + 'title': 'Phoenix Wright: Ace Attorney - Dual Destinies Review', + 'description': 'md5:db88c0e7f47e9ea50df3271b9dc72e1d', 'thumbnail': 're:^https?://.*\.jpg$', + 'uploader_id': 'UCJugRGo4STYMeFr5RoOShtQ', + 'uploader': 'Gamekings Vault', + 'upload_date': '20151123', }, + 'add_ie': ['Youtube'], }, { # vimeo video - 'url': 'http://www.gamekings.tv/videos/the-legend-of-zelda-majoras-mask/', + 'url': 'http://www.gamekings.nl/videos/the-legend-of-zelda-majoras-mask/', 'md5': '12bf04dfd238e70058046937657ea68d', 'info_dict': { 'id': 'the-legend-of-zelda-majoras-mask', @@ -33,7 +38,7 @@ class GamekingsIE(InfoExtractor): 'thumbnail': 're:^https?://.*\.jpg$', }, }, { - 'url': 'http://www.gamekings.tv/nieuws/gamekings-extra-shelly-en-david-bereiden-zich-voor-op-de-livestream/', + 'url': 'http://www.gamekings.nl/nieuws/gamekings-extra-shelly-en-david-bereiden-zich-voor-op-de-livestream/', 'only_matching': True, }] @@ -43,7 +48,11 @@ class GamekingsIE(InfoExtractor): webpage = self._download_webpage(url, video_id) playlist_id = self._search_regex( - r'gogoVideo\(\s*\d+\s*,\s*"([^"]+)', webpage, 'playlist id') + r'gogoVideo\([^,]+,\s*"([^"]+)', webpage, 'playlist id') + + # Check if a YouTube embed is used + if YoutubeIE.suitable(playlist_id): + return self.url_result(playlist_id, ie='Youtube') playlist = self._download_xml( 'http://www.gamekings.tv/wp-content/themes/gk2010/rss_playlist.php?id=%s' % playlist_id, diff --git a/youtube_dl/extractor/gametrailers.py b/youtube_dl/extractor/gametrailers.py index a6ab795..c3f031d 100644 --- a/youtube_dl/extractor/gametrailers.py +++ b/youtube_dl/extractor/gametrailers.py @@ -1,19 +1,62 @@ from __future__ import unicode_literals -from .mtv import MTVServicesInfoExtractor +from .common import InfoExtractor +from ..utils import ( + int_or_none, + parse_age_limit, + url_basename, +) -class GametrailersIE(MTVServicesInfoExtractor): - _VALID_URL = r'http://www\.gametrailers\.com/(?P<type>videos|reviews|full-episodes)/(?P<id>.*?)/(?P<title>.*)' +class GametrailersIE(InfoExtractor): + _VALID_URL = r'http://www\.gametrailers\.com/videos/view/[^/]+/(?P<id>.+)' + _TEST = { - 'url': 'http://www.gametrailers.com/videos/zbvr8i/mirror-s-edge-2-e3-2013--debut-trailer', - 'md5': '4c8e67681a0ea7ec241e8c09b3ea8cf7', + 'url': 'http://www.gametrailers.com/videos/view/gametrailers-com/116437-Just-Cause-3-Review', + 'md5': 'f28c4efa0bdfaf9b760f6507955b6a6a', 'info_dict': { - 'id': '70e9a5d7-cf25-4a10-9104-6f3e7342ae0d', + 'id': '2983958', 'ext': 'mp4', - 'title': 'E3 2013: Debut Trailer', - 'description': 'Faith is back! Check out the World Premiere trailer for Mirror\'s Edge 2 straight from the EA Press Conference at E3 2013!', + 'display_id': '116437-Just-Cause-3-Review', + 'title': 'Just Cause 3 - Review', + 'description': 'It\'s a lot of fun to shoot at things and then watch them explode in Just Cause 3, but should there be more to the experience than that?', }, } - _FEED_URL = 'http://www.gametrailers.com/feeds/mrss' + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + title = self._html_search_regex( + r'<title>(.+?)\|', webpage, 'title').strip() + embed_url = self._proto_relative_url( + self._search_regex( + r'src=\'(//embed.gametrailers.com/embed/[^\']+)\'', webpage, + 'embed url'), + scheme='http:') + video_id = url_basename(embed_url) + embed_page = self._download_webpage(embed_url, video_id) + embed_vars_json = self._search_regex( + r'(?s)var embedVars = (\{.*?\})\s*</script>', embed_page, + 'embed vars') + info = self._parse_json(embed_vars_json, video_id) + + formats = [] + for media in info['media']: + if media['mediaPurpose'] == 'play': + formats.append({ + 'url': media['uri'], + 'height': media['height'], + 'width:': media['width'], + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'formats': formats, + 'thumbnail': info.get('thumbUri'), + 'description': self._og_search_description(webpage), + 'duration': int_or_none(info.get('videoLengthInSeconds')), + 'age_limit': parse_age_limit(info.get('audienceRating')), + } diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 5075d13..c6bf8d2 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -44,7 +44,6 @@ from .myvi import MyviIE from .condenast import CondeNastIE from .udn import UDNEmbedIE from .senateisvp import SenateISVPIE -from .bliptv import BlipTVIE from .svt import SVTIE from .pornhub import PornHubIE from .xhamster import XHamsterEmbedIE @@ -54,6 +53,11 @@ from .onionstudios import OnionStudiosIE from .snagfilms import SnagFilmsEmbedIE from .screenwavemedia import ScreenwaveMediaIE from .mtv import MTVServicesEmbeddedIE +from .pladform import PladformIE +from .videomore import VideomoreIE +from .googledrive import GoogleDriveIE +from .jwplatform import JWPlatformIE +from .digiteka import DigitekaIE class GenericIE(InfoExtractor): @@ -220,6 +224,20 @@ class GenericIE(InfoExtractor): 'skip_download': True, }, }, + # MPD from http://dash-mse-test.appspot.com/media.html + { + 'url': 'http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-manifest.mpd', + 'md5': '4b57baab2e30d6eb3a6a09f0ba57ef53', + 'info_dict': { + 'id': 'car-20120827-manifest', + 'ext': 'mp4', + 'title': 'car-20120827-manifest', + 'formats': 'mincount:9', + }, + 'params': { + 'format': 'bestvideo', + }, + }, # google redirect { 'url': 'http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCUQtwIwAA&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DcmQHVoWB5FY&ei=F-sNU-LLCaXk4QT52ICQBQ&usg=AFQjCNEw4hL29zgOohLXvpJ-Bdh2bils1Q&bvm=bv.61965928,d.bGE', @@ -339,6 +357,7 @@ class GenericIE(InfoExtractor): 'id': 'BwY2RxaTrTkslxOfcan0UCf0YqyvWysJ', 'ext': 'mp4', 'title': '2cc213299525360.mov', # that's what we get + 'duration': 238.231, }, 'add_ie': ['Ooyala'], }, @@ -350,6 +369,7 @@ class GenericIE(InfoExtractor): 'ext': 'mp4', 'title': '"Steve Jobs: Man in the Machine" trailer', 'description': 'The first trailer for the Alex Gibney documentary "Steve Jobs: Man in the Machine."', + 'duration': 135.427, }, 'params': { 'skip_download': True, @@ -481,7 +501,7 @@ class GenericIE(InfoExtractor): 'description': 'md5:8145d19d320ff3e52f28401f4c4283b9', } }, - # Embeded Ustream video + # Embedded Ustream video { 'url': 'http://www.american.edu/spa/pti/nsa-privacy-janus-2014.cfm', 'md5': '27b99cdb639c9b12a79bca876a073417', @@ -960,8 +980,9 @@ class GenericIE(InfoExtractor): 'info_dict': { 'id': '50YnY4czr4ms1vJ7yz3xzq0excz_pUMs', 'ext': 'mp4', - 'description': 'VIDEO: Index/Match versus VLOOKUP.', + 'description': 'VIDEO: INDEX/MATCH versus VLOOKUP.', 'title': 'This is what separates the Excel masters from the wannabes', + 'duration': 191.933, }, 'params': { # m3u8 downloads @@ -1222,19 +1243,24 @@ class GenericIE(InfoExtractor): # Check for direct link to a video content_type = head_response.headers.get('Content-Type', '') - m = re.match(r'^(?P<type>audio|video|application(?=/ogg$))/(?P<format_id>.+)$', content_type) + m = re.match(r'^(?P<type>audio|video|application(?=/(?:ogg$|(?:vnd\.apple\.|x-)?mpegurl)))/(?P<format_id>.+)$', content_type) if m: upload_date = unified_strdate( head_response.headers.get('Last-Modified')) + formats = [] + if m.group('format_id').endswith('mpegurl'): + formats = self._extract_m3u8_formats(url, video_id, 'mp4') + else: + formats = [{ + 'format_id': m.group('format_id'), + 'url': url, + 'vcodec': 'none' if m.group('type') == 'audio' else None + }] return { 'id': video_id, 'title': compat_urllib_parse_unquote(os.path.splitext(url_basename(url))[0]), 'direct': True, - 'formats': [{ - 'format_id': m.group('format_id'), - 'url': url, - 'vcodec': 'none' if m.group('type') == 'audio' else None - }], + 'formats': formats, 'upload_date': upload_date, } @@ -1277,7 +1303,7 @@ class GenericIE(InfoExtractor): self.report_extraction(video_id) - # Is it an RSS feed, a SMIL file or a XSPF playlist? + # Is it an RSS feed, a SMIL file, an XSPF playlist or a MPD manifest? try: doc = compat_etree_fromstring(webpage.encode('utf-8')) if doc.tag == 'rss': @@ -1286,6 +1312,13 @@ class GenericIE(InfoExtractor): return self._parse_smil(doc, url, video_id) elif doc.tag == '{http://xspf.org/ns/0/}playlist': return self.playlist_result(self._parse_xspf(doc, video_id), video_id) + elif re.match(r'(?i)^(?:{[^}]+})?MPD$', doc.tag): + return { + 'id': video_id, + 'title': compat_urllib_parse_unquote(os.path.splitext(url_basename(url))[0]), + 'formats': self._parse_mpd_formats( + doc, video_id, mpd_base_url=url.rpartition('/')[0]), + } except compat_xml_parse_error: pass @@ -1395,7 +1428,7 @@ class GenericIE(InfoExtractor): # Look for embedded Dailymotion player matches = re.findall( - r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//(?:www\.)?dailymotion\.com/embed/video/.+?)\1', webpage) + r'<(?:(?:embed|iframe)[^>]+?src=|input[^>]+id=[\'"]dmcloudUrlEmissionSelect[\'"][^>]+value=)(["\'])(?P<url>(?:https?:)?//(?:www\.)?dailymotion\.com/(?:embed|swf)/video/.+?)\1', webpage) if matches: return _playlist_from_matches( matches, lambda m: unescapeHTML(m[1])) @@ -1436,11 +1469,6 @@ class GenericIE(InfoExtractor): 'id': match.group('id') } - # Look for embedded blip.tv player - bliptv_url = BlipTVIE._extract_url(webpage) - if bliptv_url: - return self.url_result(bliptv_url, 'BlipTV') - # Look for SVT player svt_url = SVTIE._extract_url(webpage) if svt_url: @@ -1501,7 +1529,7 @@ class GenericIE(InfoExtractor): re.search(r'SBN\.VideoLinkset\.ooyala\([\'"](?P<ec>.{32})[\'"]\)', webpage) or re.search(r'data-ooyala-video-id\s*=\s*[\'"](?P<ec>.{32})[\'"]', webpage)) if mobj is not None: - return OoyalaIE._build_url_result(mobj.group('ec')) + return OoyalaIE._build_url_result(smuggle_url(mobj.group('ec'), {'domain': url})) # Look for multiple Ooyala embeds on SBN network websites mobj = re.search(r'SBN\.VideoLinkset\.entryGroup\((\[.*?\])', webpage) @@ -1509,7 +1537,7 @@ class GenericIE(InfoExtractor): embeds = self._parse_json(mobj.group(1), video_id, fatal=False) if embeds: return _playlist_from_matches( - embeds, getter=lambda v: OoyalaIE._url_for_embed_code(v['provider_video_id']), ie='Ooyala') + embeds, getter=lambda v: OoyalaIE._url_for_embed_code(smuggle_url(v['provider_video_id'], {'domain': url})), ie='Ooyala') # Look for Aparat videos mobj = re.search(r'<iframe .*?src="(http://www\.aparat\.com/video/[^"]+)"', webpage) @@ -1545,6 +1573,11 @@ class GenericIE(InfoExtractor): if mobj is not None: return self.url_result(mobj.group('url'), 'VK') + # Look for embedded Odnoklassniki player + mobj = re.search(r'<iframe[^>]+?src=(["\'])(?P<url>https?://(?:odnoklassniki|ok)\.ru/videoembed/.+?)\1', webpage) + if mobj is not None: + return self.url_result(mobj.group('url'), 'Odnoklassniki') + # Look for embedded ivi player mobj = re.search(r'<embed[^>]+?src=(["\'])(?P<url>https?://(?:www\.)?ivi\.ru/video/player.+?)\1', webpage) if mobj is not None: @@ -1642,7 +1675,7 @@ class GenericIE(InfoExtractor): if myvi_url: return self.url_result(myvi_url) - # Look for embeded soundcloud player + # Look for embedded soundcloud player mobj = re.search( r'<iframe\s+(?:[a-zA-Z0-9_-]+="[^"]+"\s+)*src="(?P<url>https?://(?:w\.)?soundcloud\.com/player[^"]+)"', webpage) @@ -1738,10 +1771,14 @@ class GenericIE(InfoExtractor): return self.url_result('eagleplatform:%(host)s:%(id)s' % mobj.groupdict(), 'EaglePlatform') # Look for Pladform embeds - mobj = re.search( - r'<iframe[^>]+src="(?P<url>https?://out\.pladform\.ru/player\?.+?)"', webpage) - if mobj is not None: - return self.url_result(mobj.group('url'), 'Pladform') + pladform_url = PladformIE._extract_url(webpage) + if pladform_url: + return self.url_result(pladform_url) + + # Look for Videomore embeds + videomore_url = VideomoreIE._extract_url(webpage) + if videomore_url: + return self.url_result(videomore_url) # Look for Playwire embeds mobj = re.search( @@ -1766,6 +1803,11 @@ class GenericIE(InfoExtractor): if nbc_sports_url: return self.url_result(nbc_sports_url, 'NBCSportsVPlayer') + # Look for Google Drive embeds + google_drive_url = GoogleDriveIE._extract_url(webpage) + if google_drive_url: + return self.url_result(google_drive_url, 'GoogleDrive') + # Look for UDN embeds mobj = re.search( r'<iframe[^>]+src="(?P<url>%s)"' % UDNEmbedIE._PROTOCOL_RELATIVE_VALID_URL, webpage) @@ -1793,11 +1835,32 @@ class GenericIE(InfoExtractor): if snagfilms_url: return self.url_result(snagfilms_url) + # Look for JWPlatform embeds + jwplatform_url = JWPlatformIE._extract_url(webpage) + if jwplatform_url: + return self.url_result(jwplatform_url, 'JWPlatform') + # Look for ScreenwaveMedia embeds mobj = re.search(ScreenwaveMediaIE.EMBED_PATTERN, webpage) if mobj is not None: return self.url_result(unescapeHTML(mobj.group('url')), 'ScreenwaveMedia') + # Look for Digiteka embeds + digiteka_url = DigitekaIE._extract_url(webpage) + if digiteka_url: + return self.url_result(self._proto_relative_url(digiteka_url), DigitekaIE.ie_key()) + + # Look for Limelight embeds + mobj = re.search(r'LimelightPlayer\.doLoad(Media|Channel|ChannelList)\(["\'](?P<id>[a-z0-9]{32})', webpage) + if mobj: + lm = { + 'Media': 'media', + 'Channel': 'channel', + 'ChannelList': 'channel_list', + } + return self.url_result('limelight:%s:%s' % ( + lm[mobj.group(1)], mobj.group(2)), 'Limelight%s' % mobj.group(1), mobj.group(2)) + # Look for AdobeTVVideo embeds mobj = re.search( r'<iframe[^>]+src=[\'"]((?:https?:)?//video\.tv\.adobe\.com/v/\d+[^"]+)[\'"]', @@ -1914,6 +1977,8 @@ class GenericIE(InfoExtractor): return self.playlist_result(self._extract_xspf_playlist(video_url, video_id), video_id) elif ext == 'm3u8': entry_info_dict['formats'] = self._extract_m3u8_formats(video_url, video_id, ext='mp4') + elif ext == 'mpd': + entry_info_dict['formats'] = self._extract_mpd_formats(video_url, video_id) else: entry_info_dict['url'] = video_url diff --git a/youtube_dl/extractor/globo.py b/youtube_dl/extractor/globo.py index c65ef6b..3de8356 100644 --- a/youtube_dl/extractor/globo.py +++ b/youtube_dl/extractor/globo.py @@ -65,7 +65,7 @@ class GloboIE(InfoExtractor): 'only_matching': True, }] - class MD5: + class MD5(object): HEX_FORMAT_LOWERCASE = 0 HEX_FORMAT_UPPERCASE = 1 BASE64_PAD_CHARACTER_DEFAULT_COMPLIANCE = '' @@ -369,11 +369,9 @@ class GloboIE(InfoExtractor): resource_url = resource['url'] signed_url = '%s?h=%s&k=%s' % (resource_url, signed_hash, 'flash') if resource_id.endswith('m3u8') or resource_url.endswith('.m3u8'): - m3u8_formats = self._extract_m3u8_formats( + formats.extend(self._extract_m3u8_formats( signed_url, resource_id, 'mp4', entry_protocol='m3u8_native', - m3u8_id='hls', fatal=False) - if m3u8_formats: - formats.extend(m3u8_formats) + m3u8_id='hls', fatal=False)) else: formats.append({ 'url': signed_url, diff --git a/youtube_dl/extractor/googledrive.py b/youtube_dl/extractor/googledrive.py new file mode 100644 index 0000000..37be340 --- /dev/null +++ b/youtube_dl/extractor/googledrive.py @@ -0,0 +1,88 @@ +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ( + ExtractorError, + int_or_none, +) + + +class GoogleDriveIE(InfoExtractor): + _VALID_URL = r'https?://(?:(?:docs|drive)\.google\.com/(?:uc\?.*?id=|file/d/)|video\.google\.com/get_player\?.*?docid=)(?P<id>[a-zA-Z0-9_-]{28})' + _TEST = { + 'url': 'https://drive.google.com/file/d/0ByeS4oOUV-49Zzh4R1J6R09zazQ/edit?pli=1', + 'md5': '881f7700aec4f538571fa1e0eed4a7b6', + 'info_dict': { + 'id': '0ByeS4oOUV-49Zzh4R1J6R09zazQ', + 'ext': 'mp4', + 'title': 'Big Buck Bunny.mp4', + 'duration': 46, + } + } + _FORMATS_EXT = { + '5': 'flv', + '6': 'flv', + '13': '3gp', + '17': '3gp', + '18': 'mp4', + '22': 'mp4', + '34': 'flv', + '35': 'flv', + '36': '3gp', + '37': 'mp4', + '38': 'mp4', + '43': 'webm', + '44': 'webm', + '45': 'webm', + '46': 'webm', + '59': 'mp4', + } + + @staticmethod + def _extract_url(webpage): + mobj = re.search( + r'<iframe[^>]+src="https?://(?:video\.google\.com/get_player\?.*?docid=|(?:docs|drive)\.google\.com/file/d/)(?P<id>[a-zA-Z0-9_-]{28})', + webpage) + if mobj: + return 'https://drive.google.com/file/d/%s' % mobj.group('id') + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage( + 'http://docs.google.com/file/d/%s' % video_id, video_id, encoding='unicode_escape') + + reason = self._search_regex(r'"reason"\s*,\s*"([^"]+)', webpage, 'reason', default=None) + if reason: + raise ExtractorError(reason) + + title = self._search_regex(r'"title"\s*,\s*"([^"]+)', webpage, 'title') + duration = int_or_none(self._search_regex( + r'"length_seconds"\s*,\s*"([^"]+)', webpage, 'length seconds', default=None)) + fmt_stream_map = self._search_regex( + r'"fmt_stream_map"\s*,\s*"([^"]+)', webpage, 'fmt stream map').split(',') + fmt_list = self._search_regex(r'"fmt_list"\s*,\s*"([^"]+)', webpage, 'fmt_list').split(',') + + formats = [] + for fmt, fmt_stream in zip(fmt_list, fmt_stream_map): + fmt_id, fmt_url = fmt_stream.split('|') + resolution = fmt.split('/')[1] + width, height = resolution.split('x') + formats.append({ + 'url': fmt_url, + 'format_id': fmt_id, + 'resolution': resolution, + 'width': int_or_none(width), + 'height': int_or_none(height), + 'ext': self._FORMATS_EXT[fmt_id], + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'thumbnail': self._og_search_thumbnail(webpage, default=None), + 'duration': duration, + 'formats': formats, + } diff --git a/youtube_dl/extractor/gputechconf.py b/youtube_dl/extractor/gputechconf.py new file mode 100644 index 0000000..145b55b --- /dev/null +++ b/youtube_dl/extractor/gputechconf.py @@ -0,0 +1,55 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + xpath_element, + xpath_text, + int_or_none, + parse_duration, +) + + +class GPUTechConfIE(InfoExtractor): + _VALID_URL = r'https?://on-demand\.gputechconf\.com/gtc/2015/video/S(?P<id>\d+)\.html' + _TEST = { + 'url': 'http://on-demand.gputechconf.com/gtc/2015/video/S5156.html', + 'md5': 'a8862a00a0fd65b8b43acc5b8e33f798', + 'info_dict': { + 'id': '5156', + 'ext': 'mp4', + 'title': 'Coordinating More Than 3 Million CUDA Threads for Social Network Analysis', + 'duration': 1219, + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + root_path = self._search_regex(r'var\s+rootPath\s*=\s*"([^"]+)', webpage, 'root path', 'http://evt.dispeak.com/nvidia/events/gtc15/') + xml_file_id = self._search_regex(r'var\s+xmlFileId\s*=\s*"([^"]+)', webpage, 'xml file id') + + doc = self._download_xml('%sxml/%s.xml' % (root_path, xml_file_id), video_id) + + metadata = xpath_element(doc, 'metadata') + http_host = xpath_text(metadata, 'httpHost', 'http host', True) + mbr_videos = xpath_element(metadata, 'MBRVideos') + + formats = [] + for mbr_video in mbr_videos.findall('MBRVideo'): + stream_name = xpath_text(mbr_video, 'streamName') + if stream_name: + formats.append({ + 'url': 'http://%s/%s' % (http_host, stream_name.replace('mp4:', '')), + 'tbr': int_or_none(xpath_text(mbr_video, 'bitrate')), + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': xpath_text(metadata, 'title'), + 'duration': parse_duration(xpath_text(metadata, 'endTime')), + 'creator': xpath_text(metadata, 'speaker'), + 'formats': formats, + } diff --git a/youtube_dl/extractor/groupon.py b/youtube_dl/extractor/groupon.py index 8b9e0e2..63c05b6 100644 --- a/youtube_dl/extractor/groupon.py +++ b/youtube_dl/extractor/groupon.py @@ -18,6 +18,8 @@ class GrouponIE(InfoExtractor): 'id': 'tubGNycTo_9Uxg82uESj4i61EYX8nyuf', 'ext': 'mp4', 'title': 'Bikram Yoga Huntington Beach | Orange County', + 'description': 'md5:d41d8cd98f00b204e9800998ecf8427e', + 'duration': 44.961, }, }], 'params': { diff --git a/youtube_dl/extractor/hentaistigma.py b/youtube_dl/extractor/hentaistigma.py index f5aa73d..86a93de 100644 --- a/youtube_dl/extractor/hentaistigma.py +++ b/youtube_dl/extractor/hentaistigma.py @@ -11,8 +11,8 @@ class HentaiStigmaIE(InfoExtractor): 'info_dict': { 'id': 'inyouchuu-etsu-bonus', 'ext': 'mp4', - "title": "Inyouchuu Etsu Bonus", - "age_limit": 18, + 'title': 'Inyouchuu Etsu Bonus', + 'age_limit': 18, } } diff --git a/youtube_dl/extractor/history.py b/youtube_dl/extractor/history.py deleted file mode 100644 index f86164a..0000000 --- a/youtube_dl/extractor/history.py +++ /dev/null @@ -1,31 +0,0 @@ -from __future__ import unicode_literals - -from .common import InfoExtractor -from ..utils import smuggle_url - - -class HistoryIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?history\.com/(?:[^/]+/)+(?P<id>[^/]+?)(?:$|[?#])' - - _TESTS = [{ - 'url': 'http://www.history.com/topics/valentines-day/history-of-valentines-day/videos/bet-you-didnt-know-valentines-day?m=528e394da93ae&s=undefined&f=1&free=false', - 'md5': '6fe632d033c92aa10b8d4a9be047a7c5', - 'info_dict': { - 'id': 'bLx5Dv5Aka1G', - 'ext': 'mp4', - 'title': "Bet You Didn't Know: Valentine's Day", - 'description': 'md5:7b57ea4829b391995b405fa60bd7b5f7', - }, - 'add_ie': ['ThePlatform'], - }] - - def _real_extract(self, url): - video_id = self._match_id(url) - - webpage = self._download_webpage(url, video_id) - - video_url = self._search_regex( - r'data-href="[^"]*/%s"[^>]+data-release-url="([^"]+)"' % video_id, - webpage, 'video url') - - return self.url_result(smuggle_url(video_url, {'sig': {'key': 'crazyjava', 'secret': 's3cr3t'}})) diff --git a/youtube_dl/extractor/hitbox.py b/youtube_dl/extractor/hitbox.py index 421f55b..ff79743 100644 --- a/youtube_dl/extractor/hitbox.py +++ b/youtube_dl/extractor/hitbox.py @@ -159,6 +159,9 @@ class HitboxLiveIE(HitboxIE): cdns = player_config.get('cdns') servers = [] for cdn in cdns: + # Subscribe URLs are not playable + if cdn.get('rtmpSubscribe') is True: + continue base_url = cdn.get('netConnectionUrl') host = re.search('.+\.([^\.]+\.[^\./]+)/.+', base_url).group(1) if base_url not in servers: diff --git a/youtube_dl/extractor/hotstar.py b/youtube_dl/extractor/hotstar.py new file mode 100644 index 0000000..f05d765 --- /dev/null +++ b/youtube_dl/extractor/hotstar.py @@ -0,0 +1,83 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + ExtractorError, + determine_ext, + int_or_none, +) + + +class HotStarIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?hotstar\.com/(?:.+?[/-])?(?P<id>\d{10})' + _TESTS = [{ + 'url': 'http://www.hotstar.com/on-air-with-aib--english-1000076273', + 'info_dict': { + 'id': '1000076273', + 'ext': 'mp4', + 'title': 'On Air With AIB - English', + 'description': 'md5:c957d8868e9bc793ccb813691cc4c434', + 'timestamp': 1447227000, + 'upload_date': '20151111', + 'duration': 381, + }, + 'params': { + # m3u8 download + 'skip_download': True, + } + }, { + 'url': 'http://www.hotstar.com/sports/cricket/rajitha-sizzles-on-debut-with-329/2001477583', + 'only_matching': True, + }, { + 'url': 'http://www.hotstar.com/1000000515', + 'only_matching': True, + }] + + _GET_CONTENT_TEMPLATE = 'http://account.hotstar.com/AVS/besc?action=GetAggregatedContentDetails&channel=PCTV&contentId=%s' + _GET_CDN_TEMPLATE = 'http://getcdn.hotstar.com/AVS/besc?action=GetCDN&asJson=Y&channel=%s&id=%s&type=%s' + + def _download_json(self, url_or_request, video_id, note='Downloading JSON metadata', fatal=True): + json_data = super(HotStarIE, self)._download_json(url_or_request, video_id, note, fatal=fatal) + if json_data['resultCode'] != 'OK': + if fatal: + raise ExtractorError(json_data['errorDescription']) + return None + return json_data['resultObj'] + + def _real_extract(self, url): + video_id = self._match_id(url) + video_data = self._download_json( + self._GET_CONTENT_TEMPLATE % video_id, + video_id)['contentInfo'][0] + + formats = [] + # PCTV for extracting f4m manifest + for f in ('TABLET',): + format_data = self._download_json( + self._GET_CDN_TEMPLATE % (f, video_id, 'VOD'), + video_id, 'Downloading %s JSON metadata' % f, fatal=False) + if format_data: + format_url = format_data['src'] + ext = determine_ext(format_url) + if ext == 'm3u8': + formats.extend(self._extract_m3u8_formats(format_url, video_id, 'mp4', m3u8_id='hls', fatal=False)) + elif ext == 'f4m': + # produce broken files + continue + else: + formats.append({ + 'url': format_url, + 'width': int_or_none(format_data.get('width')), + 'height': int_or_none(format_data.get('height')), + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': video_data['episodeTitle'], + 'description': video_data.get('description'), + 'duration': int_or_none(video_data.get('duration')), + 'timestamp': int_or_none(video_data.get('broadcastDate')), + 'formats': formats, + } diff --git a/youtube_dl/extractor/howcast.py b/youtube_dl/extractor/howcast.py index 16677f1..e8f51e5 100644 --- a/youtube_dl/extractor/howcast.py +++ b/youtube_dl/extractor/howcast.py @@ -16,6 +16,7 @@ class HowcastIE(InfoExtractor): 'description': 'md5:dbe792e5f6f1489027027bf2eba188a3', 'timestamp': 1276081287, 'upload_date': '20100609', + 'duration': 56.823, }, 'params': { # m3u8 download diff --git a/youtube_dl/extractor/hypem.py b/youtube_dl/extractor/hypem.py index cca3dd4..b3706fe 100644 --- a/youtube_dl/extractor/hypem.py +++ b/youtube_dl/extractor/hypem.py @@ -28,15 +28,12 @@ class HypemIE(InfoExtractor): track_id = self._match_id(url) data = {'ax': 1, 'ts': time.time()} - data_encoded = compat_urllib_parse.urlencode(data) - complete_url = url + "?" + data_encoded - request = sanitized_Request(complete_url) + request = sanitized_Request(url + '?' + compat_urllib_parse.urlencode(data)) response, urlh = self._download_webpage_handle( request, track_id, 'Downloading webpage with the url') - cookie = urlh.headers.get('Set-Cookie', '') html_tracks = self._html_search_regex( - r'(?ms)<script type="application/json" id="displayList-data">\s*(.*?)\s*</script>', + r'(?ms)<script type="application/json" id="displayList-data">(.+?)</script>', response, 'tracks') try: track_list = json.loads(html_tracks) @@ -46,15 +43,14 @@ class HypemIE(InfoExtractor): key = track['key'] track_id = track['id'] - artist = track['artist'] title = track['song'] - serve_url = "http://hypem.com/serve/source/%s/%s" % (track_id, key) request = sanitized_Request( - serve_url, '', {'Content-Type': 'application/json'}) - request.add_header('cookie', cookie) + 'http://hypem.com/serve/source/%s/%s' % (track_id, key), + '', {'Content-Type': 'application/json'}) song_data = self._download_json(request, track_id, 'Downloading metadata') - final_url = song_data["url"] + final_url = song_data['url'] + artist = track.get('artist') return { 'id': track_id, diff --git a/youtube_dl/extractor/ign.py b/youtube_dl/extractor/ign.py index bf2d204..c45c68c 100644 --- a/youtube_dl/extractor/ign.py +++ b/youtube_dl/extractor/ign.py @@ -3,6 +3,10 @@ from __future__ import unicode_literals import re from .common import InfoExtractor +from ..utils import ( + int_or_none, + parse_iso8601, +) class IGNIE(InfoExtractor): @@ -11,25 +15,24 @@ class IGNIE(InfoExtractor): Some videos of it.ign.com are also supported """ - _VALID_URL = r'https?://.+?\.ign\.com/(?P<type>videos|show_videos|articles|(?:[^/]*/feature))(/.+)?/(?P<name_or_id>.+)' + _VALID_URL = r'https?://.+?\.ign\.com/(?:[^/]+/)?(?P<type>videos|show_videos|articles|feature|(?:[^/]+/\d+/video))(/.+)?/(?P<name_or_id>.+)' IE_NAME = 'ign.com' - _CONFIG_URL_TEMPLATE = 'http://www.ign.com/videos/configs/id/%s.config' - _DESCRIPTION_RE = [ - r'<span class="page-object-description">(.+?)</span>', - r'id="my_show_video">.*?<p>(.*?)</p>', - r'<meta name="description" content="(.*?)"', - ] + _API_URL_TEMPLATE = 'http://apis.ign.com/video/v3/videos/%s' + _EMBED_RE = r'<iframe[^>]+?["\']((?:https?:)?//.+?\.ign\.com.+?/embed.+?)["\']' _TESTS = [ { 'url': 'http://www.ign.com/videos/2013/06/05/the-last-of-us-review', - 'md5': 'eac8bdc1890980122c3b66f14bdd02e9', + 'md5': 'febda82c4bafecd2d44b6e1a18a595f8', 'info_dict': { 'id': '8f862beef863986b2785559b9e1aa599', 'ext': 'mp4', 'title': 'The Last of Us Review', 'description': 'md5:c8946d4260a4d43a00d5ae8ed998870c', + 'timestamp': 1370440800, + 'upload_date': '20130605', + 'uploader_id': 'cberidon@ign.com', } }, { @@ -44,6 +47,9 @@ class IGNIE(InfoExtractor): 'ext': 'mp4', 'title': 'GTA 5 Video Review', 'description': 'Rockstar drops the mic on this generation of games. Watch our review of the masterly Grand Theft Auto V.', + 'timestamp': 1379339880, + 'upload_date': '20130916', + 'uploader_id': 'danieljkrupa@gmail.com', }, }, { @@ -52,6 +58,9 @@ class IGNIE(InfoExtractor): 'ext': 'mp4', 'title': '26 Twisted Moments from GTA 5 in Slow Motion', 'description': 'The twisted beauty of GTA 5 in stunning slow motion.', + 'timestamp': 1386878820, + 'upload_date': '20131212', + 'uploader_id': 'togilvie@ign.com', }, }, ], @@ -66,12 +75,20 @@ class IGNIE(InfoExtractor): 'id': '078fdd005f6d3c02f63d795faa1b984f', 'ext': 'mp4', 'title': 'Rewind Theater - Wild Trailer Gamescom 2014', - 'description': ( - 'Giant skeletons, bloody hunts, and captivating' - ' natural beauty take our breath away.' - ), + 'description': 'Brian and Jared explore Michel Ancel\'s captivating new preview.', + 'timestamp': 1408047180, + 'upload_date': '20140814', + 'uploader_id': 'jamesduggan1990@gmail.com', }, }, + { + 'url': 'http://me.ign.com/en/videos/112203/video/how-hitman-aims-to-be-different-than-every-other-s', + 'only_matching': True, + }, + { + 'url': 'http://me.ign.com/ar/angry-birds-2/106533/video/lrd-ldyy-lwl-lfylm-angry-birds', + 'only_matching': True, + }, ] def _find_video_id(self, webpage): @@ -82,7 +99,7 @@ class IGNIE(InfoExtractor): r'<object id="vid_(.+?)"', r'<meta name="og:image" content=".*/(.+?)-(.+?)/.+.jpg"', ] - return self._search_regex(res_id, webpage, 'video id') + return self._search_regex(res_id, webpage, 'video id', default=None) def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) @@ -91,7 +108,7 @@ class IGNIE(InfoExtractor): webpage = self._download_webpage(url, name_or_id) if page_type != 'video': multiple_urls = re.findall( - '<param name="flashvars"[^>]*value="[^"]*?url=(https?://www\.ign\.com/videos/.*?)["&]', + r'<param name="flashvars"[^>]*value="[^"]*?url=(https?://www\.ign\.com/videos/.*?)["&]', webpage) if multiple_urls: entries = [self.url_result(u, ie='IGN') for u in multiple_urls] @@ -102,22 +119,51 @@ class IGNIE(InfoExtractor): } video_id = self._find_video_id(webpage) - result = self._get_video_info(video_id) - description = self._html_search_regex(self._DESCRIPTION_RE, - webpage, 'video description', flags=re.DOTALL) - result['description'] = description - return result + if not video_id: + return self.url_result(self._search_regex( + self._EMBED_RE, webpage, 'embed url')) + return self._get_video_info(video_id) def _get_video_info(self, video_id): - config_url = self._CONFIG_URL_TEMPLATE % video_id - config = self._download_json(config_url, video_id) - media = config['playlist']['media'] + api_data = self._download_json( + self._API_URL_TEMPLATE % video_id, video_id) + + formats = [] + m3u8_url = api_data['refs'].get('m3uUrl') + if m3u8_url: + formats.extend(self._extract_m3u8_formats( + m3u8_url, video_id, 'mp4', 'm3u8_native', + m3u8_id='hls', fatal=False)) + f4m_url = api_data['refs'].get('f4mUrl') + if f4m_url: + formats.extend(self._extract_f4m_formats( + f4m_url, video_id, f4m_id='hds', fatal=False)) + for asset in api_data['assets']: + formats.append({ + 'url': asset['url'], + 'tbr': asset.get('actual_bitrate_kbps'), + 'fps': asset.get('frame_rate'), + 'height': int_or_none(asset.get('height')), + 'width': int_or_none(asset.get('width')), + }) + self._sort_formats(formats) + + thumbnails = [{ + 'url': thumbnail['url'] + } for thumbnail in api_data.get('thumbnails', [])] + + metadata = api_data['metadata'] return { - 'id': media['metadata']['videoId'], - 'url': media['url'], - 'title': media['metadata']['title'], - 'thumbnail': media['poster'][0]['url'].replace('{size}', 'grande'), + 'id': api_data.get('videoId') or video_id, + 'title': metadata.get('longTitle') or metadata.get('name') or metadata.get['title'], + 'description': metadata.get('description'), + 'timestamp': parse_iso8601(metadata.get('publishDate')), + 'duration': int_or_none(metadata.get('duration')), + 'display_id': metadata.get('slug') or video_id, + 'uploader_id': metadata.get('creator'), + 'thumbnails': thumbnails, + 'formats': formats, } @@ -125,16 +171,17 @@ class OneUPIE(IGNIE): _VALID_URL = r'https?://gamevideos\.1up\.com/(?P<type>video)/id/(?P<name_or_id>.+)\.html' IE_NAME = '1up.com' - _DESCRIPTION_RE = r'<div id="vid_summary">(.+?)</div>' - _TESTS = [{ 'url': 'http://gamevideos.1up.com/video/id/34976.html', - 'md5': '68a54ce4ebc772e4b71e3123d413163d', + 'md5': 'c9cc69e07acb675c31a16719f909e347', 'info_dict': { 'id': '34976', 'ext': 'mp4', 'title': 'Sniper Elite V2 - Trailer', - 'description': 'md5:5d289b722f5a6d940ca3136e9dae89cf', + 'description': 'md5:bf0516c5ee32a3217aa703e9b1bc7826', + 'timestamp': 1313099220, + 'upload_date': '20110811', + 'uploader_id': 'IGN', } }] @@ -143,3 +190,36 @@ class OneUPIE(IGNIE): result = super(OneUPIE, self)._real_extract(url) result['id'] = mobj.group('name_or_id') return result + + +class PCMagIE(IGNIE): + _VALID_URL = r'https?://(?:www\.)?pcmag\.com/(?P<type>videos|article2)(/.+)?/(?P<name_or_id>.+)' + IE_NAME = 'pcmag' + + _EMBED_RE = r'iframe.setAttribute\("src",\s*__util.objToUrlString\("http://widgets\.ign\.com/video/embed/content.html?[^"]*url=([^"]+)["&]' + + _TESTS = [{ + 'url': 'http://www.pcmag.com/videos/2015/01/06/010615-whats-new-now-is-gogo-snooping-on-your-data', + 'md5': '212d6154fd0361a2781075f1febbe9ad', + 'info_dict': { + 'id': 'ee10d774b508c9b8ec07e763b9125b91', + 'ext': 'mp4', + 'title': '010615_What\'s New Now: Is GoGo Snooping on Your Data?', + 'description': 'md5:a7071ae64d2f68cc821c729d4ded6bb3', + 'timestamp': 1420571160, + 'upload_date': '20150106', + 'uploader_id': 'cozzipix@gmail.com', + } + }, { + 'url': 'http://www.pcmag.com/article2/0,2817,2470156,00.asp', + 'md5': '94130c1ca07ba0adb6088350681f16c1', + 'info_dict': { + 'id': '042e560ba94823d43afcb12ddf7142ca', + 'ext': 'mp4', + 'title': 'HTC\'s Weird New Re Camera - What\'s New Now', + 'description': 'md5:53433c45df96d2ea5d0fda18be2ca908', + 'timestamp': 1412953920, + 'upload_date': '20141010', + 'uploader_id': 'chris_snyder@pcmag.com', + } + }] diff --git a/youtube_dl/extractor/imgur.py b/youtube_dl/extractor/imgur.py index 70c8ca6..85e9344 100644 --- a/youtube_dl/extractor/imgur.py +++ b/youtube_dl/extractor/imgur.py @@ -13,7 +13,7 @@ from ..utils import ( class ImgurIE(InfoExtractor): - _VALID_URL = r'https?://(?:i\.)?imgur\.com/(?!gallery)(?P<id>[a-zA-Z0-9]+)' + _VALID_URL = r'https?://(?:i\.)?imgur\.com/(?:(?:gallery|topic/[^/]+)/)?(?P<id>[a-zA-Z0-9]{6,})(?:[/?#&]+|\.[a-z]+)?$' _TESTS = [{ 'url': 'https://i.imgur.com/A61SaA1.gifv', @@ -21,7 +21,7 @@ class ImgurIE(InfoExtractor): 'id': 'A61SaA1', 'ext': 'mp4', 'title': 're:Imgur GIF$|MRW gifv is up and running without any bugs$', - 'description': 're:The origin of the Internet\'s most viral images$|The Internet\'s visual storytelling community\. Explore, share, and discuss the best visual stories the Internet has to offer\.$', + 'description': 'Imgur: The most awesome images on the Internet.', }, }, { 'url': 'https://imgur.com/A61SaA1', @@ -29,8 +29,20 @@ class ImgurIE(InfoExtractor): 'id': 'A61SaA1', 'ext': 'mp4', 'title': 're:Imgur GIF$|MRW gifv is up and running without any bugs$', - 'description': 're:The origin of the Internet\'s most viral images$|The Internet\'s visual storytelling community\. Explore, share, and discuss the best visual stories the Internet has to offer\.$', + 'description': 'Imgur: The most awesome images on the Internet.', }, + }, { + 'url': 'https://imgur.com/gallery/YcAQlkx', + 'info_dict': { + 'id': 'YcAQlkx', + 'ext': 'mp4', + 'title': 'Classic Steve Carell gif...cracks me up everytime....damn the repost downvotes....', + 'description': 'Imgur: The most awesome images on the Internet.' + + } + }, { + 'url': 'http://imgur.com/topic/Funny/N8rOudd', + 'only_matching': True, }] def _real_extract(self, url): @@ -100,25 +112,38 @@ class ImgurIE(InfoExtractor): class ImgurAlbumIE(InfoExtractor): - _VALID_URL = r'https?://(?:i\.)?imgur\.com/gallery/(?P<id>[a-zA-Z0-9]+)' + _VALID_URL = r'https?://(?:i\.)?imgur\.com/(?:(?:a|gallery|topic/[^/]+)/)?(?P<id>[a-zA-Z0-9]{5})(?:[/?#&]+)?$' - _TEST = { + _TESTS = [{ 'url': 'http://imgur.com/gallery/Q95ko', 'info_dict': { 'id': 'Q95ko', }, 'playlist_count': 25, - } + }, { + 'url': 'http://imgur.com/a/j6Orj', + 'only_matching': True, + }, { + 'url': 'http://imgur.com/topic/Aww/ll5Vk', + 'only_matching': True, + }] def _real_extract(self, url): album_id = self._match_id(url) album_images = self._download_json( 'http://imgur.com/gallery/%s/album_images/hit.json?all=true' % album_id, - album_id)['data']['images'] - - entries = [ - self.url_result('http://imgur.com/%s' % image['hash']) - for image in album_images if image.get('hash')] - - return self.playlist_result(entries, album_id) + album_id, fatal=False) + + if album_images: + data = album_images.get('data') + if data and isinstance(data, dict): + images = data.get('images') + if images and isinstance(images, list): + entries = [ + self.url_result('http://imgur.com/%s' % image['hash']) + for image in images if image.get('hash')] + return self.playlist_result(entries, album_id) + + # Fallback to single video + return self.url_result('http://imgur.com/%s' % album_id, ImgurIE.ie_key()) diff --git a/youtube_dl/extractor/infoq.py b/youtube_dl/extractor/infoq.py index 71cfd12..016af20 100644 --- a/youtube_dl/extractor/infoq.py +++ b/youtube_dl/extractor/infoq.py @@ -1,3 +1,5 @@ +# coding: utf-8 + from __future__ import unicode_literals import base64 @@ -5,8 +7,9 @@ import base64 from .common import InfoExtractor from ..compat import ( compat_urllib_parse_unquote, - compat_urlparse, + compat_parse_qs, ) +from ..utils import determine_ext class InfoQIE(InfoExtractor): @@ -16,7 +19,7 @@ class InfoQIE(InfoExtractor): 'url': 'http://www.infoq.com/presentations/A-Few-of-My-Favorite-Python-Things', 'md5': 'b5ca0e0a8c1fed93b0e65e48e462f9a2', 'info_dict': { - 'id': '12-jan-pythonthings', + 'id': 'A-Few-of-My-Favorite-Python-Things', 'ext': 'mp4', 'description': 'Mike Pirnat presents some tips and tricks, standard libraries and third party packages that make programming in Python a richer experience.', 'title': 'A Few of My Favorite [Python] Things', @@ -24,40 +27,84 @@ class InfoQIE(InfoExtractor): }, { 'url': 'http://www.infoq.com/fr/presentations/changez-avis-sur-javascript', 'only_matching': True, + }, { + 'url': 'http://www.infoq.com/cn/presentations/openstack-continued-delivery', + 'md5': '4918d0cca1497f2244572caf626687ef', + 'info_dict': { + 'id': 'openstack-continued-delivery', + 'title': 'OpenStack持续交付之路', + 'ext': 'flv', + 'description': 'md5:308d981fb28fa42f49f9568322c683ff', + }, }] - def _real_extract(self, url): - video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) + def _extract_bokecc_videos(self, webpage, video_id): + # TODO: bokecc.com is a Chinese video cloud platform + # It should have an independent extractor but I don't have other + # examples using bokecc + player_params_str = self._html_search_regex( + r'<script[^>]+src="http://p\.bokecc\.com/player\?([^"]+)', + webpage, 'player params', default=None) - video_title = self._html_search_regex(r'<title>(.*?)', webpage, 'title') - video_description = self._html_search_meta('description', webpage, 'description') + player_params = compat_parse_qs(player_params_str) + + info_xml = self._download_xml( + 'http://p.bokecc.com/servlet/playinfo?uid=%s&vid=%s&m=1' % ( + player_params['siteid'][0], player_params['vid'][0]), video_id) + + return [{ + 'format_id': 'bokecc', + 'url': quality.find('./copy').attrib['playurl'], + 'preference': int(quality.attrib['value']), + } for quality in info_xml.findall('./video/quality')] + def _extract_rtmp_videos(self, webpage): # The server URL is hardcoded video_url = 'rtmpe://video.infoq.com/cfx/st/' # Extract video URL encoded_id = self._search_regex( - r"jsclassref\s*=\s*'([^']*)'", webpage, 'encoded id') + r"jsclassref\s*=\s*'([^']*)'", webpage, 'encoded id', default=None) + real_id = compat_urllib_parse_unquote(base64.b64decode(encoded_id.encode('ascii')).decode('utf-8')) playpath = 'mp4:' + real_id - video_filename = playpath.split('/')[-1] - video_id, extension = video_filename.split('.') - - http_base = self._search_regex( - r'EXPRESSINSTALL_SWF\s*=\s*[^"]*"((?:https?:)?//[^/"]+/)', webpage, - 'HTTP base URL') - - formats = [{ + return [{ 'format_id': 'rtmp', 'url': video_url, - 'ext': extension, + 'ext': determine_ext(playpath), 'play_path': playpath, - }, { + }] + + def _extract_http_videos(self, webpage): + http_video_url = self._search_regex(r'P\.s\s*=\s*\'([^\']+)\'', webpage, 'video URL') + + policy = self._search_regex(r'InfoQConstants.scp\s*=\s*\'([^\']+)\'', webpage, 'policy') + signature = self._search_regex(r'InfoQConstants.scs\s*=\s*\'([^\']+)\'', webpage, 'signature') + key_pair_id = self._search_regex(r'InfoQConstants.sck\s*=\s*\'([^\']+)\'', webpage, 'key-pair-id') + + return [{ 'format_id': 'http', - 'url': compat_urlparse.urljoin(url, http_base) + real_id, + 'url': http_video_url, + 'http_headers': { + 'Cookie': 'CloudFront-Policy=%s; CloudFront-Signature=%s; CloudFront-Key-Pair-Id=%s' % ( + policy, signature, key_pair_id), + }, }] + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + video_title = self._html_search_regex(r'(.*?)', webpage, 'title') + video_description = self._html_search_meta('description', webpage, 'description') + + if '/cn/' in url: + # for China videos, HTTP video URL exists but always fails with 403 + formats = self._extract_bokecc_videos(webpage, video_id) + else: + formats = self._extract_rtmp_videos(webpage) + self._extract_http_videos(webpage) + self._sort_formats(formats) return { diff --git a/youtube_dl/extractor/instagram.py b/youtube_dl/extractor/instagram.py index c158f20..ed3e071 100644 --- a/youtube_dl/extractor/instagram.py +++ b/youtube_dl/extractor/instagram.py @@ -21,6 +21,18 @@ class InstagramIE(InfoExtractor): 'title': 'Video by naomipq', 'description': 'md5:1f17f0ab29bd6fe2bfad705f58de3cb8', } + }, { + # missing description + 'url': 'https://www.instagram.com/p/BA-pQFBG8HZ/?taken-by=britneyspears', + 'info_dict': { + 'id': 'BA-pQFBG8HZ', + 'ext': 'mp4', + 'uploader_id': 'britneyspears', + 'title': 'Video by britneyspears', + }, + 'params': { + 'skip_download': True, + }, }, { 'url': 'https://instagram.com/p/-Cmh1cukG2/', 'only_matching': True, @@ -32,8 +44,8 @@ class InstagramIE(InfoExtractor): webpage = self._download_webpage(url, video_id) uploader_id = self._search_regex(r'"owner":{"username":"(.+?)"', webpage, 'uploader id', fatal=False) - desc = self._search_regex(r'"caption":"(.*?)"', webpage, 'description', - fatal=False) + desc = self._search_regex( + r'"caption":"(.+?)"', webpage, 'description', default=None) return { 'id': video_id, @@ -47,7 +59,7 @@ class InstagramIE(InfoExtractor): class InstagramUserIE(InfoExtractor): - _VALID_URL = r'https://instagram\.com/(?P[^/]{2,})/?(?:$|[?#])' + _VALID_URL = r'https?://(?:www\.)?instagram\.com/(?P[^/]{2,})/?(?:$|[?#])' IE_DESC = 'Instagram user profile' IE_NAME = 'instagram:user' _TEST = { diff --git a/youtube_dl/extractor/iprima.py b/youtube_dl/extractor/iprima.py index 36baf32..61a0de4 100644 --- a/youtube_dl/extractor/iprima.py +++ b/youtube_dl/extractor/iprima.py @@ -2,45 +2,30 @@ from __future__ import unicode_literals import re -from random import random -from math import floor +import time from .common import InfoExtractor from ..utils import ( - ExtractorError, - remove_end, sanitized_Request, ) class IPrimaIE(InfoExtractor): - _VALID_URL = r'https?://play\.iprima\.cz/(?:[^/]+/)*(?P[^?#]+)' + _VALID_URL = r'https?://play\.iprima\.cz/(?:.+/)?(?P[^?#]+)' _TESTS = [{ - 'url': 'http://play.iprima.cz/particka/particka-92', + 'url': 'http://play.iprima.cz/gondici-s-r-o-33', 'info_dict': { - 'id': '39152', - 'ext': 'flv', - 'title': 'Partička (92)', - 'description': 'md5:74e9617e51bca67c3ecfb2c6f9766f45', - 'thumbnail': 'http://play.iprima.cz/sites/default/files/image_crops/image_620x349/3/491483_particka-92_image_620x349.jpg', + 'id': 'p136534', + 'ext': 'mp4', + 'title': 'Gondíci s. r. o. (34)', + 'description': 'md5:16577c629d006aa91f59ca8d8e7f99bd', }, 'params': { - 'skip_download': True, # requires rtmpdump + 'skip_download': True, # m3u8 download }, }, { - 'url': 'http://play.iprima.cz/particka/tchibo-particka-jarni-moda', - 'info_dict': { - 'id': '9718337', - 'ext': 'flv', - 'title': 'Tchibo Partička - Jarní móda', - 'thumbnail': 're:^http:.*\.jpg$', - }, - 'params': { - 'skip_download': True, # requires rtmpdump - }, - }, { - 'url': 'http://play.iprima.cz/zpravy-ftv-prima-2752015', + 'url': 'http://play.iprima.cz/particka/particka-92', 'only_matching': True, }] @@ -50,62 +35,24 @@ class IPrimaIE(InfoExtractor): webpage = self._download_webpage(url, video_id) - if re.search(r'Nemáte oprávnění přistupovat na tuto stránku\.\s*', webpage): - raise ExtractorError( - '%s said: You do not have permission to access this page' % self.IE_NAME, expected=True) + video_id = self._search_regex(r'data-product="([^"]+)">', webpage, 'real id') - player_url = ( - 'http://embed.livebox.cz/iprimaplay/player-embed-v2.js?__tok%s__=%s' % - (floor(random() * 1073741824), floor(random() * 1073741824)) - ) - - req = sanitized_Request(player_url) + req = sanitized_Request( + 'http://play.iprima.cz/prehravac/init?_infuse=1' + '&_ts=%s&productId=%s' % (round(time.time()), video_id)) req.add_header('Referer', url) - playerpage = self._download_webpage(req, video_id) - - base_url = ''.join(re.findall(r"embed\['stream'\] = '(.+?)'.+'(\?auth=)'.+'(.+?)';", playerpage)[1]) - - zoneGEO = self._html_search_regex(r'"zoneGEO":(.+?),', webpage, 'zoneGEO') - if zoneGEO != '0': - base_url = base_url.replace('token', 'token_' + zoneGEO) - - formats = [] - for format_id in ['lq', 'hq', 'hd']: - filename = self._html_search_regex( - r'"%s_id":(.+?),' % format_id, webpage, 'filename') - - if filename == 'null': - continue - - real_id = self._search_regex( - r'Prima-(?:[0-9]{10}|WEB)-([0-9]+)[-_]', - filename, 'real video id') + playerpage = self._download_webpage(req, video_id, note='Downloading player') - if format_id == 'lq': - quality = 0 - elif format_id == 'hq': - quality = 1 - elif format_id == 'hd': - quality = 2 - filename = 'hq/' + filename + m3u8_url = self._search_regex(r"'src': '([^']+\.m3u8)'", playerpage, 'm3u8 url') - formats.append({ - 'format_id': format_id, - 'url': base_url, - 'quality': quality, - 'play_path': 'mp4:' + filename.replace('"', '')[:-4], - 'rtmp_live': True, - 'ext': 'flv', - }) + formats = self._extract_m3u8_formats(m3u8_url, video_id, ext='mp4') self._sort_formats(formats) return { - 'id': real_id, - 'title': remove_end(self._og_search_title(webpage), ' | Prima PLAY'), + 'id': video_id, + 'title': self._og_search_title(webpage), 'thumbnail': self._og_search_thumbnail(webpage), 'formats': formats, - 'description': self._search_regex( - r']+itemprop="description"[^>]*>([^<]+)', - webpage, 'description', default=None), + 'description': self._og_search_description(webpage), } diff --git a/youtube_dl/extractor/iqiyi.py b/youtube_dl/extractor/iqiyi.py index 2df1da3..c3e3300 100644 --- a/youtube_dl/extractor/iqiyi.py +++ b/youtube_dl/extractor/iqiyi.py @@ -2,21 +2,203 @@ from __future__ import unicode_literals import hashlib +import itertools import math +import os import random +import re import time import uuid from .common import InfoExtractor -from ..compat import compat_urllib_parse -from ..utils import ExtractorError +from ..compat import ( + compat_parse_qs, + compat_str, + compat_urllib_parse, + compat_urllib_parse_urlparse, +) +from ..utils import ( + ExtractorError, + ohdave_rsa_encrypt, + remove_start, + sanitized_Request, + urlencode_postdata, + url_basename, +) + + +def md5_text(text): + return hashlib.md5(text.encode('utf-8')).hexdigest() + + +class IqiyiSDK(object): + def __init__(self, target, ip, timestamp): + self.target = target + self.ip = ip + self.timestamp = timestamp + + @staticmethod + def split_sum(data): + return compat_str(sum(map(lambda p: int(p, 16), list(data)))) + + @staticmethod + def digit_sum(num): + if isinstance(num, int): + num = compat_str(num) + return compat_str(sum(map(int, num))) + + def even_odd(self): + even = self.digit_sum(compat_str(self.timestamp)[::2]) + odd = self.digit_sum(compat_str(self.timestamp)[1::2]) + return even, odd + + def preprocess(self, chunksize): + self.target = md5_text(self.target) + chunks = [] + for i in range(32 // chunksize): + chunks.append(self.target[chunksize * i:chunksize * (i + 1)]) + if 32 % chunksize: + chunks.append(self.target[32 - 32 % chunksize:]) + return chunks, list(map(int, self.ip.split('.'))) + + def mod(self, modulus): + chunks, ip = self.preprocess(32) + self.target = chunks[0] + ''.join(map(lambda p: compat_str(p % modulus), ip)) + + def split(self, chunksize): + modulus_map = { + 4: 256, + 5: 10, + 8: 100, + } + + chunks, ip = self.preprocess(chunksize) + ret = '' + for i in range(len(chunks)): + ip_part = compat_str(ip[i] % modulus_map[chunksize]) if i < 4 else '' + if chunksize == 8: + ret += ip_part + chunks[i] + else: + ret += chunks[i] + ip_part + self.target = ret + + def handle_input16(self): + self.target = md5_text(self.target) + self.target = self.split_sum(self.target[:16]) + self.target + self.split_sum(self.target[16:]) + + def handle_input8(self): + self.target = md5_text(self.target) + ret = '' + for i in range(4): + part = self.target[8 * i:8 * (i + 1)] + ret += self.split_sum(part) + part + self.target = ret + + def handleSum(self): + self.target = md5_text(self.target) + self.target = self.split_sum(self.target) + self.target + + def date(self, scheme): + self.target = md5_text(self.target) + d = time.localtime(self.timestamp) + strings = { + 'y': compat_str(d.tm_year), + 'm': '%02d' % d.tm_mon, + 'd': '%02d' % d.tm_mday, + } + self.target += ''.join(map(lambda c: strings[c], list(scheme))) + + def split_time_even_odd(self): + even, odd = self.even_odd() + self.target = odd + md5_text(self.target) + even + + def split_time_odd_even(self): + even, odd = self.even_odd() + self.target = even + md5_text(self.target) + odd + + def split_ip_time_sum(self): + chunks, ip = self.preprocess(32) + self.target = compat_str(sum(ip)) + chunks[0] + self.digit_sum(self.timestamp) + + def split_time_ip_sum(self): + chunks, ip = self.preprocess(32) + self.target = self.digit_sum(self.timestamp) + chunks[0] + compat_str(sum(ip)) + + +class IqiyiSDKInterpreter(object): + BASE62_TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + + def __init__(self, sdk_code): + self.sdk_code = sdk_code + + @classmethod + def base62(cls, num): + if num == 0: + return '0' + ret = '' + while num: + ret = cls.BASE62_TABLE[num % 62] + ret + num = num // 62 + return ret + + def decode_eval_codes(self): + self.sdk_code = self.sdk_code[5:-3] + + mobj = re.search( + r"'([^']+)',62,(\d+),'([^']+)'\.split\('\|'\),[^,]+,{}", + self.sdk_code) + obfucasted_code, count, symbols = mobj.groups() + count = int(count) + symbols = symbols.split('|') + symbol_table = {} + + while count: + count -= 1 + b62count = self.base62(count) + symbol_table[b62count] = symbols[count] or b62count + + self.sdk_code = re.sub( + r'\b(\w+)\b', lambda mobj: symbol_table[mobj.group(0)], + obfucasted_code) + + def run(self, target, ip, timestamp): + self.decode_eval_codes() + + functions = re.findall(r'input=([a-zA-Z0-9]+)\(input', self.sdk_code) + + sdk = IqiyiSDK(target, ip, timestamp) + + other_functions = { + 'handleSum': sdk.handleSum, + 'handleInput8': sdk.handle_input8, + 'handleInput16': sdk.handle_input16, + 'splitTimeEvenOdd': sdk.split_time_even_odd, + 'splitTimeOddEven': sdk.split_time_odd_even, + 'splitIpTimeSum': sdk.split_ip_time_sum, + 'splitTimeIpSum': sdk.split_time_ip_sum, + } + for function in functions: + if re.match(r'mod\d+', function): + sdk.mod(int(function[3:])) + elif re.match(r'date[ymd]{3}', function): + sdk.date(function[4:]) + elif re.match(r'split\d+', function): + sdk.split(int(function[5:])) + elif function in other_functions: + other_functions[function]() + else: + raise ExtractorError('Unknown funcion %s' % function) + + return sdk.target class IqiyiIE(InfoExtractor): IE_NAME = 'iqiyi' IE_DESC = '爱奇艺' - _VALID_URL = r'http://(?:www\.)iqiyi.com/v_.+?\.html' + _VALID_URL = r'http://(?:[^.]+\.)?iqiyi\.com/.+\.html' + + _NETRC_MACHINE = 'iqiyi' _TESTS = [{ 'url': 'http://www.iqiyi.com/v_19rrojlavg.html', @@ -84,6 +266,44 @@ class IqiyiIE(InfoExtractor): 'params': { 'skip_download': True, }, + }, { + 'url': 'http://www.iqiyi.com/w_19rt6o8t9p.html', + 'only_matching': True, + }, { + 'url': 'http://www.iqiyi.com/a_19rrhbc6kt.html', + 'only_matching': True, + }, { + 'url': 'http://yule.iqiyi.com/pcb.html', + 'only_matching': True, + }, { + # VIP-only video. The first 2 parts (6 minutes) are available without login + # MD5 sums omitted as values are different on Travis CI and my machine + 'url': 'http://www.iqiyi.com/v_19rrny4w8w.html', + 'info_dict': { + 'id': 'f3cf468b39dddb30d676f89a91200dc1', + 'title': '泰坦尼克号', + }, + 'playlist': [{ + 'info_dict': { + 'id': 'f3cf468b39dddb30d676f89a91200dc1_part1', + 'ext': 'f4v', + 'title': '泰坦尼克号', + }, + }, { + 'info_dict': { + 'id': 'f3cf468b39dddb30d676f89a91200dc1_part2', + 'ext': 'f4v', + 'title': '泰坦尼克号', + }, + }], + 'expected_warnings': ['Needs a VIP account for full video'], + }, { + 'url': 'http://www.iqiyi.com/a_19rrhb8ce1.html', + 'info_dict': { + 'id': '202918101', + 'title': '灌篮高手 国语版', + }, + 'playlist_count': 101, }] _FORMATS_MAP = [ @@ -95,11 +315,98 @@ class IqiyiIE(InfoExtractor): ('10', 'h1'), ] + def _real_initialize(self): + self._login() + @staticmethod - def md5_text(text): - return hashlib.md5(text.encode('utf-8')).hexdigest() + def _rsa_fun(data): + # public key extracted from http://static.iqiyi.com/js/qiyiV2/20160129180840/jobs/i18n/i18nIndex.js + N = 0xab86b6371b5318aaa1d3c9e612a9f1264f372323c8c0f19875b5fc3b3fd3afcc1e5bec527aa94bfa85bffc157e4245aebda05389a5357b75115ac94f074aefcd + e = 65537 + + return ohdave_rsa_encrypt(data, e, N) + + def _login(self): + (username, password) = self._get_login_info() + + # No authentication to be performed + if not username: + return True + + data = self._download_json( + 'http://kylin.iqiyi.com/get_token', None, + note='Get token for logging', errnote='Unable to get token for logging') + sdk = data['sdk'] + timestamp = int(time.time()) + target = '/apis/reglogin/login.action?lang=zh_TW&area_code=null&email=%s&passwd=%s&agenttype=1&from=undefined&keeplogin=0&piccode=&fromurl=&_pos=1' % ( + username, self._rsa_fun(password.encode('utf-8'))) + + interp = IqiyiSDKInterpreter(sdk) + sign = interp.run(target, data['ip'], timestamp) + + validation_params = { + 'target': target, + 'server': 'BEA3AA1908656AABCCFF76582C4C6660', + 'token': data['token'], + 'bird_src': 'f8d91d57af224da7893dd397d52d811a', + 'sign': sign, + 'bird_t': timestamp, + } + validation_result = self._download_json( + 'http://kylin.iqiyi.com/validate?' + compat_urllib_parse.urlencode(validation_params), None, + note='Validate credentials', errnote='Unable to validate credentials') + + MSG_MAP = { + 'P00107': 'please login via the web interface and enter the CAPTCHA code', + 'P00117': 'bad username or password', + } + + code = validation_result['code'] + if code != 'A00000': + msg = MSG_MAP.get(code) + if not msg: + msg = 'error %s' % code + if validation_result.get('msg'): + msg += ': ' + validation_result['msg'] + self._downloader.report_warning('unable to log in: ' + msg) + return False + + return True + + def _authenticate_vip_video(self, api_video_url, video_id, tvid, _uuid, do_report_warning): + auth_params = { + # version and platform hard-coded in com/qiyi/player/core/model/remote/AuthenticationRemote.as + 'version': '2.0', + 'platform': 'b6c13e26323c537d', + 'aid': tvid, + 'tvid': tvid, + 'uid': '', + 'deviceId': _uuid, + 'playType': 'main', # XXX: always main? + 'filename': os.path.splitext(url_basename(api_video_url))[0], + } - def construct_video_urls(self, data, video_id, _uuid): + qd_items = compat_parse_qs(compat_urllib_parse_urlparse(api_video_url).query) + for key, val in qd_items.items(): + auth_params[key] = val[0] + + auth_req = sanitized_Request( + 'http://api.vip.iqiyi.com/services/ckn.action', + urlencode_postdata(auth_params)) + # iQiyi server throws HTTP 405 error without the following header + auth_req.add_header('Content-Type', 'application/x-www-form-urlencoded') + auth_result = self._download_json( + auth_req, video_id, + note='Downloading video authentication JSON', + errnote='Unable to download video authentication JSON') + if auth_result['code'] == 'Q00506': # requires a VIP account + if do_report_warning: + self.report_warning('Needs a VIP account for full video') + return False + + return auth_result + + def construct_video_urls(self, data, video_id, _uuid, tvid): def do_xor(x, y): a = y % 3 if a == 1: @@ -125,9 +432,10 @@ class IqiyiIE(InfoExtractor): note='Download path key of segment %d for format %s' % (segment_index + 1, format_id) )['t'] t = str(int(math.floor(int(tm) / (600.0)))) - return self.md5_text(t + mg + x) + return md5_text(t + mg + x) video_urls_dict = {} + need_vip_warning_report = True for format_item in data['vp']['tkl'][0]['vs']: if 0 < int(format_item['bid']) <= 10: format_id = self.get_format(format_item['bid']) @@ -146,11 +454,13 @@ class IqiyiIE(InfoExtractor): vl = segment['l'] if not vl.startswith('/'): vl = get_encode_code(vl) - key = get_path_key( - vl.split('/')[-1].split('.')[0], format_id, segment_index) + is_vip_video = '/vip/' in vl filesize = segment['b'] base_url = data['vp']['du'].split('/') - base_url.insert(-1, key) + if not is_vip_video: + key = get_path_key( + vl.split('/')[-1].split('.')[0], format_id, segment_index) + base_url.insert(-1, key) base_url = '/'.join(base_url) param = { 'su': _uuid, @@ -161,8 +471,23 @@ class IqiyiIE(InfoExtractor): 'ct': '', 'tn': str(int(time.time())) } - api_video_url = base_url + vl + '?' + \ - compat_urllib_parse.urlencode(param) + api_video_url = base_url + vl + if is_vip_video: + api_video_url = api_video_url.replace('.f4v', '.hml') + auth_result = self._authenticate_vip_video( + api_video_url, video_id, tvid, _uuid, need_vip_warning_report) + if auth_result is False: + need_vip_warning_report = False + break + param.update({ + 't': auth_result['data']['t'], + # cid is hard-coded in com/qiyi/player/core/player/RuntimeData.as + 'cid': 'afbe8fd3d73448c9', + 'vid': video_id, + 'QY00001': auth_result['data']['u'], + }) + api_video_url += '?' if '?' not in api_video_url else '&' + api_video_url += compat_urllib_parse.urlencode(param) js = self._download_json( api_video_url, video_id, note='Download video info of segment %d for format %s' % (segment_index + 1, format_id)) @@ -186,16 +511,17 @@ class IqiyiIE(InfoExtractor): tail = tm + tvid param = { 'key': 'fvip', - 'src': self.md5_text('youtube-dl'), + 'src': md5_text('youtube-dl'), 'tvId': tvid, 'vid': video_id, 'vinfo': 1, 'tm': tm, - 'enc': self.md5_text(enc_key + tail), + 'enc': md5_text(enc_key + tail), 'qyid': _uuid, 'tn': random.random(), 'um': 0, - 'authkey': self.md5_text(self.md5_text('') + tail), + 'authkey': md5_text(md5_text('') + tail), + 'k_tag': 1, } api_url = 'http://cache.video.qiyi.com/vms' + '?' + \ @@ -205,14 +531,53 @@ class IqiyiIE(InfoExtractor): def get_enc_key(self, swf_url, video_id): # TODO: automatic key extraction - # last update at 2015-10-22 for Zombie::bite - # '7223c67061dbea1259d0ceb44f44b6d62288f4f80c972170de5201d2321060270e05'[2:66][0::2] - enc_key = '2c76de15dcb44bd28ff0927d50d31620' + # last update at 2016-01-22 for Zombie::bite + enc_key = '6ab6d0280511493ba85594779759d4ed' return enc_key + def _extract_playlist(self, webpage): + PAGE_SIZE = 50 + + links = re.findall( + r']+class="site-piclist_pic_link"[^>]+href="(http://www\.iqiyi\.com/.+\.html)"', + webpage) + if not links: + return + + album_id = self._search_regex( + r'albumId\s*:\s*(\d+),', webpage, 'album ID') + album_title = self._search_regex( + r'data-share-title="([^"]+)"', webpage, 'album title', fatal=False) + + entries = list(map(self.url_result, links)) + + # Start from 2 because links in the first page are already on webpage + for page_num in itertools.count(2): + pagelist_page = self._download_webpage( + 'http://cache.video.qiyi.com/jp/avlist/%s/%d/%d/' % (album_id, page_num, PAGE_SIZE), + album_id, + note='Download playlist page %d' % page_num, + errnote='Failed to download playlist page %d' % page_num) + pagelist = self._parse_json( + remove_start(pagelist_page, 'var tvInfoJs='), album_id) + vlist = pagelist['data']['vlist'] + for item in vlist: + entries.append(self.url_result(item['vurl'])) + if len(vlist) < PAGE_SIZE: + break + + return self.playlist_result(entries, album_id, album_title) + def _real_extract(self, url): webpage = self._download_webpage( url, 'temp_id', note='download video page') + + # There's no simple way to determine whether an URL is a playlist or not + # So detect it + playlist_result = self._extract_playlist(webpage) + if playlist_result: + return playlist_result + tvid = self._search_regex( r'data-player-tvid\s*=\s*[\'"](\d+)', webpage, 'tvid') video_id = self._search_regex( @@ -228,16 +593,13 @@ class IqiyiIE(InfoExtractor): if raw_data['code'] != 'A000000': raise ExtractorError('Unable to load data. Error code: ' + raw_data['code']) - if not raw_data['data']['vp']['tkl']: - raise ExtractorError('No support iQiqy VIP video') - data = raw_data['data'] title = data['vi']['vn'] # generate video_urls_dict video_urls_dict = self.construct_video_urls( - data, video_id, _uuid) + data, video_id, _uuid, tvid) # construct info entries = [] diff --git a/youtube_dl/extractor/ivi.py b/youtube_dl/extractor/ivi.py index 029878d..472d72b 100644 --- a/youtube_dl/extractor/ivi.py +++ b/youtube_dl/extractor/ivi.py @@ -7,6 +7,7 @@ import json from .common import InfoExtractor from ..utils import ( ExtractorError, + int_or_none, sanitized_Request, ) @@ -27,44 +28,36 @@ class IviIE(InfoExtractor): 'title': 'Иван Васильевич меняет профессию', 'description': 'md5:b924063ea1677c8fe343d8a72ac2195f', 'duration': 5498, - 'thumbnail': 'http://thumbs.ivi.ru/f20.vcp.digitalaccess.ru/contents/d/1/c3c885163a082c29bceeb7b5a267a6.jpg', + 'thumbnail': 're:^https?://.*\.jpg$', }, 'skip': 'Only works from Russia', }, - # Serial's serie + # Serial's series { 'url': 'http://www.ivi.ru/watch/dvoe_iz_lartsa/9549', 'md5': '221f56b35e3ed815fde2df71032f4b3e', 'info_dict': { 'id': '9549', 'ext': 'mp4', - 'title': 'Двое из ларца - Серия 1', + 'title': 'Двое из ларца - Дело Гольдберга (1 часть)', + 'series': 'Двое из ларца', + 'season': 'Сезон 1', + 'season_number': 1, + 'episode': 'Дело Гольдберга (1 часть)', + 'episode_number': 1, 'duration': 2655, - 'thumbnail': 'http://thumbs.ivi.ru/f15.vcp.digitalaccess.ru/contents/8/4/0068dc0677041f3336b7c2baad8fc0.jpg', + 'thumbnail': 're:^https?://.*\.jpg$', }, 'skip': 'Only works from Russia', } ] # Sorted by quality - _known_formats = ['MP4-low-mobile', 'MP4-mobile', 'FLV-lo', 'MP4-lo', 'FLV-hi', 'MP4-hi', 'MP4-SHQ'] - - # Sorted by size - _known_thumbnails = ['Thumb-120x90', 'Thumb-160', 'Thumb-640x480'] - - def _extract_description(self, html): - m = re.search(r'', html) - return m.group('description') if m is not None else None - - def _extract_comment_count(self, html): - m = re.search('(?s)
\s*Комментарии:\s*(?P\d+)\s*', html) - return int(m.group('commentcount')) if m is not None else 0 + _KNOWN_FORMATS = ['MP4-low-mobile', 'MP4-mobile', 'FLV-lo', 'MP4-lo', 'FLV-hi', 'MP4-hi', 'MP4-SHQ'] def _real_extract(self, url): video_id = self._match_id(url) - api_url = 'http://api.digitalaccess.ru/api/json/' - data = { 'method': 'da.content.get', 'params': [ @@ -76,11 +69,10 @@ class IviIE(InfoExtractor): ] } - request = sanitized_Request(api_url, json.dumps(data)) - - video_json_page = self._download_webpage( + request = sanitized_Request( + 'http://api.digitalaccess.ru/api/json/', json.dumps(data)) + video_json = self._download_json( request, video_id, 'Downloading video JSON') - video_json = json.loads(video_json_page) if 'error' in video_json: error = video_json['error'] @@ -95,35 +87,51 @@ class IviIE(InfoExtractor): formats = [{ 'url': x['url'], 'format_id': x['content_format'], - 'preference': self._known_formats.index(x['content_format']), - } for x in result['files'] if x['content_format'] in self._known_formats] + 'preference': self._KNOWN_FORMATS.index(x['content_format']), + } for x in result['files'] if x['content_format'] in self._KNOWN_FORMATS] self._sort_formats(formats) - if not formats: - raise ExtractorError('No media links available for %s' % video_id) - - duration = result['duration'] - compilation = result['compilation'] title = result['title'] + duration = int_or_none(result.get('duration')) + compilation = result.get('compilation') + episode = title if compilation else None + title = '%s - %s' % (compilation, title) if compilation is not None else title - previews = result['preview'] - previews.sort(key=lambda fmt: self._known_thumbnails.index(fmt['content_format'])) - thumbnail = previews[-1]['url'] if len(previews) > 0 else None + thumbnails = [{ + 'url': preview['url'], + 'id': preview.get('content_format'), + } for preview in result.get('preview', []) if preview.get('url')] + + webpage = self._download_webpage(url, video_id) + + season = self._search_regex( + r']+class="season active"[^>]*>]+>([^<]+)', + webpage, 'season', default=None) + season_number = int_or_none(self._search_regex( + r']+class="season active"[^>]*>]+data-season(?:-index)?="(\d+)"', + webpage, 'season number', default=None)) + + episode_number = int_or_none(self._search_regex( + r']+itemprop="episode"[^>]*>\s*]+itemprop="episodeNumber"[^>]+content="(\d+)', + webpage, 'episode number', default=None)) - video_page = self._download_webpage(url, video_id, 'Downloading video page') - description = self._extract_description(video_page) - comment_count = self._extract_comment_count(video_page) + description = self._og_search_description(webpage, default=None) or self._html_search_meta( + 'description', webpage, 'description', default=None) return { 'id': video_id, 'title': title, - 'thumbnail': thumbnail, + 'series': compilation, + 'season': season, + 'season_number': season_number, + 'episode': episode, + 'episode_number': episode_number, + 'thumbnails': thumbnails, 'description': description, 'duration': duration, - 'comment_count': comment_count, 'formats': formats, } @@ -149,8 +157,11 @@ class IviCompilationIE(InfoExtractor): }] def _extract_entries(self, html, compilation_id): - return [self.url_result('http://www.ivi.ru/watch/%s/%s' % (compilation_id, serie), 'Ivi') - for serie in re.findall(r'(?:[^<]+)' % compilation_id, html)] + return [ + self.url_result( + 'http://www.ivi.ru/watch/%s/%s' % (compilation_id, serie), IviIE.ie_key()) + for serie in re.findall( + r']+data-id="\1"' % compilation_id, html)] def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) @@ -158,7 +169,8 @@ class IviCompilationIE(InfoExtractor): season_id = mobj.group('seasonid') if season_id is not None: # Season link - season_page = self._download_webpage(url, compilation_id, 'Downloading season %s web page' % season_id) + season_page = self._download_webpage( + url, compilation_id, 'Downloading season %s web page' % season_id) playlist_id = '%s/season%s' % (compilation_id, season_id) playlist_title = self._html_search_meta('title', season_page, 'title') entries = self._extract_entries(season_page, compilation_id) @@ -166,8 +178,9 @@ class IviCompilationIE(InfoExtractor): compilation_page = self._download_webpage(url, compilation_id, 'Downloading compilation web page') playlist_id = compilation_id playlist_title = self._html_search_meta('title', compilation_page, 'title') - seasons = re.findall(r'[^<]+' % compilation_id, compilation_page) - if len(seasons) == 0: # No seasons in this compilation + seasons = re.findall( + r']*>([^<]+)', webpage, 'camera name', default=None) + + quality = qualities(self._QUALITIES) + + formats = [{ + 'url': 'https://streaming.ivideon.com/flv/live?%s' % compat_urllib_parse.urlencode({ + 'server': server_id, + 'camera': camera_id, + 'sessionId': 'demo', + 'q': quality(format_id), + }), + 'format_id': format_id, + 'ext': 'flv', + 'quality': quality(format_id), + } for format_id in self._QUALITIES] + self._sort_formats(formats) + + return { + 'id': server_id, + 'title': self._live_title(camera_name or server_id), + 'description': description, + 'is_live': True, + 'formats': formats, + } diff --git a/youtube_dl/extractor/jukebox.py b/youtube_dl/extractor/jukebox.py deleted file mode 100644 index da8068e..0000000 --- a/youtube_dl/extractor/jukebox.py +++ /dev/null @@ -1,59 +0,0 @@ -from __future__ import unicode_literals - -import re - -from .common import InfoExtractor -from ..utils import ( - ExtractorError, - RegexNotFoundError, - unescapeHTML, -) - - -class JukeboxIE(InfoExtractor): - _VALID_URL = r'^http://www\.jukebox?\..+?\/.+[,](?P[a-z0-9\-]+)\.html' - _TEST = { - 'url': 'http://www.jukebox.es/kosheen/videoclip,pride,r303r.html', - 'info_dict': { - 'id': 'r303r', - 'ext': 'flv', - 'title': 'Kosheen-En Vivo Pride', - 'uploader': 'Kosheen', - }, - } - - def _real_extract(self, url): - video_id = self._match_id(url) - - html = self._download_webpage(url, video_id) - iframe_url = unescapeHTML(self._search_regex(r'

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%0A&k?;S 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 delta 596561 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