added the fetching of the sources from ma regarding artists
This commit is contained in:
parent
e48285c3b0
commit
f1e92a8464
@ -12,6 +12,11 @@ from music_kraken.pages import (
|
|||||||
test_db = Database("test.db")
|
test_db = Database("test.db")
|
||||||
# test_db.reset()
|
# test_db.reset()
|
||||||
|
|
||||||
|
def print_source(source_obj):
|
||||||
|
print("---source---")
|
||||||
|
for source in source_obj.source_list:
|
||||||
|
print(source)
|
||||||
|
|
||||||
def print_song(song_: Song):
|
def print_song(song_: Song):
|
||||||
print(str(song_.metadata))
|
print(str(song_.metadata))
|
||||||
print("----album--")
|
print("----album--")
|
||||||
@ -31,6 +36,7 @@ def print_artist(artist: Artist):
|
|||||||
print("---discography---")
|
print("---discography---")
|
||||||
for album in artist.discography:
|
for album in artist.discography:
|
||||||
print(album)
|
print(album)
|
||||||
|
print_source(artist)
|
||||||
|
|
||||||
|
|
||||||
# only_smile = EncyclopaediaMetallum.search_by_query("only smile")
|
# only_smile = EncyclopaediaMetallum.search_by_query("only smile")
|
||||||
|
@ -66,6 +66,37 @@ class Source(DatabaseObject, SongAttribute, MetadataAttribute):
|
|||||||
|
|
||||||
self.url = url
|
self.url = url
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def match_url(cls, url: str):
|
||||||
|
"""
|
||||||
|
this shouldn't be used, unlesse you are not certain what the source is for
|
||||||
|
the reason is that it is more inefficient
|
||||||
|
"""
|
||||||
|
if url.startswith("https://www.youtube"):
|
||||||
|
return cls(SourcePages.YOUTUBE, url)
|
||||||
|
|
||||||
|
if url.startswith("https://www.deezer"):
|
||||||
|
return cls(SourcePages.DEEZER, url)
|
||||||
|
|
||||||
|
if url.startswith("https://open.spotify.com"):
|
||||||
|
return cls(SourcePages.SPOTIFY, url)
|
||||||
|
|
||||||
|
if "bandcamp" in url:
|
||||||
|
return cls(SourcePages.BANDCAMP, url)
|
||||||
|
|
||||||
|
if url.startswith("https://www.metal-archives.com/"):
|
||||||
|
return cls(SourcePages.ENCYCLOPAEDIA_METALLUM, url)
|
||||||
|
|
||||||
|
# the less important once
|
||||||
|
if url.startswith("https://www.facebook"):
|
||||||
|
return cls(SourcePages.FACEBOOK, url)
|
||||||
|
|
||||||
|
if url.startswith("https://www.instagram"):
|
||||||
|
return cls(SourcePages.INSTAGRAM, url)
|
||||||
|
|
||||||
|
if url.startswith("https://twitter"):
|
||||||
|
return cls(SourcePages.TWITTER, url)
|
||||||
|
|
||||||
def get_song_metadata(self) -> MetadataAttribute.Metadata:
|
def get_song_metadata(self) -> MetadataAttribute.Metadata:
|
||||||
return MetadataAttribute.Metadata({
|
return MetadataAttribute.Metadata({
|
||||||
Mapping.FILE_WEBPAGE_URL: [self.url],
|
Mapping.FILE_WEBPAGE_URL: [self.url],
|
||||||
@ -87,7 +118,7 @@ class Source(DatabaseObject, SongAttribute, MetadataAttribute):
|
|||||||
return super().get_metadata()
|
return super().get_metadata()
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.page_enum}: {self.url}"
|
return self.__repr__()
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f"Src({self.page_enum.value}: {self.url})"
|
return f"Src({self.page_enum.value}: {self.url})"
|
||||||
|
@ -285,7 +285,21 @@ class EncyclopaediaMetallum(Page):
|
|||||||
LOGGER.warning(f"code {r.status_code} at {sources_url.format(ma_artist_id)}")
|
LOGGER.warning(f"code {r.status_code} at {sources_url.format(ma_artist_id)}")
|
||||||
return artist
|
return artist
|
||||||
|
|
||||||
print(r.text)
|
soup = BeautifulSoup(r.text, 'html.parser')
|
||||||
|
|
||||||
|
artist_source = soup.find("div", {"id": "band_links_Official"})
|
||||||
|
merchandice_source = soup.find("div", {"id": "band_links_Official_merchandise"})
|
||||||
|
label_source = soup.find("div", {"id": "band_links_Labels"})
|
||||||
|
|
||||||
|
for tr in artist_source.find_all("td"):
|
||||||
|
a = tr.find("a")
|
||||||
|
url = a.get("href")
|
||||||
|
|
||||||
|
source = Source.match_url(url)
|
||||||
|
if source is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
artist.add_source(source)
|
||||||
|
|
||||||
return artist
|
return artist
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user