[vine:user] Fix extraction (closes #15514)
authorTimmy <hello@timmy.ws>
Sat, 14 Apr 2018 15:04:42 +0000 (17:04 +0200)
committerSergey M․ <dstftw@gmail.com>
Sun, 15 Apr 2018 15:46:30 +0000 (22:46 +0700)
youtube_dl/extractor/vine.py

index 46950d3a1499b20bec50a9482d47a0ebdbbfb8b3..08ddffa66e0df85f34a0b4119cb95173210eee07 100644 (file)
@@ -2,7 +2,6 @@
 from __future__ import unicode_literals
 
 import re
-import itertools
 
 from .common import InfoExtractor
 from ..utils import (
@@ -116,14 +115,14 @@ class VineUserIE(InfoExtractor):
     _VINE_BASE_URL = 'https://vine.co/'
     _TESTS = [
         {
-            'url': 'https://vine.co/Visa',
+            'url': 'https://vine.co/itsruthb',
             'info_dict': {
-                'id': 'Visa',
+                'id': 'itsruthb',
             },
-            'playlist_mincount': 46,
+            'playlist_mincount': 611,
         },
         {
-            'url': 'https://vine.co/u/941705360593584128',
+            'url': 'https://vine.co/u/942914934646415360',
             'only_matching': True,
         },
     ]
@@ -139,16 +138,10 @@ class VineUserIE(InfoExtractor):
             profile_url, user, note='Downloading user profile data')
 
         user_id = profile_data['data']['userId']
-        timeline_data = []
-        for pagenum in itertools.count(1):
-            timeline_url = '%sapi/timelines/users/%s?page=%s&size=100' % (
-                self._VINE_BASE_URL, user_id, pagenum)
-            timeline_page = self._download_json(
-                timeline_url, user, note='Downloading page %d' % pagenum)
-            timeline_data.extend(timeline_page['data']['records'])
-            if timeline_page['data']['nextPage'] is None:
-                break
-
+        user_archive = self._download_json(
+            'https://archive.vine.co/profiles/%s.json' % user_id, user_id)
+        posts = user_archive['posts']
         entries = [
-            self.url_result(e['permalinkUrl'], 'Vine') for e in timeline_data]
+            self.url_result('https://vine.co/v/%s' % post_id, 'Vine')
+            for post_id in posts]
         return self.playlist_result(entries, user)