enabled recording and playback for the current IPTV service

This commit is contained in:
DYefremov
2024-02-07 12:52:56 +03:00
parent 583927f1b1
commit 6a8426e6ef
2 changed files with 14 additions and 5 deletions

View File

@@ -4578,6 +4578,7 @@ Author: Dmitriy Yefremov
<child>
<object class="GtkButton" id="record_button">
<property name="name">status-bar-button</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Record</property>
@@ -4588,7 +4589,7 @@ Author: Dmitriy Yefremov
<object class="GtkImage" id="record_button_image">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="stock">gtk-media-record</property>
<property name="icon-name">media-record</property>
</object>
</child>
</object>
@@ -4601,6 +4602,7 @@ Author: Dmitriy Yefremov
<child>
<object class="GtkButton" id="play_current_service_button">
<property name="name">status-bar-button</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
@@ -4614,7 +4616,7 @@ Author: Dmitriy Yefremov
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="stock">gtk-media-play</property>
<property name="icon-name">media-playback-start</property>
</object>
</child>
</object>

View File

@@ -92,6 +92,8 @@ class Application(Gtk.Application):
BG_TASK_LIMIT = 5
_URL_PATTERN = re.compile(r"((https?)+.*?(?=https?|$))")
# Dynamically active elements depending on the selected view
_SERVICE_ELEMENTS = ("services_to_fav_end_move_popup_item", "services_to_fav_move_popup_item",
"services_create_bouquet_popup_item", "services_copy_popup_item", "services_edit_popup_item",
@@ -399,8 +401,6 @@ class Application(Gtk.Application):
self._iptv_services_load_spinner = builder.get_object("iptv_services_load_spinner")
self._save_tool_button = builder.get_object("save_tool_button")
self.bind_property("is-data-save-enabled", self._save_tool_button, "visible")
self._signal_level_bar.bind_property("visible", builder.get_object("play_current_service_button"), "visible")
self._signal_level_bar.bind_property("visible", builder.get_object("record_button"), "visible")
self._receiver_info_box.bind_property("visible", self._http_status_image, "visible", 4)
self._receiver_info_box.bind_property("visible", self._signal_box, "visible")
self._task_box = builder.get_object("task_box")
@@ -3564,7 +3564,14 @@ class Application(Gtk.Application):
m3u = data.get("m3u", None)
if m3u:
return [s for s in m3u.split("\n") if not s.startswith("#")][0]
urls = re.findall(self._URL_PATTERN, m3u)
if urls:
if len(urls) > 1:
# Retrieving direct link for IPTV service.
url, sep, name = urls[1][0].partition(":")
return unquote(url)
else:
return urls[0][0]
def save_stream_to_m3u(self, url):
if self._page not in self._fav_pages: