Merge remote-tracking branch 'origin/master'
This commit is contained in:
		| @@ -28,7 +28,8 @@ from youtube_dl.extractor import ( | ||||
|     BandcampAlbumIE, | ||||
|     SmotriCommunityIE, | ||||
|     SmotriUserIE, | ||||
|     IviCompilationIE | ||||
|     IviCompilationIE, | ||||
|     ImdbListIE, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -188,6 +189,15 @@ class TestPlaylists(unittest.TestCase): | ||||
|         self.assertEqual(result['title'], u'Дежурный ангел (2010 - 2012) 2 сезон') | ||||
|         self.assertTrue(len(result['entries']) >= 20) | ||||
|          | ||||
|     def test_imdb_list(self): | ||||
|         dl = FakeYDL() | ||||
|         ie = ImdbListIE(dl) | ||||
|         result = ie.extract('http://www.imdb.com/list/sMjedvGDd8U') | ||||
|         self.assertIsPlaylist(result) | ||||
|         self.assertEqual(result['id'], u'sMjedvGDd8U') | ||||
|         self.assertEqual(result['title'], u'Animated and Family Films') | ||||
|         self.assertTrue(len(result['entries']) >= 48) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|   | ||||
| @@ -1017,7 +1017,7 @@ class YoutubeDL(object): | ||||
|     def list_formats(self, info_dict): | ||||
|         def format_note(fdict): | ||||
|             res = u'' | ||||
|             if f.get('ext') in ['f4f', 'f4m']: | ||||
|             if fdict.get('ext') in ['f4f', 'f4m']: | ||||
|                 res += u'(unsupported) ' | ||||
|             if fdict.get('format_note') is not None: | ||||
|                 res += fdict['format_note'] + u' ' | ||||
|   | ||||
| @@ -80,7 +80,10 @@ from .hotnewhiphop import HotNewHipHopIE | ||||
| from .howcast import HowcastIE | ||||
| from .hypem import HypemIE | ||||
| from .ign import IGNIE, OneUPIE | ||||
| from .imdb import ImdbIE | ||||
| from .imdb import ( | ||||
|     ImdbIE, | ||||
|     ImdbListIE | ||||
| ) | ||||
| from .ina import InaIE | ||||
| from .infoq import InfoQIE | ||||
| from .instagram import InstagramIE | ||||
|   | ||||
| @@ -13,8 +13,8 @@ class DreiSatIE(InfoExtractor): | ||||
|     _VALID_URL = r'(?:http://)?(?:www\.)?3sat\.de/mediathek/index\.php\?(?:(?:mode|display)=[^&]+&)*obj=(?P<id>[0-9]+)$' | ||||
|     _TEST = { | ||||
|         u"url": u"http://www.3sat.de/mediathek/index.php?obj=36983", | ||||
|         u'file': u'36983.webm', | ||||
|         u'md5': u'57c97d0469d71cf874f6815aa2b7c944', | ||||
|         u'file': u'36983.mp4', | ||||
|         u'md5': u'9dcfe344732808dbfcc901537973c922', | ||||
|         u'info_dict': { | ||||
|             u"title": u"Kaffeeland Schweiz", | ||||
|             u"description": u"Über 80 Kaffeeröstereien liefern in der Schweiz das Getränk, in das das Land so vernarrt ist: Mehr als 1000 Tassen trinkt ein Schweizer pro Jahr. SCHWEIZWEIT nimmt die Kaffeekultur unter die...",  | ||||
|   | ||||
| @@ -55,3 +55,32 @@ class ImdbIE(InfoExtractor): | ||||
|             'description': descr, | ||||
|             'thumbnail': format_info['slate'], | ||||
|         } | ||||
|  | ||||
| class ImdbListIE(InfoExtractor): | ||||
|     IE_NAME = u'imdb:list' | ||||
|     IE_DESC = u'Internet Movie Database lists' | ||||
|     _VALID_URL = r'http://www\.imdb\.com/list/(?P<id>[\da-zA-Z_-]{11})' | ||||
|      | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         list_id = mobj.group('id') | ||||
|          | ||||
|         # RSS XML is sometimes malformed | ||||
|         rss = self._download_webpage('http://rss.imdb.com/list/%s' % list_id, list_id, u'Downloading list RSS') | ||||
|         list_title = self._html_search_regex(r'<title>(.*?)</title>', rss, u'list title') | ||||
|          | ||||
|         # Export is independent of actual author_id, but returns 404 if no author_id is provided. | ||||
|         # However, passing dummy author_id seems to be enough. | ||||
|         csv = self._download_webpage('http://www.imdb.com/list/export?list_id=%s&author_id=ur00000000' % list_id, | ||||
|                                      list_id, u'Downloading list CSV') | ||||
|          | ||||
|         entries = [] | ||||
|         for item in csv.split('\n')[1:]: | ||||
|             cols = item.split(',') | ||||
|             if len(cols) < 2: | ||||
|                 continue | ||||
|             item_id = cols[1][1:-1] | ||||
|             if item_id.startswith('vi'): | ||||
|                 entries.append(self.url_result('http://www.imdb.com/video/imdb/%s' % item_id, 'Imdb')) | ||||
|          | ||||
|         return self.playlist_result(entries, list_id, list_title) | ||||
| @@ -194,6 +194,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|         '137': {'ext': 'mp4', 'height': 1080, 'resolution': '1080p', 'format_note': 'DASH video', 'preference': -40}, | ||||
|         '138': {'ext': 'mp4', 'height': 1081, 'resolution': '>1080p', 'format_note': 'DASH video', 'preference': -40}, | ||||
|         '160': {'ext': 'mp4', 'height': 192, 'resolution': '192p', 'format_note': 'DASH video', 'preference': -40}, | ||||
|         '264': {'ext': 'mp4', 'height': 1080, 'resolution': '1080p', 'format_note': 'DASH video', 'preference': -40}, | ||||
|  | ||||
|         # Dash mp4 audio | ||||
|         '139': {'ext': 'm4a', 'format_note': 'DASH audio', 'vcodec': 'none', 'abr': 48, 'preference': -50}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister