2 from __future__ import unicode_literals
7 from ..compat import compat_urllib_parse_unquote
8 from ..utils import url_basename
9 from .common import InfoExtractor
11 class NprIE(InfoExtractor):
12 _VALID_URL = r'http://(?:www\.)?npr\.org/player/v2/mediaPlayer.html?.*id=(?P<id>[0-9]+)'
14 'url': 'http://www.npr.org/player/v2/mediaPlayer.html?id=449974205',
18 'title': 'New Music From Beach House, Chairlift, CMJ Discoveries And More'
23 def _real_extract(self, url):
24 mobj = re.match(self._VALID_URL, url)
25 video_id = mobj.group('id')
26 webpage_url = 'http://www.npr.org/player/v2/mediaPlayer.html?id=' + video_id
27 webpage = self._download_webpage(webpage_url, video_id)
28 key = 'MDAzMzQ2MjAyMDEyMzk4MTU1MDg3ZmM3MQ010'
29 xml_url = 'http://api.npr.org/query?id=%s&apiKey=%s' % (video_id, key)
30 json_url = 'http://api.npr.org/query?id=%s&apiKey=%s&format=json' % (video_id, key)
35 config = self._download_json(json_url, video_id)
37 content = config["list"]["story"]
39 album_title = config["list"]["story"][0]['song'][0]['album']['albumTitle']
40 print album_title['$text']
44 for x in key['audio']:
45 if x['type'] == 'standard':
47 song_duration = x["duration"]['$text']
48 song_title = x["title"]["$text"]
52 if type(x["format"][k]) is list:
53 for z in x["format"][k]:
54 formats.append({ 'format': z['type'],
58 formats.append({ 'format': k,
59 'url' : x["format"][k]['$text']
62 entries.append({ "title":song_title,
64 "duration": song_duration ,
68 return { '_type': 'playlist',
70 'title' : album_title,