hypergryph.py 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. from .common import InfoExtractor
  2. from ..utils import js_to_json, traverse_obj
  3. class MonsterSirenHypergryphMusicIE(InfoExtractor):
  4. _VALID_URL = r'https?://monster-siren\.hypergryph\.com/music/(?P<id>\d+)'
  5. _TESTS = [{
  6. 'url': 'https://monster-siren.hypergryph.com/music/514562',
  7. 'info_dict': {
  8. 'id': '514562',
  9. 'ext': 'wav',
  10. 'artists': ['塞壬唱片-MSR'],
  11. 'album': 'Flame Shadow',
  12. 'title': 'Flame Shadow',
  13. },
  14. }]
  15. def _real_extract(self, url):
  16. audio_id = self._match_id(url)
  17. webpage = self._download_webpage(url, audio_id)
  18. json_data = self._search_json(
  19. r'window\.g_initialProps\s*=', webpage, 'data', audio_id, transform_source=js_to_json)
  20. return {
  21. 'id': audio_id,
  22. 'title': traverse_obj(json_data, ('player', 'songDetail', 'name')),
  23. 'url': traverse_obj(json_data, ('player', 'songDetail', 'sourceUrl')),
  24. 'ext': 'wav',
  25. 'vcodec': 'none',
  26. 'artists': traverse_obj(json_data, ('player', 'songDetail', 'artists', ...)),
  27. 'album': traverse_obj(json_data, ('musicPlay', 'albumDetail', 'name')),
  28. }