]> jfr.im git - yt-dlp.git/commitdiff
[MuseScore] Add Extractor (#918)
authorAshish Gupta <redacted>
Sat, 11 Sep 2021 13:21:11 +0000 (18:51 +0530)
committerGitHub <redacted>
Sat, 11 Sep 2021 13:21:11 +0000 (18:51 +0530)
Closes #911
Authored by: Ashish0804

.gitignore
yt_dlp/extractor/extractors.py
yt_dlp/extractor/musescore.py [new file with mode: 0644]

index 619d6ba98a62b56c5ac88a3854d112092de1add0..443e637aee44b525ef6be8ccc17e694c36daf477 100644 (file)
@@ -2,7 +2,7 @@
 *.conf
 *.spec
 cookies
-cookies.txt
+*cookies.txt
 
 # Downloaded
 *.srt
index ee368b7b1244ec1780127ffe098de11575cdee50..c56bf5b2be96db06bb71a92241b4c900b097a51d 100644 (file)
     MTVItaliaProgrammaIE,
 )
 from .muenchentv import MuenchenTVIE
+from .musescore import MuseScoreIE
 from .mwave import MwaveIE, MwaveMeetGreetIE
 from .mxplayer import (
     MxplayerIE,
diff --git a/yt_dlp/extractor/musescore.py b/yt_dlp/extractor/musescore.py
new file mode 100644 (file)
index 0000000..dcd2638
--- /dev/null
@@ -0,0 +1,67 @@
+# coding: utf-8
+from __future__ import unicode_literals
+
+from .common import InfoExtractor
+
+
+class MuseScoreIE(InfoExtractor):
+    _VALID_URL = r'(?:https?://)(?:www\.)?musescore\.com/(?:user/\d+|[^/]+)(?:/scores)?/(?P<id>[^#&?]+)'
+    _TESTS = [{
+        'url': 'https://musescore.com/user/73797/scores/142975',
+        'info_dict': {
+            'id': '142975',
+            'ext': 'mp3',
+            'title': 'WA Mozart Marche Turque (Turkish March fingered)',
+            'description': 'md5:7ede08230e4eaabd67a4a98bb54d07be',
+            'thumbnail': r're:(?:https?://)(?:www\.)?musescore\.com/.*\.png[^$]+',
+            'uploader': 'PapyPiano',
+            'creator': 'Wolfgang Amadeus Mozart',
+        }
+    }, {
+        'url': 'https://musescore.com/user/36164500/scores/6837638',
+        'info_dict': {
+            'id': '6837638',
+            'ext': 'mp3',
+            'title': 'Sweet Child O\' Mine  – Guns N\' Roses sweet child',
+            'description': 'md5:4dca71191c14abc312a0a4192492eace',
+            'thumbnail': r're:(?:https?://)(?:www\.)?musescore\.com/.*\.png[^$]+',
+            'uploader': 'roxbelviolin',
+            'creator': 'Guns N´Roses Arr. Roxbel Violin',
+        }
+    }, {
+        'url': 'https://musescore.com/classicman/fur-elise',
+        'info_dict': {
+            'id': '33816',
+            'ext': 'mp3',
+            'title': 'Für Elise – Beethoven',
+            'description': 'md5:49515a3556d5ecaf9fa4b2514064ac34',
+            'thumbnail': r're:(?:https?://)(?:www\.)?musescore\.com/.*\.png[^$]+',
+            'uploader': 'ClassicMan',
+            'creator': 'Ludwig van Beethoven (1770–1827)',
+        }
+    }, {
+        'url': 'https://musescore.com/minh_cuteee/scores/6555384',
+        'only_matching': True,
+    }]
+
+    def _real_extract(self, url):
+        webpage = self._download_webpage(url, None)
+        url = self._og_search_url(webpage) or url
+        id = self._match_id(url)
+        mp3_url = self._download_json(f'https://musescore.com/api/jmuse?id={id}&index=0&type=mp3&v2=1', id,
+                                      headers={'authorization': '63794e5461e4cfa046edfbdddfccc1ac16daffd2'})['info']['url']
+        formats = [{
+            'url': mp3_url,
+            'ext': 'mp3',
+            'vcodec': 'none',
+        }]
+
+        return {
+            'id': id,
+            'formats': formats,
+            'title': self._og_search_title(webpage),
+            'description': self._og_search_description(webpage),
+            'thumbnail': self._og_search_thumbnail(webpage),
+            'uploader': self._html_search_meta('musescore:author', webpage, 'uploader'),
+            'creator': self._html_search_meta('musescore:composer', webpage, 'composer'),
+        }