summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/SoundcloudCom.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/hoster/SoundcloudCom.py')
-rw-r--r--module/plugins/hoster/SoundcloudCom.py31
1 files changed, 17 insertions, 14 deletions
diff --git a/module/plugins/hoster/SoundcloudCom.py b/module/plugins/hoster/SoundcloudCom.py
index 75a1cffeb..3eb546604 100644
--- a/module/plugins/hoster/SoundcloudCom.py
+++ b/module/plugins/hoster/SoundcloudCom.py
@@ -1,44 +1,47 @@
# -*- coding: utf-8 -*-
-import re
import pycurl
+import re
from module.plugins.Hoster import Hoster
class SoundcloudCom(Hoster):
- __name__ = "SoundcloudCom"
- __type__ = "hoster"
- __pattern__ = r'https?://(?:www\.)?soundcloud\.com/(?P<UID>.*?)/(?P<SID>.*)'
- __version__ = "0.1"
+ __name__ = "SoundcloudCom"
+ __type__ = "hoster"
+ __version__ = "0.10"
+
+ __pattern__ = r'https?://(?:www\.)?soundcloud\.com/(?P<UID>.+?)/(?P<SID>.+)'
+
__description__ = """SoundCloud.com hoster plugin"""
- __author_name__ = "Peekayy"
- __author_mail__ = "peekayy.dev@gmail.com"
+ __license__ = "GPLv3"
+ __authors__ = [("Peekayy", "peekayy.dev@gmail.com")]
+
def process(self, pyfile):
# default UserAgent of HTTPRequest fails for this hoster so we use this one
self.req.http.c.setopt(pycurl.USERAGENT, 'Mozilla/5.0')
page = self.load(pyfile.url)
- m = re.search(r'<div class="haudio.*?large.*?" data-sc-track="(?P<ID>[0-9]*)"', page)
+ m = re.search(r'<div class="haudio.*?large.*?" data-sc-track="(?P<ID>\d*)"', page)
songId = clientId = ""
if m:
- songId = m.group("ID")
+ songId = m.group('ID')
if len(songId) <= 0:
- self.logError("Could not find song id")
+ self.logError(_("Could not find song id"))
self.offline()
else:
m = re.search(r'"clientID":"(?P<CID>.*?)"', page)
if m:
- clientId = m.group("CID")
+ clientId = m.group('CID')
if len(clientId) <= 0:
clientId = "b45b1aa10f1ac2941910a7f0d10f8e28"
m = re.search(r'<em itemprop="name">\s(?P<TITLE>.*?)\s</em>', page)
if m:
- pyfile.name = m.group("TITLE") + ".mp3"
+ pyfile.name = m.group('TITLE') + ".mp3"
else:
- pyfile.name = re.match(self.__pattern__, pyfile.url).group("SID") + ".mp3"
+ pyfile.name = re.match(self.__pattern__, pyfile.url).group('SID') + ".mp3"
# url to retrieve the actual song url
page = self.load("https://api.sndcdn.com/i1/tracks/%s/streams" % songId, get={"client_id": clientId})
@@ -46,7 +49,7 @@ class SoundcloudCom(Hoster):
# for now we choose the first stream found in all cases
# it could be improved if relevant for this hoster
streams = [
- (result.group("QUALITY"), result.group("URL"))
+ (result.group('QUALITY'), result.group('URL'))
for result in re.finditer(r'"(?P<QUALITY>.*?)":"(?P<URL>.*?)"', page)
]
self.logDebug("Found Streams", streams)