layed out better methods for fetching data
This commit is contained in:
parent
2ff58d3a30
commit
f5646276d4
@ -1,4 +1,5 @@
|
||||
from typing import Optional, Union, Type, Dict
|
||||
from bs4 import BeautifulSoup
|
||||
import requests
|
||||
import logging
|
||||
|
||||
@ -70,6 +71,10 @@ class Page:
|
||||
|
||||
return cls.post_request(url, accepted_response_codes, trie + 1)
|
||||
|
||||
@classmethod
|
||||
def get_soup_from_response(cls, r: requests.Response) -> BeautifulSoup:
|
||||
return BeautifulSoup(r.content, "html.parser")
|
||||
|
||||
class Query:
|
||||
def __init__(self, query: str):
|
||||
self.query = query
|
||||
@ -178,16 +183,16 @@ class Page:
|
||||
@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):
|
||||
if obj_type == Artist:
|
||||
return cls.fetch_artist_from_source(source=source, stop_at_level=stop_at_level)
|
||||
return cls._fetch_artist_from_source(source=source, stop_at_level=stop_at_level)
|
||||
|
||||
if obj_type == Song:
|
||||
return cls.fetch_song_from_source(source=source, stop_at_level=stop_at_level)
|
||||
return cls._fetch_song_from_source(source=source, stop_at_level=stop_at_level)
|
||||
|
||||
if obj_type == Album:
|
||||
return cls.fetch_album_from_source(source=source, stop_at_level=stop_at_level)
|
||||
return cls._fetch_album_from_source(source=source, stop_at_level=stop_at_level)
|
||||
|
||||
if obj_type == Label:
|
||||
return cls.fetch_label_from_source(source=source, stop_at_level=stop_at_level)
|
||||
return cls._fetch_label_from_source(source=source, stop_at_level=stop_at_level)
|
||||
|
||||
@classmethod
|
||||
def _clean_music_object(cls, music_object: Union[Label, Album, Artist, Song], collections: Dict[Union[Type[Song], Type[Album], Type[Artist], Type[Label]], Collection]):
|
||||
@ -238,18 +243,33 @@ class Page:
|
||||
cls._clean_collection(song.main_artist_collection, collections)
|
||||
|
||||
@classmethod
|
||||
def fetch_song_from_source(cls, source: Source, stop_at_level: int = 1) -> Song:
|
||||
def _parse_song(cls, song_soup: BeautifulSoup) -> Song:
|
||||
return Song()
|
||||
|
||||
@classmethod
|
||||
def fetch_album_from_source(cls, source: Source, stop_at_level: int = 1) -> Album:
|
||||
return Album()
|
||||
|
||||
def _fetch_song_from_source(cls, source: Source, stop_at_level: int = 1) -> Song:
|
||||
return Song()
|
||||
|
||||
@classmethod
|
||||
def fetch_artist_from_source(cls, source: Source, stop_at_level: int = 1) -> Artist:
|
||||
def _parse_artist(cls, album_soup: BeautifulSoup) -> Album:
|
||||
return Album()
|
||||
|
||||
@classmethod
|
||||
def _fetch_album_from_source(cls, source: Source, stop_at_level: int = 1) -> Album:
|
||||
return Album()
|
||||
|
||||
@classmethod
|
||||
def _parse_artist(cls, artist_soup: BeautifulSoup) -> Artist:
|
||||
return Artist()
|
||||
|
||||
@classmethod
|
||||
def fetch_label_from_source(cls, source: Source, stop_at_level: int = 1) -> Label:
|
||||
def _fetch_artist_from_source(cls, source: Source, stop_at_level: int = 1) -> Artist:
|
||||
return Artist()
|
||||
|
||||
@classmethod
|
||||
def _parse_label(cls, label_soup: BeautifulSoup) -> Label:
|
||||
return Label()
|
||||
|
||||
@classmethod
|
||||
def _fetch_label_from_source(cls, source: Source, stop_at_level: int = 1) -> Label:
|
||||
return Label()
|
||||
|
@ -572,7 +572,7 @@ class Musify(Page):
|
||||
album_source: Source
|
||||
if stop_at_level > 1:
|
||||
for album_source in new_album.source_collection.get_sources_from_page(cls.SOURCE_TYPE):
|
||||
new_album.merge(cls.fetch_album_from_source(album_source, stop_at_level=stop_at_level-1))
|
||||
new_album.merge(cls._fetch_album_from_source(album_source, stop_at_level=stop_at_level-1))
|
||||
|
||||
discography.append(new_album)
|
||||
|
||||
@ -709,7 +709,7 @@ class Musify(Page):
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def fetch_artist_from_source(cls, source: Source, stop_at_level: int = 1) -> Artist:
|
||||
def _fetch_artist_from_source(cls, source: Source, stop_at_level: int = 1) -> Artist:
|
||||
"""
|
||||
fetches artist from source
|
||||
|
||||
@ -851,7 +851,7 @@ class Musify(Page):
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def fetch_album_from_source(cls, source: Source, stop_at_level: int = 1) -> Album:
|
||||
def _fetch_album_from_source(cls, source: Source, stop_at_level: int = 1) -> Album:
|
||||
"""
|
||||
fetches album from source:
|
||||
eg. 'https://musify.club/release/linkin-park-hybrid-theory-2000-188'
|
||||
|
Loading…
Reference in New Issue
Block a user