aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/extractor/pokemon.py
diff options
context:
space:
mode:
Diffstat (limited to 'hypervideo_dl/extractor/pokemon.py')
-rw-r--r--hypervideo_dl/extractor/pokemon.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/hypervideo_dl/extractor/pokemon.py b/hypervideo_dl/extractor/pokemon.py
index 402b574..b411390 100644
--- a/hypervideo_dl/extractor/pokemon.py
+++ b/hypervideo_dl/extractor/pokemon.py
@@ -1,6 +1,7 @@
# coding: utf-8
from __future__ import unicode_literals
+import re
from .common import InfoExtractor
from ..utils import (
@@ -138,3 +139,42 @@ class PokemonWatchIE(InfoExtractor):
'episode': video_data.get('title'),
'episode_number': int_or_none(video_data.get('episode')),
})
+
+
+class PokemonSoundLibraryIE(InfoExtractor):
+ _VALID_URL = r'https?://soundlibrary\.pokemon\.co\.jp'
+
+ _TESTS = [{
+ 'url': 'https://soundlibrary.pokemon.co.jp/',
+ 'info_dict': {
+ 'title': 'Pokémon Diamond and Pearl Sound Tracks',
+ },
+ 'playlist_mincount': 149,
+ }]
+
+ def _real_extract(self, url):
+ musicbox_webpage = self._download_webpage(
+ 'https://soundlibrary.pokemon.co.jp/musicbox', None,
+ 'Downloading list of songs')
+ song_titles = [x.group(1) for x in re.finditer(r'<span>([^>]+?)</span><br/>をてもち曲に加えます。', musicbox_webpage)]
+ song_titles = song_titles[4::2]
+
+ # each songs don't have permalink; instead we return all songs at once
+ song_entries = [{
+ 'id': f'pokemon-soundlibrary-{song_id}',
+ 'url': f'https://soundlibrary.pokemon.co.jp/api/assets/signing/sounds/wav/{song_id}.wav',
+ # note: the server always serves MP3 files, despite its extension of the URL above
+ 'ext': 'mp3',
+ 'acodec': 'mp3',
+ 'vcodec': 'none',
+ 'title': song_title,
+ 'track': song_title,
+ 'artist': 'Nintendo / Creatures Inc. / GAME FREAK inc.',
+ 'uploader': 'Pokémon',
+ 'release_year': 2006,
+ 'release_date': '20060928',
+ 'track_number': song_id,
+ 'album': 'Pokémon Diamond and Pearl',
+ } for song_id, song_title in enumerate(song_titles, 1)]
+
+ return self.playlist_result(song_entries, playlist_title='Pokémon Diamond and Pearl Sound Tracks')