From bcfdca49b5b37858c480682d070f25916fa2965e Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Thu, 15 Aug 2024 15:37:11 +0200 Subject: [PATCH] Remember nebula api token --- melon/servers/__init__.py | 2 + melon/servers/nebula/__init__.py | 37 +++++++---- melon/settings/__init__.py | 14 ++-- melon/widgets/player.py | 2 +- melon/widgets/preferencerow.py | 10 +++ po/de.po | 110 +++++++++++++++++-------------- po/fa.po | 110 +++++++++++++++++-------------- po/melon.pot | 110 +++++++++++++++++-------------- po/nl.po | 110 +++++++++++++++++-------------- 9 files changed, 289 insertions(+), 216 deletions(-) diff --git a/melon/servers/__init__.py b/melon/servers/__init__.py index a39eb31..1b36c6a 100644 --- a/melon/servers/__init__.py +++ b/melon/servers/__init__.py @@ -41,6 +41,8 @@ class PreferenceType(Enum): # dropdown select boxes # default: map[str,str], value: str DROPDOWN = auto() + # hidden/disabled string value store + HIDDEN = auto() class Preference: diff --git a/melon/servers/nebula/__init__.py b/melon/servers/nebula/__init__.py index 0da6e69..1153806 100644 --- a/melon/servers/nebula/__init__.py +++ b/melon/servers/nebula/__init__.py @@ -6,6 +6,7 @@ from gettext import gettext as _ from melon.servers import Server, Preference, PreferenceType from melon.servers import Feed, Channel, Video, Playlist, Stream, SearchMode from melon.servers import USER_AGENT +from melon.models import set_server_setting # NOTE: uses beautifulsoup instead of the invidious api @@ -35,6 +36,14 @@ class Nebula(Server): "", "", ), + "token": Preference( + "token", + _("Token"), + _("Automatically generated API access token"), + PreferenceType.HIDDEN, + "", + "", + ), } # nebula might contain 18+ material @@ -297,17 +306,23 @@ class Nebula(Server): email = self.settings["email"].value passwd = self.settings["password"].value - # obtain the user login token (changes every time) - # NOTE: the first time the app runs this, - # it will send out the Login Detected email - level1_auth = "https://nebula.tv/auth/login/" - level1_data = {"email": email, "password": passwd} - r1 = requests.post( - level1_auth, json=level1_data, headers={"Content-Type": "application/json"} - ) - if not r1.ok: - return [] - key1 = r1.json()["key"] + key1 = self.settings["token"].value + if key1 == "": + # obtain the user login token (changes every time) + # NOTE: the first time the app runs this, + # it will send out the Login Detected email + level1_auth = "https://nebula.tv/auth/login/" + level1_data = {"email": email, "password": passwd} + r1 = requests.post( + level1_auth, + json=level1_data, + headers={"Content-Type": "application/json"}, + ) + if not r1.ok: + return [] + key1 = r1.json()["key"] + set_server_setting(self.id, "token", key1) + self.settings["token"].value = key1 # obtain the user authorization token # (apparently always the same) diff --git a/melon/settings/__init__.py b/melon/settings/__init__.py index 7a9efcb..746be17 100644 --- a/melon/settings/__init__.py +++ b/melon/settings/__init__.py @@ -10,6 +10,7 @@ from melon.models import ( ensure_server_disabled, ensure_server_enabled, ) +from melon.utils import pass_me global_prefs = { # True if images should be shown when searching or browsing public feeds @@ -103,7 +104,7 @@ class SettingsScreen(Adw.NavigationPage): # HACK: pass contextual arguments from for loop to helper function # fixes problem where pref_id would always have value of last element row.set_callback( - pass_me(lambda val, other: set_app_setting(other[0], val), pref_id) + pass_me(lambda val, pref_id: set_app_setting(pref_id, val), pref_id) ) self.general.add(row.get_widget()) self.box.add(self.general) @@ -137,7 +138,9 @@ class SettingsScreen(Adw.NavigationPage): # fixes problem where pref_id and server_id would always have value of last element row.set_callback( pass_me( - lambda val, other: set_server_setting(other[0], other[1], val), + lambda val, server_id, pref_id: set_server_setting( + server_id, pref_id, val + ), server_id, pref_id, ) @@ -150,13 +153,8 @@ class SettingsScreen(Adw.NavigationPage): self.toolbar_view.set_content(self.wrapper) self.set_child(self.toolbar_view) - def toggle_server(self, value, other): - server_id = other[0] + def toggle_server(self, value, server_id): if value: ensure_server_enabled(server_id) else: ensure_server_disabled(server_id) - - -def pass_me(func, *args): - return lambda y: func(y, args) diff --git a/melon/widgets/player.py b/melon/widgets/player.py index ca9269b..f3602dd 100644 --- a/melon/widgets/player.py +++ b/melon/widgets/player.py @@ -104,8 +104,8 @@ volume = 1.0 # inverse opacity of overlay brightness = 1.0 -class VideoPlayerBase(Gtk.Overlay): +class VideoPlayerBase(Gtk.Overlay): def __init__(self, streams: list[Stream], with_gl=True, *args, **kwargs): super().__init__(*args, **kwargs) self.streams = streams diff --git a/melon/widgets/preferencerow.py b/melon/widgets/preferencerow.py index a029c26..95baacf 100644 --- a/melon/widgets/preferencerow.py +++ b/melon/widgets/preferencerow.py @@ -65,6 +65,16 @@ class PreferenceRow: elif pref.type is PreferenceType.MULTI: self.widget = MultiRow(pref) self.widget.connect(lambda v: self.pass_to_callback(v)) + elif pref.type is PreferenceType.HIDDEN: + self.widget = Adw.ActionRow() + self.widget.set_title(pref.name) + self.widget.set_subtitle(pref.description) + reset_btn = IconButton( + "", "object-rotate-left-symbolic", tooltip=_("Reset value") + ) + self.widget.add_suffix(reset_btn) + self.current_value = pref.value + reset_btn.connect("clicked", lambda a: self.pass_to_callback("")) else: # shouldn't be reachable self.widget = Adw.ActionRow() diff --git a/po/de.po b/po/de.po index 62dc1ab..4e8f1f6 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Melon 0.1.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-15 13:53+0200\n" +"POT-Creation-Date: 2024-08-15 15:36+0200\n" "PO-Revision-Date: 2024-04-20 14:18+0000\n" "Last-Translator: hurzelchen \n" @@ -185,13 +185,13 @@ msgstr "Kanäle" #: ../melon/browse/search.py:101 ../melon/browse/server.py:51 #: ../melon/home/playlists.py:30 ../melon/home/playlists.py:74 -#: ../melon/servers/nebula/__init__.py:203 +#: ../melon/servers/nebula/__init__.py:212 #: ../melon/servers/peertube/__init__.py:209 msgid "Playlists" msgstr "Wiedergabelisten" #: ../melon/browse/search.py:106 ../melon/browse/server.py:56 -#: ../melon/servers/nebula/__init__.py:197 +#: ../melon/servers/nebula/__init__.py:206 #: ../melon/servers/peertube/__init__.py:209 #: ../melon/servers/peertube/__init__.py:210 msgid "Videos" @@ -510,12 +510,12 @@ msgstr "" #: ../melon/playlist/__init__.py:282 ../melon/playlist/create.py:49 #: ../melon/playlist/create.py:104 ../melon/playlist/pick.py:82 -#: ../melon/playlist/pick.py:120 ../melon/widgets/preferencerow.py:175 -#: ../melon/widgets/preferencerow.py:214 +#: ../melon/playlist/pick.py:120 ../melon/widgets/preferencerow.py:185 +#: ../melon/widgets/preferencerow.py:224 msgid "Cancel" msgstr "Abbruch" -#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216 +#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:226 msgid "Delete" msgstr "Löschen" @@ -544,7 +544,7 @@ msgstr "Unbenannte Wiedergabeliste" msgid "Do not create playlist" msgstr "Wiedergabeliste nicht erstellen" -#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178 +#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:188 msgid "Create" msgstr "Erstellen" @@ -603,7 +603,7 @@ msgstr "Trends" msgid "Popular" msgstr "Beliebt" -#: ../melon/servers/nebula/__init__.py:18 +#: ../melon/servers/nebula/__init__.py:19 msgid "" "Home of smart, thoughtful videos, podcasts, and classes from your favorite " "creators" @@ -611,22 +611,30 @@ msgstr "" "Zu Hause von intelligenten, durchdachten Videos, Podcasts und Kursen von " "deinen Lieblingskanälen" -#: ../melon/servers/nebula/__init__.py:24 +#: ../melon/servers/nebula/__init__.py:25 msgid "Email Address" msgstr "E-Mail-Adresse" -#: ../melon/servers/nebula/__init__.py:25 +#: ../melon/servers/nebula/__init__.py:26 msgid "Email Address to login to your account" msgstr "E-Mail-Adresse zur Anmeldung mit deinem Konto" -#: ../melon/servers/nebula/__init__.py:32 +#: ../melon/servers/nebula/__init__.py:33 msgid "Password" msgstr "Passwort" -#: ../melon/servers/nebula/__init__.py:33 +#: ../melon/servers/nebula/__init__.py:34 msgid "Password associated with your account" msgstr "Passwort zur Anmeldung mit deinem Konto" +#: ../melon/servers/nebula/__init__.py:41 +msgid "Token" +msgstr "" + +#: ../melon/servers/nebula/__init__.py:42 +msgid "Automatically generated API access token" +msgstr "" + #: ../melon/servers/peertube/__init__.py:12 msgid "Decentralized video hosting network, based on free/libre software" msgstr "" @@ -665,11 +673,11 @@ msgstr "" msgid "Latest" msgstr "Neuste" -#: ../melon/settings/__init__.py:18 +#: ../melon/settings/__init__.py:19 msgid "Show Previews when browsing public feeds (incl. search)" msgstr "Vorschaubilder für externe Inhalte anzeigen" -#: ../melon/settings/__init__.py:20 +#: ../melon/settings/__init__.py:21 msgid "" "Set to true to show previews when viewing channel contents, public feeds and " "searching" @@ -677,11 +685,11 @@ msgstr "" "Aktiviert Vorschaubilder beim Durchsuchen von Diensten, Ansehen von Kanälen " "und Wiedergabelisten" -#: ../melon/settings/__init__.py:29 +#: ../melon/settings/__init__.py:30 msgid "Show Previews in local feeds" msgstr "Vorschaubilder für lokale Inhalte anzeigen" -#: ../melon/settings/__init__.py:31 +#: ../melon/settings/__init__.py:32 msgid "" "Set to true to show previews in the new feed, for subscribed channels, and " "saved playlists" @@ -689,12 +697,12 @@ msgstr "" "Aktiviert Vorschaubilder im Neues Tab, im Kanäle Tab und für selbst " "erstellte Wiedergabelisten" -#: ../melon/settings/__init__.py:39 +#: ../melon/settings/__init__.py:40 #, fuzzy msgid "Show servers that may contain nsfw content" msgstr "Dienste anzeigen, die teilweise NSFW Inhalte enthalten" -#: ../melon/settings/__init__.py:41 +#: ../melon/settings/__init__.py:42 #, fuzzy msgid "" "Lists/Delists servers in the browse servers list, if they contain some nsfw " @@ -702,12 +710,12 @@ msgid "" msgstr "" "Zeige Dienste, die vereinzelt NSFW Inhalte beinhalten, beim Durchsuchen an" -#: ../melon/settings/__init__.py:49 +#: ../melon/settings/__init__.py:50 #, fuzzy msgid "Show servers that only contain nsfw content" msgstr "Dienste anzeigen, die ausschließlich NSFW Inhalte enthalten" -#: ../melon/settings/__init__.py:51 +#: ../melon/settings/__init__.py:52 #, fuzzy msgid "" "Lists/Delists servers in the browse servers list, if they contain only/" @@ -715,41 +723,41 @@ msgid "" msgstr "" "Zeige Dienste, die (fast) nur NSFW Inhalte beinhalten, beim Durchsuchen an" -#: ../melon/settings/__init__.py:59 +#: ../melon/settings/__init__.py:60 msgid "Show servers that require login" msgstr "Dienste anzeigen, die ein Konto benötigen" -#: ../melon/settings/__init__.py:61 +#: ../melon/settings/__init__.py:62 msgid "" "Lists/Delists servers in the browse servers list, if they require login to " "function" msgstr "Zeige Dienste, für die du einen Account brauchst, beim Durchsuchen an" -#: ../melon/settings/__init__.py:69 +#: ../melon/settings/__init__.py:70 msgid "Use GPU acceleration for video player if available" msgstr "" -#: ../melon/settings/__init__.py:70 +#: ../melon/settings/__init__.py:71 msgid "Disable this if the video player doesn't work" msgstr "" -#: ../melon/settings/__init__.py:81 +#: ../melon/settings/__init__.py:82 msgid "Settings" msgstr "Einstellungen" -#: ../melon/settings/__init__.py:94 +#: ../melon/settings/__init__.py:95 msgid "General" msgstr "Allgemein" -#: ../melon/settings/__init__.py:95 +#: ../melon/settings/__init__.py:96 msgid "Global app settings" msgstr "Globale App Einstellungen" -#: ../melon/settings/__init__.py:119 +#: ../melon/settings/__init__.py:120 msgid "Enable Server" msgstr "Dienst aktivieren" -#: ../melon/settings/__init__.py:121 +#: ../melon/settings/__init__.py:122 msgid "" "Disabled servers won't show up in the browser or on the local/home screen" msgstr "" @@ -768,80 +776,84 @@ msgstr "" msgid "View channel" msgstr "" -#: ../melon/widgets/player.py:125 +#: ../melon/widgets/player.py:130 msgid "No streams available" msgstr "" -#: ../melon/widgets/player.py:187 +#: ../melon/widgets/player.py:192 msgid "Toggle floating window" msgstr "" -#: ../melon/widgets/player.py:193 +#: ../melon/widgets/player.py:198 msgid "Toggle fullscreen" msgstr "" -#: ../melon/widgets/player.py:215 ../melon/widgets/player.py:602 -#: ../melon/widgets/player.py:611 +#: ../melon/widgets/player.py:220 ../melon/widgets/player.py:611 +#: ../melon/widgets/player.py:620 msgid "Play" msgstr "" -#: ../melon/widgets/player.py:242 +#: ../melon/widgets/player.py:247 msgid "Stream options" msgstr "" -#: ../melon/widgets/player.py:472 +#: ../melon/widgets/player.py:481 msgid "Resolution" msgstr "Auflösung" -#: ../melon/widgets/player.py:593 +#: ../melon/widgets/player.py:602 msgid "Pause" msgstr "Pause" -#: ../melon/widgets/player.py:631 +#: ../melon/widgets/player.py:640 msgid "The video is playing in separate window" msgstr "Dieses Video spielt in einem separaten Fenster" -#: ../melon/widgets/player.py:768 +#: ../melon/widgets/player.py:777 msgid "Player" msgstr "" -#: ../melon/widgets/preferencerow.py:119 +#: ../melon/widgets/preferencerow.py:73 +msgid "Reset value" +msgstr "" + +#: ../melon/widgets/preferencerow.py:129 msgid "Add" msgstr "Hinzufügen" -#: ../melon/widgets/preferencerow.py:133 +#: ../melon/widgets/preferencerow.py:143 msgid "Move up" msgstr "Nach oben verschieben" -#: ../melon/widgets/preferencerow.py:141 +#: ../melon/widgets/preferencerow.py:151 msgid "Move down" msgstr "Nach unten verschieben" -#: ../melon/widgets/preferencerow.py:147 +#: ../melon/widgets/preferencerow.py:157 msgid "Remove from list" msgstr "Von der Liste entfernen" -#: ../melon/widgets/preferencerow.py:162 +#: ../melon/widgets/preferencerow.py:172 msgid "Add Item" msgstr "Eintrag hinzufügen" -#: ../melon/widgets/preferencerow.py:165 +#: ../melon/widgets/preferencerow.py:175 msgid "Create a new list entry" msgstr "Neuen Listeneintrag erstellen" -#: ../melon/widgets/preferencerow.py:166 +#: ../melon/widgets/preferencerow.py:176 msgid "Enter the new value here" msgstr "Gibt den neuen Wert hier ein" -#: ../melon/widgets/preferencerow.py:169 +#: ../melon/widgets/preferencerow.py:179 msgid "Value" msgstr "Wert" -#: ../melon/widgets/preferencerow.py:209 +#: ../melon/widgets/preferencerow.py:219 msgid "Delete Item?" msgstr "" -#: ../melon/widgets/preferencerow.py:211 +#: ../melon/widgets/preferencerow.py:221 msgid "" "Do you really want to delete this item? You won't be able to restore it " "afterwards" diff --git a/po/fa.po b/po/fa.po index 59f1d92..c2f6c22 100644 --- a/po/fa.po +++ b/po/fa.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Melon 0.1.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-15 13:53+0200\n" +"POT-Creation-Date: 2024-08-15 15:36+0200\n" "PO-Revision-Date: 2024-05-30 09:18+0000\n" "Last-Translator: sohrabbehdani \n" @@ -190,13 +190,13 @@ msgstr "کانال‌ها" #: ../melon/browse/search.py:101 ../melon/browse/server.py:51 #: ../melon/home/playlists.py:30 ../melon/home/playlists.py:74 -#: ../melon/servers/nebula/__init__.py:203 +#: ../melon/servers/nebula/__init__.py:212 #: ../melon/servers/peertube/__init__.py:209 msgid "Playlists" msgstr "سیاههٔ پخش" #: ../melon/browse/search.py:106 ../melon/browse/server.py:56 -#: ../melon/servers/nebula/__init__.py:197 +#: ../melon/servers/nebula/__init__.py:206 #: ../melon/servers/peertube/__init__.py:209 #: ../melon/servers/peertube/__init__.py:210 msgid "Videos" @@ -507,12 +507,12 @@ msgstr "" #: ../melon/playlist/__init__.py:282 ../melon/playlist/create.py:49 #: ../melon/playlist/create.py:104 ../melon/playlist/pick.py:82 -#: ../melon/playlist/pick.py:120 ../melon/widgets/preferencerow.py:175 -#: ../melon/widgets/preferencerow.py:214 +#: ../melon/playlist/pick.py:120 ../melon/widgets/preferencerow.py:185 +#: ../melon/widgets/preferencerow.py:224 msgid "Cancel" msgstr "لغو" -#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216 +#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:226 msgid "Delete" msgstr "حذف" @@ -541,7 +541,7 @@ msgstr "سیاههٔ پخش بدون نام" msgid "Do not create playlist" msgstr "لیست پخش را ایجاد نکن." -#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178 +#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:188 msgid "Create" msgstr "ایجاد" @@ -601,29 +601,37 @@ msgstr "" msgid "Popular" msgstr "معروف" -#: ../melon/servers/nebula/__init__.py:18 +#: ../melon/servers/nebula/__init__.py:19 msgid "" "Home of smart, thoughtful videos, podcasts, and classes from your favorite " "creators" msgstr "" "خانه ویدیوها، پادکست‌ها و کلاس‌های هوشمند و متفکر از سازندگان مورد علاقه‌تان" -#: ../melon/servers/nebula/__init__.py:24 +#: ../melon/servers/nebula/__init__.py:25 msgid "Email Address" msgstr "آدرس رایانامه" -#: ../melon/servers/nebula/__init__.py:25 +#: ../melon/servers/nebula/__init__.py:26 msgid "Email Address to login to your account" msgstr "آدرس رایانامه برای ورود به حساب کاربری" -#: ../melon/servers/nebula/__init__.py:32 +#: ../melon/servers/nebula/__init__.py:33 msgid "Password" msgstr "" -#: ../melon/servers/nebula/__init__.py:33 +#: ../melon/servers/nebula/__init__.py:34 msgid "Password associated with your account" msgstr "" +#: ../melon/servers/nebula/__init__.py:41 +msgid "Token" +msgstr "" + +#: ../melon/servers/nebula/__init__.py:42 +msgid "Automatically generated API access token" +msgstr "" + #: ../melon/servers/peertube/__init__.py:12 msgid "Decentralized video hosting network, based on free/libre software" msgstr "شبکه میزبانی ویدیو غیرمتمرکز، بر اساس نرم افزار رایگان/آزاد" @@ -660,11 +668,11 @@ msgstr "محتوا را از کارساز های فدریتد بجای محلی msgid "Latest" msgstr "آخرین" -#: ../melon/settings/__init__.py:18 +#: ../melon/settings/__init__.py:19 msgid "Show Previews when browsing public feeds (incl. search)" msgstr "نمایش پیش نمایش ها هنگام مرور خوراک‌های عمومی (از جمله جستجو)" -#: ../melon/settings/__init__.py:20 +#: ../melon/settings/__init__.py:21 msgid "" "Set to true to show previews when viewing channel contents, public feeds and " "searching" @@ -672,11 +680,11 @@ msgstr "" "برای نمایش پیش نمایش ها هنگام مشاهده محتوای کانال، فیدهای عمومی و جستجو، روی " "بله تنظیم کنید" -#: ../melon/settings/__init__.py:29 +#: ../melon/settings/__init__.py:30 msgid "Show Previews in local feeds" msgstr "نمایش پیشنمایش ها در خوراک های محلی" -#: ../melon/settings/__init__.py:31 +#: ../melon/settings/__init__.py:32 msgid "" "Set to true to show previews in the new feed, for subscribed channels, and " "saved playlists" @@ -684,61 +692,61 @@ msgstr "" "برای نمایش پیش‌نمایش‌ها در فید جدید، برای کانال‌های مشترک و لیست‌های پخش " "ذخیره‌شده، روی بله تنظیم کنید" -#: ../melon/settings/__init__.py:39 +#: ../melon/settings/__init__.py:40 msgid "Show servers that may contain nsfw content" msgstr "نمایش کارساز هایی که ممکن است دارای محتوای NSFW باشد" -#: ../melon/settings/__init__.py:41 +#: ../melon/settings/__init__.py:42 msgid "" "Lists/Delists servers in the browse servers list, if they contain some nsfw " "content" msgstr "" -#: ../melon/settings/__init__.py:49 +#: ../melon/settings/__init__.py:50 msgid "Show servers that only contain nsfw content" msgstr "نمایش کارساز هایی که تنها دارای محتوای NSFW هستند" -#: ../melon/settings/__init__.py:51 +#: ../melon/settings/__init__.py:52 msgid "" "Lists/Delists servers in the browse servers list, if they contain only/" "mostly nsfw content" msgstr "" -#: ../melon/settings/__init__.py:59 +#: ../melon/settings/__init__.py:60 msgid "Show servers that require login" msgstr "نمایش کارساز هایی که به ورود احتیاج دارند" -#: ../melon/settings/__init__.py:61 +#: ../melon/settings/__init__.py:62 msgid "" "Lists/Delists servers in the browse servers list, if they require login to " "function" msgstr "" -#: ../melon/settings/__init__.py:69 +#: ../melon/settings/__init__.py:70 msgid "Use GPU acceleration for video player if available" msgstr "" -#: ../melon/settings/__init__.py:70 +#: ../melon/settings/__init__.py:71 msgid "Disable this if the video player doesn't work" msgstr "" -#: ../melon/settings/__init__.py:81 +#: ../melon/settings/__init__.py:82 msgid "Settings" msgstr "تنظیمات" -#: ../melon/settings/__init__.py:94 +#: ../melon/settings/__init__.py:95 msgid "General" msgstr "کلی" -#: ../melon/settings/__init__.py:95 +#: ../melon/settings/__init__.py:96 msgid "Global app settings" msgstr "تنظیمات کلی کاره" -#: ../melon/settings/__init__.py:119 +#: ../melon/settings/__init__.py:120 msgid "Enable Server" msgstr "فعال کردن کارساز" -#: ../melon/settings/__init__.py:121 +#: ../melon/settings/__init__.py:122 msgid "" "Disabled servers won't show up in the browser or on the local/home screen" msgstr "" @@ -756,80 +764,84 @@ msgstr "" msgid "View channel" msgstr "" -#: ../melon/widgets/player.py:125 +#: ../melon/widgets/player.py:130 msgid "No streams available" msgstr "جریان پخشی موجود نیست" -#: ../melon/widgets/player.py:187 +#: ../melon/widgets/player.py:192 msgid "Toggle floating window" msgstr "" -#: ../melon/widgets/player.py:193 +#: ../melon/widgets/player.py:198 msgid "Toggle fullscreen" msgstr "" -#: ../melon/widgets/player.py:215 ../melon/widgets/player.py:602 -#: ../melon/widgets/player.py:611 +#: ../melon/widgets/player.py:220 ../melon/widgets/player.py:611 +#: ../melon/widgets/player.py:620 msgid "Play" msgstr "" -#: ../melon/widgets/player.py:242 +#: ../melon/widgets/player.py:247 msgid "Stream options" msgstr "تنظیمات استریم" -#: ../melon/widgets/player.py:472 +#: ../melon/widgets/player.py:481 msgid "Resolution" msgstr "وضوح" -#: ../melon/widgets/player.py:593 +#: ../melon/widgets/player.py:602 msgid "Pause" msgstr "" -#: ../melon/widgets/player.py:631 +#: ../melon/widgets/player.py:640 msgid "The video is playing in separate window" msgstr "" -#: ../melon/widgets/player.py:768 +#: ../melon/widgets/player.py:777 msgid "Player" msgstr "پخش‌کننده" -#: ../melon/widgets/preferencerow.py:119 +#: ../melon/widgets/preferencerow.py:73 +msgid "Reset value" +msgstr "" + +#: ../melon/widgets/preferencerow.py:129 msgid "Add" msgstr "افزودن" -#: ../melon/widgets/preferencerow.py:133 +#: ../melon/widgets/preferencerow.py:143 msgid "Move up" msgstr "انتقال به بالا" -#: ../melon/widgets/preferencerow.py:141 +#: ../melon/widgets/preferencerow.py:151 msgid "Move down" msgstr "انتقال به پایین" -#: ../melon/widgets/preferencerow.py:147 +#: ../melon/widgets/preferencerow.py:157 msgid "Remove from list" msgstr "حذف از لیست" -#: ../melon/widgets/preferencerow.py:162 +#: ../melon/widgets/preferencerow.py:172 msgid "Add Item" msgstr "افزودن مورد" -#: ../melon/widgets/preferencerow.py:165 +#: ../melon/widgets/preferencerow.py:175 msgid "Create a new list entry" msgstr "ایجاد یک ورودی لیست جدید" -#: ../melon/widgets/preferencerow.py:166 +#: ../melon/widgets/preferencerow.py:176 msgid "Enter the new value here" msgstr "مقادیر را اینجا وارد کنید." -#: ../melon/widgets/preferencerow.py:169 +#: ../melon/widgets/preferencerow.py:179 msgid "Value" msgstr "مقدار" -#: ../melon/widgets/preferencerow.py:209 +#: ../melon/widgets/preferencerow.py:219 msgid "Delete Item?" msgstr "" -#: ../melon/widgets/preferencerow.py:211 +#: ../melon/widgets/preferencerow.py:221 msgid "" "Do you really want to delete this item? You won't be able to restore it " "afterwards" diff --git a/po/melon.pot b/po/melon.pot index eaa35f2..85dd99a 100644 --- a/po/melon.pot +++ b/po/melon.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Melon 0.2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-15 13:53+0200\n" +"POT-Creation-Date: 2024-08-15 15:36+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -176,13 +176,13 @@ msgstr "" #: ../melon/browse/search.py:101 ../melon/browse/server.py:51 #: ../melon/home/playlists.py:30 ../melon/home/playlists.py:74 -#: ../melon/servers/nebula/__init__.py:203 +#: ../melon/servers/nebula/__init__.py:212 #: ../melon/servers/peertube/__init__.py:209 msgid "Playlists" msgstr "" #: ../melon/browse/search.py:106 ../melon/browse/server.py:56 -#: ../melon/servers/nebula/__init__.py:197 +#: ../melon/servers/nebula/__init__.py:206 #: ../melon/servers/peertube/__init__.py:209 #: ../melon/servers/peertube/__init__.py:210 msgid "Videos" @@ -492,12 +492,12 @@ msgstr "" #: ../melon/playlist/__init__.py:282 ../melon/playlist/create.py:49 #: ../melon/playlist/create.py:104 ../melon/playlist/pick.py:82 -#: ../melon/playlist/pick.py:120 ../melon/widgets/preferencerow.py:175 -#: ../melon/widgets/preferencerow.py:214 +#: ../melon/playlist/pick.py:120 ../melon/widgets/preferencerow.py:185 +#: ../melon/widgets/preferencerow.py:224 msgid "Cancel" msgstr "" -#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216 +#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:226 msgid "Delete" msgstr "" @@ -526,7 +526,7 @@ msgstr "" msgid "Do not create playlist" msgstr "" -#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178 +#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:188 msgid "Create" msgstr "" @@ -581,28 +581,36 @@ msgstr "" msgid "Popular" msgstr "" -#: ../melon/servers/nebula/__init__.py:18 +#: ../melon/servers/nebula/__init__.py:19 msgid "" "Home of smart, thoughtful videos, podcasts, and classes from your favorite " "creators" msgstr "" -#: ../melon/servers/nebula/__init__.py:24 +#: ../melon/servers/nebula/__init__.py:25 msgid "Email Address" msgstr "" -#: ../melon/servers/nebula/__init__.py:25 +#: ../melon/servers/nebula/__init__.py:26 msgid "Email Address to login to your account" msgstr "" -#: ../melon/servers/nebula/__init__.py:32 +#: ../melon/servers/nebula/__init__.py:33 msgid "Password" msgstr "" -#: ../melon/servers/nebula/__init__.py:33 +#: ../melon/servers/nebula/__init__.py:34 msgid "Password associated with your account" msgstr "" +#: ../melon/servers/nebula/__init__.py:41 +msgid "Token" +msgstr "" + +#: ../melon/servers/nebula/__init__.py:42 +msgid "Automatically generated API access token" +msgstr "" + #: ../melon/servers/peertube/__init__.py:12 msgid "Decentralized video hosting network, based on free/libre software" msgstr "" @@ -637,81 +645,81 @@ msgstr "" msgid "Latest" msgstr "" -#: ../melon/settings/__init__.py:18 +#: ../melon/settings/__init__.py:19 msgid "Show Previews when browsing public feeds (incl. search)" msgstr "" -#: ../melon/settings/__init__.py:20 +#: ../melon/settings/__init__.py:21 msgid "" "Set to true to show previews when viewing channel contents, public feeds and " "searching" msgstr "" -#: ../melon/settings/__init__.py:29 +#: ../melon/settings/__init__.py:30 msgid "Show Previews in local feeds" msgstr "" -#: ../melon/settings/__init__.py:31 +#: ../melon/settings/__init__.py:32 msgid "" "Set to true to show previews in the new feed, for subscribed channels, and " "saved playlists" msgstr "" -#: ../melon/settings/__init__.py:39 +#: ../melon/settings/__init__.py:40 msgid "Show servers that may contain nsfw content" msgstr "" -#: ../melon/settings/__init__.py:41 +#: ../melon/settings/__init__.py:42 msgid "" "Lists/Delists servers in the browse servers list, if they contain some nsfw " "content" msgstr "" -#: ../melon/settings/__init__.py:49 +#: ../melon/settings/__init__.py:50 msgid "Show servers that only contain nsfw content" msgstr "" -#: ../melon/settings/__init__.py:51 +#: ../melon/settings/__init__.py:52 msgid "" "Lists/Delists servers in the browse servers list, if they contain only/" "mostly nsfw content" msgstr "" -#: ../melon/settings/__init__.py:59 +#: ../melon/settings/__init__.py:60 msgid "Show servers that require login" msgstr "" -#: ../melon/settings/__init__.py:61 +#: ../melon/settings/__init__.py:62 msgid "" "Lists/Delists servers in the browse servers list, if they require login to " "function" msgstr "" -#: ../melon/settings/__init__.py:69 +#: ../melon/settings/__init__.py:70 msgid "Use GPU acceleration for video player if available" msgstr "" -#: ../melon/settings/__init__.py:70 +#: ../melon/settings/__init__.py:71 msgid "Disable this if the video player doesn't work" msgstr "" -#: ../melon/settings/__init__.py:81 +#: ../melon/settings/__init__.py:82 msgid "Settings" msgstr "" -#: ../melon/settings/__init__.py:94 +#: ../melon/settings/__init__.py:95 msgid "General" msgstr "" -#: ../melon/settings/__init__.py:95 +#: ../melon/settings/__init__.py:96 msgid "Global app settings" msgstr "" -#: ../melon/settings/__init__.py:119 +#: ../melon/settings/__init__.py:120 msgid "Enable Server" msgstr "" -#: ../melon/settings/__init__.py:121 +#: ../melon/settings/__init__.py:122 msgid "" "Disabled servers won't show up in the browser or on the local/home screen" msgstr "" @@ -728,80 +736,84 @@ msgstr "" msgid "View channel" msgstr "" -#: ../melon/widgets/player.py:125 +#: ../melon/widgets/player.py:130 msgid "No streams available" msgstr "" -#: ../melon/widgets/player.py:187 +#: ../melon/widgets/player.py:192 msgid "Toggle floating window" msgstr "" -#: ../melon/widgets/player.py:193 +#: ../melon/widgets/player.py:198 msgid "Toggle fullscreen" msgstr "" -#: ../melon/widgets/player.py:215 ../melon/widgets/player.py:602 -#: ../melon/widgets/player.py:611 +#: ../melon/widgets/player.py:220 ../melon/widgets/player.py:611 +#: ../melon/widgets/player.py:620 msgid "Play" msgstr "" -#: ../melon/widgets/player.py:242 +#: ../melon/widgets/player.py:247 msgid "Stream options" msgstr "" -#: ../melon/widgets/player.py:472 +#: ../melon/widgets/player.py:481 msgid "Resolution" msgstr "" -#: ../melon/widgets/player.py:593 +#: ../melon/widgets/player.py:602 msgid "Pause" msgstr "" -#: ../melon/widgets/player.py:631 +#: ../melon/widgets/player.py:640 msgid "The video is playing in separate window" msgstr "" -#: ../melon/widgets/player.py:768 +#: ../melon/widgets/player.py:777 msgid "Player" msgstr "" -#: ../melon/widgets/preferencerow.py:119 +#: ../melon/widgets/preferencerow.py:73 +msgid "Reset value" +msgstr "" + +#: ../melon/widgets/preferencerow.py:129 msgid "Add" msgstr "" -#: ../melon/widgets/preferencerow.py:133 +#: ../melon/widgets/preferencerow.py:143 msgid "Move up" msgstr "" -#: ../melon/widgets/preferencerow.py:141 +#: ../melon/widgets/preferencerow.py:151 msgid "Move down" msgstr "" -#: ../melon/widgets/preferencerow.py:147 +#: ../melon/widgets/preferencerow.py:157 msgid "Remove from list" msgstr "" -#: ../melon/widgets/preferencerow.py:162 +#: ../melon/widgets/preferencerow.py:172 msgid "Add Item" msgstr "" -#: ../melon/widgets/preferencerow.py:165 +#: ../melon/widgets/preferencerow.py:175 msgid "Create a new list entry" msgstr "" -#: ../melon/widgets/preferencerow.py:166 +#: ../melon/widgets/preferencerow.py:176 msgid "Enter the new value here" msgstr "" -#: ../melon/widgets/preferencerow.py:169 +#: ../melon/widgets/preferencerow.py:179 msgid "Value" msgstr "" -#: ../melon/widgets/preferencerow.py:209 +#: ../melon/widgets/preferencerow.py:219 msgid "Delete Item?" msgstr "" -#: ../melon/widgets/preferencerow.py:211 +#: ../melon/widgets/preferencerow.py:221 msgid "" "Do you really want to delete this item? You won't be able to restore it " "afterwards" diff --git a/po/nl.po b/po/nl.po index 581db03..8c1ec5a 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Melon 0.2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-15 13:53+0200\n" +"POT-Creation-Date: 2024-08-15 15:36+0200\n" "PO-Revision-Date: 2024-07-17 09:18+0000\n" "Last-Translator: Vistaus \n" "Language-Team: Dutch