added some url parsing
This commit is contained in:
parent
de2f326218
commit
21e81c82a3
@ -191,6 +191,15 @@ class Page:
|
||||
music_object.compile(merge_into=True)
|
||||
|
||||
return music_object
|
||||
|
||||
@classmethod
|
||||
def fetch_object_from_source(cls, source: Source):
|
||||
obj_type = cls._get_type_of_url(source.url)
|
||||
if obj_type is None:
|
||||
return Artist()
|
||||
|
||||
return cls._fetch_object_from_source(source=source, obj_type=obj_type)
|
||||
|
||||
|
||||
@classmethod
|
||||
def _fetch_object_from_source(cls, source: Source, obj_type: Union[Type[Song], Type[Album], Type[Artist], Type[Label]], stop_at_level: int = 1):
|
||||
@ -269,3 +278,7 @@ class Page:
|
||||
@classmethod
|
||||
def _fetch_label_from_source(cls, source: Source, stop_at_level: int = 1) -> Label:
|
||||
return Label()
|
||||
|
||||
@classmethod
|
||||
def _get_type_of_url(cls, url: str) -> Optional[Union[Type[Song], Type[Album], Type[Artist], Type[Label]]]:
|
||||
return None
|
||||
|
@ -1,8 +1,9 @@
|
||||
from collections import defaultdict
|
||||
from typing import List, Optional, Dict
|
||||
from typing import List, Optional, Dict, Type, Union
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import pycountry
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from ..utils.shared import (
|
||||
ENCYCLOPAEDIA_METALLUM_LOGGER as LOGGER
|
||||
@ -635,3 +636,21 @@ class EncyclopaediaMetallum(Page):
|
||||
cls._fetch_lyrics(song_id=song_id)
|
||||
]
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def _get_type_of_url(cls, url: str) -> Optional[Union[Type[Song], Type[Album], Type[Artist], Type[Label]]]:
|
||||
parsed_url = urlparse(url)
|
||||
path: List[str] = parsed_url.path.split("/")
|
||||
|
||||
if "band" in path:
|
||||
return Artist
|
||||
if "bands" in path:
|
||||
return Artist
|
||||
|
||||
if "albums" in path:
|
||||
return Album
|
||||
|
||||
if "labels" in path:
|
||||
return Label
|
||||
|
||||
return None
|
||||
|
@ -1,9 +1,8 @@
|
||||
from collections import defaultdict
|
||||
from typing import List, Optional, Union
|
||||
from typing import List, Optional, Type, Union
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import pycountry
|
||||
import time
|
||||
from urllib.parse import urlparse
|
||||
from enum import Enum
|
||||
from dataclasses import dataclass
|
||||
@ -880,3 +879,15 @@ class Musify(Page):
|
||||
album.update_tracksort()
|
||||
|
||||
return album
|
||||
|
||||
@classmethod
|
||||
def _get_type_of_url(cls, url: str) -> Optional[Union[Type[Song], Type[Album], Type[Artist], Type[Label]]]:
|
||||
url: MusifyUrl = cls.parse_url(url)
|
||||
|
||||
if url.source_type == MusifyTypes.ARTIST:
|
||||
return Artist
|
||||
if url.source_type == MusifyTypes.RELEASE:
|
||||
return Album
|
||||
if url.source_type == MusifyTypes.SONG:
|
||||
return Song
|
||||
return None
|
||||
|
Loading…
Reference in New Issue
Block a user