projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #6963 from remitamine/appledaily
[youtube-dl]
/
youtube_dl
/
extractor
/
eighttracks.py
diff --git
a/youtube_dl/extractor/eighttracks.py
b/youtube_dl/extractor/eighttracks.py
index 9df2141c3166be943c80718ddd5e40b4b2ee0b24..0b61ea0ba60218043156d4f90680ff0348e827c7 100644
(file)
--- a/
youtube_dl/extractor/eighttracks.py
+++ b/
youtube_dl/extractor/eighttracks.py
@@
-3,12
+3,12
@@
from __future__ import unicode_literals
import json
import random
import json
import random
-import re
-import time
from .common import InfoExtractor
from ..compat import (
compat_str,
from .common import InfoExtractor
from ..compat import (
compat_str,
+)
+from ..utils import (
ExtractorError,
)
ExtractorError,
)
@@
-102,26
+102,28
@@
class EightTracksIE(InfoExtractor):
}
def _real_extract(self, url):
}
def _real_extract(self, url):
- mobj = re.match(self._VALID_URL, url)
- playlist_id = mobj.group('id')
+ playlist_id = self._match_id(url)
webpage = self._download_webpage(url, playlist_id)
webpage = self._download_webpage(url, playlist_id)
- json_like = self._search_regex(
- r"(?s)PAGE.mix = (.*?);\n", webpage, 'trax information')
- data = json.loads(json_like)
+ data = self._parse_json(
+ self._search_regex(
+ r"(?s)PAGE\.mix\s*=\s*({.+?});\n", webpage, 'trax information'),
+ playlist_id)
session = str(random.randint(0, 1000000000))
mix_id = data['id']
track_count = data['tracks_count']
duration = data['duration']
session = str(random.randint(0, 1000000000))
mix_id = data['id']
track_count = data['tracks_count']
duration = data['duration']
- avg_song_duration = duration / track_count
+ avg_song_duration = float(duration) / track_count
+ # duration is sometimes negative, use predefined avg duration
+ if avg_song_duration <= 0:
+ avg_song_duration = 300
first_url = 'http://8tracks.com/sets/%s/play?player=sm&mix_id=%s&format=jsonh' % (session, mix_id)
next_url = first_url
entries = []
for i in range(track_count):
first_url = 'http://8tracks.com/sets/%s/play?player=sm&mix_id=%s&format=jsonh' % (session, mix_id)
next_url = first_url
entries = []
for i in range(track_count):
-
api_json = None
download_tries = 0
api_json = None
download_tries = 0
@@
-136,7
+138,7
@@
class EightTracksIE(InfoExtractor):
raise
else:
download_tries += 1
raise
else:
download_tries += 1
-
time.sleep(avg_song_duration
)
+
self._sleep(avg_song_duration, playlist_id
)
api_data = json.loads(api_json)
track_data = api_data['set']['track']
api_data = json.loads(api_json)
track_data = api_data['set']['track']