continued ma
This commit is contained in:
		@@ -2,5 +2,5 @@ from music_kraken.pages import (
 | 
				
			|||||||
    EncyclopaediaMetallum
 | 
					    EncyclopaediaMetallum
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
print(EncyclopaediaMetallum.search_by_query("Ghost Bath"))
 | 
					# print(EncyclopaediaMetallum.search_by_query("Death"))
 | 
				
			||||||
EncyclopaediaMetallum.search_by_query("#a Ghost Bath #r Self Loather")
 | 
					EncyclopaediaMetallum.search_by_query("#a Ghost Bath #r Self Loather #t hide from the sun")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,9 +57,18 @@ class Page:
 | 
				
			|||||||
                    self.album = input_
 | 
					                    self.album = input_
 | 
				
			||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
                if type_ == "t":
 | 
					                if type_ == "t":
 | 
				
			||||||
                    self.song = type_
 | 
					                    self.song = input_
 | 
				
			||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        def get_str(self, string):
 | 
				
			||||||
 | 
					            if string is None:
 | 
				
			||||||
 | 
					                return ""
 | 
				
			||||||
 | 
					            return string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        artist_str = property(fget=lambda self: self.get_str(self.artist))
 | 
				
			||||||
 | 
					        album_str = property(fget=lambda self: self.get_str(self.album))
 | 
				
			||||||
 | 
					        song_str = property(fget=lambda self: self.get_str(self.song))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def search_by_query(cls, query: str) -> List[MusicObject]:        
 | 
					    def search_by_query(cls, query: str) -> List[MusicObject]:        
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,8 @@ from ..database import (
 | 
				
			|||||||
    MusicObject,
 | 
					    MusicObject,
 | 
				
			||||||
    Artist,
 | 
					    Artist,
 | 
				
			||||||
    Source,
 | 
					    Source,
 | 
				
			||||||
    SourcePages
 | 
					    SourcePages,
 | 
				
			||||||
 | 
					    Song
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,10 +30,28 @@ class EncyclopaediaMetallum(Page):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if query_obj.is_raw:
 | 
					        if query_obj.is_raw:
 | 
				
			||||||
            return cls.simple_search(query_obj)
 | 
					            return cls.simple_search(query_obj)
 | 
				
			||||||
        print(query_obj)
 | 
					        return cls.advanced_search(query_obj)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def simple_search(cls, query: Page.Query):
 | 
					    def advanced_search(cls, query: Page.Query) -> List[MusicObject]:
 | 
				
			||||||
 | 
					        if query.song is not None:
 | 
				
			||||||
 | 
					            return cls.search_for_song(query=query)
 | 
				
			||||||
 | 
					        return []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @classmethod
 | 
				
			||||||
 | 
					    def search_for_song(cls, query: Page.Query) -> List[Song]:
 | 
				
			||||||
 | 
					        endpoint = "https://www.metal-archives.com/search/ajax-advanced/searching/songs/?songTitle={song}&bandName={artist}&releaseTitle={album}&lyrics=&genre=&sEcho=1&iColumns=5&sColumns=&iDisplayStart=0&iDisplayLength=200&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2&mDataProp_3=3&mDataProp_4=4&_=1674550595663"
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        r = cls.API_SESSION.get(endpoint.format(song=query.song_str, artist=query.artist_str, album=query.album_str))
 | 
				
			||||||
 | 
					        if r.status_code != 200:
 | 
				
			||||||
 | 
					            LOGGER.warning(f"code {r.status_code} at {endpoint.format(song=query.song_str, artist=query.artist_str, album=query.album_str)}")
 | 
				
			||||||
 | 
					            return []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        print(r.json()['aaData'])
 | 
				
			||||||
 | 
					        return []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @classmethod
 | 
				
			||||||
 | 
					    def simple_search(cls, query: Page.Query) -> List[Artist]:
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        Searches the default endpoint from metal archives, which intern searches only
 | 
					        Searches the default endpoint from metal archives, which intern searches only
 | 
				
			||||||
        for bands, but it is the default, thus I am rolling with it
 | 
					        for bands, but it is the default, thus I am rolling with it
 | 
				
			||||||
@@ -45,7 +64,10 @@ class EncyclopaediaMetallum(Page):
 | 
				
			|||||||
            return []
 | 
					            return []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        print(r.json())
 | 
					        print(r.json())
 | 
				
			||||||
        return cls.get_many_artists_from_json(r.json()['aaData'])
 | 
					        return [
 | 
				
			||||||
 | 
					            cls.get_artist_from_json(raw_artist[0], raw_artist[1], raw_artist[2]) 
 | 
				
			||||||
 | 
					            for raw_artist in r.json()['aaData']
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def get_artist_from_json(cls, html, genre, country) -> Artist:
 | 
					    def get_artist_from_json(cls, html, genre, country) -> Artist:
 | 
				
			||||||
@@ -78,7 +100,3 @@ class EncyclopaediaMetallum(Page):
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            notes = notes
 | 
					            notes = notes
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @classmethod
 | 
					 | 
				
			||||||
    def get_many_artists_from_json(cls, raw_artist_list: list) -> List[Artist]:
 | 
					 | 
				
			||||||
        return [cls.get_artist_from_json(raw_artist) for raw_artist in raw_artist_list]
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user