v4.6
This commit is contained in:
+84
-4
@@ -356,7 +356,7 @@ class TidalStatusChecker(QThread):
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
response = requests.get("https://hifi.401658.xyz", timeout=5)
|
||||
response = requests.get("https://tidal.401658.xyz", timeout=5)
|
||||
is_online = response.status_code == 200 or response.status_code == 429
|
||||
self.status_updated.emit(is_online)
|
||||
except Exception as e:
|
||||
@@ -640,7 +640,7 @@ class QobuzRegionComboBox(QComboBox):
|
||||
class SpotiFLACGUI(QWidget):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.current_version = "4.5"
|
||||
self.current_version = "4.6"
|
||||
self.tracks = []
|
||||
self.all_tracks = []
|
||||
self.reset_state()
|
||||
@@ -1596,6 +1596,10 @@ class SpotiFLACGUI(QWidget):
|
||||
self.handle_album_metadata(metadata)
|
||||
elif url_info["type"] == "playlist":
|
||||
self.handle_playlist_metadata(metadata)
|
||||
elif url_info["type"] == "artist_discography":
|
||||
self.handle_discography_metadata(metadata)
|
||||
elif url_info["type"] == "artist":
|
||||
self.handle_artist_metadata(metadata)
|
||||
|
||||
self.update_button_states()
|
||||
self.tab_widget.setCurrentIndex(0)
|
||||
@@ -1695,9 +1699,57 @@ class SpotiFLACGUI(QWidget):
|
||||
'artists': playlist_data["playlist_info"]["owner"]["display_name"],
|
||||
'cover': playlist_data["playlist_info"]["owner"]["images"],
|
||||
'followers': playlist_data["playlist_info"]["followers"]["total"],
|
||||
'total_tracks': playlist_data["playlist_info"]["tracks"]["total"] }
|
||||
'total_tracks': playlist_data["playlist_info"]["tracks"]["total"]
|
||||
}
|
||||
self.update_display_after_fetch(metadata)
|
||||
|
||||
def handle_discography_metadata(self, discography_data):
|
||||
artist_info = discography_data["artist_info"]
|
||||
self.album_or_playlist_name = f"{artist_info['name']} - Discography ({artist_info['discography_type'].title()})"
|
||||
self.tracks = []
|
||||
|
||||
for track in discography_data["track_list"]:
|
||||
track_id = track["external_urls"].split("/")[-1] if track.get("external_urls") else ""
|
||||
|
||||
self.tracks.append(Track(
|
||||
external_urls=track.get("external_urls", ""),
|
||||
title=track["name"],
|
||||
artists=track["artists"],
|
||||
album=track["album_name"],
|
||||
track_number=track.get("track_number", len(self.tracks) + 1),
|
||||
duration_ms=track.get("duration_ms", 0),
|
||||
id=track_id,
|
||||
isrc=track.get("isrc", ""),
|
||||
release_date=track.get("release_date", "")
|
||||
))
|
||||
|
||||
self.all_tracks = self.tracks.copy()
|
||||
self.is_playlist = True
|
||||
self.is_album = self.is_single_track = False
|
||||
|
||||
metadata = {
|
||||
'title': f"{artist_info['name']} - Discography",
|
||||
'artists': f"{artist_info['discography_type'].title()} • {artist_info['total_albums']} albums",
|
||||
'cover': artist_info["images"],
|
||||
'followers': artist_info.get("followers", 0),
|
||||
'total_tracks': len(self.tracks),
|
||||
'discography_type': artist_info['discography_type']
|
||||
}
|
||||
self.update_display_after_fetch(metadata)
|
||||
|
||||
def handle_artist_metadata(self, artist_data):
|
||||
self.reset_state()
|
||||
|
||||
metadata = {
|
||||
'title': artist_data["artist"]["name"],
|
||||
'artists': f"Followers: {artist_data['artist']['followers']:,}",
|
||||
'cover': artist_data["artist"]["images"],
|
||||
'followers': artist_data["artist"]["followers"],
|
||||
'genres': artist_data["artist"].get("genres", [])
|
||||
}
|
||||
|
||||
self.update_info_widget_artist_only(metadata)
|
||||
|
||||
def update_display_after_fetch(self, metadata):
|
||||
self.track_list.setVisible(not self.is_single_track)
|
||||
|
||||
@@ -1753,12 +1805,40 @@ class SpotiFLACGUI(QWidget):
|
||||
self.type_label.setText(f"<b>Album</b> • {total_tracks} tracks")
|
||||
elif self.is_playlist:
|
||||
total_tracks = metadata.get('total_tracks', 0)
|
||||
self.type_label.setText(f"<b>Playlist</b> • {total_tracks} tracks")
|
||||
if metadata.get('discography_type'):
|
||||
discography_type = metadata['discography_type'].title()
|
||||
self.type_label.setText(f"<b>Discography ({discography_type})</b> • {total_tracks} tracks")
|
||||
else:
|
||||
self.type_label.setText(f"<b>Playlist</b> • {total_tracks} tracks")
|
||||
|
||||
self.network_manager.get(QNetworkRequest(QUrl(metadata['cover'])))
|
||||
|
||||
self.info_widget.show()
|
||||
|
||||
def update_info_widget_artist_only(self, metadata):
|
||||
self.title_label.setText(metadata['title'])
|
||||
self.artists_label.setText(f"<b>Followers</b> {metadata['followers']:,}")
|
||||
|
||||
if metadata.get('genres'):
|
||||
genres_text = ", ".join(metadata['genres'][:3])
|
||||
if len(metadata['genres']) > 3:
|
||||
genres_text += f" (+{len(metadata['genres']) - 3} more)"
|
||||
self.followers_label.setText(f"<b>Genres</b> {genres_text}")
|
||||
self.followers_label.show()
|
||||
else:
|
||||
self.followers_label.hide()
|
||||
|
||||
self.release_date_label.hide()
|
||||
self.type_label.setText("<b>Artist Profile</b> • No tracks available for download")
|
||||
|
||||
self.network_manager.get(QNetworkRequest(QUrl(metadata['cover'])))
|
||||
|
||||
self.track_list.hide()
|
||||
self.search_widget.hide()
|
||||
self.hide_track_buttons()
|
||||
|
||||
self.info_widget.show()
|
||||
|
||||
def reset_info_widget(self):
|
||||
self.title_label.clear()
|
||||
self.artists_label.clear()
|
||||
|
||||
Reference in New Issue
Block a user