M main.py => main.py +1 -0
@@ 1,6 1,7 @@
# manual quick-run script
import sys
from melon.application import Application
+
Application.application_id = "icu.ccw.melon"
app = Application()
M melon/__init__.py => melon/__init__.py +6 -0
@@ 0,0 1,6 @@
+import gi
+
+gi.require_version("Gtk", "4.0")
+gi.require_version("Gdk", "4.0")
+gi.require_version("Adw", "1")
+gi.require_version("Gst", "1.0")
M melon/application.py => melon/application.py +3 -7
@@ 1,12 1,8 @@
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, GLib
+from gi.repository import Adw, GLib
from melon.window import MainWindow
-from melon.models import init_db, notify
-from melon.servers.utils import get_server_instance, load_server, get_servers_list
+from melon.models import init_db, notify, load_server
+from melon.servers.utils import get_server_instance, get_servers_list
class Application(Adw.Application):
M melon/browse/__init__.py => melon/browse/__init__.py +3 -7
@@ 1,14 1,10 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, Gdk, GLib
+from gi.repository import Gtk, Adw, Gdk, GLib
from gettext import gettext as _
from melon.widgets.iconbutton import IconButton
from melon.servers.utils import get_allowed_servers_list
-from melon.models import get_app_settings, register_callback
+from melon.models import get_app_settings
+from melon.models.callbacks import register_callback
class BrowseScreen(Adw.NavigationPage):
M melon/browse/channel.py => melon/browse/channel.py +4 -10
@@ 1,16 1,10 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, Gdk, GLib
+from gi.repository import Gtk, Adw, Gdk, GLib
from unidecode import unidecode
from gettext import gettext as _
import threading
from melon.servers.utils import get_server_instance, get_servers_list
from melon.servers.utils import pixbuf_from_url
-from melon.servers import SearchMode
from melon.widgets.feeditem import AdaptiveFeedItem
from melon.widgets.preferencerow import PreferenceRow, PreferenceType, Preference
from melon.widgets.iconbutton import IconButton
@@ 47,7 41,7 @@ class BrowseChannelScreen(Adw.NavigationPage):
change the feed and prepare layout
"""
self.current_feed = feed_id
- if not self.results is None:
+ if self.results is not None:
self.box.remove(self.results)
self.results = Adw.PreferencesGroup()
feed_name = ""
@@ 92,7 86,7 @@ class BrowseChannelScreen(Adw.NavigationPage):
# display channel info
av = Adw.Avatar()
av.set_size(64)
- if not texture is None:
+ if texture is not None:
av.set_custom_image(texture)
else:
av.set_text(self.channel.name)
@@ 133,7 127,7 @@ class BrowseChannelScreen(Adw.NavigationPage):
if app_conf["show_images_in_browse"]:
pixbuf = pixbuf_from_url(self.channel.avatar)
texture = None
- if not pixbuf is None:
+ if pixbuf is not None:
texture = Gdk.Texture.new_for_pixbuf(pixbuf)
GLib.idle_add(self.display_info, texture)
M melon/browse/playlist.py => melon/browse/playlist.py +3 -9
@@ 1,16 1,10 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, Gdk, GLib
+from gi.repository import Gtk, Adw, Gdk, GLib
from unidecode import unidecode
from gettext import gettext as _
import threading
from melon.servers.utils import get_server_instance, get_servers_list
from melon.servers.utils import pixbuf_from_url
-from melon.servers import SearchMode
from melon.widgets.feeditem import AdaptiveFeedItem
from melon.widgets.iconbutton import IconButton
from melon.widgets.preferencerow import PreferenceRow, PreferenceType, Preference
@@ 79,7 73,7 @@ class BrowsePlaylistScreen(Adw.NavigationPage):
# display channel info
av = Adw.Avatar()
av.set_size(64)
- if not texture is None:
+ if texture is not None:
av.set_custom_image(texture)
else:
av.set_text(self.playlist.title)
@@ 96,7 90,7 @@ class BrowsePlaylistScreen(Adw.NavigationPage):
if app_conf["show_images_in_browse"]:
pixbuf = pixbuf_from_url(self.playlist.thumbnail)
texture = None
- if not pixbuf is None:
+ if pixbuf is not None:
texture = Gdk.Texture.new_for_pixbuf(pixbuf)
GLib.idle_add(self.display_info, texture)
M melon/browse/search.py => melon/browse/search.py +4 -8
@@ 1,9 1,4 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, Gdk, GLib
+from gi.repository import Gtk, Adw
from gettext import gettext as _
from gettext import ngettext
@@ 11,8 6,9 @@ from melon.widgets.iconbutton import IconButton
from melon.widgets.feeditem import AdaptiveFeedItem
from melon.widgets.filterbutton import FilterButton
from melon.servers.utils import get_allowed_servers_list, get_server_instance
-from melon.models import get_app_settings, register_callback
-from melon.servers import SearchMode, Preference, PreferenceType
+from melon.models import get_app_settings
+from melon.models.callbacks import register_callback
+from melon.servers import SearchMode
class GlobalSearchScreen(Adw.NavigationPage):
M melon/browse/server.py => melon/browse/server.py +4 -9
@@ 1,9 1,4 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, Gdk, GLib
+from gi.repository import Gtk, Adw, GLib
import threading
from gettext import gettext as _
@@ 94,7 89,7 @@ class Search(ViewStackPage):
self.reset()
return
# remove old results
- if not self.results is None:
+ if self.results is not None:
self.inner.remove(self.results)
# add new result wrapper
self.results = Adw.PreferencesGroup()
@@ 109,7 104,7 @@ class Search(ViewStackPage):
self.inner.append(self.results)
def reset(self):
- if not self.results is None:
+ if self.results is not None:
self.inner.remove(self.results)
self.results = Adw.StatusPage()
self.results.set_title(_("*crickets chirping*"))
@@ 221,7 216,7 @@ class BrowseServerScreen(Adw.NavigationPage):
self.toolbar_view.add_bottom_bar(self.bottom_bar)
self.set_child(self.toolbar_view)
- if not window is None:
+ if window is not None:
window.breakpoint.add_setter(self.header_bar, "title-widget", Gtk.Box())
window.breakpoint.add_setter(self.bottom_bar, "reveal", True)
M melon/home/__init__.py => melon/home/__init__.py +0 -5
@@ 1,8 1,3 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, Gio
from gettext import gettext as _
M melon/home/history.py => melon/home/history.py +4 -8
@@ 1,8 1,3 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, GLib
import threading
from gettext import gettext as _
@@ 10,7 5,8 @@ from gettext import gettext as _
from melon.widgets.viewstackpage import ViewStackPage
from melon.widgets.iconbutton import IconButton
from melon.widgets.feeditem import AdaptiveFeedItem
-from melon.models import get_history, register_callback, get_app_settings
+from melon.models import get_history, get_app_settings
+from melon.models.callbacks import register_callback
from melon.servers.utils import group_by_date, filter_resources
@@ 74,7 70,7 @@ class History(ViewStackPage):
if self.focus_node is None:
self.focus_node = group
# remove old load more button
- if not self.next_ctr is None:
+ if self.next_ctr is not None:
self.results.remove(self.next_ctr)
# show Load more button if there are more entries
if len(self.data) > (page + 1) * self.page_size:
@@ 97,7 93,7 @@ class History(ViewStackPage):
# auto scroll to it
# NOTE: we have to delay this, because everything has to be layout first
# and apparently GTK doesn't have an event for this
- if not self.focus_node is None:
+ if self.focus_node is not None:
GLib.timeout_add(500, lambda: self.wrapper.scroll_to(self.focus_node))
def schedule(self):
M melon/home/new.py => melon/home/new.py +6 -11
@@ 1,9 1,4 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, GLib, Gio, GObject
+from gi.repository import Gtk, Adw, GLib
import threading
from datetime import datetime
from gettext import gettext as _
@@ 11,8 6,8 @@ from gettext import gettext as _
from melon.widgets.viewstackpage import ViewStackPage
from melon.widgets.iconbutton import IconButton
from melon.widgets.feeditem import AdaptiveFeedItem
-from melon.servers.utils import fetch_home_feed, group_by_date
-from melon.models import register_callback
+from melon.servers.utils import fetch_home_feed
+from melon.models.callbacks import register_callback
from melon.models import get_subscribed_channels, get_app_settings
from melon.models import (
get_cached_feed,
@@ 138,7 133,7 @@ class NewFeed(ViewStackPage):
def load_overlay(self):
last = get_last_playback()
- if not last is None:
+ if last is not None:
pos = last[1]
dur = last[2]
if pos is None or dur is None:
@@ 152,10 147,10 @@ class NewFeed(ViewStackPage):
# TODO: move into settings menu
last = None
if last is None:
- if not self.ov_toast is None:
+ if self.ov_toast is not None:
self.ov_toast.dismiss()
return
- if not self.ov_toast is None:
+ if self.ov_toast is not None:
self.ov_toast.dismiss()
self.ov_toast = None
resource = last[0]
M melon/home/playlists.py => melon/home/playlists.py +2 -6
@@ 1,8 1,3 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, GLib
import threading
from gettext import gettext as _
@@ 10,7 5,8 @@ from gettext import gettext as _
from melon.widgets.viewstackpage import ViewStackPage
from melon.widgets.iconbutton import IconButton
from melon.widgets.feeditem import AdaptivePlaylistFeedItem
-from melon.models import register_callback, get_playlists, get_app_settings
+from melon.models import get_playlists, get_app_settings
+from melon.models.callbacks import register_callback
from melon.models import PlaylistWrapperType
from melon.servers.utils import server_is_allowed
M melon/home/subs.py => melon/home/subs.py +2 -6
@@ 1,8 1,3 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, GLib
import threading
from gettext import gettext as _
@@ 10,7 5,8 @@ from gettext import gettext as _
from melon.widgets.viewstackpage import ViewStackPage
from melon.widgets.iconbutton import IconButton
from melon.widgets.feeditem import AdaptiveFeedItem
-from melon.models import get_subscribed_channels, register_callback, get_app_settings
+from melon.models import get_subscribed_channels, get_app_settings
+from melon.models.callbacks import register_callback
from melon.servers.utils import filter_resources
M melon/import_providers/newpipe.py => melon/import_providers/newpipe.py +3 -5
@@ 8,9 8,7 @@ from melon.servers import Channel, Playlist, Video
from melon.models import (
ensure_subscribed_to_channel,
ensure_bookmark_external_playlist,
- add_to_history,
new_local_playlist,
- add_to_local_playlist,
set_local_playlist_thumbnail,
add_history_items,
add_videos,
@@ 106,7 104,7 @@ class NewpipeImporter(ImportProvider, ABC):
title = dt[2]
channel_name = dt[5]
channel_id = None
- if not dt[4] is None:
+ if dt[4] is not None:
channel_id = dt[4].split("/")[-1]
thumb = dt[6].replace("https://i.ytimg.com", self.img_url)
# newpipe does not store description
@@ 150,7 148,7 @@ class NewpipeImporter(ImportProvider, ABC):
title = vdt[2]
channel_name = vdt[3]
channel_id = None
- if not vdt[4] is None:
+ if vdt[4] is not None:
channel_id = vdt[4].split("/")[-1]
thumb = vdt[5].replace("https://i.ytimg.com", self.img_url)
# newpipe doesn't store descriptions
@@ 175,7 173,7 @@ class NewpipeImporter(ImportProvider, ABC):
""",
(dt[2],),
).fetchone()
- if not thumb is None:
+ if thumb is not None:
set_local_playlist_thumbnail(
pid, thumb[0].replace("https://i.ytimg.com", self.img_url)
)
M melon/import_providers/utils.py => melon/import_providers/utils.py +1 -6
@@ 1,9 1,4 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, GLib, Gio
+from gi.repository import Gtk, GLib, Gio
from melon.import_providers import ImportProvider, PickerMode
M melon/importer.py => melon/importer.py +3 -7
@@ 1,16 1,12 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio
+from gi.repository import Gtk, Adw
from gettext import gettext as _
from melon.import_providers.utils import ImportPicker
-from melon.import_providers import ImportProvider, PickerMode
+from melon.import_providers import ImportProvider
from melon.models.callbacks import freeze, unfreeze
from melon.servers.utils import get_allowed_servers_list, get_server_instance
from melon.models import get_app_settings
+from melon.widgets.iconbutton import IconButton
class ImporterScreen(Adw.NavigationPage):
M melon/models/__init__.py => melon/models/__init__.py +4 -6
@@ 1,7 1,6 @@
from copy import deepcopy
from enum import Enum, auto
from datetime import datetime
-from functools import cache
import sqlite3
import os
import json
@@ 9,7 8,7 @@ import sys
from melon.servers import Video, Channel, Playlist, Resource
from melon.utils import get_data_dir
-from melon.models.callbacks import notify, register_callback
+from melon.models.callbacks import notify
class LocalPlaylist:
@@ 447,7 446,7 @@ def get_server_settings(sid: str):
try:
# autoparse json
value = convert_json(setting[1])
- except Exception as e:
+ except Exception:
# fallback to native type on error
value = setting[1]
base["custom"][setting[0]] = value
@@ 459,7 458,7 @@ def is_server_enabled(server_id: str):
value = conn.execute(
"SELECT enabled FROM servers WHERE server = ?", (server_id,)
).fetchone()
- if not value is None:
+ if value is not None:
value = value[0]
else:
value = server_settings_template["enabled"]
@@ 975,7 974,7 @@ def add_to_history(vid, uts=None):
Takes :Video type and adds the video to the history
automatically adds a uts to the video
"""
- if uts == None:
+ if uts is None:
uts = datetime.now().timestamp()
ensure_video(vid)
conn = connect_to_db()
@@ 1062,7 1061,6 @@ def update_cached_feed(ls: list[(Video, int)]):
# stored in app settings
# code same as set_app_setting
# but the notify's in the normal function would cause an infinite loop
- app_conf = get_app_settings()
execute_sql(
conn,
"""
M melon/models/callbacks.py => melon/models/callbacks.py +3 -3
@@ 31,14 31,14 @@ def unfreeze():
def register_callback(target: str, callback_id: str, function):
- if not target in callbacks:
+ if target not in callbacks:
return
callbacks[target][callback_id] = function
return lambda: unregister_callback(target, callback_id)
def unregister_callback(target: str, callback_id: str):
- if not target in callbacks:
+ if target not in callbacks:
return
if callback_id in callbacks[target]:
callbacks[target].pop(callback_id)
@@ 47,7 47,7 @@ def unregister_callback(target: str, callback_id: str):
def notify(target: str):
if frozen:
return
- if not target in callbacks:
+ if target not in callbacks:
return
for _, func in callbacks[target].items():
func()
M melon/player/__init__.py => melon/player/__init__.py +7 -16
@@ 1,28 1,19 @@
-import gi
-
-gi.require_version("WebKit", "6.0")
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-gi.require_version("Gst", "1.0")
-from gi.repository import Gtk, Adw, WebKit, GLib, Gst
+from gi.repository import Gtk, Adw, GLib
from unidecode import unidecode
from gettext import gettext as _
import threading
from melon.servers.utils import get_server_instance, get_servers_list
-from melon.servers import SearchMode
from melon.widgets.player import VideoPlayer
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, add_to_history, register_callback
+from melon.models import get_app_settings, add_to_history
from melon.models import (
get_video_playback_position,
set_video_playback_position,
set_video_playback_position_force,
get_video_duration,
)
-from melon.utils import pass_me
class PlayerScreen(Adw.NavigationPage):
@@ 66,7 57,7 @@ class PlayerScreen(Adw.NavigationPage):
settings = get_app_settings()
self.player = VideoPlayer(self.streams, settings["with_gl"])
pos = get_video_playback_position(self.video.server, self.video.id)
- if not pos is None:
+ if pos is not None:
self.position = pos
self.player.goto(pos)
self.player.connect_update(self.on_player_data)
@@ 79,7 70,7 @@ class PlayerScreen(Adw.NavigationPage):
self.disconnect_player()
def disconnect_player(self):
- if not self.player is None:
+ if self.player is not None:
self.player.connect_ended(None)
self.player.connect_update(None)
self.player.stop()
@@ 104,7 95,7 @@ class PlayerScreen(Adw.NavigationPage):
self.duration = duration
def display_channel(self):
- if not self.channel is None:
+ if self.channel is not None:
self.about.add(AdaptiveFeedItem(self.channel))
return False
@@ 188,7 179,7 @@ class PlayerScreen(Adw.NavigationPage):
# reset playback position if video was nearly completely watched
pos = get_video_playback_position(server_id, video_id)
dur = get_video_duration(server_id, video_id)
- if not pos is None and not dur is None:
+ if pos is not None and dur is not None:
# TODO consider moving this to the settings panel
consider_done = 0.99 * dur
# video was probably watched till end
@@ 203,7 194,7 @@ class PlayerScreen(Adw.NavigationPage):
server = get_servers_list()[server_id]
self.instance = get_server_instance(server)
- if not self.external_btn is None:
+ if self.external_btn is not None:
self.header_bar.remove(self.external_btn)
self.external_btn = IconButton("", "modem-symbolic")
self.external_btn.connect("clicked", self.on_open_in_browser)
M melon/player/playlist.py => melon/player/playlist.py +6 -20
@@ 1,28 1,14 @@
-import gi
-
-gi.require_version("WebKit", "6.0")
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, WebKit, GLib
-from unidecode import unidecode
+from gi.repository import Gtk, Adw, GLib
from gettext import gettext as _
import threading
import random
from melon.servers.utils import get_server_instance, get_servers_list
-from melon.servers import SearchMode
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, add_to_history, register_callback
-from melon.models import (
- get_video_playback_position,
- set_video_playback_position,
- set_video_playback_position_force,
-)
from melon.utils import pass_me
-from melon.models import get_local_playlist, PlaylistWrapper, PlaylistWrapperType
+from melon.models import get_local_playlist, PlaylistWrapper
from melon.player import PlayerScreen
@@ 116,12 102,12 @@ class PlaylistPlayerScreen(PlayerScreen):
return
ind = self.get_next_index(0)
- if not ind is None:
+ if ind is not None:
self.prepare(ind)
def get_next_index(self, fallback=None):
index = self.playlist_index + 1
- if not fallback is None:
+ if fallback is not None:
index = fallback
if self.playlist_repeat_single:
@@ 154,7 140,7 @@ class PlaylistPlayerScreen(PlayerScreen):
def on_player_end(self):
super().on_player_end()
ind = self.get_next_index()
- if not ind is None:
+ if ind is not None:
self.prepare(ind)
def empty_playlist(self):
@@ 196,7 182,7 @@ class PlaylistPlayerScreen(PlayerScreen):
def ctr_skip_video(self):
ind = self.get_next_index()
- if not ind is None:
+ if ind is not None:
self.prepare(ind)
def ctr_toggle_shuffle(self, state):
M melon/playlist/__init__.py => melon/playlist/__init__.py +4 -15
@@ 1,14 1,7 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Gdk, Adw, GLib, GObject
from unidecode import unidecode
from gettext import gettext as _
-from melon.servers.utils import get_servers_list, get_server_instance
-from melon.servers import Preference, PreferenceType, Resource
from melon.widgets.iconbutton import IconButton
from melon.widgets.feeditem import AdaptiveFeedItem
from melon.widgets.simpledialog import SimpleDialog
@@ 21,20 14,14 @@ from melon.models import (
set_local_playlist_thumbnail,
delete_from_local_playlist,
set_local_playlist_content,
- is_server_enabled,
- ensure_server_disabled,
- ensure_server_enabled,
- register_callback,
)
+from melon.models.callbacks import register_callback
from melon.utils import pass_me
class LocalPlaylistScreen(Adw.NavigationPage):
def __init__(self, playlist_id, *args, **kwargs):
super().__init__(*args, **kwargs)
-
- app_conf = get_app_settings()
-
self.playlist_id = playlist_id
# register update listener
self.unregister = register_callback(
@@ 107,7 94,9 @@ class LocalPlaylistScreen(Adw.NavigationPage):
for raw_index, (entry, index) in enumerate(
sorted(playlist.content, key=lambda x: x[1])
):
- item = AdaptiveFeedItem(entry)
+ item = AdaptiveFeedItem(
+ entry, show_preview=app_conf["show_images_in_feed"]
+ )
item.menuitems = [
(
_("Set as playlist thumbnail"),
M melon/playlist/create.py => melon/playlist/create.py +5 -10
@@ 1,9 1,4 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, GLib
+from gi.repository import Gtk, Adw, GLib
from gettext import gettext as _
import threading
@@ 11,14 6,14 @@ from melon.widgets.iconbutton import IconButton
from melon.widgets.simpledialog import SimpleDialog
from melon.widgets.feeditem import AdaptiveFeedItem
from melon.models import new_local_playlist, Video
-from melon.servers.utils import get_app_settings
+from melon.servers.utils import get_app_settings, get_server_instance, get_servers_list
class PlaylistCreatorDialog(SimpleDialog):
def display(self, video=None):
page = Adw.PreferencesPage()
self.content = []
- if not video is None:
+ if video is not None:
self.content = [video]
# use preference group as preview for video element
preview_group = Adw.PreferencesGroup()
@@ 83,7 78,7 @@ class PlaylistCreatorDialog(SimpleDialog):
if isinstance(target, Video):
# target is already a video object
video = target
- elif not target is None:
+ elif target is not None:
# we have to fetch the video ourselves
server_id = target[0]
video_id = target[1]
@@ 91,7 86,7 @@ class PlaylistCreatorDialog(SimpleDialog):
if server_id in servers:
instance = get_server_instance(servers[server_id])
video = instance.get_video_info(video_id)
- if (not target is None) and video is None:
+ if (target is not None) and video is None:
# tried loading video data but failed
GLib.idle_add(self.err)
else:
M melon/playlist/pick.py => melon/playlist/pick.py +4 -10
@@ 1,10 1,4 @@
-import sys
-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 gi.repository import Gtk, Adw, GLib
from gettext import gettext as _
import threading
@@ 14,7 8,6 @@ from melon.widgets.simpledialog import SimpleDialog
from melon.models import get_playlists, PlaylistWrapperType, add_to_local_playlist
from melon.servers.utils import (
get_app_settings,
- pixbuf_from_url,
get_servers_list,
get_server_instance,
)
@@ 80,6 73,7 @@ class PlaylistPickerDialog(SimpleDialog):
playlist,
video,
),
+ show_preview=app_conf["show_images_in_feed"],
)
group.add(row)
@@ 103,7 97,7 @@ class PlaylistPickerDialog(SimpleDialog):
def background(self, target=None):
video = None
- if not target is None:
+ if target is not None:
server_id = target[0]
video_id = target[1]
servers = get_servers_list()
@@ 111,7 105,7 @@ class PlaylistPickerDialog(SimpleDialog):
instance = get_server_instance(servers[server_id])
video = instance.get_video_info(video_id)
- if not video is None:
+ if video is not None:
GLib.idle_add(self.display, video)
else:
GLib.idle_add(self.error)
M melon/servers/__init__.py => melon/servers/__init__.py +2 -9
@@ 1,13 1,6 @@
-from enum import Flag, Enum, auto
+from enum import Enum, auto
from abc import ABC, abstractmethod
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-gi.require_version("WebKit", "6.0")
-from gi.repository import GObject, WebKit
-from typing import Callable
-
+from gi.repository import GObject
from melon.servers.loader import server_finder
from melon.import_providers import ImportProvider
M melon/servers/invidious/__init__.py => melon/servers/invidious/__init__.py +4 -9
@@ 3,16 3,11 @@ import requests
from urllib.parse import urlparse, parse_qs
from datetime import datetime
from gettext import gettext as _
-import gi
-
-gi.require_version("WebKit", "6.0")
-from gi.repository import GLib, WebKit
from melon.import_providers.newpipe import NewpipeImporter
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.utils import pass_me
class NewpipeInvidiousImporter(NewpipeImporter):
@@ 298,7 293,7 @@ class Invidious(Server):
current_page = query["page"][0]
try:
current_page = int(current_page)
- except Exception as e:
+ except Exception:
current_page = 1
instance = self.get_external_url()
listings = soup.find_all("a", {"class": "pure-button"})
@@ 308,12 303,12 @@ class Invidious(Server):
iquery = parse_qs(iurlres.query)
if iurlres.path != urlres.path:
continue
- if not "page" in iquery:
+ if "page" not in iquery:
continue
ipage = 1
try:
ipage = int(iquery["page"][0])
- except Exception as e:
+ except Exception:
ipage = 1
if ipage <= current_page:
continue
@@ 358,7 353,7 @@ class Invidious(Server):
rel = src["src"]
stream_url = f"{instance}{rel}"
results.append(Stream(stream_url, src["label"]))
- except:
+ except Exception as _:
continue
return results
return []
M melon/servers/nebula/__init__.py => melon/servers/nebula/__init__.py +5 -7
@@ 1,6 1,4 @@
-from bs4 import BeautifulSoup
import requests
-from urllib.parse import urlparse, parse_qs
from datetime import datetime
import json
from gettext import gettext as _
@@ 138,7 136,7 @@ class Nebula(Server):
results = []
for entry in listing["items"]:
res = self.parse_entry(entry)
- if not res is None:
+ if res is not None:
results.append(res)
return results
@@ 166,7 164,7 @@ class Nebula(Server):
data = json.loads(r.text)
for entry in data["results"]:
res = self.parse_entry(entry)
- if not res is None:
+ if res is not None:
results.append(res)
if mask == SearchMode.ANY or mask == SearchMode.VIDEOS:
# fetch videos
@@ 175,7 173,7 @@ class Nebula(Server):
data = json.loads(r.text)
for entry in data["results"]:
res = self.parse_entry(entry)
- if not res is None:
+ if res is not None:
results.append(res)
return results
@@ 199,7 197,7 @@ class Nebula(Server):
video_feed = Feed("videos", _("Videos"))
if r.ok:
data = json.loads(r.text)
- if (not "playlist" in data) or len(data["playlist"]) == 0:
+ if ("playlist" not in data) or len(data["playlist"]) == 0:
return [video_feed]
else:
return [video_feed, Feed("playlists", _("Playlists"))]
@@ 302,7 300,7 @@ class Nebula(Server):
# 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 = f"https://nebula.tv/auth/login/"
+ 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"}
M melon/servers/peertube/__init__.py => melon/servers/peertube/__init__.py +3 -6
@@ 1,12 1,9 @@
import requests
-from urllib.parse import urlparse, parse_qs
from datetime import datetime
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.import_providers.newpipe import NewpipeImporter
class Peertube(Server):
@@ 122,7 119,7 @@ class Peertube(Server):
item_host = item["host"]
channel_id = f"https://{item_host}::{item_id}"
avatar = None
- if "avatar" in item and not item["avatar"] is None:
+ if "avatar" in item and item["avatar"] is not None:
path = item["avatar"]["path"]
avatar = f"{instance}{path}"
c = Channel(
@@ 194,7 191,7 @@ class Peertube(Server):
channel_host = data["host"]
channel_id = f"https://{channel_host}::{channel_slug}"
avatar = None
- if "avatar" in data and not data["avatar"] is None:
+ if "avatar" in data and data["avatar"] is not None:
avatar_path = data["avatar"]["path"]
avatar = f"{instance}{avatar_path}"
return Channel(
@@ 307,7 304,7 @@ class Peertube(Server):
channel_slug = item["channel"]["name"]
channel_host = item["channel"]["host"]
channel_id = f"https://{channel_host}::{channel_slug}"
- except Exception as e:
+ except Exception:
# skip invalid entries
# peertube keeps deleted videos in the playlist
# but doesn't set all attributes
M melon/servers/utils.py => melon/servers/utils.py +5 -11
@@ 1,23 1,21 @@
-from operator import itemgetter
from pkgutil import iter_modules
import importlib
import inspect
from functools import cache
+import threading
import os
import sys
-from gi.repository import GLib, Gtk, Gdk, GdkPixbuf, Gio
+from gi.repository import GLib, GdkPixbuf
import requests
-import urllib
from datetime import datetime
from melon.servers.loader import server_finder
from melon.models import (
get_server_settings,
get_subscribed_channels,
get_app_settings,
- load_server,
)
from melon.servers import Server
-from melon.servers import Channel, Playlist, Resource
+from melon.servers import Resource
def pixbuf_from_url(url: str) -> GdkPixbuf.Pixbuf:
@@ 39,7 37,7 @@ def pixbuf_from_url(url: str) -> GdkPixbuf.Pixbuf:
loader.write_bytes(GLib.Bytes.new(content))
loader.close()
return loader.get_pixbuf()
- except:
+ except Exception as _:
return None
@@ 55,9 53,6 @@ def get_server_instance(server) -> Server:
return instance
-import threading
-
-
class NewsWorkerPool:
threads = []
tasks = []
@@ 74,7 69,6 @@ class NewsWorkerPool:
self.threads.append(thread)
def run(self):
- name = threading.currentThread().getName()
while self.tasks:
task = self.tasks.pop(0)
instance = task[0]
@@ 101,7 95,7 @@ def fetch_home_feed() -> list[Resource]:
# generate list of tasks
tasks = []
for server in servers:
- if not server["id"] in db:
+ if server["id"] not in db:
continue
instance = get_server_instance(server)
channels = db[server["id"]]
M melon/settings/__init__.py => melon/settings/__init__.py +0 -5
@@ 1,8 1,3 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw
from gettext import gettext as _
M melon/utils.py => melon/utils.py +1 -4
@@ 1,7 1,4 @@
-import gi
-
-gi.require_version("Gdk", "4.0")
-from gi.repository import Gio, GLib
+from gi.repository import GLib
from functools import cache
import os
M melon/widgets/feeditem.py => melon/widgets/feeditem.py +4 -11
@@ 1,14 1,7 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, GLib, Gdk
from melon.servers import Resource, Video, Playlist, Channel
from melon.servers.utils import pixbuf_from_url
-from melon.widgets.iconbutton import IconButton
from melon.models import PlaylistWrapperType, PlaylistWrapper
-import threading
from melon.background import queue
from unidecode import unidecode
from gettext import gettext as _
@@ 101,7 94,7 @@ class AdaptiveFeedItem(Adw.ActionRow):
if self.onClick is None:
self.set_action_name("win.browse_channel")
- if not self.onClick is None:
+ if self.onClick is not None:
self.connect("activated", self.onClick)
self.preview = Adw.Avatar()
@@ 118,7 111,7 @@ class AdaptiveFeedItem(Adw.ActionRow):
GLib.idle_add(self.complete_avatar, texture)
return
pixbuf = pixbuf_from_url(url)
- if not pixbuf is None:
+ if pixbuf is not None:
texture = Gdk.Texture.new_for_pixbuf(pixbuf)
preview_cache[url] = texture
GLib.idle_add(self.complete_avatar, texture)
@@ 195,7 188,7 @@ class AdaptivePlaylistFeedItem(Adw.ActionRow):
super().__init__(*args, **kwargs)
self.set_title(unidecode(playlist.inner.title).replace("&", "&"))
self.set_subtitle(unidecode(playlist.inner.description).replace("&", "&"))
- if not onClick is None:
+ if onClick is not None:
# use custom click callback
self.connect("activated", onClick)
elif playlist.type == PlaylistWrapperType.EXTERNAL:
@@ 221,7 214,7 @@ class AdaptivePlaylistFeedItem(Adw.ActionRow):
GLib.idle_add(self.complete_avatar, texture)
return
pixbuf = pixbuf_from_url(url)
- if not pixbuf is None:
+ if pixbuf is not None:
texture = Gdk.Texture.new_for_pixbuf(pixbuf)
preview_cache[url] = texture
GLib.idle_add(self.complete_avatar, texture)
M melon/widgets/filterbutton.py => melon/widgets/filterbutton.py +0 -3
@@ 1,6 1,3 @@
-import gi
-
-gi.require_version("Gtk", "4.0")
from gi.repository import Gtk
M melon/widgets/iconbutton.py => melon/widgets/iconbutton.py +1 -6
@@ 1,8 1,3 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw
@@ 27,5 22,5 @@ class IconButton(Gtk.Button):
def update(self, name, icon, tooltip=None):
self.set_name(name)
self.set_icon(icon)
- if not tooltip is None:
+ if tooltip is not None:
self.set_tooltip(tooltip)
M melon/widgets/player.py => melon/widgets/player.py +21 -32
@@ 1,19 1,8 @@
-import gi
-
-gi.require_version("WebKit", "6.0")
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-gi.require_version("Gst", "1.0")
-from gi.repository import Gtk, Adw, WebKit, GLib, Gst, Gio
-from unidecode import unidecode
+from gi.repository import Gtk, Adw, GLib, Gst, Gio
from gettext import gettext as _
-from datetime import datetime
-from enum import Enum, auto
from melon.servers import Stream
from melon.widgets.iconbutton import IconButton
-from melon.widgets.preferencerow import PreferenceRow, PreferenceType, Preference
-from melon.utils import pass_me
def format_seconds(secs: float) -> str:
@@ 325,12 314,12 @@ class VideoPlayerBase(Gtk.Overlay):
self.ended_callback = callback
def _toggle_fullscreen(self):
- if not self.toggle_fullscreen is None:
- state = self.toggle_fullscreen()
+ if self.toggle_fullscreen is not None:
+ self.toggle_fullscreen()
def _toggle_popout(self):
- if not self.toggle_popout is None:
- state = self.toggle_popout()
+ if self.toggle_popout is not None:
+ self.toggle_popout()
def set_toggle_states(self, popout: bool, fullscreen: bool):
if popout:
@@ 487,7 476,7 @@ class VideoPlayerBase(Gtk.Overlay):
self.stream = stream
self.source.set_state(Gst.State.NULL)
self.source.set_property("uri", stream.url)
- if not self.position is None:
+ if self.position is not None:
self.target_position = self.position
self.play()
self._build_menu()
@@ 517,7 506,7 @@ class VideoPlayerBase(Gtk.Overlay):
pos = self.source.query_position(Gst.Format.TIME)
# compare the nanoseconds values before converting them to seconds
# so we don't have to deal with float arithmetics
- if pos[0] and dur[0] and pos[1] == dur[1] and not self.ended_callback is None:
+ if pos[0] and dur[0] and pos[1] == dur[1] and self.ended_callback is not None:
self.ended_callback()
if dur[0]:
# convert nanoseconds to senconds
@@ 531,25 520,25 @@ class VideoPlayerBase(Gtk.Overlay):
# so the preview shows the correct timestamp
# has the amazing side effect of also sending
# the requested timestamp on update
- if not self.target_position is None:
+ if self.target_position is not None:
pos = self.target_position
else:
pos = None
- if not pos is None and not dur is None:
+ if pos is not None and dur is not None:
# use combined method if we have a value for both
# so we don't call the update function twice
self.set_position_and_duration(pos, dur)
# a video position was requested but not yet seeked to
- if not self.target_position is None:
+ if self.target_position is not None:
position = self.target_position
self.target_position = None
self.source.seek_simple(
Gst.Format.TIME, Gst.SeekFlags.FLUSH, position * Gst.SECOND
)
- elif not pos is None:
+ elif pos is not None:
self.set_position(pos)
- elif not dur is None:
+ elif dur is not None:
self.set_duration(dur)
return True
@@ 576,19 565,19 @@ class VideoPlayerBase(Gtk.Overlay):
def _update_playhead(self):
pos_text = "00:00"
dur_text = "--:--"
- if not self.position is None:
+ if self.position is not None:
pos_text = format_seconds(self.position)
- elif not self.target_position is None:
+ elif self.target_position is not None:
pos_text = format_seconds(self.target_position)
- if not self.duration is None:
+ if self.duration is not None:
dur_text = format_seconds(self.duration)
self.position_display.set_label(pos_text)
self.duration_display.set_label(dur_text)
- if not self.duration is None and not self.position is None:
+ if self.duration is not None and self.position is not None:
self.progress_display.set_range(0, self.duration)
self.progress_display.set_value(self.position)
- if not self.update_callback is None:
+ if self.update_callback is not None:
self.update_callback(self.position, self.duration)
else:
self.progress_display.set_value(0)
@@ 645,7 634,7 @@ class VideoPlayer(Gtk.Stack):
def _show_player(self):
has_player = self.get_child_by_name("player")
- if not has_player is None:
+ if has_player is not None:
# has player -> remove it
self.remove(has_player)
else:
@@ 655,7 644,7 @@ class VideoPlayer(Gtk.Stack):
def _popout_player(self):
has_player = self.get_child_by_name("player")
- if not has_player is None:
+ if has_player is not None:
self.remove(has_player)
self.set_visible_child_name("placeholder")
@@ 783,11 772,11 @@ class VideoPlayerWindow(Adw.Window):
if curr == self._lastfull:
return
self._lastfull = curr
- if not self.onfull is None:
+ if self.onfull is not None:
self.onfull(curr)
def close(self):
- if not self.onclose is None:
+ if self.onclose is not None:
self.onclose()
def connect_close(self, callback=None):
M melon/widgets/preferencerow.py => melon/widgets/preferencerow.py +5 -11
@@ 1,15 1,9 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, GLib, Gdk
+from gi.repository import Gtk, Adw
from gettext import gettext as _
from copy import deepcopy as copy
-from melon.servers import Resource, Video, Playlist, Channel, Preference, PreferenceType
-from melon.servers.utils import pixbuf_from_url
+from melon.servers import Preference, PreferenceType
from melon.widgets.iconbutton import IconButton
from melon.widgets.simpledialog import SimpleDialog
from melon.utils import pass_me, many
@@ 85,7 79,7 @@ class PreferenceRow:
# because the "notify" signal might be called more than once
return
self.current_value = copy(value)
- if not self.callback is None:
+ if self.callback is not None:
self.callback(value)
def get_widget(self):
@@ 95,7 89,7 @@ class PreferenceRow:
self.callback = cb
def on_active(self):
- if not self.callback is None:
+ if self.callback is not None:
self.callback(self.get_active())
@@ 159,7 153,7 @@ class MultiRow(Adw.PreferencesRow):
counter += 1
def notify(self):
- if not self.callback is None:
+ if self.callback is not None:
self.callback(copy(self.values))
self.update()
M melon/widgets/simpledialog.py => melon/widgets/simpledialog.py +1 -5
@@ 1,8 1,4 @@
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
-from gi.repository import Gtk, Adw, Gio, GLib
+from gi.repository import Adw
class SimpleDialog(Adw.Dialog):
M melon/window.py => melon/window.py +1 -8
@@ 1,8 1,3 @@
-import sys
-import gi
-
-gi.require_version("Gtk", "4.0")
-gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, Gio, GLib
from gettext import gettext as _
@@ 12,7 7,6 @@ from melon.browse.server import BrowseServerScreen
from melon.browse.channel import BrowseChannelScreen
from melon.browse.playlist import BrowsePlaylistScreen
from melon.browse.search import GlobalSearchScreen
-from melon.servers.utils import get_servers_list, get_server_instance
from melon.settings import SettingsScreen
from melon.importer import ImporterScreen
from melon.player import PlayerScreen
@@ 54,7 48,6 @@ class MainWindow(Adw.ApplicationWindow):
def open_playlist_picker(self, action, prefs):
server_id = prefs[0]
video_id = prefs[1]
- servers = get_servers_list()
video = (server_id, video_id)
diag = PlaylistPickerDialog(video)
diag.show(self)
@@ 156,7 149,7 @@ class MainWindow(Adw.ApplicationWindow):
def reg_action(self, name, func, variant=None, target=None):
vtype = None
- if not variant is None:
+ if variant is not None:
vtype = GLib.VariantType.new(variant)
act = Gio.SimpleAction.new(name, vtype)
act.connect("activate", func)
M po/de.po => po/de.po +194 -194
@@ 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 12:29+0200\n"
+"POT-Creation-Date: 2024-08-15 13:53+0200\n"
"PO-Revision-Date: 2024-04-20 14:18+0000\n"
"Last-Translator: hurzelchen <hurzelchen@users.noreply.translate.codeberg."
"org>\n"
@@ 86,481 86,481 @@ msgid ""
"button"
msgstr ""
-#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:66
-#: ../melon/browse/server.py:115 ../melon/browse/server.py:143
-#: ../melon/home/history.py:25 ../melon/home/new.py:36
-#: ../melon/home/playlists.py:23 ../melon/home/subs.py:22
-#: ../melon/importer.py:63 ../melon/player/__init__.py:113
-#: ../melon/player/playlist.py:164 ../melon/player/playlist.py:171
-#: ../melon/playlist/__init__.py:82 ../melon/playlist/create.py:104
-#: ../melon/playlist/pick.py:121
+#: ../melon/browse/__init__.py:16 ../melon/browse/search.py:62
+#: ../melon/browse/server.py:110 ../melon/browse/server.py:138
+#: ../melon/home/history.py:21 ../melon/home/new.py:31
+#: ../melon/home/playlists.py:19 ../melon/home/subs.py:18
+#: ../melon/importer.py:59 ../melon/player/__init__.py:104
+#: ../melon/player/playlist.py:150 ../melon/player/playlist.py:157
+#: ../melon/playlist/__init__.py:69 ../melon/playlist/create.py:99
+#: ../melon/playlist/pick.py:115
msgid "*crickets chirping*"
msgstr "*Grillen zirpen*"
-#: ../melon/browse/__init__.py:21
+#: ../melon/browse/__init__.py:17
msgid "There are no available servers"
msgstr "Es sind keine Dienste vorhanden"
-#: ../melon/browse/__init__.py:24 ../melon/browse/search.py:72
-#: ../melon/importer.py:67
+#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:68
+#: ../melon/importer.py:63
msgid "Enable servers in the settings menu"
msgstr "Aktiviere Dienste im Einstellungsmenü"
-#: ../melon/browse/__init__.py:33
+#: ../melon/browse/__init__.py:29
msgid "Available Servers"
msgstr "Verfügbare Dienste"
-#: ../melon/browse/__init__.py:35
+#: ../melon/browse/__init__.py:31
msgid "You can enable/disable and filter servers in the settings menu"
msgstr ""
"Du kannst Dienste in den Einstellungen aktivieren, deaktivieren und filtern"
-#: ../melon/browse/__init__.py:56
+#: ../melon/browse/__init__.py:52
msgid "Servers"
msgstr "Dienste"
-#: ../melon/browse/__init__.py:64 ../melon/browse/search.py:126
+#: ../melon/browse/__init__.py:60 ../melon/browse/search.py:122
msgid "Global Search"
msgstr "Globale Suche"
-#: ../melon/browse/channel.py:104
+#: ../melon/browse/channel.py:98
msgid "Subscribe to channel"
msgstr "Kanal abonnieren"
-#: ../melon/browse/channel.py:105
+#: ../melon/browse/channel.py:99
msgid "Add latest uploads to home feed"
msgstr "Zeige neue Videos im Home-Feed an"
-#: ../melon/browse/channel.py:117
+#: ../melon/browse/channel.py:111
msgid "Channel feed"
msgstr ""
-#: ../melon/browse/channel.py:118
+#: ../melon/browse/channel.py:112
msgid "This channel provides multiple feeds, choose which one to view"
msgstr ""
-#: ../melon/browse/channel.py:170
+#: ../melon/browse/channel.py:164
msgid "Channel"
msgstr "Kanal"
-#: ../melon/browse/playlist.py:48 ../melon/playlist/__init__.py:74
+#: ../melon/browse/playlist.py:42 ../melon/playlist/__init__.py:61
msgid "Start playing"
msgstr "Wiedergeben"
-#: ../melon/browse/playlist.py:69 ../melon/player/__init__.py:53
+#: ../melon/browse/playlist.py:63 ../melon/player/__init__.py:44
msgid "Bookmark"
msgstr "Merken"
-#: ../melon/browse/playlist.py:70
+#: ../melon/browse/playlist.py:64
msgid "Add Playlist to your local playlist collection"
msgstr "Wiedergabeliste zur lokalen Sammlung hinzufügen"
-#: ../melon/browse/playlist.py:124
+#: ../melon/browse/playlist.py:118
msgid "Playlist"
msgstr "Wiedergabeliste"
-#: ../melon/browse/search.py:49
+#: ../melon/browse/search.py:45
msgid "No results"
msgstr "Keine Ergebnisse"
-#: ../melon/browse/search.py:52
+#: ../melon/browse/search.py:48
#, python-brace-format
msgid "{count} result"
msgid_plural "{count} results"
msgstr[0] "{count} Ergebnis"
msgstr[1] "{count} Ergebnisse"
-#: ../melon/browse/search.py:68
+#: ../melon/browse/search.py:64
msgid "There are no available servers, a search would yield no results"
msgstr ""
"Es gibt keine verfügbaren Dienste, eine Suche würde keine Ergebnisse liefern"
-#: ../melon/browse/search.py:96 ../melon/browse/server.py:47
+#: ../melon/browse/search.py:92 ../melon/browse/server.py:42
msgid "Any"
msgstr "Alle"
-#: ../melon/browse/search.py:100 ../melon/browse/server.py:51
+#: ../melon/browse/search.py:96 ../melon/browse/server.py:46
msgid "Channels"
msgstr "Kanäle"
-#: ../melon/browse/search.py:105 ../melon/browse/server.py:56
-#: ../melon/home/playlists.py:34 ../melon/home/playlists.py:78
-#: ../melon/servers/nebula/__init__.py:206
-#: ../melon/servers/peertube/__init__.py:213
+#: ../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/peertube/__init__.py:209
msgid "Playlists"
msgstr "Wiedergabelisten"
-#: ../melon/browse/search.py:110 ../melon/browse/server.py:61
-#: ../melon/servers/nebula/__init__.py:200
-#: ../melon/servers/peertube/__init__.py:213
-#: ../melon/servers/peertube/__init__.py:214
+#: ../melon/browse/search.py:106 ../melon/browse/server.py:56
+#: ../melon/servers/nebula/__init__.py:197
+#: ../melon/servers/peertube/__init__.py:209
+#: ../melon/servers/peertube/__init__.py:210
msgid "Videos"
msgstr "Videos"
-#: ../melon/browse/server.py:26
+#: ../melon/browse/server.py:21
msgid "Search"
msgstr "Suchen"
-#: ../melon/browse/server.py:116
+#: ../melon/browse/server.py:111
msgid "Try searching for a term"
msgstr "Suche nach einem Suchbegriff"
-#: ../melon/browse/server.py:118
+#: ../melon/browse/server.py:113
msgid "Try using a different query"
msgstr "Versuche nach einem anderen Begriff zu suchen"
-#: ../melon/browse/server.py:144
+#: ../melon/browse/server.py:139
msgid "This feed is empty"
msgstr ""
-#: ../melon/home/__init__.py:20
+#: ../melon/home/__init__.py:15
msgid "Home"
msgstr "Startseite"
-#: ../melon/home/__init__.py:41 ../melon/home/history.py:28
-#: ../melon/home/new.py:49 ../melon/home/subs.py:25
+#: ../melon/home/__init__.py:36 ../melon/home/history.py:24
+#: ../melon/home/new.py:44 ../melon/home/subs.py:21
msgid "Browse Servers"
msgstr "Dienste durchsuchen"
-#: ../melon/home/__init__.py:48
+#: ../melon/home/__init__.py:43
msgid "Preferences"
msgstr "Einstellungen"
-#: ../melon/home/__init__.py:49
+#: ../melon/home/__init__.py:44
msgid "Import Data"
msgstr "Daten Importieren"
-#: ../melon/home/__init__.py:50
+#: ../melon/home/__init__.py:45
msgid "About Melon"
msgstr "Über Melon"
-#: ../melon/home/history.py:26
+#: ../melon/home/history.py:22
msgid "You haven't watched any videos yet"
msgstr "Du hast noch keine Videos geschaut"
-#: ../melon/home/history.py:38 ../melon/home/history.py:125
+#: ../melon/home/history.py:34 ../melon/home/history.py:121
msgid "History"
msgstr "Verlauf"
-#: ../melon/home/history.py:39
+#: ../melon/home/history.py:35
msgid "These are the videos you opened in the past"
msgstr "Diese Videos hast du in der Vergangenheit geöffnet"
-#: ../melon/home/history.py:83
+#: ../melon/home/history.py:79
msgid "Show more"
msgstr "Mehr anzeigen"
-#: ../melon/home/history.py:84
+#: ../melon/home/history.py:80
msgid "Load older videos"
msgstr ""
-#: ../melon/home/new.py:30
+#: ../melon/home/new.py:25
msgid "Refresh"
msgstr "Aktualisieren"
-#: ../melon/home/new.py:40
+#: ../melon/home/new.py:35
msgid "Subscribe to a channel first, to view new uploads"
msgstr "Du musst einem Kanal folgen, um neue Videos zu sehen."
-#: ../melon/home/new.py:45
+#: ../melon/home/new.py:40
msgid "The channels you are subscribed to haven't uploaded anything yet"
msgstr "Die Kanäle, die du abonniert hast, haben noch nichts hochgeladen"
-#: ../melon/home/new.py:68
+#: ../melon/home/new.py:63
#, python-brace-format
msgid "(Last refresh: {last_refresh})"
msgstr "(Zuletzt aktualisiert: {last_refresh})"
-#: ../melon/home/new.py:72 ../melon/home/new.py:172
+#: ../melon/home/new.py:67 ../melon/home/new.py:167
msgid "What's new"
msgstr "Neues"
-#: ../melon/home/new.py:74
+#: ../melon/home/new.py:69
msgid "These are the latest videos of channels you follow"
msgstr "Hier sind die neusten Videos von Kanälen, denen du folgst"
-#: ../melon/home/new.py:162
+#: ../melon/home/new.py:157
msgid "Pick up where you left off"
msgstr ""
-#: ../melon/home/new.py:163
+#: ../melon/home/new.py:158
msgid "Watch"
msgstr ""
-#: ../melon/home/playlists.py:24
+#: ../melon/home/playlists.py:20
msgid "You don't have any playlists yet"
msgstr "Du hast noch keine Wiedergabelisten"
-#: ../melon/home/playlists.py:26 ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:22 ../melon/home/playlists.py:35
msgid "Create a new playlist"
msgstr "Neue Wiedergabeliste erstellen"
-#: ../melon/home/playlists.py:36
+#: ../melon/home/playlists.py:32
msgid "Here are playlists you've bookmarked or created yourself"
msgstr ""
"Hier ist eine Liste an Wiedergabelisten, die du dir gemerkt oder selber "
"erstellt hast"
-#: ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:35
msgid "New"
msgstr "Neu"
-#: ../melon/home/subs.py:23
+#: ../melon/home/subs.py:19
msgid "You aren't yet subscribed to channels"
msgstr "Du folgst noch keinen Kanälen"
-#: ../melon/home/subs.py:33 ../melon/home/subs.py:68
+#: ../melon/home/subs.py:29 ../melon/home/subs.py:64
msgid "Subscriptions"
msgstr "Kanäle"
-#: ../melon/home/subs.py:34
+#: ../melon/home/subs.py:30
msgid "You are subscribed to the following channels"
msgstr "Du folgst den folgenden Kanälen"
-#: ../melon/import_providers/newpipe.py:42
+#: ../melon/import_providers/newpipe.py:40
msgid "Newpipe Database importer"
msgstr "NewPipe Datenbank Import"
-#: ../melon/import_providers/newpipe.py:44
+#: ../melon/import_providers/newpipe.py:42
msgid ""
"Import the .db file from inside the newpipe .zip export (as invidious "
"content)"
msgstr ""
"Importiere die .db Datei aus dem NewPipe .zip Export (als Invidious Inhalte)"
-#: ../melon/import_providers/newpipe.py:46
+#: ../melon/import_providers/newpipe.py:44
msgid "Select .db file"
msgstr "Wähle eine .db Datei"
-#: ../melon/import_providers/newpipe.py:60
+#: ../melon/import_providers/newpipe.py:58
msgid "Newpipe Database"
msgstr "NewPipe Datenbank"
-#: ../melon/importer.py:19 ../melon/importer.py:37
+#: ../melon/importer.py:15 ../melon/importer.py:33
msgid "Import"
msgstr "Importieren"
-#: ../melon/importer.py:38
+#: ../melon/importer.py:34
#, fuzzy
msgid "The following import methods have been found"
msgstr "Die folgenden Import-Methoden wurden gefunden"
-#: ../melon/importer.py:64
+#: ../melon/importer.py:60
#, fuzzy
msgid "There are no available importer methods"
msgstr "Es gibt keine verfügbaren Import-Methoden"
-#: ../melon/player/__init__.py:41
+#: ../melon/player/__init__.py:32
msgid "Description"
msgstr "Beschreibung"
-#: ../melon/player/__init__.py:54
+#: ../melon/player/__init__.py:45
msgid "Add this video to a playlist"
msgstr "Füge dieses Video einer Wiedergabeliste hinzu"
-#: ../melon/player/__init__.py:114 ../melon/playlist/create.py:105
-#: ../melon/playlist/pick.py:122
+#: ../melon/player/__init__.py:105 ../melon/playlist/create.py:100
+#: ../melon/playlist/pick.py:116
msgid "Video could not be loaded"
msgstr "Das Video konnte nicht geladen werden"
-#: ../melon/player/__init__.py:152 ../melon/player/__init__.py:186
-#: ../melon/player/playlist.py:57
+#: ../melon/player/__init__.py:143 ../melon/player/__init__.py:177
+#: ../melon/player/playlist.py:43
msgid "Loading..."
msgstr ""
-#: ../melon/player/playlist.py:165
+#: ../melon/player/playlist.py:151
msgid "This playlist is empty"
msgstr "Diese Wiedergabeliste ist leer"
-#: ../melon/player/playlist.py:172
+#: ../melon/player/playlist.py:158
msgid "There was an error loading the playlist"
msgstr "Beim Laden der Wiedergabeliste ist ein Fehler aufgetreten"
-#: ../melon/player/playlist.py:225
+#: ../melon/player/playlist.py:211
msgid "Previous"
msgstr "Vorheriges"
-#: ../melon/player/playlist.py:227
+#: ../melon/player/playlist.py:213
msgid "Play video that comes before this one in the playlist"
msgstr "Spielt das Video, was in der Wiedergabeliste vor diesem kommt"
-#: ../melon/player/playlist.py:244
+#: ../melon/player/playlist.py:230
msgid "Next"
msgstr "Nächstes"
-#: ../melon/player/playlist.py:246
+#: ../melon/player/playlist.py:232
msgid "Play video that comes after this one in the playlist"
msgstr "Spielt das Video, was in der Wiedergabeliste nach diesem kommt"
-#: ../melon/player/playlist.py:258
+#: ../melon/player/playlist.py:244
msgid "Skip"
msgstr "Überspringen"
-#: ../melon/player/playlist.py:259
+#: ../melon/player/playlist.py:245
msgid "Skip this video and pick a new one at random"
msgstr "Überspringt dieses Video und wählt zufällig ein Neues aus"
-#: ../melon/player/playlist.py:270
+#: ../melon/player/playlist.py:256
msgid "Shuffle"
msgstr ""
-#: ../melon/player/playlist.py:271
+#: ../melon/player/playlist.py:257
msgid "Chooses the next video at random"
msgstr "Wählt das nächste Video zufällig aus"
-#: ../melon/player/playlist.py:282
+#: ../melon/player/playlist.py:268
msgid "Repeat current video"
msgstr ""
-#: ../melon/player/playlist.py:283
+#: ../melon/player/playlist.py:269
msgid "Puts this video on loop"
msgstr ""
-#: ../melon/player/playlist.py:298
+#: ../melon/player/playlist.py:284
msgid "Repeat playlist"
msgstr ""
-#: ../melon/player/playlist.py:300
+#: ../melon/player/playlist.py:286
msgid "Start playling the playlist from the beginning after reaching the end"
msgstr ""
"Spielt die Wiedergabeliste erneut von Beginn, wenn das Ende erreicht wurde"
-#: ../melon/player/playlist.py:312
+#: ../melon/player/playlist.py:298
msgid "Playlist Content"
msgstr ""
-#: ../melon/player/playlist.py:314
+#: ../melon/player/playlist.py:300
msgid "Click on videos to continue playing the playlist from there"
msgstr "Klicke auf ein Video, um die Wiedergabeliste von dort fortzusetzen"
-#: ../melon/playlist/__init__.py:70
+#: ../melon/playlist/__init__.py:57
msgid "Edit"
msgstr "Bearbeiten"
-#: ../melon/playlist/__init__.py:84
+#: ../melon/playlist/__init__.py:71
msgid "You haven't added any videos to this playlist yet"
msgstr "Du hast noch keine Videos zu dieser Wiedergabeliste hinzugefügt"
-#: ../melon/playlist/__init__.py:87
+#: ../melon/playlist/__init__.py:74
msgid "Start watching"
msgstr "Videos anschauen"
-#: ../melon/playlist/__init__.py:113
+#: ../melon/playlist/__init__.py:102
msgid "Set as playlist thumbnail"
msgstr ""
-#: ../melon/playlist/__init__.py:121
+#: ../melon/playlist/__init__.py:110
msgid "Remove from playlist"
msgstr ""
-#: ../melon/playlist/__init__.py:214
+#: ../melon/playlist/__init__.py:203
msgid "Edit Playlist"
msgstr "Wiedergabeliste bearbeiten"
-#: ../melon/playlist/__init__.py:220
+#: ../melon/playlist/__init__.py:209
msgid "Playlist details"
msgstr "Wiedergabelistendetails"
-#: ../melon/playlist/__init__.py:221
+#: ../melon/playlist/__init__.py:210
msgid "Change playlist information"
msgstr "Wiedergabelistendetails ändern"
-#: ../melon/playlist/__init__.py:223 ../melon/playlist/create.py:43
+#: ../melon/playlist/__init__.py:212 ../melon/playlist/create.py:38
msgid "Playlist name"
msgstr "Name der Wiedergabeliste"
-#: ../melon/playlist/__init__.py:226 ../melon/playlist/create.py:46
+#: ../melon/playlist/__init__.py:215 ../melon/playlist/create.py:41
msgid "Playlist description"
msgstr "Beschreibung der Wiedergabeliste"
-#: ../melon/playlist/__init__.py:231
+#: ../melon/playlist/__init__.py:220
msgid "Save details"
msgstr "Details speichern"
-#: ../melon/playlist/__init__.py:233
+#: ../melon/playlist/__init__.py:222
msgid "Change playlist title and description. (Closes the dialog)"
msgstr ""
"Titel und Beschreibung der Wiedergabeliste ändern. (Schließt den Dialog)"
-#: ../melon/playlist/__init__.py:244
+#: ../melon/playlist/__init__.py:233
msgid "Delete Playlist"
msgstr "Wiedergabeliste löschen"
-#: ../melon/playlist/__init__.py:246
+#: ../melon/playlist/__init__.py:235
msgid "Delete this playlist and it's content. This can NOT be undone."
msgstr ""
"Diese Wiedergabeliste und ihren Inhalt löschen. Diese Aktion kann nicht "
"rückgängig gemacht werden."
-#: ../melon/playlist/__init__.py:259
+#: ../melon/playlist/__init__.py:248
msgid "Close"
msgstr "Schließen"
-#: ../melon/playlist/__init__.py:261
+#: ../melon/playlist/__init__.py:250
msgid "Close without changing anything"
msgstr ""
-#: ../melon/playlist/__init__.py:290
+#: ../melon/playlist/__init__.py:279
msgid "Delete Playlist?"
msgstr ""
-#: ../melon/playlist/__init__.py:291
+#: ../melon/playlist/__init__.py:280
msgid "Do you really want to delete this playlist? This can not be undone."
msgstr ""
-#: ../melon/playlist/__init__.py:293 ../melon/playlist/create.py:54
-#: ../melon/playlist/create.py:109 ../melon/playlist/pick.py:88
-#: ../melon/playlist/pick.py:126 ../melon/widgets/preferencerow.py:181
-#: ../melon/widgets/preferencerow.py:220
+#: ../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
msgid "Cancel"
msgstr "Abbruch"
-#: ../melon/playlist/__init__.py:295 ../melon/widgets/preferencerow.py:222
+#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216
msgid "Delete"
msgstr "Löschen"
-#: ../melon/playlist/create.py:25 ../melon/playlist/pick.py:35
+#: ../melon/playlist/create.py:20 ../melon/playlist/pick.py:28
msgid "Video"
msgstr "Video"
-#: ../melon/playlist/create.py:27
+#: ../melon/playlist/create.py:22
msgid "The following video will be added to the new playlist"
msgstr "Das folgende Video wird zu der neuen Wiedergabeliste hinzugefügt"
-#: ../melon/playlist/create.py:39 ../melon/playlist/create.py:125
+#: ../melon/playlist/create.py:34 ../melon/playlist/create.py:120
msgid "New Playlist"
msgstr "Neue Wiedergabeliste"
-#: ../melon/playlist/create.py:40
+#: ../melon/playlist/create.py:35
msgid "Enter more playlist information"
msgstr "Gibt weitere Wiedergabelistendetails an"
-#: ../melon/playlist/create.py:44
+#: ../melon/playlist/create.py:39
msgid "Unnamed Playlist"
msgstr "Unbenannte Wiedergabeliste"
-#: ../melon/playlist/create.py:54 ../melon/playlist/create.py:109
-#: ../melon/playlist/pick.py:88 ../melon/playlist/pick.py:126
+#: ../melon/playlist/create.py:49 ../melon/playlist/create.py:104
+#: ../melon/playlist/pick.py:82 ../melon/playlist/pick.py:120
msgid "Do not create playlist"
msgstr "Wiedergabeliste nicht erstellen"
-#: ../melon/playlist/create.py:57 ../melon/widgets/preferencerow.py:184
+#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178
msgid "Create"
msgstr "Erstellen"
-#: ../melon/playlist/create.py:57
+#: ../melon/playlist/create.py:52
msgid "Create playlist"
msgstr "Wiedergabeliste erstellen"
-#: ../melon/playlist/pick.py:37
+#: ../melon/playlist/pick.py:30
msgid "The following video will be added to the playlist"
msgstr "Das folgende Video wird zur Wiedergabeliste hinzugefügt"
-#: ../melon/playlist/pick.py:50 ../melon/widgets/feeditem.py:154
+#: ../melon/playlist/pick.py:43 ../melon/widgets/feeditem.py:147
msgid "Add to playlist"
msgstr "Zur Wiedergabeliste hinzufügen"
-#: ../melon/playlist/pick.py:53
+#: ../melon/playlist/pick.py:46
msgid ""
"Choose a playlist to add the video to. Note that you can only add videos to "
"local playlists, not external bookmarked ones"
@@ 568,42 568,42 @@ msgstr ""
"Wähle die Wiedergabeliste, zu der das Video hinzugefügt werden soll. (Du "
"kannst Videos nur zu lokalen Wiedergabelisten hinzufügen, nicht in gemerkte)"
-#: ../melon/playlist/pick.py:57
+#: ../melon/playlist/pick.py:50
msgid "Create new playlist"
msgstr "Neue Wiedergabeliste erstellen"
-#: ../melon/playlist/pick.py:58
+#: ../melon/playlist/pick.py:51
msgid "Create a new playlist and add the video to it"
msgstr "Neue Wiedergabeliste erstellen und Video hinzufügen"
-#: ../melon/playlist/pick.py:142
+#: ../melon/playlist/pick.py:136
msgid "Add to Playlist"
msgstr "Zur Wiedergabeliste hinzufügen"
-#: ../melon/servers/invidious/__init__.py:35
+#: ../melon/servers/invidious/__init__.py:29
msgid "Open source alternative front-end to YouTube"
msgstr "Quelloffenes alternatives Frontend für YouTube"
-#: ../melon/servers/invidious/__init__.py:40
+#: ../melon/servers/invidious/__init__.py:34
msgid "Instance"
msgstr "Instanz"
-#: ../melon/servers/invidious/__init__.py:42
+#: ../melon/servers/invidious/__init__.py:36
msgid ""
"See https://docs.invidious.io/instances/ for a list of available instances"
msgstr ""
"Auf https://docs.invidious.io/instances/ kannst du eine liste verfügbarer "
"Instanzen finden"
-#: ../melon/servers/invidious/__init__.py:55
+#: ../melon/servers/invidious/__init__.py:49
msgid "Trending"
msgstr "Trends"
-#: ../melon/servers/invidious/__init__.py:56
+#: ../melon/servers/invidious/__init__.py:50
msgid "Popular"
msgstr "Beliebt"
-#: ../melon/servers/nebula/__init__.py:21
+#: ../melon/servers/nebula/__init__.py:18
msgid ""
"Home of smart, thoughtful videos, podcasts, and classes from your favorite "
"creators"
@@ 611,32 611,32 @@ msgstr ""
"Zu Hause von intelligenten, durchdachten Videos, Podcasts und Kursen von "
"deinen Lieblingskanälen"
-#: ../melon/servers/nebula/__init__.py:27
+#: ../melon/servers/nebula/__init__.py:24
msgid "Email Address"
msgstr "E-Mail-Adresse"
-#: ../melon/servers/nebula/__init__.py:28
+#: ../melon/servers/nebula/__init__.py:25
msgid "Email Address to login to your account"
msgstr "E-Mail-Adresse zur Anmeldung mit deinem Konto"
-#: ../melon/servers/nebula/__init__.py:35
+#: ../melon/servers/nebula/__init__.py:32
msgid "Password"
msgstr "Passwort"
-#: ../melon/servers/nebula/__init__.py:36
+#: ../melon/servers/nebula/__init__.py:33
msgid "Password associated with your account"
msgstr "Passwort zur Anmeldung mit deinem Konto"
-#: ../melon/servers/peertube/__init__.py:16
+#: ../melon/servers/peertube/__init__.py:12
msgid "Decentralized video hosting network, based on free/libre software"
msgstr ""
"Dezentralisiertes Video-Hosting-Netzwerk, basierend auf freier/libre Software"
-#: ../melon/servers/peertube/__init__.py:21
+#: ../melon/servers/peertube/__init__.py:17
msgid "Instances"
msgstr "Instanzen"
-#: ../melon/servers/peertube/__init__.py:23
+#: ../melon/servers/peertube/__init__.py:19
msgid ""
"List of peertube instances, from which to fetch content. See https://"
"joinpeertube.org/instances"
@@ 644,32 644,32 @@ msgstr ""
"Liste von PeerTube Instanzen, von denen Inhalte geladen werden sollen. Siehe "
"https://joinpeertube.org/instances"
-#: ../melon/servers/peertube/__init__.py:31
+#: ../melon/servers/peertube/__init__.py:27
msgid "Show NSFW content"
msgstr "NSFW Inhalte anzeigen"
-#: ../melon/servers/peertube/__init__.py:32
+#: ../melon/servers/peertube/__init__.py:28
#, fuzzy
msgid "Passes the nsfw filter to the peertube search API"
msgstr "Gibt den NSFW Filter an die PeerTube Such-API weiter"
-#: ../melon/servers/peertube/__init__.py:39
+#: ../melon/servers/peertube/__init__.py:35
msgid "Enable Federation"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:40
+#: ../melon/servers/peertube/__init__.py:36
msgid "Returns content from federated instances instead of only local content"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:65
+#: ../melon/servers/peertube/__init__.py:61
msgid "Latest"
msgstr "Neuste"
-#: ../melon/settings/__init__.py:23
+#: ../melon/settings/__init__.py:18
msgid "Show Previews when browsing public feeds (incl. search)"
msgstr "Vorschaubilder für externe Inhalte anzeigen"
-#: ../melon/settings/__init__.py:25
+#: ../melon/settings/__init__.py:20
msgid ""
"Set to true to show previews when viewing channel contents, public feeds and "
"searching"
@@ 677,11 677,11 @@ msgstr ""
"Aktiviert Vorschaubilder beim Durchsuchen von Diensten, Ansehen von Kanälen "
"und Wiedergabelisten"
-#: ../melon/settings/__init__.py:34
+#: ../melon/settings/__init__.py:29
msgid "Show Previews in local feeds"
msgstr "Vorschaubilder für lokale Inhalte anzeigen"
-#: ../melon/settings/__init__.py:36
+#: ../melon/settings/__init__.py:31
msgid ""
"Set to true to show previews in the new feed, for subscribed channels, and "
"saved playlists"
@@ 689,12 689,12 @@ msgstr ""
"Aktiviert Vorschaubilder im Neues Tab, im Kanäle Tab und für selbst "
"erstellte Wiedergabelisten"
-#: ../melon/settings/__init__.py:44
+#: ../melon/settings/__init__.py:39
#, fuzzy
msgid "Show servers that may contain nsfw content"
msgstr "Dienste anzeigen, die teilweise NSFW Inhalte enthalten"
-#: ../melon/settings/__init__.py:46
+#: ../melon/settings/__init__.py:41
#, fuzzy
msgid ""
"Lists/Delists servers in the browse servers list, if they contain some nsfw "
@@ 702,12 702,12 @@ msgid ""
msgstr ""
"Zeige Dienste, die vereinzelt NSFW Inhalte beinhalten, beim Durchsuchen an"
-#: ../melon/settings/__init__.py:54
+#: ../melon/settings/__init__.py:49
#, fuzzy
msgid "Show servers that only contain nsfw content"
msgstr "Dienste anzeigen, die ausschließlich NSFW Inhalte enthalten"
-#: ../melon/settings/__init__.py:56
+#: ../melon/settings/__init__.py:51
#, fuzzy
msgid ""
"Lists/Delists servers in the browse servers list, if they contain only/"
@@ 715,139 715,139 @@ msgid ""
msgstr ""
"Zeige Dienste, die (fast) nur NSFW Inhalte beinhalten, beim Durchsuchen an"
-#: ../melon/settings/__init__.py:64
+#: ../melon/settings/__init__.py:59
msgid "Show servers that require login"
msgstr "Dienste anzeigen, die ein Konto benötigen"
-#: ../melon/settings/__init__.py:66
+#: ../melon/settings/__init__.py:61
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:74
+#: ../melon/settings/__init__.py:69
msgid "Use GPU acceleration for video player if available"
msgstr ""
-#: ../melon/settings/__init__.py:75
+#: ../melon/settings/__init__.py:70
msgid "Disable this if the video player doesn't work"
msgstr ""
-#: ../melon/settings/__init__.py:86
+#: ../melon/settings/__init__.py:81
msgid "Settings"
msgstr "Einstellungen"
-#: ../melon/settings/__init__.py:99
+#: ../melon/settings/__init__.py:94
msgid "General"
msgstr "Allgemein"
-#: ../melon/settings/__init__.py:100
+#: ../melon/settings/__init__.py:95
msgid "Global app settings"
msgstr "Globale App Einstellungen"
-#: ../melon/settings/__init__.py:124
+#: ../melon/settings/__init__.py:119
msgid "Enable Server"
msgstr "Dienst aktivieren"
-#: ../melon/settings/__init__.py:126
+#: ../melon/settings/__init__.py:121
msgid ""
"Disabled servers won't show up in the browser or on the local/home screen"
msgstr ""
"Deaktivierte Dienste werden beim Durchsuchen und auf dem Startbildschirm "
"nicht angezeigt"
-#: ../melon/widgets/feeditem.py:148
+#: ../melon/widgets/feeditem.py:141
msgid "Watch now"
msgstr ""
-#: ../melon/widgets/feeditem.py:161
+#: ../melon/widgets/feeditem.py:154
msgid "Open in browser"
msgstr ""
-#: ../melon/widgets/feeditem.py:165
+#: ../melon/widgets/feeditem.py:158
msgid "View channel"
msgstr ""
-#: ../melon/widgets/player.py:136
+#: ../melon/widgets/player.py:125
msgid "No streams available"
msgstr ""
-#: ../melon/widgets/player.py:198
+#: ../melon/widgets/player.py:187
msgid "Toggle floating window"
msgstr ""
-#: ../melon/widgets/player.py:204
+#: ../melon/widgets/player.py:193
msgid "Toggle fullscreen"
msgstr ""
-#: ../melon/widgets/player.py:226 ../melon/widgets/player.py:613
-#: ../melon/widgets/player.py:622
+#: ../melon/widgets/player.py:215 ../melon/widgets/player.py:602
+#: ../melon/widgets/player.py:611
msgid "Play"
msgstr ""
-#: ../melon/widgets/player.py:253
+#: ../melon/widgets/player.py:242
msgid "Stream options"
msgstr ""
-#: ../melon/widgets/player.py:483
+#: ../melon/widgets/player.py:472
msgid "Resolution"
msgstr "Auflösung"
-#: ../melon/widgets/player.py:604
+#: ../melon/widgets/player.py:593
msgid "Pause"
msgstr "Pause"
-#: ../melon/widgets/player.py:642
+#: ../melon/widgets/player.py:631
msgid "The video is playing in separate window"
msgstr "Dieses Video spielt in einem separaten Fenster"
-#: ../melon/widgets/player.py:779
+#: ../melon/widgets/player.py:768
msgid "Player"
msgstr ""
-#: ../melon/widgets/preferencerow.py:125
+#: ../melon/widgets/preferencerow.py:119
msgid "Add"
msgstr "Hinzufügen"
-#: ../melon/widgets/preferencerow.py:139
+#: ../melon/widgets/preferencerow.py:133
msgid "Move up"
msgstr "Nach oben verschieben"
-#: ../melon/widgets/preferencerow.py:147
+#: ../melon/widgets/preferencerow.py:141
msgid "Move down"
msgstr "Nach unten verschieben"
-#: ../melon/widgets/preferencerow.py:153
+#: ../melon/widgets/preferencerow.py:147
msgid "Remove from list"
msgstr "Von der Liste entfernen"
-#: ../melon/widgets/preferencerow.py:168
+#: ../melon/widgets/preferencerow.py:162
msgid "Add Item"
msgstr "Eintrag hinzufügen"
-#: ../melon/widgets/preferencerow.py:171
+#: ../melon/widgets/preferencerow.py:165
msgid "Create a new list entry"
msgstr "Neuen Listeneintrag erstellen"
-#: ../melon/widgets/preferencerow.py:172
+#: ../melon/widgets/preferencerow.py:166
msgid "Enter the new value here"
msgstr "Gibt den neuen Wert hier ein"
-#: ../melon/widgets/preferencerow.py:175
+#: ../melon/widgets/preferencerow.py:169
msgid "Value"
msgstr "Wert"
-#: ../melon/widgets/preferencerow.py:215
+#: ../melon/widgets/preferencerow.py:209
msgid "Delete Item?"
msgstr ""
-#: ../melon/widgets/preferencerow.py:217
+#: ../melon/widgets/preferencerow.py:211
msgid ""
"Do you really want to delete this item? You won't be able to restore it "
"afterwards"
msgstr ""
-#: ../melon/window.py:93
+#: ../melon/window.py:86
msgid "Stream videos on the go"
msgstr "Videos unterwegs streamen"
M po/fa.po => po/fa.po +194 -194
@@ 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 12:29+0200\n"
+"POT-Creation-Date: 2024-08-15 13:53+0200\n"
"PO-Revision-Date: 2024-05-30 09:18+0000\n"
"Last-Translator: sohrabbehdani <sohrabbehdani@users.noreply.translate."
"codeberg.org>\n"
@@ 92,472 92,472 @@ msgid ""
msgstr ""
"صفحه ویدیو، با یک پخشکننده ویدیو در بالا، اطلاعات ویدیو و دکمه نشانکگذاری"
-#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:66
-#: ../melon/browse/server.py:115 ../melon/browse/server.py:143
-#: ../melon/home/history.py:25 ../melon/home/new.py:36
-#: ../melon/home/playlists.py:23 ../melon/home/subs.py:22
-#: ../melon/importer.py:63 ../melon/player/__init__.py:113
-#: ../melon/player/playlist.py:164 ../melon/player/playlist.py:171
-#: ../melon/playlist/__init__.py:82 ../melon/playlist/create.py:104
-#: ../melon/playlist/pick.py:121
+#: ../melon/browse/__init__.py:16 ../melon/browse/search.py:62
+#: ../melon/browse/server.py:110 ../melon/browse/server.py:138
+#: ../melon/home/history.py:21 ../melon/home/new.py:31
+#: ../melon/home/playlists.py:19 ../melon/home/subs.py:18
+#: ../melon/importer.py:59 ../melon/player/__init__.py:104
+#: ../melon/player/playlist.py:150 ../melon/player/playlist.py:157
+#: ../melon/playlist/__init__.py:69 ../melon/playlist/create.py:99
+#: ../melon/playlist/pick.py:115
#, fuzzy
msgid "*crickets chirping*"
msgstr "*جیرجیرک جیرجیرک*"
-#: ../melon/browse/__init__.py:21
+#: ../melon/browse/__init__.py:17
msgid "There are no available servers"
msgstr ""
-#: ../melon/browse/__init__.py:24 ../melon/browse/search.py:72
-#: ../melon/importer.py:67
+#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:68
+#: ../melon/importer.py:63
msgid "Enable servers in the settings menu"
msgstr "فعال کردن کارساز در منوی تنظیمات"
-#: ../melon/browse/__init__.py:33
+#: ../melon/browse/__init__.py:29
msgid "Available Servers"
msgstr "کارساز های موجود"
-#: ../melon/browse/__init__.py:35
+#: ../melon/browse/__init__.py:31
msgid "You can enable/disable and filter servers in the settings menu"
msgstr "شما میتوانید کارسازها را در تنظیمات فعال/غیرفعال و پالایش کنید."
-#: ../melon/browse/__init__.py:56
+#: ../melon/browse/__init__.py:52
msgid "Servers"
msgstr "کارسازها"
-#: ../melon/browse/__init__.py:64 ../melon/browse/search.py:126
+#: ../melon/browse/__init__.py:60 ../melon/browse/search.py:122
msgid "Global Search"
msgstr "جستجو سراسری"
-#: ../melon/browse/channel.py:104
+#: ../melon/browse/channel.py:98
msgid "Subscribe to channel"
msgstr "مشترک کانال شوید"
-#: ../melon/browse/channel.py:105
+#: ../melon/browse/channel.py:99
msgid "Add latest uploads to home feed"
msgstr "افزودن آخرین بارگذاریها به صفحهخانه"
-#: ../melon/browse/channel.py:117
+#: ../melon/browse/channel.py:111
msgid "Channel feed"
msgstr "خوراک کانال"
-#: ../melon/browse/channel.py:118
+#: ../melon/browse/channel.py:112
msgid "This channel provides multiple feeds, choose which one to view"
msgstr ""
-#: ../melon/browse/channel.py:170
+#: ../melon/browse/channel.py:164
msgid "Channel"
msgstr "کانال"
-#: ../melon/browse/playlist.py:48 ../melon/playlist/__init__.py:74
+#: ../melon/browse/playlist.py:42 ../melon/playlist/__init__.py:61
msgid "Start playing"
msgstr "شروع به پخش کردن"
-#: ../melon/browse/playlist.py:69 ../melon/player/__init__.py:53
+#: ../melon/browse/playlist.py:63 ../melon/player/__init__.py:44
msgid "Bookmark"
msgstr "نشانک گذاری"
-#: ../melon/browse/playlist.py:70
+#: ../melon/browse/playlist.py:64
msgid "Add Playlist to your local playlist collection"
msgstr "افزودن این لیستپخش به مجموعه لیستپخش های محلی"
-#: ../melon/browse/playlist.py:124
+#: ../melon/browse/playlist.py:118
msgid "Playlist"
msgstr "سیاههٔ پخش"
-#: ../melon/browse/search.py:49
+#: ../melon/browse/search.py:45
msgid "No results"
msgstr "بدون نتیجه"
-#: ../melon/browse/search.py:52
+#: ../melon/browse/search.py:48
#, python-brace-format
msgid "{count} result"
msgid_plural "{count} results"
msgstr[0] ""
msgstr[1] ""
-#: ../melon/browse/search.py:68
+#: ../melon/browse/search.py:64
msgid "There are no available servers, a search would yield no results"
msgstr ""
-#: ../melon/browse/search.py:96 ../melon/browse/server.py:47
+#: ../melon/browse/search.py:92 ../melon/browse/server.py:42
msgid "Any"
msgstr "همه"
-#: ../melon/browse/search.py:100 ../melon/browse/server.py:51
+#: ../melon/browse/search.py:96 ../melon/browse/server.py:46
msgid "Channels"
msgstr "کانالها"
-#: ../melon/browse/search.py:105 ../melon/browse/server.py:56
-#: ../melon/home/playlists.py:34 ../melon/home/playlists.py:78
-#: ../melon/servers/nebula/__init__.py:206
-#: ../melon/servers/peertube/__init__.py:213
+#: ../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/peertube/__init__.py:209
msgid "Playlists"
msgstr "سیاههٔ پخش"
-#: ../melon/browse/search.py:110 ../melon/browse/server.py:61
-#: ../melon/servers/nebula/__init__.py:200
-#: ../melon/servers/peertube/__init__.py:213
-#: ../melon/servers/peertube/__init__.py:214
+#: ../melon/browse/search.py:106 ../melon/browse/server.py:56
+#: ../melon/servers/nebula/__init__.py:197
+#: ../melon/servers/peertube/__init__.py:209
+#: ../melon/servers/peertube/__init__.py:210
msgid "Videos"
msgstr "ویدیوها"
-#: ../melon/browse/server.py:26
+#: ../melon/browse/server.py:21
msgid "Search"
msgstr "جستوجو"
-#: ../melon/browse/server.py:116
+#: ../melon/browse/server.py:111
msgid "Try searching for a term"
msgstr ""
-#: ../melon/browse/server.py:118
+#: ../melon/browse/server.py:113
msgid "Try using a different query"
msgstr ""
-#: ../melon/browse/server.py:144
+#: ../melon/browse/server.py:139
msgid "This feed is empty"
msgstr ""
-#: ../melon/home/__init__.py:20
+#: ../melon/home/__init__.py:15
msgid "Home"
msgstr "خانه"
-#: ../melon/home/__init__.py:41 ../melon/home/history.py:28
-#: ../melon/home/new.py:49 ../melon/home/subs.py:25
+#: ../melon/home/__init__.py:36 ../melon/home/history.py:24
+#: ../melon/home/new.py:44 ../melon/home/subs.py:21
msgid "Browse Servers"
msgstr "جستجو در کارساز ها"
-#: ../melon/home/__init__.py:48
+#: ../melon/home/__init__.py:43
msgid "Preferences"
msgstr "تنظیمات"
-#: ../melon/home/__init__.py:49
+#: ../melon/home/__init__.py:44
msgid "Import Data"
msgstr "وارد کردن دیتا"
-#: ../melon/home/__init__.py:50
+#: ../melon/home/__init__.py:45
msgid "About Melon"
msgstr "درباره Melon"
-#: ../melon/home/history.py:26
+#: ../melon/home/history.py:22
msgid "You haven't watched any videos yet"
msgstr ""
-#: ../melon/home/history.py:38 ../melon/home/history.py:125
+#: ../melon/home/history.py:34 ../melon/home/history.py:121
msgid "History"
msgstr "تاریخچه"
-#: ../melon/home/history.py:39
+#: ../melon/home/history.py:35
msgid "These are the videos you opened in the past"
msgstr ""
-#: ../melon/home/history.py:83
+#: ../melon/home/history.py:79
msgid "Show more"
msgstr "نمایش بیشتر"
-#: ../melon/home/history.py:84
+#: ../melon/home/history.py:80
msgid "Load older videos"
msgstr "دریافت ویدئوهای قدیمیتر"
-#: ../melon/home/new.py:30
+#: ../melon/home/new.py:25
msgid "Refresh"
msgstr "بازخوانی"
-#: ../melon/home/new.py:40
+#: ../melon/home/new.py:35
msgid "Subscribe to a channel first, to view new uploads"
msgstr "برای تماشای محتوای بارگذاری جدید، در کانالها مشترک شوید."
-#: ../melon/home/new.py:45
+#: ../melon/home/new.py:40
msgid "The channels you are subscribed to haven't uploaded anything yet"
msgstr "کانالی که مشترک آن شدید هیچ محتوای بارگذاری شده ای ندارد"
-#: ../melon/home/new.py:68
+#: ../melon/home/new.py:63
#, python-brace-format
msgid "(Last refresh: {last_refresh})"
msgstr "(آخرین بازخوانی: {last_refresh})"
-#: ../melon/home/new.py:72 ../melon/home/new.py:172
+#: ../melon/home/new.py:67 ../melon/home/new.py:167
msgid "What's new"
msgstr "چه چیزی جدید است؟"
-#: ../melon/home/new.py:74
+#: ../melon/home/new.py:69
msgid "These are the latest videos of channels you follow"
msgstr ""
-#: ../melon/home/new.py:162
+#: ../melon/home/new.py:157
msgid "Pick up where you left off"
msgstr ""
-#: ../melon/home/new.py:163
+#: ../melon/home/new.py:158
msgid "Watch"
msgstr "تماشا"
-#: ../melon/home/playlists.py:24
+#: ../melon/home/playlists.py:20
msgid "You don't have any playlists yet"
msgstr "شما هنوز هیچ سیاههٔ پخشی ندارید."
-#: ../melon/home/playlists.py:26 ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:22 ../melon/home/playlists.py:35
msgid "Create a new playlist"
msgstr "ایجاد یک لیستپخش جدید"
-#: ../melon/home/playlists.py:36
+#: ../melon/home/playlists.py:32
msgid "Here are playlists you've bookmarked or created yourself"
msgstr "اینها لیست پخش هایی هستند که توسط شما نشانهگذاری و یا ایجاد شدهاند."
-#: ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:35
msgid "New"
msgstr "جدید"
-#: ../melon/home/subs.py:23
+#: ../melon/home/subs.py:19
msgid "You aren't yet subscribed to channels"
msgstr "شما مشترک هیچ کانالی نیستید"
-#: ../melon/home/subs.py:33 ../melon/home/subs.py:68
+#: ../melon/home/subs.py:29 ../melon/home/subs.py:64
msgid "Subscriptions"
msgstr "اشتراکها"
-#: ../melon/home/subs.py:34
+#: ../melon/home/subs.py:30
msgid "You are subscribed to the following channels"
msgstr "شما در کانالهای زیر مشترک هستید"
-#: ../melon/import_providers/newpipe.py:42
+#: ../melon/import_providers/newpipe.py:40
msgid "Newpipe Database importer"
msgstr "درونریز پایگاهدادهٔ نیوپایپ"
-#: ../melon/import_providers/newpipe.py:44
+#: ../melon/import_providers/newpipe.py:42
msgid ""
"Import the .db file from inside the newpipe .zip export (as invidious "
"content)"
msgstr ""
"درونریزی پروندهٔ .db از داخل خروجی .zip نیوپایپ (به عنوان محتوای اینویدیوس)"
-#: ../melon/import_providers/newpipe.py:46
+#: ../melon/import_providers/newpipe.py:44
msgid "Select .db file"
msgstr "انتخاب فایل .db"
-#: ../melon/import_providers/newpipe.py:60
+#: ../melon/import_providers/newpipe.py:58
msgid "Newpipe Database"
msgstr "پایگاهدادهٔ نیوپایپ"
-#: ../melon/importer.py:19 ../melon/importer.py:37
+#: ../melon/importer.py:15 ../melon/importer.py:33
msgid "Import"
msgstr "واردکردن"
-#: ../melon/importer.py:38
+#: ../melon/importer.py:34
msgid "The following import methods have been found"
msgstr "روش های واردکردن پیدا شدند"
-#: ../melon/importer.py:64
+#: ../melon/importer.py:60
msgid "There are no available importer methods"
msgstr ""
-#: ../melon/player/__init__.py:41
+#: ../melon/player/__init__.py:32
msgid "Description"
msgstr "توضیحات"
-#: ../melon/player/__init__.py:54
+#: ../melon/player/__init__.py:45
msgid "Add this video to a playlist"
msgstr "افزودن این ویدئو به لیستپخش"
-#: ../melon/player/__init__.py:114 ../melon/playlist/create.py:105
-#: ../melon/playlist/pick.py:122
+#: ../melon/player/__init__.py:105 ../melon/playlist/create.py:100
+#: ../melon/playlist/pick.py:116
msgid "Video could not be loaded"
msgstr ""
-#: ../melon/player/__init__.py:152 ../melon/player/__init__.py:186
-#: ../melon/player/playlist.py:57
+#: ../melon/player/__init__.py:143 ../melon/player/__init__.py:177
+#: ../melon/player/playlist.py:43
msgid "Loading..."
msgstr "در حال بارکردن..."
-#: ../melon/player/playlist.py:165
+#: ../melon/player/playlist.py:151
msgid "This playlist is empty"
msgstr ""
-#: ../melon/player/playlist.py:172
+#: ../melon/player/playlist.py:158
msgid "There was an error loading the playlist"
msgstr ""
-#: ../melon/player/playlist.py:225
+#: ../melon/player/playlist.py:211
msgid "Previous"
msgstr "قبلی"
-#: ../melon/player/playlist.py:227
+#: ../melon/player/playlist.py:213
msgid "Play video that comes before this one in the playlist"
msgstr ""
-#: ../melon/player/playlist.py:244
+#: ../melon/player/playlist.py:230
msgid "Next"
msgstr "بعدی"
-#: ../melon/player/playlist.py:246
+#: ../melon/player/playlist.py:232
msgid "Play video that comes after this one in the playlist"
msgstr "ویدیو بعد از این را که در سیاههٔپخش وجود دارد پخش کن."
-#: ../melon/player/playlist.py:258
+#: ../melon/player/playlist.py:244
msgid "Skip"
msgstr "ردکردن"
-#: ../melon/player/playlist.py:259
+#: ../melon/player/playlist.py:245
msgid "Skip this video and pick a new one at random"
msgstr "رد کردن این ویدئو و انتخاب یک عدد به صورت تصادفی"
-#: ../melon/player/playlist.py:270
+#: ../melon/player/playlist.py:256
msgid "Shuffle"
msgstr "مخلوط"
-#: ../melon/player/playlist.py:271
+#: ../melon/player/playlist.py:257
msgid "Chooses the next video at random"
msgstr "انتخاب ویدئو بعدی به صورت تصادفی"
-#: ../melon/player/playlist.py:282
+#: ../melon/player/playlist.py:268
msgid "Repeat current video"
msgstr "بازپخش این ویدئو"
-#: ../melon/player/playlist.py:283
+#: ../melon/player/playlist.py:269
msgid "Puts this video on loop"
msgstr "ویدئو را در حلقه قرار دهید."
-#: ../melon/player/playlist.py:298
+#: ../melon/player/playlist.py:284
msgid "Repeat playlist"
msgstr "بازپخش لیستپخش"
-#: ../melon/player/playlist.py:300
+#: ../melon/player/playlist.py:286
msgid "Start playling the playlist from the beginning after reaching the end"
msgstr ""
-#: ../melon/player/playlist.py:312
+#: ../melon/player/playlist.py:298
msgid "Playlist Content"
msgstr "محتوای سیاههٔپخش"
-#: ../melon/player/playlist.py:314
+#: ../melon/player/playlist.py:300
msgid "Click on videos to continue playing the playlist from there"
msgstr "بر روی ویدئو ضربه بزنید تا پخش از لیست پخش از آن ویدئو ادامه پیدا کند."
-#: ../melon/playlist/__init__.py:70
+#: ../melon/playlist/__init__.py:57
msgid "Edit"
msgstr "ویرایش"
-#: ../melon/playlist/__init__.py:84
+#: ../melon/playlist/__init__.py:71
msgid "You haven't added any videos to this playlist yet"
msgstr ""
-#: ../melon/playlist/__init__.py:87
+#: ../melon/playlist/__init__.py:74
msgid "Start watching"
msgstr "شروع به تماشا کنید"
-#: ../melon/playlist/__init__.py:113
+#: ../melon/playlist/__init__.py:102
msgid "Set as playlist thumbnail"
msgstr ""
-#: ../melon/playlist/__init__.py:121
+#: ../melon/playlist/__init__.py:110
msgid "Remove from playlist"
msgstr ""
-#: ../melon/playlist/__init__.py:214
+#: ../melon/playlist/__init__.py:203
msgid "Edit Playlist"
msgstr "حذف لیستپخش"
-#: ../melon/playlist/__init__.py:220
+#: ../melon/playlist/__init__.py:209
msgid "Playlist details"
msgstr "جزئیات لیستپخش"
-#: ../melon/playlist/__init__.py:221
+#: ../melon/playlist/__init__.py:210
msgid "Change playlist information"
msgstr "تغییر اطلاعات لیست پخش"
-#: ../melon/playlist/__init__.py:223 ../melon/playlist/create.py:43
+#: ../melon/playlist/__init__.py:212 ../melon/playlist/create.py:38
msgid "Playlist name"
msgstr "نام لیستپخش"
-#: ../melon/playlist/__init__.py:226 ../melon/playlist/create.py:46
+#: ../melon/playlist/__init__.py:215 ../melon/playlist/create.py:41
msgid "Playlist description"
msgstr "اطلاعات سیاههٔ پخش"
-#: ../melon/playlist/__init__.py:231
+#: ../melon/playlist/__init__.py:220
msgid "Save details"
msgstr "ذخیره جزئیات"
-#: ../melon/playlist/__init__.py:233
+#: ../melon/playlist/__init__.py:222
msgid "Change playlist title and description. (Closes the dialog)"
msgstr "تغییر عنوان و توضیحات لیست پخش (این پنجره بسته می شود)"
-#: ../melon/playlist/__init__.py:244
+#: ../melon/playlist/__init__.py:233
msgid "Delete Playlist"
msgstr "حذف لیست پخش"
-#: ../melon/playlist/__init__.py:246
+#: ../melon/playlist/__init__.py:235
msgid "Delete this playlist and it's content. This can NOT be undone."
msgstr "این عملیات این لیستپخش و محتویات آن را حذف میکند و قابل بازگشت نیست."
-#: ../melon/playlist/__init__.py:259
+#: ../melon/playlist/__init__.py:248
msgid "Close"
msgstr "بستن"
-#: ../melon/playlist/__init__.py:261
+#: ../melon/playlist/__init__.py:250
msgid "Close without changing anything"
msgstr "بستن بدون تغییر دادن چیزی"
-#: ../melon/playlist/__init__.py:290
+#: ../melon/playlist/__init__.py:279
msgid "Delete Playlist?"
msgstr ""
-#: ../melon/playlist/__init__.py:291
+#: ../melon/playlist/__init__.py:280
msgid "Do you really want to delete this playlist? This can not be undone."
msgstr ""
-#: ../melon/playlist/__init__.py:293 ../melon/playlist/create.py:54
-#: ../melon/playlist/create.py:109 ../melon/playlist/pick.py:88
-#: ../melon/playlist/pick.py:126 ../melon/widgets/preferencerow.py:181
-#: ../melon/widgets/preferencerow.py:220
+#: ../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
msgid "Cancel"
msgstr "لغو"
-#: ../melon/playlist/__init__.py:295 ../melon/widgets/preferencerow.py:222
+#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216
msgid "Delete"
msgstr "حذف"
-#: ../melon/playlist/create.py:25 ../melon/playlist/pick.py:35
+#: ../melon/playlist/create.py:20 ../melon/playlist/pick.py:28
msgid "Video"
msgstr "ویدیو"
-#: ../melon/playlist/create.py:27
+#: ../melon/playlist/create.py:22
msgid "The following video will be added to the new playlist"
msgstr ""
-#: ../melon/playlist/create.py:39 ../melon/playlist/create.py:125
+#: ../melon/playlist/create.py:34 ../melon/playlist/create.py:120
msgid "New Playlist"
msgstr "سیاههٔ پخش جدید"
-#: ../melon/playlist/create.py:40
+#: ../melon/playlist/create.py:35
msgid "Enter more playlist information"
msgstr "وارد کردن توضیحات بیشتر برای لیستپخش"
-#: ../melon/playlist/create.py:44
+#: ../melon/playlist/create.py:39
msgid "Unnamed Playlist"
msgstr "سیاههٔ پخش بدون نام"
-#: ../melon/playlist/create.py:54 ../melon/playlist/create.py:109
-#: ../melon/playlist/pick.py:88 ../melon/playlist/pick.py:126
+#: ../melon/playlist/create.py:49 ../melon/playlist/create.py:104
+#: ../melon/playlist/pick.py:82 ../melon/playlist/pick.py:120
msgid "Do not create playlist"
msgstr "لیست پخش را ایجاد نکن."
-#: ../melon/playlist/create.py:57 ../melon/widgets/preferencerow.py:184
+#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178
msgid "Create"
msgstr "ایجاد"
-#: ../melon/playlist/create.py:57
+#: ../melon/playlist/create.py:52
msgid "Create playlist"
msgstr "ایجاد لیستپخش"
-#: ../melon/playlist/pick.py:37
+#: ../melon/playlist/pick.py:30
msgid "The following video will be added to the playlist"
msgstr ""
-#: ../melon/playlist/pick.py:50 ../melon/widgets/feeditem.py:154
+#: ../melon/playlist/pick.py:43 ../melon/widgets/feeditem.py:147
msgid "Add to playlist"
msgstr "افزودن به لیستپخش"
-#: ../melon/playlist/pick.py:53
+#: ../melon/playlist/pick.py:46
msgid ""
"Choose a playlist to add the video to. Note that you can only add videos to "
"local playlists, not external bookmarked ones"
@@ 566,73 566,73 @@ msgstr ""
"نکته: شما تنها میتوانید ویدئو را به لیست پخش های محلی اضافه کنید، نه به "
"نشانک گذاری شده های خارجی."
-#: ../melon/playlist/pick.py:57
+#: ../melon/playlist/pick.py:50
msgid "Create new playlist"
msgstr "ایجاد یک لیستپخش جدید"
-#: ../melon/playlist/pick.py:58
+#: ../melon/playlist/pick.py:51
msgid "Create a new playlist and add the video to it"
msgstr "ایجاد یک لیستپخش جدید و افزودن ویدئو به آن"
-#: ../melon/playlist/pick.py:142
+#: ../melon/playlist/pick.py:136
msgid "Add to Playlist"
msgstr "افزودن به لیستپخش"
-#: ../melon/servers/invidious/__init__.py:35
+#: ../melon/servers/invidious/__init__.py:29
msgid "Open source alternative front-end to YouTube"
msgstr ""
-#: ../melon/servers/invidious/__init__.py:40
+#: ../melon/servers/invidious/__init__.py:34
msgid "Instance"
msgstr "نمونه"
-#: ../melon/servers/invidious/__init__.py:42
+#: ../melon/servers/invidious/__init__.py:36
msgid ""
"See https://docs.invidious.io/instances/ for a list of available instances"
msgstr ""
"برای مشاهده لیستی از کارساز های موجود به https://docs.invidious.io/"
"instances/ مراجعه کنید"
-#: ../melon/servers/invidious/__init__.py:55
+#: ../melon/servers/invidious/__init__.py:49
msgid "Trending"
msgstr ""
-#: ../melon/servers/invidious/__init__.py:56
+#: ../melon/servers/invidious/__init__.py:50
msgid "Popular"
msgstr "معروف"
-#: ../melon/servers/nebula/__init__.py:21
+#: ../melon/servers/nebula/__init__.py:18
msgid ""
"Home of smart, thoughtful videos, podcasts, and classes from your favorite "
"creators"
msgstr ""
"خانه ویدیوها، پادکستها و کلاسهای هوشمند و متفکر از سازندگان مورد علاقهتان"
-#: ../melon/servers/nebula/__init__.py:27
+#: ../melon/servers/nebula/__init__.py:24
msgid "Email Address"
msgstr "آدرس رایانامه"
-#: ../melon/servers/nebula/__init__.py:28
+#: ../melon/servers/nebula/__init__.py:25
msgid "Email Address to login to your account"
msgstr "آدرس رایانامه برای ورود به حساب کاربری"
-#: ../melon/servers/nebula/__init__.py:35
+#: ../melon/servers/nebula/__init__.py:32
msgid "Password"
msgstr ""
-#: ../melon/servers/nebula/__init__.py:36
+#: ../melon/servers/nebula/__init__.py:33
msgid "Password associated with your account"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:16
+#: ../melon/servers/peertube/__init__.py:12
msgid "Decentralized video hosting network, based on free/libre software"
msgstr "شبکه میزبانی ویدیو غیرمتمرکز، بر اساس نرم افزار رایگان/آزاد"
-#: ../melon/servers/peertube/__init__.py:21
+#: ../melon/servers/peertube/__init__.py:17
msgid "Instances"
msgstr "نمونهها"
-#: ../melon/servers/peertube/__init__.py:23
+#: ../melon/servers/peertube/__init__.py:19
msgid ""
"List of peertube instances, from which to fetch content. See https://"
"joinpeertube.org/instances"
@@ 640,31 640,31 @@ msgstr ""
"فهرست نمونههای پیرتیوب که محتوا از آنها واکشی میشود. این نشانی را ببینید: "
"https://joinpeertube.org/instances"
-#: ../melon/servers/peertube/__init__.py:31
+#: ../melon/servers/peertube/__init__.py:27
msgid "Show NSFW content"
msgstr "نمایش محتوای nsfw"
-#: ../melon/servers/peertube/__init__.py:32
+#: ../melon/servers/peertube/__init__.py:28
msgid "Passes the nsfw filter to the peertube search API"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:39
+#: ../melon/servers/peertube/__init__.py:35
msgid "Enable Federation"
msgstr "فعال کردن فدریشن"
-#: ../melon/servers/peertube/__init__.py:40
+#: ../melon/servers/peertube/__init__.py:36
msgid "Returns content from federated instances instead of only local content"
msgstr "محتوا را از کارساز های فدریتد بجای محلی نشان میدهد."
-#: ../melon/servers/peertube/__init__.py:65
+#: ../melon/servers/peertube/__init__.py:61
msgid "Latest"
msgstr "آخرین"
-#: ../melon/settings/__init__.py:23
+#: ../melon/settings/__init__.py:18
msgid "Show Previews when browsing public feeds (incl. search)"
msgstr "نمایش پیش نمایش ها هنگام مرور خوراکهای عمومی (از جمله جستجو)"
-#: ../melon/settings/__init__.py:25
+#: ../melon/settings/__init__.py:20
msgid ""
"Set to true to show previews when viewing channel contents, public feeds and "
"searching"
@@ 672,11 672,11 @@ msgstr ""
"برای نمایش پیش نمایش ها هنگام مشاهده محتوای کانال، فیدهای عمومی و جستجو، روی "
"بله تنظیم کنید"
-#: ../melon/settings/__init__.py:34
+#: ../melon/settings/__init__.py:29
msgid "Show Previews in local feeds"
msgstr "نمایش پیشنمایش ها در خوراک های محلی"
-#: ../melon/settings/__init__.py:36
+#: ../melon/settings/__init__.py:31
msgid ""
"Set to true to show previews in the new feed, for subscribed channels, and "
"saved playlists"
@@ 684,158 684,158 @@ msgstr ""
"برای نمایش پیشنمایشها در فید جدید، برای کانالهای مشترک و لیستهای پخش "
"ذخیرهشده، روی بله تنظیم کنید"
-#: ../melon/settings/__init__.py:44
+#: ../melon/settings/__init__.py:39
msgid "Show servers that may contain nsfw content"
msgstr "نمایش کارساز هایی که ممکن است دارای محتوای NSFW باشد"
-#: ../melon/settings/__init__.py:46
+#: ../melon/settings/__init__.py:41
msgid ""
"Lists/Delists servers in the browse servers list, if they contain some nsfw "
"content"
msgstr ""
-#: ../melon/settings/__init__.py:54
+#: ../melon/settings/__init__.py:49
msgid "Show servers that only contain nsfw content"
msgstr "نمایش کارساز هایی که تنها دارای محتوای NSFW هستند"
-#: ../melon/settings/__init__.py:56
+#: ../melon/settings/__init__.py:51
msgid ""
"Lists/Delists servers in the browse servers list, if they contain only/"
"mostly nsfw content"
msgstr ""
-#: ../melon/settings/__init__.py:64
+#: ../melon/settings/__init__.py:59
msgid "Show servers that require login"
msgstr "نمایش کارساز هایی که به ورود احتیاج دارند"
-#: ../melon/settings/__init__.py:66
+#: ../melon/settings/__init__.py:61
msgid ""
"Lists/Delists servers in the browse servers list, if they require login to "
"function"
msgstr ""
-#: ../melon/settings/__init__.py:74
+#: ../melon/settings/__init__.py:69
msgid "Use GPU acceleration for video player if available"
msgstr ""
-#: ../melon/settings/__init__.py:75
+#: ../melon/settings/__init__.py:70
msgid "Disable this if the video player doesn't work"
msgstr ""
-#: ../melon/settings/__init__.py:86
+#: ../melon/settings/__init__.py:81
msgid "Settings"
msgstr "تنظیمات"
-#: ../melon/settings/__init__.py:99
+#: ../melon/settings/__init__.py:94
msgid "General"
msgstr "کلی"
-#: ../melon/settings/__init__.py:100
+#: ../melon/settings/__init__.py:95
msgid "Global app settings"
msgstr "تنظیمات کلی کاره"
-#: ../melon/settings/__init__.py:124
+#: ../melon/settings/__init__.py:119
msgid "Enable Server"
msgstr "فعال کردن کارساز"
-#: ../melon/settings/__init__.py:126
+#: ../melon/settings/__init__.py:121
msgid ""
"Disabled servers won't show up in the browser or on the local/home screen"
msgstr ""
"کارساز های غیرفعال شده دیگر به شما در بخش محلی و صفحهخانه نشان داده نمیشوند."
-#: ../melon/widgets/feeditem.py:148
+#: ../melon/widgets/feeditem.py:141
msgid "Watch now"
msgstr ""
-#: ../melon/widgets/feeditem.py:161
+#: ../melon/widgets/feeditem.py:154
msgid "Open in browser"
msgstr ""
-#: ../melon/widgets/feeditem.py:165
+#: ../melon/widgets/feeditem.py:158
msgid "View channel"
msgstr ""
-#: ../melon/widgets/player.py:136
+#: ../melon/widgets/player.py:125
msgid "No streams available"
msgstr "جریان پخشی موجود نیست"
-#: ../melon/widgets/player.py:198
+#: ../melon/widgets/player.py:187
msgid "Toggle floating window"
msgstr ""
-#: ../melon/widgets/player.py:204
+#: ../melon/widgets/player.py:193
msgid "Toggle fullscreen"
msgstr ""
-#: ../melon/widgets/player.py:226 ../melon/widgets/player.py:613
-#: ../melon/widgets/player.py:622
+#: ../melon/widgets/player.py:215 ../melon/widgets/player.py:602
+#: ../melon/widgets/player.py:611
msgid "Play"
msgstr ""
-#: ../melon/widgets/player.py:253
+#: ../melon/widgets/player.py:242
msgid "Stream options"
msgstr "تنظیمات استریم"
-#: ../melon/widgets/player.py:483
+#: ../melon/widgets/player.py:472
msgid "Resolution"
msgstr "وضوح"
-#: ../melon/widgets/player.py:604
+#: ../melon/widgets/player.py:593
msgid "Pause"
msgstr ""
-#: ../melon/widgets/player.py:642
+#: ../melon/widgets/player.py:631
msgid "The video is playing in separate window"
msgstr ""
-#: ../melon/widgets/player.py:779
+#: ../melon/widgets/player.py:768
msgid "Player"
msgstr "پخشکننده"
-#: ../melon/widgets/preferencerow.py:125
+#: ../melon/widgets/preferencerow.py:119
msgid "Add"
msgstr "افزودن"
-#: ../melon/widgets/preferencerow.py:139
+#: ../melon/widgets/preferencerow.py:133
msgid "Move up"
msgstr "انتقال به بالا"
-#: ../melon/widgets/preferencerow.py:147
+#: ../melon/widgets/preferencerow.py:141
msgid "Move down"
msgstr "انتقال به پایین"
-#: ../melon/widgets/preferencerow.py:153
+#: ../melon/widgets/preferencerow.py:147
msgid "Remove from list"
msgstr "حذف از لیست"
-#: ../melon/widgets/preferencerow.py:168
+#: ../melon/widgets/preferencerow.py:162
msgid "Add Item"
msgstr "افزودن مورد"
-#: ../melon/widgets/preferencerow.py:171
+#: ../melon/widgets/preferencerow.py:165
msgid "Create a new list entry"
msgstr "ایجاد یک ورودی لیست جدید"
-#: ../melon/widgets/preferencerow.py:172
+#: ../melon/widgets/preferencerow.py:166
msgid "Enter the new value here"
msgstr "مقادیر را اینجا وارد کنید."
-#: ../melon/widgets/preferencerow.py:175
+#: ../melon/widgets/preferencerow.py:169
msgid "Value"
msgstr "مقدار"
-#: ../melon/widgets/preferencerow.py:215
+#: ../melon/widgets/preferencerow.py:209
msgid "Delete Item?"
msgstr ""
-#: ../melon/widgets/preferencerow.py:217
+#: ../melon/widgets/preferencerow.py:211
msgid ""
"Do you really want to delete this item? You won't be able to restore it "
"afterwards"
msgstr ""
-#: ../melon/window.py:93
+#: ../melon/window.py:86
msgid "Stream videos on the go"
msgstr "ویدیوهارا استریم کن"
M po/melon.pot => po/melon.pot +194 -194
@@ 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 12:29+0200\n"
+"POT-Creation-Date: 2024-08-15 13:53+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"
@@ 79,734 79,734 @@ msgid ""
"button"
msgstr ""
-#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:66
-#: ../melon/browse/server.py:115 ../melon/browse/server.py:143
-#: ../melon/home/history.py:25 ../melon/home/new.py:36
-#: ../melon/home/playlists.py:23 ../melon/home/subs.py:22
-#: ../melon/importer.py:63 ../melon/player/__init__.py:113
-#: ../melon/player/playlist.py:164 ../melon/player/playlist.py:171
-#: ../melon/playlist/__init__.py:82 ../melon/playlist/create.py:104
-#: ../melon/playlist/pick.py:121
+#: ../melon/browse/__init__.py:16 ../melon/browse/search.py:62
+#: ../melon/browse/server.py:110 ../melon/browse/server.py:138
+#: ../melon/home/history.py:21 ../melon/home/new.py:31
+#: ../melon/home/playlists.py:19 ../melon/home/subs.py:18
+#: ../melon/importer.py:59 ../melon/player/__init__.py:104
+#: ../melon/player/playlist.py:150 ../melon/player/playlist.py:157
+#: ../melon/playlist/__init__.py:69 ../melon/playlist/create.py:99
+#: ../melon/playlist/pick.py:115
msgid "*crickets chirping*"
msgstr ""
-#: ../melon/browse/__init__.py:21
+#: ../melon/browse/__init__.py:17
msgid "There are no available servers"
msgstr ""
-#: ../melon/browse/__init__.py:24 ../melon/browse/search.py:72
-#: ../melon/importer.py:67
+#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:68
+#: ../melon/importer.py:63
msgid "Enable servers in the settings menu"
msgstr ""
-#: ../melon/browse/__init__.py:33
+#: ../melon/browse/__init__.py:29
msgid "Available Servers"
msgstr ""
-#: ../melon/browse/__init__.py:35
+#: ../melon/browse/__init__.py:31
msgid "You can enable/disable and filter servers in the settings menu"
msgstr ""
-#: ../melon/browse/__init__.py:56
+#: ../melon/browse/__init__.py:52
msgid "Servers"
msgstr ""
-#: ../melon/browse/__init__.py:64 ../melon/browse/search.py:126
+#: ../melon/browse/__init__.py:60 ../melon/browse/search.py:122
msgid "Global Search"
msgstr ""
-#: ../melon/browse/channel.py:104
+#: ../melon/browse/channel.py:98
msgid "Subscribe to channel"
msgstr ""
-#: ../melon/browse/channel.py:105
+#: ../melon/browse/channel.py:99
msgid "Add latest uploads to home feed"
msgstr ""
-#: ../melon/browse/channel.py:117
+#: ../melon/browse/channel.py:111
msgid "Channel feed"
msgstr ""
-#: ../melon/browse/channel.py:118
+#: ../melon/browse/channel.py:112
msgid "This channel provides multiple feeds, choose which one to view"
msgstr ""
-#: ../melon/browse/channel.py:170
+#: ../melon/browse/channel.py:164
msgid "Channel"
msgstr ""
-#: ../melon/browse/playlist.py:48 ../melon/playlist/__init__.py:74
+#: ../melon/browse/playlist.py:42 ../melon/playlist/__init__.py:61
msgid "Start playing"
msgstr ""
-#: ../melon/browse/playlist.py:69 ../melon/player/__init__.py:53
+#: ../melon/browse/playlist.py:63 ../melon/player/__init__.py:44
msgid "Bookmark"
msgstr ""
-#: ../melon/browse/playlist.py:70
+#: ../melon/browse/playlist.py:64
msgid "Add Playlist to your local playlist collection"
msgstr ""
-#: ../melon/browse/playlist.py:124
+#: ../melon/browse/playlist.py:118
msgid "Playlist"
msgstr ""
-#: ../melon/browse/search.py:49
+#: ../melon/browse/search.py:45
msgid "No results"
msgstr ""
-#: ../melon/browse/search.py:52
+#: ../melon/browse/search.py:48
#, python-brace-format
msgid "{count} result"
msgid_plural "{count} results"
msgstr[0] ""
msgstr[1] ""
-#: ../melon/browse/search.py:68
+#: ../melon/browse/search.py:64
msgid "There are no available servers, a search would yield no results"
msgstr ""
-#: ../melon/browse/search.py:96 ../melon/browse/server.py:47
+#: ../melon/browse/search.py:92 ../melon/browse/server.py:42
msgid "Any"
msgstr ""
-#: ../melon/browse/search.py:100 ../melon/browse/server.py:51
+#: ../melon/browse/search.py:96 ../melon/browse/server.py:46
msgid "Channels"
msgstr ""
-#: ../melon/browse/search.py:105 ../melon/browse/server.py:56
-#: ../melon/home/playlists.py:34 ../melon/home/playlists.py:78
-#: ../melon/servers/nebula/__init__.py:206
-#: ../melon/servers/peertube/__init__.py:213
+#: ../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/peertube/__init__.py:209
msgid "Playlists"
msgstr ""
-#: ../melon/browse/search.py:110 ../melon/browse/server.py:61
-#: ../melon/servers/nebula/__init__.py:200
-#: ../melon/servers/peertube/__init__.py:213
-#: ../melon/servers/peertube/__init__.py:214
+#: ../melon/browse/search.py:106 ../melon/browse/server.py:56
+#: ../melon/servers/nebula/__init__.py:197
+#: ../melon/servers/peertube/__init__.py:209
+#: ../melon/servers/peertube/__init__.py:210
msgid "Videos"
msgstr ""
-#: ../melon/browse/server.py:26
+#: ../melon/browse/server.py:21
msgid "Search"
msgstr ""
-#: ../melon/browse/server.py:116
+#: ../melon/browse/server.py:111
msgid "Try searching for a term"
msgstr ""
-#: ../melon/browse/server.py:118
+#: ../melon/browse/server.py:113
msgid "Try using a different query"
msgstr ""
-#: ../melon/browse/server.py:144
+#: ../melon/browse/server.py:139
msgid "This feed is empty"
msgstr ""
-#: ../melon/home/__init__.py:20
+#: ../melon/home/__init__.py:15
msgid "Home"
msgstr ""
-#: ../melon/home/__init__.py:41 ../melon/home/history.py:28
-#: ../melon/home/new.py:49 ../melon/home/subs.py:25
+#: ../melon/home/__init__.py:36 ../melon/home/history.py:24
+#: ../melon/home/new.py:44 ../melon/home/subs.py:21
msgid "Browse Servers"
msgstr ""
-#: ../melon/home/__init__.py:48
+#: ../melon/home/__init__.py:43
msgid "Preferences"
msgstr ""
-#: ../melon/home/__init__.py:49
+#: ../melon/home/__init__.py:44
msgid "Import Data"
msgstr ""
-#: ../melon/home/__init__.py:50
+#: ../melon/home/__init__.py:45
msgid "About Melon"
msgstr ""
-#: ../melon/home/history.py:26
+#: ../melon/home/history.py:22
msgid "You haven't watched any videos yet"
msgstr ""
-#: ../melon/home/history.py:38 ../melon/home/history.py:125
+#: ../melon/home/history.py:34 ../melon/home/history.py:121
msgid "History"
msgstr ""
-#: ../melon/home/history.py:39
+#: ../melon/home/history.py:35
msgid "These are the videos you opened in the past"
msgstr ""
-#: ../melon/home/history.py:83
+#: ../melon/home/history.py:79
msgid "Show more"
msgstr ""
-#: ../melon/home/history.py:84
+#: ../melon/home/history.py:80
msgid "Load older videos"
msgstr ""
-#: ../melon/home/new.py:30
+#: ../melon/home/new.py:25
msgid "Refresh"
msgstr ""
-#: ../melon/home/new.py:40
+#: ../melon/home/new.py:35
msgid "Subscribe to a channel first, to view new uploads"
msgstr ""
-#: ../melon/home/new.py:45
+#: ../melon/home/new.py:40
msgid "The channels you are subscribed to haven't uploaded anything yet"
msgstr ""
-#: ../melon/home/new.py:68
+#: ../melon/home/new.py:63
#, python-brace-format
msgid "(Last refresh: {last_refresh})"
msgstr ""
-#: ../melon/home/new.py:72 ../melon/home/new.py:172
+#: ../melon/home/new.py:67 ../melon/home/new.py:167
msgid "What's new"
msgstr ""
-#: ../melon/home/new.py:74
+#: ../melon/home/new.py:69
msgid "These are the latest videos of channels you follow"
msgstr ""
-#: ../melon/home/new.py:162
+#: ../melon/home/new.py:157
msgid "Pick up where you left off"
msgstr ""
-#: ../melon/home/new.py:163
+#: ../melon/home/new.py:158
msgid "Watch"
msgstr ""
-#: ../melon/home/playlists.py:24
+#: ../melon/home/playlists.py:20
msgid "You don't have any playlists yet"
msgstr ""
-#: ../melon/home/playlists.py:26 ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:22 ../melon/home/playlists.py:35
msgid "Create a new playlist"
msgstr ""
-#: ../melon/home/playlists.py:36
+#: ../melon/home/playlists.py:32
msgid "Here are playlists you've bookmarked or created yourself"
msgstr ""
-#: ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:35
msgid "New"
msgstr ""
-#: ../melon/home/subs.py:23
+#: ../melon/home/subs.py:19
msgid "You aren't yet subscribed to channels"
msgstr ""
-#: ../melon/home/subs.py:33 ../melon/home/subs.py:68
+#: ../melon/home/subs.py:29 ../melon/home/subs.py:64
msgid "Subscriptions"
msgstr ""
-#: ../melon/home/subs.py:34
+#: ../melon/home/subs.py:30
msgid "You are subscribed to the following channels"
msgstr ""
-#: ../melon/import_providers/newpipe.py:42
+#: ../melon/import_providers/newpipe.py:40
msgid "Newpipe Database importer"
msgstr ""
-#: ../melon/import_providers/newpipe.py:44
+#: ../melon/import_providers/newpipe.py:42
msgid ""
"Import the .db file from inside the newpipe .zip export (as invidious "
"content)"
msgstr ""
-#: ../melon/import_providers/newpipe.py:46
+#: ../melon/import_providers/newpipe.py:44
msgid "Select .db file"
msgstr ""
-#: ../melon/import_providers/newpipe.py:60
+#: ../melon/import_providers/newpipe.py:58
msgid "Newpipe Database"
msgstr ""
-#: ../melon/importer.py:19 ../melon/importer.py:37
+#: ../melon/importer.py:15 ../melon/importer.py:33
msgid "Import"
msgstr ""
-#: ../melon/importer.py:38
+#: ../melon/importer.py:34
msgid "The following import methods have been found"
msgstr ""
-#: ../melon/importer.py:64
+#: ../melon/importer.py:60
msgid "There are no available importer methods"
msgstr ""
-#: ../melon/player/__init__.py:41
+#: ../melon/player/__init__.py:32
msgid "Description"
msgstr ""
-#: ../melon/player/__init__.py:54
+#: ../melon/player/__init__.py:45
msgid "Add this video to a playlist"
msgstr ""
-#: ../melon/player/__init__.py:114 ../melon/playlist/create.py:105
-#: ../melon/playlist/pick.py:122
+#: ../melon/player/__init__.py:105 ../melon/playlist/create.py:100
+#: ../melon/playlist/pick.py:116
msgid "Video could not be loaded"
msgstr ""
-#: ../melon/player/__init__.py:152 ../melon/player/__init__.py:186
-#: ../melon/player/playlist.py:57
+#: ../melon/player/__init__.py:143 ../melon/player/__init__.py:177
+#: ../melon/player/playlist.py:43
msgid "Loading..."
msgstr ""
-#: ../melon/player/playlist.py:165
+#: ../melon/player/playlist.py:151
msgid "This playlist is empty"
msgstr ""
-#: ../melon/player/playlist.py:172
+#: ../melon/player/playlist.py:158
msgid "There was an error loading the playlist"
msgstr ""
-#: ../melon/player/playlist.py:225
+#: ../melon/player/playlist.py:211
msgid "Previous"
msgstr ""
-#: ../melon/player/playlist.py:227
+#: ../melon/player/playlist.py:213
msgid "Play video that comes before this one in the playlist"
msgstr ""
-#: ../melon/player/playlist.py:244
+#: ../melon/player/playlist.py:230
msgid "Next"
msgstr ""
-#: ../melon/player/playlist.py:246
+#: ../melon/player/playlist.py:232
msgid "Play video that comes after this one in the playlist"
msgstr ""
-#: ../melon/player/playlist.py:258
+#: ../melon/player/playlist.py:244
msgid "Skip"
msgstr ""
-#: ../melon/player/playlist.py:259
+#: ../melon/player/playlist.py:245
msgid "Skip this video and pick a new one at random"
msgstr ""
-#: ../melon/player/playlist.py:270
+#: ../melon/player/playlist.py:256
msgid "Shuffle"
msgstr ""
-#: ../melon/player/playlist.py:271
+#: ../melon/player/playlist.py:257
msgid "Chooses the next video at random"
msgstr ""
-#: ../melon/player/playlist.py:282
+#: ../melon/player/playlist.py:268
msgid "Repeat current video"
msgstr ""
-#: ../melon/player/playlist.py:283
+#: ../melon/player/playlist.py:269
msgid "Puts this video on loop"
msgstr ""
-#: ../melon/player/playlist.py:298
+#: ../melon/player/playlist.py:284
msgid "Repeat playlist"
msgstr ""
-#: ../melon/player/playlist.py:300
+#: ../melon/player/playlist.py:286
msgid "Start playling the playlist from the beginning after reaching the end"
msgstr ""
-#: ../melon/player/playlist.py:312
+#: ../melon/player/playlist.py:298
msgid "Playlist Content"
msgstr ""
-#: ../melon/player/playlist.py:314
+#: ../melon/player/playlist.py:300
msgid "Click on videos to continue playing the playlist from there"
msgstr ""
-#: ../melon/playlist/__init__.py:70
+#: ../melon/playlist/__init__.py:57
msgid "Edit"
msgstr ""
-#: ../melon/playlist/__init__.py:84
+#: ../melon/playlist/__init__.py:71
msgid "You haven't added any videos to this playlist yet"
msgstr ""
-#: ../melon/playlist/__init__.py:87
+#: ../melon/playlist/__init__.py:74
msgid "Start watching"
msgstr ""
-#: ../melon/playlist/__init__.py:113
+#: ../melon/playlist/__init__.py:102
msgid "Set as playlist thumbnail"
msgstr ""
-#: ../melon/playlist/__init__.py:121
+#: ../melon/playlist/__init__.py:110
msgid "Remove from playlist"
msgstr ""
-#: ../melon/playlist/__init__.py:214
+#: ../melon/playlist/__init__.py:203
msgid "Edit Playlist"
msgstr ""
-#: ../melon/playlist/__init__.py:220
+#: ../melon/playlist/__init__.py:209
msgid "Playlist details"
msgstr ""
-#: ../melon/playlist/__init__.py:221
+#: ../melon/playlist/__init__.py:210
msgid "Change playlist information"
msgstr ""
-#: ../melon/playlist/__init__.py:223 ../melon/playlist/create.py:43
+#: ../melon/playlist/__init__.py:212 ../melon/playlist/create.py:38
msgid "Playlist name"
msgstr ""
-#: ../melon/playlist/__init__.py:226 ../melon/playlist/create.py:46
+#: ../melon/playlist/__init__.py:215 ../melon/playlist/create.py:41
msgid "Playlist description"
msgstr ""
-#: ../melon/playlist/__init__.py:231
+#: ../melon/playlist/__init__.py:220
msgid "Save details"
msgstr ""
-#: ../melon/playlist/__init__.py:233
+#: ../melon/playlist/__init__.py:222
msgid "Change playlist title and description. (Closes the dialog)"
msgstr ""
-#: ../melon/playlist/__init__.py:244
+#: ../melon/playlist/__init__.py:233
msgid "Delete Playlist"
msgstr ""
-#: ../melon/playlist/__init__.py:246
+#: ../melon/playlist/__init__.py:235
msgid "Delete this playlist and it's content. This can NOT be undone."
msgstr ""
-#: ../melon/playlist/__init__.py:259
+#: ../melon/playlist/__init__.py:248
msgid "Close"
msgstr ""
-#: ../melon/playlist/__init__.py:261
+#: ../melon/playlist/__init__.py:250
msgid "Close without changing anything"
msgstr ""
-#: ../melon/playlist/__init__.py:290
+#: ../melon/playlist/__init__.py:279
msgid "Delete Playlist?"
msgstr ""
-#: ../melon/playlist/__init__.py:291
+#: ../melon/playlist/__init__.py:280
msgid "Do you really want to delete this playlist? This can not be undone."
msgstr ""
-#: ../melon/playlist/__init__.py:293 ../melon/playlist/create.py:54
-#: ../melon/playlist/create.py:109 ../melon/playlist/pick.py:88
-#: ../melon/playlist/pick.py:126 ../melon/widgets/preferencerow.py:181
-#: ../melon/widgets/preferencerow.py:220
+#: ../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
msgid "Cancel"
msgstr ""
-#: ../melon/playlist/__init__.py:295 ../melon/widgets/preferencerow.py:222
+#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216
msgid "Delete"
msgstr ""
-#: ../melon/playlist/create.py:25 ../melon/playlist/pick.py:35
+#: ../melon/playlist/create.py:20 ../melon/playlist/pick.py:28
msgid "Video"
msgstr ""
-#: ../melon/playlist/create.py:27
+#: ../melon/playlist/create.py:22
msgid "The following video will be added to the new playlist"
msgstr ""
-#: ../melon/playlist/create.py:39 ../melon/playlist/create.py:125
+#: ../melon/playlist/create.py:34 ../melon/playlist/create.py:120
msgid "New Playlist"
msgstr ""
-#: ../melon/playlist/create.py:40
+#: ../melon/playlist/create.py:35
msgid "Enter more playlist information"
msgstr ""
-#: ../melon/playlist/create.py:44
+#: ../melon/playlist/create.py:39
msgid "Unnamed Playlist"
msgstr ""
-#: ../melon/playlist/create.py:54 ../melon/playlist/create.py:109
-#: ../melon/playlist/pick.py:88 ../melon/playlist/pick.py:126
+#: ../melon/playlist/create.py:49 ../melon/playlist/create.py:104
+#: ../melon/playlist/pick.py:82 ../melon/playlist/pick.py:120
msgid "Do not create playlist"
msgstr ""
-#: ../melon/playlist/create.py:57 ../melon/widgets/preferencerow.py:184
+#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178
msgid "Create"
msgstr ""
-#: ../melon/playlist/create.py:57
+#: ../melon/playlist/create.py:52
msgid "Create playlist"
msgstr ""
-#: ../melon/playlist/pick.py:37
+#: ../melon/playlist/pick.py:30
msgid "The following video will be added to the playlist"
msgstr ""
-#: ../melon/playlist/pick.py:50 ../melon/widgets/feeditem.py:154
+#: ../melon/playlist/pick.py:43 ../melon/widgets/feeditem.py:147
msgid "Add to playlist"
msgstr ""
-#: ../melon/playlist/pick.py:53
+#: ../melon/playlist/pick.py:46
msgid ""
"Choose a playlist to add the video to. Note that you can only add videos to "
"local playlists, not external bookmarked ones"
msgstr ""
-#: ../melon/playlist/pick.py:57
+#: ../melon/playlist/pick.py:50
msgid "Create new playlist"
msgstr ""
-#: ../melon/playlist/pick.py:58
+#: ../melon/playlist/pick.py:51
msgid "Create a new playlist and add the video to it"
msgstr ""
-#: ../melon/playlist/pick.py:142
+#: ../melon/playlist/pick.py:136
msgid "Add to Playlist"
msgstr ""
-#: ../melon/servers/invidious/__init__.py:35
+#: ../melon/servers/invidious/__init__.py:29
msgid "Open source alternative front-end to YouTube"
msgstr ""
-#: ../melon/servers/invidious/__init__.py:40
+#: ../melon/servers/invidious/__init__.py:34
msgid "Instance"
msgstr ""
-#: ../melon/servers/invidious/__init__.py:42
+#: ../melon/servers/invidious/__init__.py:36
msgid ""
"See https://docs.invidious.io/instances/ for a list of available instances"
msgstr ""
-#: ../melon/servers/invidious/__init__.py:55
+#: ../melon/servers/invidious/__init__.py:49
msgid "Trending"
msgstr ""
-#: ../melon/servers/invidious/__init__.py:56
+#: ../melon/servers/invidious/__init__.py:50
msgid "Popular"
msgstr ""
-#: ../melon/servers/nebula/__init__.py:21
+#: ../melon/servers/nebula/__init__.py:18
msgid ""
"Home of smart, thoughtful videos, podcasts, and classes from your favorite "
"creators"
msgstr ""
-#: ../melon/servers/nebula/__init__.py:27
+#: ../melon/servers/nebula/__init__.py:24
msgid "Email Address"
msgstr ""
-#: ../melon/servers/nebula/__init__.py:28
+#: ../melon/servers/nebula/__init__.py:25
msgid "Email Address to login to your account"
msgstr ""
-#: ../melon/servers/nebula/__init__.py:35
+#: ../melon/servers/nebula/__init__.py:32
msgid "Password"
msgstr ""
-#: ../melon/servers/nebula/__init__.py:36
+#: ../melon/servers/nebula/__init__.py:33
msgid "Password associated with your account"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:16
+#: ../melon/servers/peertube/__init__.py:12
msgid "Decentralized video hosting network, based on free/libre software"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:21
+#: ../melon/servers/peertube/__init__.py:17
msgid "Instances"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:23
+#: ../melon/servers/peertube/__init__.py:19
msgid ""
"List of peertube instances, from which to fetch content. See https://"
"joinpeertube.org/instances"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:31
+#: ../melon/servers/peertube/__init__.py:27
msgid "Show NSFW content"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:32
+#: ../melon/servers/peertube/__init__.py:28
msgid "Passes the nsfw filter to the peertube search API"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:39
+#: ../melon/servers/peertube/__init__.py:35
msgid "Enable Federation"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:40
+#: ../melon/servers/peertube/__init__.py:36
msgid "Returns content from federated instances instead of only local content"
msgstr ""
-#: ../melon/servers/peertube/__init__.py:65
+#: ../melon/servers/peertube/__init__.py:61
msgid "Latest"
msgstr ""
-#: ../melon/settings/__init__.py:23
+#: ../melon/settings/__init__.py:18
msgid "Show Previews when browsing public feeds (incl. search)"
msgstr ""
-#: ../melon/settings/__init__.py:25
+#: ../melon/settings/__init__.py:20
msgid ""
"Set to true to show previews when viewing channel contents, public feeds and "
"searching"
msgstr ""
-#: ../melon/settings/__init__.py:34
+#: ../melon/settings/__init__.py:29
msgid "Show Previews in local feeds"
msgstr ""
-#: ../melon/settings/__init__.py:36
+#: ../melon/settings/__init__.py:31
msgid ""
"Set to true to show previews in the new feed, for subscribed channels, and "
"saved playlists"
msgstr ""
-#: ../melon/settings/__init__.py:44
+#: ../melon/settings/__init__.py:39
msgid "Show servers that may contain nsfw content"
msgstr ""
-#: ../melon/settings/__init__.py:46
+#: ../melon/settings/__init__.py:41
msgid ""
"Lists/Delists servers in the browse servers list, if they contain some nsfw "
"content"
msgstr ""
-#: ../melon/settings/__init__.py:54
+#: ../melon/settings/__init__.py:49
msgid "Show servers that only contain nsfw content"
msgstr ""
-#: ../melon/settings/__init__.py:56
+#: ../melon/settings/__init__.py:51
msgid ""
"Lists/Delists servers in the browse servers list, if they contain only/"
"mostly nsfw content"
msgstr ""
-#: ../melon/settings/__init__.py:64
+#: ../melon/settings/__init__.py:59
msgid "Show servers that require login"
msgstr ""
-#: ../melon/settings/__init__.py:66
+#: ../melon/settings/__init__.py:61
msgid ""
"Lists/Delists servers in the browse servers list, if they require login to "
"function"
msgstr ""
-#: ../melon/settings/__init__.py:74
+#: ../melon/settings/__init__.py:69
msgid "Use GPU acceleration for video player if available"
msgstr ""
-#: ../melon/settings/__init__.py:75
+#: ../melon/settings/__init__.py:70
msgid "Disable this if the video player doesn't work"
msgstr ""
-#: ../melon/settings/__init__.py:86
+#: ../melon/settings/__init__.py:81
msgid "Settings"
msgstr ""
-#: ../melon/settings/__init__.py:99
+#: ../melon/settings/__init__.py:94
msgid "General"
msgstr ""
-#: ../melon/settings/__init__.py:100
+#: ../melon/settings/__init__.py:95
msgid "Global app settings"
msgstr ""
-#: ../melon/settings/__init__.py:124
+#: ../melon/settings/__init__.py:119
msgid "Enable Server"
msgstr ""
-#: ../melon/settings/__init__.py:126
+#: ../melon/settings/__init__.py:121
msgid ""
"Disabled servers won't show up in the browser or on the local/home screen"
msgstr ""
-#: ../melon/widgets/feeditem.py:148
+#: ../melon/widgets/feeditem.py:141
msgid "Watch now"
msgstr ""
-#: ../melon/widgets/feeditem.py:161
+#: ../melon/widgets/feeditem.py:154
msgid "Open in browser"
msgstr ""
-#: ../melon/widgets/feeditem.py:165
+#: ../melon/widgets/feeditem.py:158
msgid "View channel"
msgstr ""
-#: ../melon/widgets/player.py:136
+#: ../melon/widgets/player.py:125
msgid "No streams available"
msgstr ""
-#: ../melon/widgets/player.py:198
+#: ../melon/widgets/player.py:187
msgid "Toggle floating window"
msgstr ""
-#: ../melon/widgets/player.py:204
+#: ../melon/widgets/player.py:193
msgid "Toggle fullscreen"
msgstr ""
-#: ../melon/widgets/player.py:226 ../melon/widgets/player.py:613
-#: ../melon/widgets/player.py:622
+#: ../melon/widgets/player.py:215 ../melon/widgets/player.py:602
+#: ../melon/widgets/player.py:611
msgid "Play"
msgstr ""
-#: ../melon/widgets/player.py:253
+#: ../melon/widgets/player.py:242
msgid "Stream options"
msgstr ""
-#: ../melon/widgets/player.py:483
+#: ../melon/widgets/player.py:472
msgid "Resolution"
msgstr ""
-#: ../melon/widgets/player.py:604
+#: ../melon/widgets/player.py:593
msgid "Pause"
msgstr ""
-#: ../melon/widgets/player.py:642
+#: ../melon/widgets/player.py:631
msgid "The video is playing in separate window"
msgstr ""
-#: ../melon/widgets/player.py:779
+#: ../melon/widgets/player.py:768
msgid "Player"
msgstr ""
-#: ../melon/widgets/preferencerow.py:125
+#: ../melon/widgets/preferencerow.py:119
msgid "Add"
msgstr ""
-#: ../melon/widgets/preferencerow.py:139
+#: ../melon/widgets/preferencerow.py:133
msgid "Move up"
msgstr ""
-#: ../melon/widgets/preferencerow.py:147
+#: ../melon/widgets/preferencerow.py:141
msgid "Move down"
msgstr ""
-#: ../melon/widgets/preferencerow.py:153
+#: ../melon/widgets/preferencerow.py:147
msgid "Remove from list"
msgstr ""
-#: ../melon/widgets/preferencerow.py:168
+#: ../melon/widgets/preferencerow.py:162
msgid "Add Item"
msgstr ""
-#: ../melon/widgets/preferencerow.py:171
+#: ../melon/widgets/preferencerow.py:165
msgid "Create a new list entry"
msgstr ""
-#: ../melon/widgets/preferencerow.py:172
+#: ../melon/widgets/preferencerow.py:166
msgid "Enter the new value here"
msgstr ""
-#: ../melon/widgets/preferencerow.py:175
+#: ../melon/widgets/preferencerow.py:169
msgid "Value"
msgstr ""
-#: ../melon/widgets/preferencerow.py:215
+#: ../melon/widgets/preferencerow.py:209
msgid "Delete Item?"
msgstr ""
-#: ../melon/widgets/preferencerow.py:217
+#: ../melon/widgets/preferencerow.py:211
msgid ""
"Do you really want to delete this item? You won't be able to restore it "
"afterwards"
msgstr ""
-#: ../melon/window.py:93
+#: ../melon/window.py:86
msgid "Stream videos on the go"
msgstr ""
M po/nl.po => po/nl.po +194 -194
@@ 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 12:29+0200\n"
+"POT-Creation-Date: 2024-08-15 13:53+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-"
@@ 92,240 92,240 @@ msgid ""
msgstr ""
"Het videoscherm met de videospeler, metagegevens en favorietenknop erboven"
-#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:66
-#: ../melon/browse/server.py:115 ../melon/browse/server.py:143
-#: ../melon/home/history.py:25 ../melon/home/new.py:36
-#: ../melon/home/playlists.py:23 ../melon/home/subs.py:22
-#: ../melon/importer.py:63 ../melon/player/__init__.py:113
-#: ../melon/player/playlist.py:164 ../melon/player/playlist.py:171
-#: ../melon/playlist/__init__.py:82 ../melon/playlist/create.py:104
-#: ../melon/playlist/pick.py:121
+#: ../melon/browse/__init__.py:16 ../melon/browse/search.py:62
+#: ../melon/browse/server.py:110 ../melon/browse/server.py:138
+#: ../melon/home/history.py:21 ../melon/home/new.py:31
+#: ../melon/home/playlists.py:19 ../melon/home/subs.py:18
+#: ../melon/importer.py:59 ../melon/player/__init__.py:104
+#: ../melon/player/playlist.py:150 ../melon/player/playlist.py:157
+#: ../melon/playlist/__init__.py:69 ../melon/playlist/create.py:99
+#: ../melon/playlist/pick.py:115
msgid "*crickets chirping*"
msgstr "*tsjilpende krekels*"
-#: ../melon/browse/__init__.py:21
+#: ../melon/browse/__init__.py:17
msgid "There are no available servers"
msgstr "Er zijn geen servers beschikbaar"
-#: ../melon/browse/__init__.py:24 ../melon/browse/search.py:72
-#: ../melon/importer.py:67
+#: ../melon/browse/__init__.py:20 ../melon/browse/search.py:68
+#: ../melon/importer.py:63
msgid "Enable servers in the settings menu"
msgstr "Schakel servers in in het voorkeurenmenu"
-#: ../melon/browse/__init__.py:33
+#: ../melon/browse/__init__.py:29
msgid "Available Servers"
msgstr "Beschikbare servers"
-#: ../melon/browse/__init__.py:35
+#: ../melon/browse/__init__.py:31
msgid "You can enable/disable and filter servers in the settings menu"
msgstr "U kunt servers in- en uitschakelen en filteren in het voorkeurenmenu"
-#: ../melon/browse/__init__.py:56
+#: ../melon/browse/__init__.py:52
msgid "Servers"
msgstr "Servers"
-#: ../melon/browse/__init__.py:64 ../melon/browse/search.py:126
+#: ../melon/browse/__init__.py:60 ../melon/browse/search.py:122
msgid "Global Search"
msgstr "Globaal zoeken"
-#: ../melon/browse/channel.py:104
+#: ../melon/browse/channel.py:98
msgid "Subscribe to channel"
msgstr "Abonneren op kanaal"
-#: ../melon/browse/channel.py:105
+#: ../melon/browse/channel.py:99
msgid "Add latest uploads to home feed"
msgstr "Recentste uploads toevoegen aan tijdlijn"
-#: ../melon/browse/channel.py:117
+#: ../melon/browse/channel.py:111
msgid "Channel feed"
msgstr "Kanaaltijdlijn"
-#: ../melon/browse/channel.py:118
+#: ../melon/browse/channel.py:112
msgid "This channel provides multiple feeds, choose which one to view"
msgstr "Dit kanaal beschikt over meerdere tijdlijnen - kies er een"
-#: ../melon/browse/channel.py:170
+#: ../melon/browse/channel.py:164
msgid "Channel"
msgstr "Kanaal"
-#: ../melon/browse/playlist.py:48 ../melon/playlist/__init__.py:74
+#: ../melon/browse/playlist.py:42 ../melon/playlist/__init__.py:61
msgid "Start playing"
msgstr "Afspelen starten"
-#: ../melon/browse/playlist.py:69 ../melon/player/__init__.py:53
+#: ../melon/browse/playlist.py:63 ../melon/player/__init__.py:44
msgid "Bookmark"
msgstr "Toev. aan favorieten"
-#: ../melon/browse/playlist.py:70
+#: ../melon/browse/playlist.py:64
msgid "Add Playlist to your local playlist collection"
msgstr "Afspeellijst toevoegen aan lokale verzameling"
-#: ../melon/browse/playlist.py:124
+#: ../melon/browse/playlist.py:118
msgid "Playlist"
msgstr "Afspeellijst"
-#: ../melon/browse/search.py:49
+#: ../melon/browse/search.py:45
msgid "No results"
msgstr "Er zijn geen zoekresultaten"
-#: ../melon/browse/search.py:52
+#: ../melon/browse/search.py:48
#, python-brace-format
msgid "{count} result"
msgid_plural "{count} results"
msgstr[0] "{count} resultaat"
msgstr[1] "{count} resultaten"
-#: ../melon/browse/search.py:68
+#: ../melon/browse/search.py:64
msgid "There are no available servers, a search would yield no results"
msgstr ""
"Er zijn geen servers beschikbaar, dus een zoekopdracht zou geen resultaten "
"geven"
-#: ../melon/browse/search.py:96 ../melon/browse/server.py:47
+#: ../melon/browse/search.py:92 ../melon/browse/server.py:42
msgid "Any"
msgstr "Iedere"
-#: ../melon/browse/search.py:100 ../melon/browse/server.py:51
+#: ../melon/browse/search.py:96 ../melon/browse/server.py:46
msgid "Channels"
msgstr "Kanalen"
-#: ../melon/browse/search.py:105 ../melon/browse/server.py:56
-#: ../melon/home/playlists.py:34 ../melon/home/playlists.py:78
-#: ../melon/servers/nebula/__init__.py:206
-#: ../melon/servers/peertube/__init__.py:213
+#: ../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/peertube/__init__.py:209
msgid "Playlists"
msgstr "Afspeellijsten"
-#: ../melon/browse/search.py:110 ../melon/browse/server.py:61
-#: ../melon/servers/nebula/__init__.py:200
-#: ../melon/servers/peertube/__init__.py:213
-#: ../melon/servers/peertube/__init__.py:214
+#: ../melon/browse/search.py:106 ../melon/browse/server.py:56
+#: ../melon/servers/nebula/__init__.py:197
+#: ../melon/servers/peertube/__init__.py:209
+#: ../melon/servers/peertube/__init__.py:210
msgid "Videos"
msgstr "Video's"
-#: ../melon/browse/server.py:26
+#: ../melon/browse/server.py:21
msgid "Search"
msgstr "Zoeken"
-#: ../melon/browse/server.py:116
+#: ../melon/browse/server.py:111
msgid "Try searching for a term"
msgstr "Voer een zoekopdracht in"
-#: ../melon/browse/server.py:118
+#: ../melon/browse/server.py:113
msgid "Try using a different query"
msgstr "Probeer een andere zoekopdracht"
-#: ../melon/browse/server.py:144
+#: ../melon/browse/server.py:139
msgid "This feed is empty"
msgstr "Deze tijdlijn is blanco"
-#: ../melon/home/__init__.py:20
+#: ../melon/home/__init__.py:15
msgid "Home"
msgstr "Tijdlijn"
-#: ../melon/home/__init__.py:41 ../melon/home/history.py:28
-#: ../melon/home/new.py:49 ../melon/home/subs.py:25
+#: ../melon/home/__init__.py:36 ../melon/home/history.py:24
+#: ../melon/home/new.py:44 ../melon/home/subs.py:21
msgid "Browse Servers"
msgstr "Servers verkennen"
-#: ../melon/home/__init__.py:48
+#: ../melon/home/__init__.py:43
msgid "Preferences"
msgstr "Voorkeuren"
-#: ../melon/home/__init__.py:49
+#: ../melon/home/__init__.py:44
msgid "Import Data"
msgstr "Gegevens importeren"
-#: ../melon/home/__init__.py:50
+#: ../melon/home/__init__.py:45
msgid "About Melon"
msgstr "Over Melon"
-#: ../melon/home/history.py:26
+#: ../melon/home/history.py:22
msgid "You haven't watched any videos yet"
msgstr "U heeft nog geen video's bekeken"
-#: ../melon/home/history.py:38 ../melon/home/history.py:125
+#: ../melon/home/history.py:34 ../melon/home/history.py:121
msgid "History"
msgstr "Geschiedenis"
-#: ../melon/home/history.py:39
+#: ../melon/home/history.py:35
msgid "These are the videos you opened in the past"
msgstr "Dit zijn video's die u in het verleden bekeken hebt"
-#: ../melon/home/history.py:83
+#: ../melon/home/history.py:79
msgid "Show more"
msgstr "Meer tonen"
-#: ../melon/home/history.py:84
+#: ../melon/home/history.py:80
msgid "Load older videos"
msgstr "Oudere video's laden"
-#: ../melon/home/new.py:30
+#: ../melon/home/new.py:25
msgid "Refresh"
msgstr "Herladen"
-#: ../melon/home/new.py:40
+#: ../melon/home/new.py:35
msgid "Subscribe to a channel first, to view new uploads"
msgstr "Abonneer op een kanaal om uploads te bekijken"
-#: ../melon/home/new.py:45
+#: ../melon/home/new.py:40
msgid "The channels you are subscribed to haven't uploaded anything yet"
msgstr "De kanalen waarop u geabonneerd bent hebben nog niks geüpload"
-#: ../melon/home/new.py:68
+#: ../melon/home/new.py:63
#, python-brace-format
msgid "(Last refresh: {last_refresh})"
msgstr "(Bijgewerkt op {last_refresh})"
-#: ../melon/home/new.py:72 ../melon/home/new.py:172
+#: ../melon/home/new.py:67 ../melon/home/new.py:167
msgid "What's new"
msgstr "Nieuw"
-#: ../melon/home/new.py:74
+#: ../melon/home/new.py:69
msgid "These are the latest videos of channels you follow"
msgstr "Dit zijn de nieuwste video's van de kanalen die u volgt"
-#: ../melon/home/new.py:162
+#: ../melon/home/new.py:157
msgid "Pick up where you left off"
msgstr "Hervatten vanaf pauzepunt"
-#: ../melon/home/new.py:163
+#: ../melon/home/new.py:158
msgid "Watch"
msgstr "Bekijken"
-#: ../melon/home/playlists.py:24
+#: ../melon/home/playlists.py:20
msgid "You don't have any playlists yet"
msgstr "Er zijn nog geen afspeellijsten"
-#: ../melon/home/playlists.py:26 ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:22 ../melon/home/playlists.py:35
msgid "Create a new playlist"
msgstr "Nieuwe afspeellijst"
-#: ../melon/home/playlists.py:36
+#: ../melon/home/playlists.py:32
msgid "Here are playlists you've bookmarked or created yourself"
msgstr "Hier vindt u de door u gemaakte en toegevoegde afspeellijsten"
-#: ../melon/home/playlists.py:39
+#: ../melon/home/playlists.py:35
msgid "New"
msgstr "Nieuw"
-#: ../melon/home/subs.py:23
+#: ../melon/home/subs.py:19
msgid "You aren't yet subscribed to channels"
msgstr "U bent nog niet geabonneerd op kanalen"
-#: ../melon/home/subs.py:33 ../melon/home/subs.py:68
+#: ../melon/home/subs.py:29 ../melon/home/subs.py:64
msgid "Subscriptions"
msgstr "Abonnementen"
-#: ../melon/home/subs.py:34
+#: ../melon/home/subs.py:30
msgid "You are subscribed to the following channels"
msgstr "U bent geabonneerd op de volgende kanalen"
-#: ../melon/import_providers/newpipe.py:42
+#: ../melon/import_providers/newpipe.py:40
msgid "Newpipe Database importer"
msgstr "NewPipe-databankimport"
-#: ../melon/import_providers/newpipe.py:44
+#: ../melon/import_providers/newpipe.py:42
msgid ""
"Import the .db file from inside the newpipe .zip export (as invidious "
"content)"
@@ 333,236 333,236 @@ msgstr ""
"Importeer het .db-bestand uit de .zip-export van NewPipe (als Invidious-"
"inhoud)"
-#: ../melon/import_providers/newpipe.py:46
+#: ../melon/import_providers/newpipe.py:44
msgid "Select .db file"
msgstr "Kies een .db-bestand"
-#: ../melon/import_providers/newpipe.py:60
+#: ../melon/import_providers/newpipe.py:58
msgid "Newpipe Database"
msgstr "NewPipe-databank"
-#: ../melon/importer.py:19 ../melon/importer.py:37
+#: ../melon/importer.py:15 ../melon/importer.py:33
msgid "Import"
msgstr "Importeren"
-#: ../melon/importer.py:38
+#: ../melon/importer.py:34
msgid "The following import methods have been found"
msgstr "De volgende importmogelijkheden zijn beschikbaar"
-#: ../melon/importer.py:64
+#: ../melon/importer.py:60
msgid "There are no available importer methods"
msgstr "Er zijn beschikbare importmogelijkheden"
-#: ../melon/player/__init__.py:41
+#: ../melon/player/__init__.py:32
msgid "Description"
msgstr "Beschrijving"
-#: ../melon/player/__init__.py:54
+#: ../melon/player/__init__.py:45
msgid "Add this video to a playlist"
msgstr "Video toevoegen aan afspeellijst"
-#: ../melon/player/__init__.py:114 ../melon/playlist/create.py:105
-#: ../melon/playlist/pick.py:122
+#: ../melon/player/__init__.py:105 ../melon/playlist/create.py:100
+#: ../melon/playlist/pick.py:116
msgid "Video could not be loaded"
msgstr "De video kan niet worden geladen"
-#: ../melon/player/__init__.py:152 ../melon/player/__init__.py:186
-#: ../melon/player/playlist.py:57
+#: ../melon/player/__init__.py:143 ../melon/player/__init__.py:177
+#: ../melon/player/playlist.py:43
msgid "Loading..."
msgstr "Bezig met laden…"
-#: ../melon/player/playlist.py:165
+#: ../melon/player/playlist.py:151
msgid "This playlist is empty"
msgstr "Deze afspeellijst is blanco"
-#: ../melon/player/playlist.py:172
+#: ../melon/player/playlist.py:158
msgid "There was an error loading the playlist"
msgstr "Er is een fout opgetreden tijdens het laden"
-#: ../melon/player/playlist.py:225
+#: ../melon/player/playlist.py:211
msgid "Previous"
msgstr "Vorige"
-#: ../melon/player/playlist.py:227
+#: ../melon/player/playlist.py:213
msgid "Play video that comes before this one in the playlist"
msgstr "Video hiervoor afspelen"
-#: ../melon/player/playlist.py:244
+#: ../melon/player/playlist.py:230
msgid "Next"
msgstr "Volgende"
-#: ../melon/player/playlist.py:246
+#: ../melon/player/playlist.py:232
msgid "Play video that comes after this one in the playlist"
msgstr "Video hierna afspelen"
-#: ../melon/player/playlist.py:258
+#: ../melon/player/playlist.py:244
msgid "Skip"
msgstr "Overslaan"
-#: ../melon/player/playlist.py:259
+#: ../melon/player/playlist.py:245
msgid "Skip this video and pick a new one at random"
msgstr "Sla deze video over en kies een willekeurige andere"
-#: ../melon/player/playlist.py:270
+#: ../melon/player/playlist.py:256
msgid "Shuffle"
msgstr "Willekeurig"
-#: ../melon/player/playlist.py:271
+#: ../melon/player/playlist.py:257
msgid "Chooses the next video at random"
msgstr "Kies een willekeurige video"
-#: ../melon/player/playlist.py:282
+#: ../melon/player/playlist.py:268
msgid "Repeat current video"
msgstr "Huidige video herhalen"
-#: ../melon/player/playlist.py:283
+#: ../melon/player/playlist.py:269
msgid "Puts this video on loop"
msgstr "Herhaalt de video"
-#: ../melon/player/playlist.py:298
+#: ../melon/player/playlist.py:284
msgid "Repeat playlist"
msgstr "Afspeellijst herhalen"
-#: ../melon/player/playlist.py:300
+#: ../melon/player/playlist.py:286
msgid "Start playling the playlist from the beginning after reaching the end"
msgstr "Starten met afspelen vanaf het begin na de laatste video"
-#: ../melon/player/playlist.py:312
+#: ../melon/player/playlist.py:298
msgid "Playlist Content"
msgstr "Afspeellijstinhoud"
-#: ../melon/player/playlist.py:314
+#: ../melon/player/playlist.py:300
msgid "Click on videos to continue playing the playlist from there"
msgstr "Klik op video's om het afspelen vanaf daar te hervatten"
-#: ../melon/playlist/__init__.py:70
+#: ../melon/playlist/__init__.py:57
msgid "Edit"
msgstr "Bewerken"
-#: ../melon/playlist/__init__.py:84
+#: ../melon/playlist/__init__.py:71
msgid "You haven't added any videos to this playlist yet"
msgstr "Deze afspeellijst bevat nog geen video's"
-#: ../melon/playlist/__init__.py:87
+#: ../melon/playlist/__init__.py:74
msgid "Start watching"
msgstr "Beginnen met kijken"
-#: ../melon/playlist/__init__.py:113
+#: ../melon/playlist/__init__.py:102
msgid "Set as playlist thumbnail"
msgstr "Instellen als afspeellijstminiatuur"
-#: ../melon/playlist/__init__.py:121
+#: ../melon/playlist/__init__.py:110
msgid "Remove from playlist"
msgstr "Verwijderen van afspeellijst"
-#: ../melon/playlist/__init__.py:214
+#: ../melon/playlist/__init__.py:203
msgid "Edit Playlist"
msgstr "Afspeellijst bewerken"
-#: ../melon/playlist/__init__.py:220
+#: ../melon/playlist/__init__.py:209
msgid "Playlist details"
msgstr "Afspeellijstinformatie"
-#: ../melon/playlist/__init__.py:221
+#: ../melon/playlist/__init__.py:210
msgid "Change playlist information"
msgstr "Afspeellijstinformatie wijzigen"
-#: ../melon/playlist/__init__.py:223 ../melon/playlist/create.py:43
+#: ../melon/playlist/__init__.py:212 ../melon/playlist/create.py:38
msgid "Playlist name"
msgstr "Afspeellijstnaam"
-#: ../melon/playlist/__init__.py:226 ../melon/playlist/create.py:46
+#: ../melon/playlist/__init__.py:215 ../melon/playlist/create.py:41
msgid "Playlist description"
msgstr "Afspeellijstbeschrijving"
-#: ../melon/playlist/__init__.py:231
+#: ../melon/playlist/__init__.py:220
msgid "Save details"
msgstr "Informatie opslaan"
-#: ../melon/playlist/__init__.py:233
+#: ../melon/playlist/__init__.py:222
msgid "Change playlist title and description. (Closes the dialog)"
msgstr ""
"Wijzig de afspeellijsttitel en -beschrijving (het venster wordt gesloten)"
-#: ../melon/playlist/__init__.py:244
+#: ../melon/playlist/__init__.py:233
msgid "Delete Playlist"
msgstr "Afspeellijst verwijderen"
-#: ../melon/playlist/__init__.py:246
+#: ../melon/playlist/__init__.py:235
msgid "Delete this playlist and it's content. This can NOT be undone."
msgstr ""
"Verwijder deze afspeellijst en alle bijbehorende inhoud. Let op: dit is "
"onomkeerbaar."
-#: ../melon/playlist/__init__.py:259
+#: ../melon/playlist/__init__.py:248
msgid "Close"
msgstr "Sluiten"
-#: ../melon/playlist/__init__.py:261
+#: ../melon/playlist/__init__.py:250
msgid "Close without changing anything"
msgstr "Sluiten zonder opslaan"
-#: ../melon/playlist/__init__.py:290
+#: ../melon/playlist/__init__.py:279
msgid "Delete Playlist?"
msgstr ""
-#: ../melon/playlist/__init__.py:291
+#: ../melon/playlist/__init__.py:280
msgid "Do you really want to delete this playlist? This can not be undone."
msgstr ""
-#: ../melon/playlist/__init__.py:293 ../melon/playlist/create.py:54
-#: ../melon/playlist/create.py:109 ../melon/playlist/pick.py:88
-#: ../melon/playlist/pick.py:126 ../melon/widgets/preferencerow.py:181
-#: ../melon/widgets/preferencerow.py:220
+#: ../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
msgid "Cancel"
msgstr "Annuleren"
-#: ../melon/playlist/__init__.py:295 ../melon/widgets/preferencerow.py:222
+#: ../melon/playlist/__init__.py:284 ../melon/widgets/preferencerow.py:216
msgid "Delete"
msgstr "Verwijderen"
-#: ../melon/playlist/create.py:25 ../melon/playlist/pick.py:35
+#: ../melon/playlist/create.py:20 ../melon/playlist/pick.py:28
msgid "Video"
msgstr "Video"
-#: ../melon/playlist/create.py:27
+#: ../melon/playlist/create.py:22
msgid "The following video will be added to the new playlist"
msgstr "De volgende video zal worden toegevoegd aan de nieuwe afspeellijst"
-#: ../melon/playlist/create.py:39 ../melon/playlist/create.py:125
+#: ../melon/playlist/create.py:34 ../melon/playlist/create.py:120
msgid "New Playlist"
msgstr "Nieuwe afspeellijst"
-#: ../melon/playlist/create.py:40
+#: ../melon/playlist/create.py:35
msgid "Enter more playlist information"
msgstr "Voer meer afspeellijstinformatie in"
-#: ../melon/playlist/create.py:44
+#: ../melon/playlist/create.py:39
msgid "Unnamed Playlist"
msgstr "Naamloze afspeellijst"
-#: ../melon/playlist/create.py:54 ../melon/playlist/create.py:109
-#: ../melon/playlist/pick.py:88 ../melon/playlist/pick.py:126
+#: ../melon/playlist/create.py:49 ../melon/playlist/create.py:104
+#: ../melon/playlist/pick.py:82 ../melon/playlist/pick.py:120
msgid "Do not create playlist"
msgstr "Geen afspeellijst maken"
-#: ../melon/playlist/create.py:57 ../melon/widgets/preferencerow.py:184
+#: ../melon/playlist/create.py:52 ../melon/widgets/preferencerow.py:178
msgid "Create"
msgstr "Maken"
-#: ../melon/playlist/create.py:57
+#: ../melon/playlist/create.py:52
msgid "Create playlist"
msgstr "Afspeellijst maken"
-#: ../melon/playlist/pick.py:37
+#: ../melon/playlist/pick.py:30
msgid "The following video will be added to the playlist"
msgstr "De volgende video zal worden toegevoegd aan de afspeellijst"
-#: ../melon/playlist/pick.py:50 ../melon/widgets/feeditem.py:154
+#: ../melon/playlist/pick.py:43 ../melon/widgets/feeditem.py:147
msgid "Add to playlist"
msgstr "Toevoegen aan afspeellijst"
-#: ../melon/playlist/pick.py:53
+#: ../melon/playlist/pick.py:46
msgid ""
"Choose a playlist to add the video to. Note that you can only add videos to "
"local playlists, not external bookmarked ones"
@@ 570,42 570,42 @@ msgstr ""
"Kies een afspeellijst om de video aan toe te voegen. Let op: u kunt alleen "
"video's toevoegen aan lokale afspeellijsten."
-#: ../melon/playlist/pick.py:57
+#: ../melon/playlist/pick.py:50
msgid "Create new playlist"
msgstr "Nieuwe afspeellijst maken"
-#: ../melon/playlist/pick.py:58
+#: ../melon/playlist/pick.py:51
msgid "Create a new playlist and add the video to it"
msgstr "Nieuwe afspeellijst aanmaken en video toevoegen"
-#: ../melon/playlist/pick.py:142
+#: ../melon/playlist/pick.py:136
msgid "Add to Playlist"
msgstr "Toevoegen aan afspeellijst"
-#: ../melon/servers/invidious/__init__.py:35
+#: ../melon/servers/invidious/__init__.py:29
msgid "Open source alternative front-end to YouTube"
msgstr "Een alternatieve, opensourceclient voor YouTube"
-#: ../melon/servers/invidious/__init__.py:40
+#: ../melon/servers/invidious/__init__.py:34
msgid "Instance"
msgstr "Instantie"
-#: ../melon/servers/invidious/__init__.py:42
+#: ../melon/servers/invidious/__init__.py:36
msgid ""
"See https://docs.invidious.io/instances/ for a list of available instances"
msgstr ""
"Zie https://docs.invidious.io/instances/ voor een lijst met beschikbare "
"instanties"
-#: ../melon/servers/invidious/__init__.py:55
+#: ../melon/servers/invidious/__init__.py:49
msgid "Trending"
msgstr "Trending"
-#: ../melon/servers/invidious/__init__.py:56
+#: ../melon/servers/invidious/__init__.py:50
msgid "Popular"
msgstr "Populair"
-#: ../melon/servers/nebula/__init__.py:21
+#: ../melon/servers/nebula/__init__.py:18
msgid ""
"Home of smart, thoughtful videos, podcasts, and classes from your favorite "
"creators"
@@ 613,65 613,65 @@ msgstr ""
"Een tijdlijn met slimme, doordachte video's, podcasts en cursussen van uw "
"favoriete makers"
-#: ../melon/servers/nebula/__init__.py:27
+#: ../melon/servers/nebula/__init__.py:24
msgid "Email Address"
msgstr "E-mailadres"
-#: ../melon/servers/nebula/__init__.py:28
+#: ../melon/servers/nebula/__init__.py:25
msgid "Email Address to login to your account"
msgstr "Het e-mailadres waarmee u inlogt op uw account"
-#: ../melon/servers/nebula/__init__.py:35
+#: ../melon/servers/nebula/__init__.py:32
msgid "Password"
msgstr "Wachtwoord"
-#: ../melon/servers/nebula/__init__.py:36
+#: ../melon/servers/nebula/__init__.py:33
msgid "Password associated with your account"
msgstr "Het wachtwoord van uw account"
-#: ../melon/servers/peertube/__init__.py:16
+#: ../melon/servers/peertube/__init__.py:12
msgid "Decentralized video hosting network, based on free/libre software"
msgstr ""
"Een gedecentraliseerd videonetwerk, gebaseerd op gratis, vrije software"
-#: ../melon/servers/peertube/__init__.py:21
+#: ../melon/servers/peertube/__init__.py:17
msgid "Instances"
msgstr "Instanties"
-#: ../melon/servers/peertube/__init__.py:23
+#: ../melon/servers/peertube/__init__.py:19
msgid ""
"List of peertube instances, from which to fetch content. See https://"
"joinpeertube.org/instances"
msgstr "Lijst met PeerTube-instanties om inhoud van op te halen. Zie"
-#: ../melon/servers/peertube/__init__.py:31
+#: ../melon/servers/peertube/__init__.py:27
msgid "Show NSFW content"
msgstr "18+-inhoud tonen"
-#: ../melon/servers/peertube/__init__.py:32
+#: ../melon/servers/peertube/__init__.py:28
msgid "Passes the nsfw filter to the peertube search API"
msgstr "Geeft het 18+-filter door aan de PeerTube-zoek-api"
-#: ../melon/servers/peertube/__init__.py:39
+#: ../melon/servers/peertube/__init__.py:35
msgid "Enable Federation"
msgstr "Federatie inschakelen"
-#: ../melon/servers/peertube/__init__.py:40
+#: ../melon/servers/peertube/__init__.py:36
msgid "Returns content from federated instances instead of only local content"
msgstr ""
"Haalt inhoud van gefedereerde instanties op in plaats van alleen lokale "
"inhoud"
-#: ../melon/servers/peertube/__init__.py:65
+#: ../melon/servers/peertube/__init__.py:61
msgid "Latest"
msgstr "Nieuwste"
-#: ../melon/settings/__init__.py:23
+#: ../melon/settings/__init__.py:18
msgid "Show Previews when browsing public feeds (incl. search)"
msgstr ""
"Voorvertoningen inschakelen op openbare tijdlijnen (inclusief zoekpagina)"
-#: ../melon/settings/__init__.py:25
+#: ../melon/settings/__init__.py:20
msgid ""
"Set to true to show previews when viewing channel contents, public feeds and "
"searching"
@@ 679,11 679,11 @@ msgstr ""
"Schakel in om voorvertoningen in te schakelen op kanaalinhoud, openbare "
"tijdlijnen en de zoekpagina"
-#: ../melon/settings/__init__.py:34
+#: ../melon/settings/__init__.py:29
msgid "Show Previews in local feeds"
msgstr "Voorvertoningen inschakelen op lokale tijdlijnen"
-#: ../melon/settings/__init__.py:36
+#: ../melon/settings/__init__.py:31
msgid ""
"Set to true to show previews in the new feed, for subscribed channels, and "
"saved playlists"
@@ 691,22 691,22 @@ msgstr ""
"Schakel in om voorvertoningen in te schakelen op de tijdlijn, geabonneerde "
"kanalen en opgeslagen afspeellijsten"
-#: ../melon/settings/__init__.py:44
+#: ../melon/settings/__init__.py:39
msgid "Show servers that may contain nsfw content"
msgstr "Servers tonen die 18+-inhoud kunnen bevatten"
-#: ../melon/settings/__init__.py:46
+#: ../melon/settings/__init__.py:41
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:54
+#: ../melon/settings/__init__.py:49
msgid "Show servers that only contain nsfw content"
msgstr "Servers tonen die alleen 18+-inhoud bevatten"
-#: ../melon/settings/__init__.py:56
+#: ../melon/settings/__init__.py:51
msgid ""
"Lists/Delists servers in the browse servers list, if they contain only/"
"mostly nsfw content"
@@ 714,138 714,138 @@ msgstr ""
"Toon/Verberg servers op de verkenlijst als ze alleen of veelal 18+-inhoud "
"bevatten"
-#: ../melon/settings/__init__.py:64
+#: ../melon/settings/__init__.py:59
msgid "Show servers that require login"
msgstr "Servers tonen die een account vereisen"
-#: ../melon/settings/__init__.py:66
+#: ../melon/settings/__init__.py:61
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:74
+#: ../melon/settings/__init__.py:69
msgid "Use GPU acceleration for video player if available"
msgstr "Hardwareversnelling gebruiken in videospeler (indien beschikbaar)"
-#: ../melon/settings/__init__.py:75
+#: ../melon/settings/__init__.py:70
msgid "Disable this if the video player doesn't work"
msgstr "Schakel dit uit als de videospeler niet werkt"
-#: ../melon/settings/__init__.py:86
+#: ../melon/settings/__init__.py:81
msgid "Settings"
msgstr "Voorkeuren"
-#: ../melon/settings/__init__.py:99
+#: ../melon/settings/__init__.py:94
msgid "General"
msgstr "Algemeen"
-#: ../melon/settings/__init__.py:100
+#: ../melon/settings/__init__.py:95
msgid "Global app settings"
msgstr "Algemene voorkeuren"
-#: ../melon/settings/__init__.py:124
+#: ../melon/settings/__init__.py:119
msgid "Enable Server"
msgstr "Server inschakelen"
-#: ../melon/settings/__init__.py:126
+#: ../melon/settings/__init__.py:121
msgid ""
"Disabled servers won't show up in the browser or on the local/home screen"
msgstr ""
"Uitgeschakelde servers worden niet getoond op het verken- en tijdlijnscherm"
-#: ../melon/widgets/feeditem.py:148
+#: ../melon/widgets/feeditem.py:141
msgid "Watch now"
msgstr "Nu bekijken"
-#: ../melon/widgets/feeditem.py:161
+#: ../melon/widgets/feeditem.py:154
msgid "Open in browser"
msgstr "Openen in webbrowser"
-#: ../melon/widgets/feeditem.py:165
+#: ../melon/widgets/feeditem.py:158
msgid "View channel"
msgstr "Kanaal bekijken"
-#: ../melon/widgets/player.py:136
+#: ../melon/widgets/player.py:125
msgid "No streams available"
msgstr "Er zijn geen streams beschikbaar"
-#: ../melon/widgets/player.py:198
+#: ../melon/widgets/player.py:187
msgid "Toggle floating window"
msgstr "Zwevend venster aan/uit"
-#: ../melon/widgets/player.py:204
+#: ../melon/widgets/player.py:193
msgid "Toggle fullscreen"
msgstr "Schermvullende weergave aan/uit"
-#: ../melon/widgets/player.py:226 ../melon/widgets/player.py:613
-#: ../melon/widgets/player.py:622
+#: ../melon/widgets/player.py:215 ../melon/widgets/player.py:602
+#: ../melon/widgets/player.py:611
msgid "Play"
msgstr "Afspelen"
-#: ../melon/widgets/player.py:253
+#: ../melon/widgets/player.py:242
msgid "Stream options"
msgstr "Streamopties"
-#: ../melon/widgets/player.py:483
+#: ../melon/widgets/player.py:472
msgid "Resolution"
msgstr "Resolutie"
-#: ../melon/widgets/player.py:604
+#: ../melon/widgets/player.py:593
msgid "Pause"
msgstr "Pauzeren"
-#: ../melon/widgets/player.py:642
+#: ../melon/widgets/player.py:631
msgid "The video is playing in separate window"
msgstr "De video wordt in een apart venster afgespeeld"
-#: ../melon/widgets/player.py:779
+#: ../melon/widgets/player.py:768
msgid "Player"
msgstr "Speler"
-#: ../melon/widgets/preferencerow.py:125
+#: ../melon/widgets/preferencerow.py:119
msgid "Add"
msgstr "Toevoegen"
-#: ../melon/widgets/preferencerow.py:139
+#: ../melon/widgets/preferencerow.py:133
msgid "Move up"
msgstr "Omhoog verplaatsen"
-#: ../melon/widgets/preferencerow.py:147
+#: ../melon/widgets/preferencerow.py:141
msgid "Move down"
msgstr "Omlaag verplaatsen"
-#: ../melon/widgets/preferencerow.py:153
+#: ../melon/widgets/preferencerow.py:147
msgid "Remove from list"
msgstr "Verwijderen van lijst"
-#: ../melon/widgets/preferencerow.py:168
+#: ../melon/widgets/preferencerow.py:162
msgid "Add Item"
msgstr "Item toevoegen"
-#: ../melon/widgets/preferencerow.py:171
+#: ../melon/widgets/preferencerow.py:165
msgid "Create a new list entry"
msgstr "Nieuw lijstitem"
-#: ../melon/widgets/preferencerow.py:172
+#: ../melon/widgets/preferencerow.py:166
msgid "Enter the new value here"
msgstr "Voer hier de nieuwe waarde in"
-#: ../melon/widgets/preferencerow.py:175
+#: ../melon/widgets/preferencerow.py:169
msgid "Value"
msgstr "Waarde"
-#: ../melon/widgets/preferencerow.py:215
+#: ../melon/widgets/preferencerow.py:209
msgid "Delete Item?"
msgstr ""
-#: ../melon/widgets/preferencerow.py:217
+#: ../melon/widgets/preferencerow.py:211
msgid ""
"Do you really want to delete this item? You won't be able to restore it "
"afterwards"
msgstr ""
-#: ../melon/window.py:93
+#: ../melon/window.py:86
msgid "Stream videos on the go"
msgstr "Video's onderweg streamen"