layed out better methods for fetching data
This commit is contained in:
		| @@ -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' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user