Defined a base extractor interface from where others will be derived. Added methods to retrieve if the transcoder should be enabled or not, and to retrieve the default file format, which also will be used as file extension in the saveDialog suggestions
This commit is contained in:
parent
edc46ee824
commit
93b066804b
@ -6,6 +6,31 @@ import wx
|
|||||||
import config
|
import config
|
||||||
log = logging.getLogger("extractors.config")
|
log = logging.getLogger("extractors.config")
|
||||||
|
|
||||||
|
class baseInterface(object):
|
||||||
|
name = "base"
|
||||||
|
enabled = False
|
||||||
|
needs_transcode = False
|
||||||
|
results = []
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(baseInterface, self).__init__()
|
||||||
|
log.debug("started extraction service for {0}".format(self.name,))
|
||||||
|
|
||||||
|
def search(self, text, *args, **kwargs):
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def get_download_url(self, url):
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def format_track(self, item):
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def get_file_format(self):
|
||||||
|
return "mp3"
|
||||||
|
|
||||||
|
def transcoder_enabled(self):
|
||||||
|
return False
|
||||||
|
|
||||||
class song(object):
|
class song(object):
|
||||||
""" Represents a song in all services. Data will be filled by the service itself"""
|
""" Represents a song in all services. Data will be filled by the service itself"""
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ from .import base
|
|||||||
|
|
||||||
log = logging.getLogger("extractors.tidal.com")
|
log = logging.getLogger("extractors.tidal.com")
|
||||||
|
|
||||||
class interface(object):
|
class interface(base.baseInterface):
|
||||||
name = "tidal"
|
name = "tidal"
|
||||||
enabled = config.app["services"]["tidal"].get("enabled")
|
enabled = config.app["services"]["tidal"].get("enabled")
|
||||||
# This should not be enabled if credentials are not in config.
|
# This should not be enabled if credentials are not in config.
|
||||||
@ -15,9 +15,10 @@ class interface(object):
|
|||||||
enabled = False
|
enabled = False
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.results = []
|
super(interface, self).__init__()
|
||||||
self.needs_transcode = False
|
self.setup()
|
||||||
log.debug("started extraction service for {0}".format(self.name,))
|
|
||||||
|
def setup(self):
|
||||||
# Assign quality or switch to high if not specified/not found.
|
# Assign quality or switch to high if not specified/not found.
|
||||||
if hasattr(tidalapi.Quality, config.app["services"]["tidal"]["quality"]):
|
if hasattr(tidalapi.Quality, config.app["services"]["tidal"]["quality"]):
|
||||||
quality = getattr(tidalapi.Quality, config.app["services"]["tidal"]["quality"])
|
quality = getattr(tidalapi.Quality, config.app["services"]["tidal"]["quality"])
|
||||||
@ -29,11 +30,19 @@ class interface(object):
|
|||||||
log.debug("Using quality: %s" % (quality,))
|
log.debug("Using quality: %s" % (quality,))
|
||||||
self.session = tidalapi.Session(config=_config)
|
self.session = tidalapi.Session(config=_config)
|
||||||
self.session.login(username=username, password=password)
|
self.session.login(username=username, password=password)
|
||||||
|
|
||||||
|
def get_file_format(self):
|
||||||
if config.app["services"]["tidal"]["quality"] == "lossless":
|
if config.app["services"]["tidal"]["quality"] == "lossless":
|
||||||
self.file_extension = "flac"
|
self.file_extension = "flac"
|
||||||
else:
|
else:
|
||||||
self.file_extension = "mp3"
|
self.file_extension = "mp3"
|
||||||
|
|
||||||
|
def transcoder_enabled(self):
|
||||||
|
if config.app["services"]["tidal"]["quality"] == "lossless":
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
def search(self, text, page=1):
|
def search(self, text, page=1):
|
||||||
if text == "" or text == None:
|
if text == "" or text == None:
|
||||||
raise ValueError("Text must be passed and should not be blank.")
|
raise ValueError("Text must be passed and should not be blank.")
|
||||||
|
@ -15,16 +15,10 @@ YOUTUBE_API_VERSION = "v3"
|
|||||||
|
|
||||||
log = logging.getLogger("extractors.youtube.com")
|
log = logging.getLogger("extractors.youtube.com")
|
||||||
|
|
||||||
class interface(object):
|
class interface(base.baseInterface):
|
||||||
name = "YouTube"
|
name = "YouTube"
|
||||||
enabled = config.app["services"]["youtube"].get("enabled")
|
enabled = config.app["services"]["youtube"].get("enabled")
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.results = []
|
|
||||||
self.needs_transcode = True
|
|
||||||
log.debug("started extraction service for {0}".format(self.name,))
|
|
||||||
self.file_extension = "mp3"
|
|
||||||
|
|
||||||
def search(self, text, page=1):
|
def search(self, text, page=1):
|
||||||
if text == "" or text == None:
|
if text == "" or text == None:
|
||||||
raise ValueError("Text must be passed and should not be blank.")
|
raise ValueError("Text must be passed and should not be blank.")
|
||||||
@ -105,6 +99,9 @@ class interface(object):
|
|||||||
def format_track(self, item):
|
def format_track(self, item):
|
||||||
return "{0} {1}".format(item.title, item.duration)
|
return "{0} {1}".format(item.title, item.duration)
|
||||||
|
|
||||||
|
def transcoder_enabled(self):
|
||||||
|
return config.app["services"]["youtube"]["transcode"]
|
||||||
|
|
||||||
class settings(base.baseSettings):
|
class settings(base.baseSettings):
|
||||||
name = _("Youtube Settings")
|
name = _("Youtube Settings")
|
||||||
config_section = "youtube"
|
config_section = "youtube"
|
||||||
|
@ -10,16 +10,10 @@ from . import base
|
|||||||
|
|
||||||
log = logging.getLogger("extractors.zaycev.net")
|
log = logging.getLogger("extractors.zaycev.net")
|
||||||
|
|
||||||
class interface(object):
|
class interface(base.baseInterface):
|
||||||
name = "zaycev.net"
|
name = "zaycev.net"
|
||||||
enabled = True
|
enabled = True
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.results = []
|
|
||||||
self.needs_transcode = False
|
|
||||||
log.debug("Started extraction service for zaycev.net")
|
|
||||||
self.file_extension = "mp3"
|
|
||||||
|
|
||||||
def search(self, text, page=1):
|
def search(self, text, page=1):
|
||||||
if text == "" or text == None:
|
if text == "" or text == None:
|
||||||
raise ValueError("Text must be passed and should not be blank.")
|
raise ValueError("Text must be passed and should not be blank.")
|
||||||
|
Loading…
Reference in New Issue
Block a user