From b74c43318d183dc55ff47e169bdebbfc16f7c176 Mon Sep 17 00:00:00 2001 From: Timmy Date: Sat, 14 Apr 2018 17:04:42 +0200 Subject: [PATCH 1/3] [vine] Fix extraction (closes #15514) --- youtube_dl/extractor/vine.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/youtube_dl/extractor/vine.py b/youtube_dl/extractor/vine.py index 46950d3a1..1fc647b6a 100644 --- a/youtube_dl/extractor/vine.py +++ b/youtube_dl/extractor/vine.py @@ -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.get('posts') entries = [ - self.url_result(e['permalinkUrl'], 'Vine') for e in timeline_data] + self.url_result('https://vine.co/v/%s' % post_id) + for post_id in posts] return self.playlist_result(entries, user) From aadca0afc7b9c3747c64c7fda434dfb2b9673a63 Mon Sep 17 00:00:00 2001 From: Timmy Date: Sat, 14 Apr 2018 19:23:15 +0200 Subject: [PATCH 2/3] Update code to match coding conventions --- youtube_dl/extractor/vine.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/vine.py b/youtube_dl/extractor/vine.py index 1fc647b6a..10c768912 100644 --- a/youtube_dl/extractor/vine.py +++ b/youtube_dl/extractor/vine.py @@ -140,7 +140,7 @@ class VineUserIE(InfoExtractor): user_id = profile_data['data']['userId'] user_archive = self._download_json( 'https://archive.vine.co/profiles/%s.json' % user_id, user_id) - posts = user_archive.get('posts') + posts = user_archive['posts'] entries = [ self.url_result('https://vine.co/v/%s' % post_id) for post_id in posts] From 1e90637e9cd9a758f8b3504c1243071c25660c2b Mon Sep 17 00:00:00 2001 From: Timmy Date: Sat, 14 Apr 2018 19:47:46 +0200 Subject: [PATCH 3/3] Specify information extractor --- youtube_dl/extractor/vine.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/vine.py b/youtube_dl/extractor/vine.py index 10c768912..08ddffa66 100644 --- a/youtube_dl/extractor/vine.py +++ b/youtube_dl/extractor/vine.py @@ -142,6 +142,6 @@ class VineUserIE(InfoExtractor): 'https://archive.vine.co/profiles/%s.json' % user_id, user_id) posts = user_archive['posts'] entries = [ - self.url_result('https://vine.co/v/%s' % post_id) + self.url_result('https://vine.co/v/%s' % post_id, 'Vine') for post_id in posts] return self.playlist_result(entries, user)