M melon/servers/__init__.py => melon/servers/__init__.py +2 -0
@@ 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:
M melon/servers/nebula/__init__.py => melon/servers/nebula/__init__.py +26 -11
@@ 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)
M melon/settings/__init__.py => melon/settings/__init__.py +6 -8
@@ 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)
M melon/widgets/player.py => melon/widgets/player.py +1 -1
@@ 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
M melon/widgets/preferencerow.py => melon/widgets/preferencerow.py +10 -0
@@ 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()
M po/de.po => po/de.po +61 -49
@@ 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 <hurzelchen@users.noreply.translate.codeberg."
"org>\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"
M po/fa.po => po/fa.po +61 -49
@@ 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 <sohrabbehdani@users.noreply.translate."
"codeberg.org>\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"
M po/melon.pot => po/melon.pot +61 -49
@@ 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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"
M po/nl.po => po/nl.po +61 -49
@@ 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 <Vistaus@users.noreply.translate.codeberg.org>\n"
"Language-Team: Dutch <https://translate.codeberg.org/projects/melon/melon-"
@@ 191,13 191,13 @@ msgstr "Kanalen"
#: ../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 "Afspeellijsten"
#: ../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"
@@ 512,12 512,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 "Annuleren"
-#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216
+#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:226
msgid "Delete"
msgstr "Verwijderen"
@@ 546,7 546,7 @@ msgstr "Naamloze afspeellijst"
msgid "Do not create playlist"
msgstr "Geen afspeellijst maken"
-#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178
+#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:188
msgid "Create"
msgstr "Maken"
@@ 605,7 605,7 @@ msgstr "Trending"
msgid "Popular"
msgstr "Populair"
-#: ../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"
@@ 613,22 613,30 @@ msgstr ""
"Een tijdlijn met slimme, doordachte video's, podcasts en cursussen van uw "
"favoriete makers"
-#: ../melon/servers/nebula/__init__.py:24
+#: ../melon/servers/nebula/__init__.py:25
msgid "Email Address"
msgstr "E-mailadres"
-#: ../melon/servers/nebula/__init__.py:25
+#: ../melon/servers/nebula/__init__.py:26
msgid "Email Address to login to your account"
msgstr "Het e-mailadres waarmee u inlogt op uw account"
-#: ../melon/servers/nebula/__init__.py:32
+#: ../melon/servers/nebula/__init__.py:33
msgid "Password"
msgstr "Wachtwoord"
-#: ../melon/servers/nebula/__init__.py:33
+#: ../melon/servers/nebula/__init__.py:34
msgid "Password associated with your account"
msgstr "Het wachtwoord van uw account"
+#: ../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 ""
@@ 666,12 674,12 @@ msgstr ""
msgid "Latest"
msgstr "Nieuwste"
-#: ../melon/settings/__init__.py:18
+#: ../melon/settings/__init__.py:19
msgid "Show Previews when browsing public feeds (incl. search)"
msgstr ""
"Voorvertoningen inschakelen op openbare tijdlijnen (inclusief zoekpagina)"
-#: ../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"
@@ 679,11 687,11 @@ msgstr ""
"Schakel in om voorvertoningen in te schakelen op kanaalinhoud, openbare "
"tijdlijnen en de zoekpagina"
-#: ../melon/settings/__init__.py:29
+#: ../melon/settings/__init__.py:30
msgid "Show Previews in local feeds"
msgstr "Voorvertoningen inschakelen op lokale tijdlijnen"
-#: ../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"
@@ 691,22 699,22 @@ msgstr ""
"Schakel in om voorvertoningen in te schakelen op de tijdlijn, geabonneerde "
"kanalen en opgeslagen afspeellijsten"
-#: ../melon/settings/__init__.py:39
+#: ../melon/settings/__init__.py:40
msgid "Show servers that may contain nsfw content"
msgstr "Servers tonen die 18+-inhoud kunnen bevatten"
-#: ../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 ""
"Toon/Verberg servers op de verkenlijst als ze enige 18+-inhoud bevatten"
-#: ../melon/settings/__init__.py:49
+#: ../melon/settings/__init__.py:50
msgid "Show servers that only contain nsfw content"
msgstr "Servers tonen die alleen 18+-inhoud bevatten"
-#: ../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"
@@ 714,41 722,41 @@ msgstr ""
"Toon/Verberg servers op de verkenlijst als ze alleen of veelal 18+-inhoud "
"bevatten"
-#: ../melon/settings/__init__.py:59
+#: ../melon/settings/__init__.py:60
msgid "Show servers that require login"
msgstr "Servers tonen die een account vereisen"
-#: ../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 "Toon/Verberg servers op de verkenlijst als ze een account vereisen"
-#: ../melon/settings/__init__.py:69
+#: ../melon/settings/__init__.py:70
msgid "Use GPU acceleration for video player if available"
msgstr "Hardwareversnelling gebruiken in videospeler (indien beschikbaar)"
-#: ../melon/settings/__init__.py:70
+#: ../melon/settings/__init__.py:71
msgid "Disable this if the video player doesn't work"
msgstr "Schakel dit uit als de videospeler niet werkt"
-#: ../melon/settings/__init__.py:81
+#: ../melon/settings/__init__.py:82
msgid "Settings"
msgstr "Voorkeuren"
-#: ../melon/settings/__init__.py:94
+#: ../melon/settings/__init__.py:95
msgid "General"
msgstr "Algemeen"
-#: ../melon/settings/__init__.py:95
+#: ../melon/settings/__init__.py:96
msgid "Global app settings"
msgstr "Algemene voorkeuren"
-#: ../melon/settings/__init__.py:119
+#: ../melon/settings/__init__.py:120
msgid "Enable Server"
msgstr "Server inschakelen"
-#: ../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 ""
@@ 766,80 774,84 @@ msgstr "Openen in webbrowser"
msgid "View channel"
msgstr "Kanaal bekijken"
-#: ../melon/widgets/player.py:125
+#: ../melon/widgets/player.py:130
msgid "No streams available"
msgstr "Er zijn geen streams beschikbaar"
-#: ../melon/widgets/player.py:187
+#: ../melon/widgets/player.py:192
msgid "Toggle floating window"
msgstr "Zwevend venster aan/uit"
-#: ../melon/widgets/player.py:193
+#: ../melon/widgets/player.py:198
msgid "Toggle fullscreen"
msgstr "Schermvullende weergave aan/uit"
-#: ../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 "Afspelen"
-#: ../melon/widgets/player.py:242
+#: ../melon/widgets/player.py:247
msgid "Stream options"
msgstr "Streamopties"
-#: ../melon/widgets/player.py:472
+#: ../melon/widgets/player.py:481
msgid "Resolution"
msgstr "Resolutie"
-#: ../melon/widgets/player.py:593
+#: ../melon/widgets/player.py:602
msgid "Pause"
msgstr "Pauzeren"
-#: ../melon/widgets/player.py:631
+#: ../melon/widgets/player.py:640
msgid "The video is playing in separate window"
msgstr "De video wordt in een apart venster afgespeeld"
-#: ../melon/widgets/player.py:768
+#: ../melon/widgets/player.py:777
msgid "Player"
msgstr "Speler"
-#: ../melon/widgets/preferencerow.py:119
+#: ../melon/widgets/preferencerow.py:73
+msgid "Reset value"
+msgstr ""
+
+#: ../melon/widgets/preferencerow.py:129
msgid "Add"
msgstr "Toevoegen"
-#: ../melon/widgets/preferencerow.py:133
+#: ../melon/widgets/preferencerow.py:143
msgid "Move up"
msgstr "Omhoog verplaatsen"
-#: ../melon/widgets/preferencerow.py:141
+#: ../melon/widgets/preferencerow.py:151
msgid "Move down"
msgstr "Omlaag verplaatsen"
-#: ../melon/widgets/preferencerow.py:147
+#: ../melon/widgets/preferencerow.py:157
msgid "Remove from list"
msgstr "Verwijderen van lijst"
-#: ../melon/widgets/preferencerow.py:162
+#: ../melon/widgets/preferencerow.py:172
msgid "Add Item"
msgstr "Item toevoegen"
-#: ../melon/widgets/preferencerow.py:165
+#: ../melon/widgets/preferencerow.py:175
msgid "Create a new list entry"
msgstr "Nieuw lijstitem"
-#: ../melon/widgets/preferencerow.py:166
+#: ../melon/widgets/preferencerow.py:176
msgid "Enter the new value here"
msgstr "Voer hier de nieuwe waarde in"
-#: ../melon/widgets/preferencerow.py:169
+#: ../melon/widgets/preferencerow.py:179
msgid "Value"
msgstr "Waarde"
-#: ../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"