]> jfr.im git - yt-dlp.git/commitdiff
[extractor/hypergryph] Add extractor (#6094)
authorHobbyistDev <redacted>
Fri, 17 Feb 2023 04:03:04 +0000 (13:03 +0900)
committerGitHub <redacted>
Fri, 17 Feb 2023 04:03:04 +0000 (09:33 +0530)
Authored by: HobbyistDev, bashonly
Closes #6052

yt_dlp/extractor/_extractors.py
yt_dlp/extractor/hypergryph.py [new file with mode: 0644]

index 6bba255068636f232c64b79224e31c5ed34c5673..70cb82277346d94d3dbf8eefea96cf87f65b7561 100644 (file)
     HungamaAlbumPlaylistIE,
 )
 from .hypem import HypemIE
+from .hypergryph import MonsterSirenHypergryphMusicIE
 from .hytale import HytaleIE
 from .icareus import IcareusIE
 from .ichinanalive import (
diff --git a/yt_dlp/extractor/hypergryph.py b/yt_dlp/extractor/hypergryph.py
new file mode 100644 (file)
index 0000000..9ca6cae
--- /dev/null
@@ -0,0 +1,32 @@
+from .common import InfoExtractor
+from ..utils import js_to_json, traverse_obj
+
+
+class MonsterSirenHypergryphMusicIE(InfoExtractor):
+    _VALID_URL = r'https?://monster-siren\.hypergryph\.com/music/(?P<id>\d+)'
+    _TESTS = [{
+        'url': 'https://monster-siren.hypergryph.com/music/514562',
+        'info_dict': {
+            'id': '514562',
+            'ext': 'wav',
+            'artist': ['塞壬唱片-MSR'],
+            'album': 'Flame Shadow',
+            'title': 'Flame Shadow',
+        }
+    }]
+
+    def _real_extract(self, url):
+        audio_id = self._match_id(url)
+        webpage = self._download_webpage(url, audio_id)
+        json_data = self._search_json(
+            r'window\.g_initialProps\s*=', webpage, 'data', audio_id, transform_source=js_to_json)
+
+        return {
+            'id': audio_id,
+            'title': traverse_obj(json_data, ('player', 'songDetail', 'name')),
+            'url': traverse_obj(json_data, ('player', 'songDetail', 'sourceUrl')),
+            'ext': 'wav',
+            'vcodec': 'none',
+            'artist': traverse_obj(json_data, ('player', 'songDetail', 'artists')),
+            'album': traverse_obj(json_data, ('musicPlay', 'albumDetail', 'name'))
+        }