Hello community,
here is the log from the commit of package youtube-dl for openSUSE:Factory checked in at 2019-04-02 09:23:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/youtube-dl (Old)
and /work/SRC/openSUSE:Factory/.youtube-dl.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "youtube-dl"
Tue Apr 2 09:23:52 2019 rev:100 rq:690471 version:2019.04.01
Changes:
--------
--- /work/SRC/openSUSE:Factory/youtube-dl/python-youtube-dl.changes 2019-03-18 10:43:53.319111835 +0100
+++ /work/SRC/openSUSE:Factory/.youtube-dl.new.25356/python-youtube-dl.changes 2019-04-02 09:23:59.656777897 +0200
@@ -1,0 +2,18 @@
+Mon Apr 1 19:23:11 UTC 2019 - Sebastien CHAVAUX
+
+- Update to new upstream release 2019.04.01
+ * [utils] Improve int_or_none and float_or_none (#20403)
+ * Check for valid --min-sleep-interval when --max-sleep-interval is specified
+ (#20435)
+ * [weibo] Extend URL regular expression (#20496)
+ * [xhamster] Add support for xhamster.one (#20508)
+ * [mediasite] Add support for catalogs (#20507)
+ * [teamtreehouse] Add support for teamtreehouse.com (#9836)
+ * [ina] Add support for audio URLs
+ * [ina] Improve extraction
+ * [cwtv] Fix episode number extraction (#20461)
+ * [npo] Improve DRM detection
+ * [pornhub] Add support for DASH formats (#20403)
+ * [svtplay] Update API endpoint (#20430)
+
+-------------------------------------------------------------------
youtube-dl.changes: same change
Old:
----
youtube-dl-2019.03.18.tar.gz
youtube-dl-2019.03.18.tar.gz.sig
New:
----
youtube-dl-2019.04.01.tar.gz
youtube-dl-2019.04.01.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.BnMpi3/_old 2019-04-02 09:24:00.976778781 +0200
+++ /var/tmp/diff_new_pack.BnMpi3/_new 2019-04-02 09:24:00.980778784 +0200
@@ -19,7 +19,7 @@
%define modname youtube-dl
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-youtube-dl
-Version: 2019.03.18
+Version: 2019.04.01
Release: 0
Summary: A python module for downloading from video sites for offline watching
License: SUSE-Public-Domain AND CC-BY-SA-3.0
++++++ youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.BnMpi3/_old 2019-04-02 09:24:01.020778811 +0200
+++ /var/tmp/diff_new_pack.BnMpi3/_new 2019-04-02 09:24:01.024778814 +0200
@@ -17,7 +17,7 @@
Name: youtube-dl
-Version: 2019.03.18
+Version: 2019.04.01
Release: 0
Summary: A tool for downloading from video sites for offline watching
License: SUSE-Public-Domain AND CC-BY-SA-3.0
++++++ youtube-dl-2019.03.18.tar.gz -> youtube-dl-2019.04.01.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/ChangeLog new/youtube-dl/ChangeLog
--- old/youtube-dl/ChangeLog 2019-03-17 19:36:38.000000000 +0100
+++ new/youtube-dl/ChangeLog 2019-04-01 18:55:14.000000000 +0200
@@ -1,3 +1,23 @@
+version 2019.04.01
+
+Core
+* [utils] Improve int_or_none and float_or_none (#20403)
+* Check for valid --min-sleep-interval when --max-sleep-interval is specified
+ (#20435)
+
+Extractors
++ [weibo] Extend URL regular expression (#20496)
++ [xhamster] Add support for xhamster.one (#20508)
++ [mediasite] Add support for catalogs (#20507)
++ [teamtreehouse] Add support for teamtreehouse.com (#9836)
++ [ina] Add support for audio URLs
+* [ina] Improve extraction
+* [cwtv] Fix episode number extraction (#20461)
+* [npo] Improve DRM detection
++ [pornhub] Add support for DASH formats (#20403)
+* [svtplay] Update API endpoint (#20430)
+
+
version 2019.03.18
Core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/docs/supportedsites.md new/youtube-dl/docs/supportedsites.md
--- old/youtube-dl/docs/supportedsites.md 2019-03-17 19:36:41.000000000 +0100
+++ new/youtube-dl/docs/supportedsites.md 2019-04-01 18:55:17.000000000 +0200
@@ -488,6 +488,7 @@
- **Medialaan**
- **Mediaset**
- **Mediasite**
+ - **MediasiteCatalog**
- **Medici**
- **megaphone.fm**: megaphone.fm embedded players
- **Meipai**: 美拍
@@ -869,6 +870,7 @@
- **teachertube:user:collection**: teachertube.com user and collection videos
- **TeachingChannel**
- **Teamcoco**
+ - **TeamTreeHouse**
- **TechTalks**
- **techtv.mit.edu**
- **ted**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/test/test_utils.py new/youtube-dl/test/test_utils.py
--- old/youtube-dl/test/test_utils.py 2019-03-08 21:03:06.000000000 +0100
+++ new/youtube-dl/test/test_utils.py 2019-03-17 20:02:05.000000000 +0100
@@ -33,11 +33,13 @@
ExtractorError,
find_xpath_attr,
fix_xml_ampersands,
+ float_or_none,
get_element_by_class,
get_element_by_attribute,
get_elements_by_class,
get_elements_by_attribute,
InAdvancePagedList,
+ int_or_none,
intlist_to_bytes,
is_html,
js_to_json,
@@ -468,6 +470,21 @@
shell_quote(args),
"""ffmpeg -i 'ñ€ß'"'"'.mp4'""" if compat_os_name != 'nt' else '''ffmpeg -i "ñ€ß'.mp4"''')
+ def test_float_or_none(self):
+ self.assertEqual(float_or_none('42.42'), 42.42)
+ self.assertEqual(float_or_none('42'), 42.0)
+ self.assertEqual(float_or_none(''), None)
+ self.assertEqual(float_or_none(None), None)
+ self.assertEqual(float_or_none([]), None)
+ self.assertEqual(float_or_none(set()), None)
+
+ def test_int_or_none(self):
+ self.assertEqual(int_or_none('42'), 42)
+ self.assertEqual(int_or_none(''), None)
+ self.assertEqual(int_or_none(None), None)
+ self.assertEqual(int_or_none([]), None)
+ self.assertEqual(int_or_none(set()), None)
+
def test_str_to_int(self):
self.assertEqual(str_to_int('123,456'), 123456)
self.assertEqual(str_to_int('123.456'), 123456)
Binary files old/youtube-dl/youtube-dl and new/youtube-dl/youtube-dl differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/__init__.py new/youtube-dl/youtube_dl/__init__.py
--- old/youtube-dl/youtube_dl/__init__.py 2019-03-08 21:03:06.000000000 +0100
+++ new/youtube-dl/youtube_dl/__init__.py 2019-03-17 20:02:05.000000000 +0100
@@ -166,6 +166,8 @@
if opts.max_sleep_interval is not None:
if opts.max_sleep_interval < 0:
parser.error('max sleep interval must be positive or 0')
+ if opts.sleep_interval is None:
+ parser.error('min sleep interval must be specified, use --min-sleep-interval')
if opts.max_sleep_interval < opts.sleep_interval:
parser.error('max sleep interval must be greater than or equal to min sleep interval')
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/cwtv.py new/youtube-dl/youtube_dl/extractor/cwtv.py
--- old/youtube-dl/youtube_dl/extractor/cwtv.py 2019-03-08 21:02:58.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/cwtv.py 2019-03-17 20:02:05.000000000 +0100
@@ -79,7 +79,7 @@
season = str_or_none(video_data.get('season'))
episode = str_or_none(video_data.get('episode'))
if episode and season:
- episode = episode.lstrip(season)
+ episode = episode[len(season):]
return {
'_type': 'url_transparent',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/extractors.py new/youtube-dl/youtube_dl/extractor/extractors.py
--- old/youtube-dl/youtube_dl/extractor/extractors.py 2019-03-08 21:03:06.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/extractors.py 2019-03-17 20:02:05.000000000 +0100
@@ -632,7 +632,10 @@
from .matchtv import MatchTVIE
from .mdr import MDRIE
from .mediaset import MediasetIE
-from .mediasite import MediasiteIE
+from .mediasite import (
+ MediasiteIE,
+ MediasiteCatalogIE,
+)
from .medici import MediciIE
from .megaphone import MegaphoneIE
from .meipai import MeipaiIE
@@ -1114,6 +1117,7 @@
)
from .teachingchannel import TeachingChannelIE
from .teamcoco import TeamcocoIE
+from .teamtreehouse import TeamTreeHouseIE
from .techtalks import TechTalksIE
from .ted import TEDIE
from .tele5 import Tele5IE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/ina.py new/youtube-dl/youtube_dl/extractor/ina.py
--- old/youtube-dl/youtube_dl/extractor/ina.py 2019-03-08 21:02:58.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/ina.py 2019-03-17 20:02:05.000000000 +0100
@@ -1,36 +1,83 @@
# coding: utf-8
from __future__ import unicode_literals
-import re
-
from .common import InfoExtractor
+from ..utils import (
+ determine_ext,
+ int_or_none,
+ strip_or_none,
+ xpath_attr,
+ xpath_text,
+)
class InaIE(InfoExtractor):
- _VALID_URL = r'https?://(?:www\.)?ina\.fr/video/(?P<id>I?[A-Z0-9]+)'
- _TEST = {
+ _VALID_URL = r'https?://(?:www\.)?ina\.fr/(?:video|audio)/(?P<id>[A-Z0-9_]+)'
+ _TESTS = [{
'url': 'http://www.ina.fr/video/I12055569/francois-hollande-je-crois-que-c-est-clair...',
'md5': 'a667021bf2b41f8dc6049479d9bb38a3',
'info_dict': {
'id': 'I12055569',
'ext': 'mp4',
'title': 'François Hollande "Je crois que c\'est clair"',
+ 'description': 'md5:3f09eb072a06cb286b8f7e4f77109663',
}
- }
+ }, {
+ 'url': 'https://www.ina.fr/video/S806544_001/don-d-organes-des-avancees-mais-d-impor...',
+ 'only_matching': True,
+ }, {
+ 'url': 'https://www.ina.fr/audio/P16173408',
+ 'only_matching': True,
+ }, {
+ 'url': 'https://www.ina.fr/video/P16173408-video.html',
+ 'only_matching': True,
+ }]
def _real_extract(self, url):
- mobj = re.match(self._VALID_URL, url)
-
- video_id = mobj.group('id')
- mrss_url = 'http://player.ina.fr/notices/%s.mrss' % video_id
- info_doc = self._download_xml(mrss_url, video_id)
-
- self.report_extraction(video_id)
-
- video_url = info_doc.find('.//{http://search.yahoo.com/mrss/}player').attrib['url']
+ video_id = self._match_id(url)
+ info_doc = self._download_xml(
+ 'http://player.ina.fr/notices/%s.mrss' % video_id, video_id)
+ item = info_doc.find('channel/item')
+ title = xpath_text(item, 'title', fatal=True)
+ media_ns_xpath = lambda x: self._xpath_ns(x, 'http://search.yahoo.com/mrss/')
+ content = item.find(media_ns_xpath('content'))
+
+ get_furl = lambda x: xpath_attr(content, media_ns_xpath(x), 'url')
+ formats = []
+ for q, w, h in (('bq', 400, 300), ('mq', 512, 384), ('hq', 768, 576)):
+ q_url = get_furl(q)
+ if not q_url:
+ continue
+ formats.append({
+ 'format_id': q,
+ 'url': q_url,
+ 'width': w,
+ 'height': h,
+ })
+ if not formats:
+ furl = get_furl('player') or content.attrib['url']
+ ext = determine_ext(furl)
+ formats = [{
+ 'url': furl,
+ 'vcodec': 'none' if ext == 'mp3' else None,
+ 'ext': ext,
+ }]
+
+ thumbnails = []
+ for thumbnail in content.findall(media_ns_xpath('thumbnail')):
+ thumbnail_url = thumbnail.get('url')
+ if not thumbnail_url:
+ continue
+ thumbnails.append({
+ 'url': thumbnail_url,
+ 'height': int_or_none(thumbnail.get('height')),
+ 'width': int_or_none(thumbnail.get('width')),
+ })
return {
'id': video_id,
- 'url': video_url,
- 'title': info_doc.find('.//title').text,
+ 'formats': formats,
+ 'title': title,
+ 'description': strip_or_none(xpath_text(item, 'description')),
+ 'thumbnails': thumbnails,
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/mediasite.py new/youtube-dl/youtube_dl/extractor/mediasite.py
--- old/youtube-dl/youtube_dl/extractor/mediasite.py 2019-03-08 21:02:58.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/mediasite.py 2019-03-17 20:02:05.000000000 +0100
@@ -13,6 +13,8 @@
ExtractorError,
float_or_none,
mimetype2ext,
+ str_or_none,
+ try_get,
unescapeHTML,
unsmuggle_url,
url_or_none,
@@ -20,8 +22,11 @@
)
+_ID_RE = r'[0-9a-f]{32,34}'
+
+
class MediasiteIE(InfoExtractor):
- _VALID_URL = r'(?xi)https?://[^/]+/Mediasite/(?:Play|Showcase/(?:default|livebroadcast)/Presentation)/(?P<id>[0-9a-f]{32,34})(?P<query>\?[^#]+|)'
+ _VALID_URL = r'(?xi)https?://[^/]+/Mediasite/(?:Play|Showcase/(?:default|livebroadcast)/Presentation)/(?P<id>%s)(?P<query>\?[^#]+|)' % _ID_RE
_TESTS = [
{
'url': 'https://hitsmediaweb.h-its.org/mediasite/Play/2db6c271681e4f199af3c60d1f8286...',
@@ -109,7 +114,7 @@
return [
unescapeHTML(mobj.group('url'))
for mobj in re.finditer(
- r'(?xi)