fucking finally
This commit is contained in:
		| @@ -50,7 +50,7 @@ cache.push([album_input, song_input, lyrics, additional_song]) | |||||||
|  |  | ||||||
| # getting song by song ref | # getting song by song ref | ||||||
| song_output_list = cache.pull_songs(song_ref=song_ref) | song_output_list = cache.pull_songs(song_ref=song_ref) | ||||||
| print(len(song_output_list), song_output_list) | print(len(song_output_list), song_output_list, song_output_list[0].album) | ||||||
| # song_output = song_output_list[0] | # song_output = song_output_list[0] | ||||||
| # print(song_output) | # print(song_output) | ||||||
| # print("album id", song_output.album_ref) | # print("album id", song_output.album_ref) | ||||||
|   | |||||||
| @@ -268,10 +268,13 @@ class Database: | |||||||
|             url=source_row['url'] |             url=source_row['url'] | ||||||
|         ) for source_row in source_rows] |         ) for source_row in source_rows] | ||||||
|  |  | ||||||
|     def get_song_from_row(self, song_result, exclude_independent_relations: bool = False) -> Song: |     def get_song_from_row(self, song_result, exclude_relations: set = set()) -> Song: | ||||||
|  |         new_exclude_relations: set = set(exclude_relations) | ||||||
|  |         new_exclude_relations.add(Song) | ||||||
|  |  | ||||||
|         song_id = song_result['song_id'] |         song_id = song_result['song_id'] | ||||||
|          |          | ||||||
|         return Song( |         song_obj = Song( | ||||||
|             id_=song_id, |             id_=song_id, | ||||||
|             title=song_result['title'], |             title=song_result['title'], | ||||||
|             isrc=song_result['isrc'], |             isrc=song_result['isrc'], | ||||||
| @@ -286,7 +289,14 @@ class Database: | |||||||
|             album_ref=Reference(song_result['album_id']) |             album_ref=Reference(song_result['album_id']) | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|     def pull_songs(self, song_ref: Reference = None, album_ref: Reference = None, exclude_independent_relations: bool = False) -> List[Song]: |         if Album not in exclude_relations and song_result['album_id'] is not None: | ||||||
|  |             album_obj = self.pull_albums(album_ref=Reference(song_result['album_id']), exclude_relations=new_exclude_relations) | ||||||
|  |             if len(album_obj) > 0: | ||||||
|  |                 song_obj.album = album_obj[0] | ||||||
|  |  | ||||||
|  |         return song_obj | ||||||
|  |  | ||||||
|  |     def pull_songs(self, song_ref: Reference = None, album_ref: Reference = None, exclude_relations: set = set()) -> List[Song]: | ||||||
|         """ |         """ | ||||||
|         This function is used to get one song (including its children like Sources etc) |         This function is used to get one song (including its children like Sources etc) | ||||||
|         from one song id (a reference object) |         from one song id (a reference object) | ||||||
| @@ -311,10 +321,14 @@ class Database: | |||||||
|  |  | ||||||
|         return [self.get_song_from_row( |         return [self.get_song_from_row( | ||||||
|             song_result=song_result, |             song_result=song_result, | ||||||
|             exclude_independent_relations=exclude_independent_relations |             exclude_relations=exclude_relations | ||||||
|         ) for song_result in song_rows] |         ) for song_result in song_rows] | ||||||
|  |  | ||||||
|     def get_album_from_row(self, album_result, exclude_independent_relations: bool = False) -> Album: |     def get_album_from_row(self, album_result, exclude_relations: set = set()) -> Album: | ||||||
|  |         new_exclude_relations: set = exclude_relations.copy() | ||||||
|  |          | ||||||
|  |         new_exclude_relations.add(Album) | ||||||
|  |          | ||||||
|         album_id = album_result['album_id'] |         album_id = album_result['album_id'] | ||||||
|  |  | ||||||
|         album_obj = Album( |         album_obj = Album( | ||||||
| @@ -329,17 +343,20 @@ class Database: | |||||||
|             barcode=album_result['barcode'] |             barcode=album_result['barcode'] | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|         if not exclude_independent_relations: |         print(exclude_relations) | ||||||
|  |  | ||||||
|  |         if Song not in exclude_relations: | ||||||
|  |             print("yay") | ||||||
|             # getting the tracklist |             # getting the tracklist | ||||||
|             tracklist: List[Song] = self.pull_songs( |             tracklist: List[Song] = self.pull_songs( | ||||||
|                 album_ref=Reference(id_=album_id), |                 album_ref=Reference(id_=album_id), | ||||||
|                 exclude_independent_relations=True |                 exclude_relations=new_exclude_relations | ||||||
|             ) |             ) | ||||||
|             album_obj.set_tracklist(tracklist=tracklist) |             album_obj.set_tracklist(tracklist=tracklist) | ||||||
|  |  | ||||||
|         return album_obj |         return album_obj | ||||||
|  |  | ||||||
|     def pull_albums(self, album_ref: Reference = None, exclude_independent_relations: bool = False) -> List[Album]: |     def pull_albums(self, album_ref: Reference = None, exclude_relations: set = set()) -> List[Album]: | ||||||
|         """ |         """ | ||||||
|         This function is used to get matching albums/releses  |         This function is used to get matching albums/releses  | ||||||
|         from one song id (a reference object) |         from one song id (a reference object) | ||||||
| @@ -357,7 +374,7 @@ class Database: | |||||||
|  |  | ||||||
|         return [self.get_album_from_row( |         return [self.get_album_from_row( | ||||||
|             album_result=album_row, |             album_result=album_row, | ||||||
|             exclude_independent_relations=exclude_independent_relations |             exclude_relations=exclude_relations | ||||||
|         ) for album_row in album_rows] |         ) for album_row in album_rows] | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -190,6 +190,8 @@ class Song(DatabaseObject): | |||||||
|         self.album_ref = album_ref |         self.album_ref = album_ref | ||||||
|         self.artist_refs = artist_refs |         self.artist_refs = artist_refs | ||||||
|  |  | ||||||
|  |         self.album: Album = None | ||||||
|  |  | ||||||
|     def __eq__(self, other): |     def __eq__(self, other): | ||||||
|         if type(other) != type(self): |         if type(other) != type(self): | ||||||
|             return False |             return False | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user