url prefix elems for yt dialog

This commit is contained in:
DYefremov
2023-03-30 00:13:25 +03:00
parent 640b995ab8
commit 4d472609b4
2 changed files with 116 additions and 18 deletions

View File

@@ -1130,7 +1130,7 @@ Author: Dmitriy Yefremov
<object class="GtkLabel" id="iptv_url_prefix_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Use URL prefix:</property>
<property name="label" translatable="yes">URL prefix:</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1491,7 +1491,7 @@ Author: Dmitriy Yefremov
<property name="image">yt_receive_image</property>
<property name="always-show-image">True</property>
<signal name="clicked" handler="on_receive" swapped="no"/>
<accelerator key="d" signal="clicked"/>
<accelerator key="d" signal="clicked" modifiers="Primary"/>
</object>
<packing>
<property name="expand">False</property>
@@ -1508,12 +1508,13 @@ Author: Dmitriy Yefremov
<object class="GtkButton" id="yt_import_button">
<property name="label" translatable="yes">Import</property>
<property name="can-focus">False</property>
<property name="sensitive" bind-source="yt_receive_button" bind-property="sensitive">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Import</property>
<property name="image">yt_import_image</property>
<property name="always-show-image">True</property>
<signal name="clicked" handler="on_import" swapped="no"/>
<accelerator key="i" signal="clicked"/>
<accelerator key="i" signal="clicked" modifiers="Primary"/>
</object>
<packing>
<property name="expand">True</property>
@@ -1523,6 +1524,8 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkComboBox" id="yt_quality_combobox">
<property name="visible" bind-source="yt_import_button" bind-property="visible">False</property>
<property name="sensitive" bind-source="yt_import_button" bind-property="sensitive">True</property>
<property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">Desired video quality</property>
<property name="model">yt_quality_liststore</property>
@@ -1567,17 +1570,108 @@ Author: Dmitriy Yefremov
</packing>
</child>
<child>
<object class="GtkEntry" id="yt_url_entry">
<object class="GtkBox" id="yt_url_box">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="primary-icon-name">document-edit-symbolic</property>
<property name="secondary-icon-tooltip-text" translatable="yes">Link to YouTube resource.</property>
<property name="placeholder-text" translatable="yes">YouTube playlist URL:</property>
<signal name="changed" handler="on_yt_url_entry_changed" swapped="no"/>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkEntry" id="yt_url_entry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="primary-icon-name">document-edit-symbolic</property>
<property name="secondary-icon-tooltip-text" translatable="yes">Link to YouTube resource.</property>
<property name="placeholder-text" translatable="yes">YouTube playlist URL:</property>
<signal name="changed" handler="on_yt_url_entry_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="yt_extract_links_box">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="yt_extract_links_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Extract direct links</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="yt_extract_links_switch">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="active">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="yt_url_prefix_box">
<property name="visible">True</property>
<property name="sensitive" bind-source="yt_extract_links_switch" bind-property="active" bind-flags="invert-boolean">False</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="yt_url_prefix_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">URL prefix:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="yt_url_prefix_combobox">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@@ -1620,6 +1714,7 @@ Author: Dmitriy Yefremov
<child>
<object class="GtkCellRendererText" id="yt_title_renderer">
<property name="xpad">5</property>
<property name="ellipsize">end</property>
</object>
<attributes>
<attribute name="text">0</attribute>

View File

@@ -51,6 +51,7 @@ _DIGIT_ENTRY_NAME = "digit-entry"
_ENIGMA2_REFERENCE = "{}:{}:{:X}:{:X}:{:X}:{:X}:{:X}:0:0:0"
_PATTERN = re.compile("(?:^[\\s]*$|\\D)")
_UI_PATH = UI_RESOURCES_PATH + "iptv.glade"
_URL_PREFIXES = {"YT-DLP": "YT-DLP://", "YT-DL": "YT-DL://", "STREAMLINK": "STREAMLINK://"}
def is_data_correct(elems):
@@ -76,9 +77,6 @@ def get_stream_type(box):
class IptvDialog:
_URL_PREFIXES = {"YT-DLP": "YT-DLP://",
"YT-DL": "YT-DL://",
"STREAMLINK": "STREAMLINK://"}
def __init__(self, app, view, bouquet=None, service=None, action=Action.ADD):
handlers = {"on_response": self.on_response,
@@ -141,7 +139,7 @@ class IptvDialog:
else:
self._description_entry.set_visible(False)
builder.get_object("iptv_description_label").set_visible(False)
[self._url_prefix_combobox.append(v, k) for k, v in self._URL_PREFIXES.items()]
[self._url_prefix_combobox.append(v, k) for k, v in _URL_PREFIXES.items()]
self._url_prefix_combobox.set_active(0)
if self._action is Action.ADD:
@@ -214,8 +212,8 @@ class IptvDialog:
# URL.
url = unquote(data[10].strip())
sch = urlparse(url).scheme.upper()
if sch in self._URL_PREFIXES:
active_prefix = self._URL_PREFIXES.get(sch)
if sch in _URL_PREFIXES:
active_prefix = _URL_PREFIXES.get(sch)
url = url.lstrip(active_prefix)
self._url_prefix_combobox.set_active_id(active_prefix)
self._url_entry.set_text(url)
@@ -919,9 +917,10 @@ class YtListImportDialog:
self._import_button = builder.get_object("yt_import_button")
self._quality_box = builder.get_object("yt_quality_combobox")
self._quality_model = builder.get_object("yt_quality_liststore")
self._import_button.bind_property("visible", self._quality_box, "visible")
self._import_button.bind_property("sensitive", self._quality_box, "sensitive")
self._receive_button.bind_property("sensitive", self._import_button, "sensitive")
self._extract_switch = builder.get_object("yt_extract_links_switch")
self._url_prefix_combobox = builder.get_object("yt_url_prefix_combobox")
[self._url_prefix_combobox.append(v, k) for k, v in _URL_PREFIXES.items()]
self._url_prefix_combobox.set_active(0)
if self._settings.use_header_bar:
header_bar = HeaderBar(title="YouTube", subtitle=get_message("Playlist import"))
@@ -948,6 +947,10 @@ class YtListImportDialog:
@run_task
def on_import(self, item):
if not self._extract_switch.get_active():
self.show_info_message(f"[URL prefix] {get_message('Not implemented yet!')}", Gtk.MessageType.ERROR)
return
self.on_info_bar_close()
self.update_active_elements(False)
self._download_task = True