Create musify.py
This commit is contained in:
parent
a7de1d2a68
commit
38142df92e
90
src/music_kraken/pages/musify.py
Normal file
90
src/music_kraken/pages/musify.py
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
from typing import List
|
||||||
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import pycountry
|
||||||
|
|
||||||
|
from ..utils.shared import (
|
||||||
|
ENCYCLOPAEDIA_METALLUM_LOGGER as LOGGER
|
||||||
|
)
|
||||||
|
|
||||||
|
from .abstract import Page
|
||||||
|
from ..objects import (
|
||||||
|
MusicObject,
|
||||||
|
Artist,
|
||||||
|
Source,
|
||||||
|
SourcePages,
|
||||||
|
Song,
|
||||||
|
Album,
|
||||||
|
ID3Timestamp,
|
||||||
|
FormattedText,
|
||||||
|
Label,
|
||||||
|
Options
|
||||||
|
)
|
||||||
|
from ..utils import (
|
||||||
|
string_processing,
|
||||||
|
shared
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class EncyclopaediaMetallum(Page):
|
||||||
|
API_SESSION: requests.Session = requests.Session()
|
||||||
|
API_SESSION.headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:106.0) Gecko/20100101 Firefox/106.0",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Referer": "https://musify.club/"
|
||||||
|
}
|
||||||
|
API_SESSION.proxies = shared.proxies
|
||||||
|
|
||||||
|
SOURCE_TYPE = SourcePages.MUSIFY
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def search_by_query(cls, query: str) -> Options:
|
||||||
|
query_obj = cls.Query(query)
|
||||||
|
|
||||||
|
if query_obj.is_raw:
|
||||||
|
return cls.simple_search(query_obj)
|
||||||
|
return cls.advanced_search(query_obj)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def advanced_search(cls, query: Page.Query) -> Options:
|
||||||
|
if query.song is not None:
|
||||||
|
return Options(cls.search_for_song(query=query))
|
||||||
|
if query.album is not None:
|
||||||
|
return Options(cls.search_for_album(query=query))
|
||||||
|
if query.artist is not None:
|
||||||
|
return Options(cls.search_for_artist(query=query))
|
||||||
|
return Options
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def search_for_song(cls, query: Page.Query) -> List[Song]:
|
||||||
|
return []
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def search_for_album(cls, query: Page.Query) -> List[Album]:
|
||||||
|
return []
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def search_for_artist(cls, query: Page.Query) -> List[Artist]:
|
||||||
|
return []
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def simple_search(cls, query: Page.Query) -> List[Artist]:
|
||||||
|
return []
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def fetch_album_details(cls, album: Album, flat: bool = False) -> Album:
|
||||||
|
|
||||||
|
return album
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def fetch_song_details(cls, song: Song, flat: bool = False) -> Song:
|
||||||
|
source_list = song.source_collection.get_sources_from_page(cls.SOURCE_TYPE)
|
||||||
|
if len(source_list) == 0:
|
||||||
|
return song
|
||||||
|
|
||||||
|
"""
|
||||||
|
TODO
|
||||||
|
lyrics
|
||||||
|
"""
|
||||||
|
|
||||||
|
return song
|
Loading…
Reference in New Issue
Block a user