aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHobbyistDev <105957301+HobbyistDev@users.noreply.github.com>2023-02-17 13:03:04 +0900
committerGitHub <noreply@github.com>2023-02-17 09:33:04 +0530
commit31c279a2a2c2ef402a9e6dad9992b310d16439a6 (patch)
tree961e7f2bd43f3fe768b3b425830296eed6291c10
parenta4ad59ff2ded208bf33f6fe07299a3449eadccdc (diff)
downloadhypervideo-pre-31c279a2a2c2ef402a9e6dad9992b310d16439a6.tar.lz
hypervideo-pre-31c279a2a2c2ef402a9e6dad9992b310d16439a6.tar.xz
hypervideo-pre-31c279a2a2c2ef402a9e6dad9992b310d16439a6.zip
[extractor/hypergryph] Add extractor (#6094)
Authored by: HobbyistDev, bashonly Closes #6052
-rw-r--r--yt_dlp/extractor/_extractors.py1
-rw-r--r--yt_dlp/extractor/hypergryph.py32
2 files changed, 33 insertions, 0 deletions
diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py
index 6bba25506..70cb82277 100644
--- a/yt_dlp/extractor/_extractors.py
+++ b/yt_dlp/extractor/_extractors.py
@@ -747,6 +747,7 @@ from .hungama import (
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
index 000000000..9ca6caebc
--- /dev/null
+++ b/yt_dlp/extractor/hypergryph.py
@@ -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'))
+ }