From 4900d9459ea60b38125b0cdca0a6b68252786f1c Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Thu, 29 Feb 2024 18:41:01 +0100 Subject: [PATCH] decode unicode when rendering the playlist picker, local playlists and on the video player screen --- melon/player/__init__.py | 9 +++++---- melon/playlist/__init__.py | 5 +++-- melon/playlist/pick.py | 5 +++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/melon/player/__init__.py b/melon/player/__init__.py index f0aceb5..ce4cb75 100644 --- a/melon/player/__init__.py +++ b/melon/player/__init__.py @@ -10,6 +10,7 @@ from melon.widgets.feeditem import AdaptiveFeedItem from melon.widgets.preferencerow import PreferenceRow, PreferenceType, Preference from melon.widgets.iconbutton import IconButton from melon.models import get_app_settings, notify, add_to_history +from unidecode import unidecode class PlayerScreen(Adw.NavigationPage): def on_open_in_browser(self, arg): @@ -46,7 +47,7 @@ class PlayerScreen(Adw.NavigationPage): # video details self.about = Adw.PreferencesGroup() - self.about.set_title(self.video.title.replace("&","&")) + self.about.set_title(unidecode(self.video.title).replace("&","&")) # Load the media element in a webview self.streams = self.instance.get_video_streams(self.video_id) @@ -62,7 +63,7 @@ class PlayerScreen(Adw.NavigationPage): "quality", "Quality", "Video quality", PreferenceType.DROPDOWN, - [ stream.quality for stream in self.streams ], + [ unidecode(stream.quality) for stream in self.streams ], default_stream) row = PreferenceRow(pref) row.set_callback(self.select_stream) @@ -71,9 +72,9 @@ class PlayerScreen(Adw.NavigationPage): # expandable description field desc_field = Adw.ExpanderRow() desc_field.set_title("Description") - desc_field.set_subtitle(self.video.description[:40].replace("&","&")+"...") + desc_field.set_subtitle(unidecode(self.video.description[:40]).replace("&","&")+"...") desc = Adw.ActionRow() - desc.set_subtitle(self.video.description.replace("&","&")) + desc.set_subtitle(unidecode(self.video.description).replace("&","&")) desc_field.add_row(desc) self.about.add(desc_field) self.box.append(self.about) diff --git a/melon/playlist/__init__.py b/melon/playlist/__init__.py index 54362fc..c099793 100644 --- a/melon/playlist/__init__.py +++ b/melon/playlist/__init__.py @@ -9,6 +9,7 @@ from melon.widgets.iconbutton import IconButton from melon.widgets.feeditem import AdaptiveFeedItem from melon.models import get_app_settings, get_local_playlist from melon.models import is_server_enabled, ensure_server_disabled, ensure_server_enabled +from unidecode import unidecode class LocalPlaylistScreen(Adw.NavigationPage): def __init__(self, playlist_id, *args, **kwargs): @@ -42,8 +43,8 @@ class LocalPlaylistScreen(Adw.NavigationPage): self.box = Adw.PreferencesPage() # create data group group = Adw.PreferencesGroup() - group.set_title(playlist.title) - group.set_description(playlist.description) + group.set_title(unidecode(playlist.title)) + group.set_description(unidecode(playlist.description)) app_conf = get_app_settings() self.box.add(group) # add playlist content to group as well diff --git a/melon/playlist/pick.py b/melon/playlist/pick.py index 7a2e222..687521f 100644 --- a/melon/playlist/pick.py +++ b/melon/playlist/pick.py @@ -3,6 +3,7 @@ import gi gi.require_version('Gtk', '4.0') gi.require_version('Adw', '1') from gi.repository import Gtk, Adw, Gio, GLib, Gdk +from unidecode import unidecode from melon.widgets.feeditem import AdaptiveFeedItem from melon.widgets.iconbutton import IconButton @@ -57,8 +58,8 @@ class PlaylistPickerDialog(SimpleDialog): if playlist.type == PlaylistWrapperType.EXTERNAL: continue row = Adw.ActionRow() - row.set_title(playlist.inner.title.replace("&","&")) - row.set_subtitle(playlist.inner.description.replace("&","&")) + row.set_title(unidecode(playlist.inner.title).replace("&","&")) + row.set_subtitle(unidecode(playlist.inner.description).replace("&","&")) pixbuf = None if app_conf["show_images_in_feed"]: pixbuf = pixbuf_from_url(playlist.inner.thumbnail) -- 2.38.5