mirror of
https://github.com/Wojtek242/qobuz-dl.git
synced 2024-11-22 11:05:25 +01:00
fit get_type and get_id functions into one
using both needlessly searched the url twice
This commit is contained in:
parent
c995d9caf8
commit
e45ce11439
@ -4,6 +4,7 @@ import re
|
|||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from bs4 import BeautifulSoup as bso
|
from bs4 import BeautifulSoup as bso
|
||||||
@ -98,29 +99,13 @@ class QobuzDL:
|
|||||||
os.makedirs(fix, exist_ok=True)
|
os.makedirs(fix, exist_ok=True)
|
||||||
return fix
|
return fix
|
||||||
|
|
||||||
def get_id(self, url):
|
def get_url_info(url: str) -> Tuple[str, str]:
|
||||||
return re.match(
|
r = re.search(
|
||||||
r"https?://(?:w{0,3}|play|open)\.qobuz\.com/(?:(?:album|track"
|
r"(?:https:\/\/(?:w{3}|open|play)\.qobuz\.com)?(?:\/[a-z]{2}-[a-z]{2})"
|
||||||
r"|artist|playlist|label)/|[a-z]{2}-[a-z]{2}/album/-?\w+(?:-\w+)*"
|
r"?\/(album|artist|track|playlist|label)(?:\/[-\w\d]+)?\/([\w\d]+)",
|
||||||
r"-?/|user/library/favorites/)(\w+)",
|
|
||||||
url,
|
url,
|
||||||
).group(1)
|
)
|
||||||
|
return r.groups()
|
||||||
def get_type(self, url):
|
|
||||||
if re.match(r"https?", url) is not None:
|
|
||||||
url_type = url.split("/")[3]
|
|
||||||
if url_type not in ["album", "artist", "playlist", "track", "label"]:
|
|
||||||
if url_type == "user":
|
|
||||||
url_type = url.split("/")[-1]
|
|
||||||
else:
|
|
||||||
# url is from Qobuz store
|
|
||||||
# e.g. "https://www.qobuz.com/us-en/album/..."
|
|
||||||
url_type = url.split("/")[4]
|
|
||||||
else:
|
|
||||||
# url missing base
|
|
||||||
# e.g. "/us-en/album/{artist}/{id}"
|
|
||||||
url_type = url.split("/")[2]
|
|
||||||
return url_type
|
|
||||||
|
|
||||||
def download_from_id(self, item_id, album=True, alt_path=None):
|
def download_from_id(self, item_id, album=True, alt_path=None):
|
||||||
if handle_download_id(self.downloads_db, item_id, add_id=False):
|
if handle_download_id(self.downloads_db, item_id, add_id=False):
|
||||||
@ -167,9 +152,8 @@ class QobuzDL:
|
|||||||
"track": {"album": False, "func": None, "iterable_key": None},
|
"track": {"album": False, "func": None, "iterable_key": None},
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
url_type = self.get_type(url)
|
url_type, item_id = self.get_info(url)
|
||||||
type_dict = possibles[url_type]
|
type_dict = possibles[url_type]
|
||||||
item_id = self.get_id(url)
|
|
||||||
except (KeyError, IndexError):
|
except (KeyError, IndexError):
|
||||||
logger.info(
|
logger.info(
|
||||||
f'{RED}Invalid url: "{url}". Use urls from ' "https://play.qobuz.com!"
|
f'{RED}Invalid url: "{url}". Use urls from ' "https://play.qobuz.com!"
|
||||||
@ -423,7 +407,7 @@ class QobuzDL:
|
|||||||
)
|
)
|
||||||
|
|
||||||
for i in track_list:
|
for i in track_list:
|
||||||
track_id = self.get_id(self.search_by_type(i, "track", 1, lucky=True)[0])
|
track_id = self.get_url_info(self.search_by_type(i, "track", 1, lucky=True)[0])[1]
|
||||||
if track_id:
|
if track_id:
|
||||||
self.download_from_id(track_id, False, pl_directory)
|
self.download_from_id(track_id, False, pl_directory)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user