# coding: utf-8 from __future__ import unicode_literals from .common import InfoExtractor class MatterIE(InfoExtractor): """ InfoExtractor for Matter Music This class should be used to handle tracks. Another class (TODO) will be used to implement playlists or other content. """ _VALID_URL = r'https?://app.matter.online/tracks/(?P\d+)/?' _TESTS = [{ 'url': 'https://app.matter.online/tracks/12866', 'info_dict': { 'id': '12866', 'ext': 'mp3', 'title': 'Beautiful type beat', 'uploader': 'internet user', }, }, { 'url': 'https://app.matter.online/tracks/18891', 'info_dict': { 'id': '18891', 'ext': 'mp3', 'title': 'starstruck', 'uploader': 'iwi.', } }] def _real_extract(self, url): track_id = self._match_id(url) webpage = self._download_webpage( "https://api.matter.online/api/v1/open-graph/tracks/%s/embedded" % track_id, track_id ) author = self._search_regex( r'([^<]+)', webpage, "author" ) title = self._search_regex( r'([^<]+)', webpage, "title" ) download_url = self._search_regex( r'', webpage, "download_url" ) artwork = self._search_regex( r'style="background: url\((https://matter-production.s3.amazonaws.com/images/[^\.]+\.[^\)]+)\)', webpage, "artwork" ) return { 'id': track_id, 'url': download_url, 'title': title, 'uploader': author, 'thumbnail': artwork, }