[PokemonSoundLibrary] Add extractor (#3001)

Authored by: Lesmiscore
This commit is contained in:
Lesmiscore (Naoya Ozaki) 2022-03-10 22:24:50 +09:00 committed by GitHub
parent 63b2f88bc7
commit 24e3d87431
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 0 deletions

View file

@ -1225,6 +1225,7 @@ from .podomatic import PodomaticIE
from .pokemon import (
PokemonIE,
PokemonWatchIE,
PokemonSoundLibraryIE,
)
from .pokergo import (
PokerGoIE,

View file

@ -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')