diff --git a/app/picons/__init__.py b/app/tools/__init__.py
similarity index 100%
rename from app/picons/__init__.py
rename to app/tools/__init__.py
diff --git a/app/picons/picons.py b/app/tools/picons.py
similarity index 100%
rename from app/picons/picons.py
rename to app/tools/picons.py
index 342a017f..3e37a7f7 100644
--- a/app/picons/picons.py
+++ b/app/tools/picons.py
@@ -1,11 +1,11 @@
import glob
import os
+import re
import shutil
+
from collections import namedtuple
from html.parser import HTMLParser
-import re
-
from app.commons import log, run_task
from app.properties import Profile
diff --git a/app/tools/satellites.py b/app/tools/satellites.py
new file mode 100644
index 00000000..687fd514
--- /dev/null
+++ b/app/tools/satellites.py
@@ -0,0 +1,75 @@
+""" Module for download satellites from internet ("flysat.com")
+ for replace or update current satellites.xml file.
+"""
+import requests
+
+from html.parser import HTMLParser
+
+
+class SatellitesParser(HTMLParser):
+ """ Parser for satellite html page. (https://www.lyngsat.com/*sat-name*.html) """
+
+ _HEADERS = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:45.0) Gecko/20100101 Firefox/59.02"}
+
+ def __init__(self, url, entities=False, separator=' '):
+
+ HTMLParser.__init__(self)
+
+ self._parse_html_entities = entities
+ self._separator = separator
+ self._is_td = False
+ self._is_th = False
+ self._is_provider = False
+ self._current_row = []
+ self._current_cell = []
+ self._rows = []
+ self._url = url
+
+ def handle_starttag(self, tag, attrs):
+ if tag == 'td':
+ self._is_td = True
+ if tag == 'tr':
+ self._is_th = True
+ if tag == "a":
+ self._current_row.append(attrs[0][1])
+
+ def handle_data(self, data):
+ """ Save content to a cell """
+ if self._is_td or self._is_th:
+ self._current_cell.append(data.strip())
+
+ def handle_endtag(self, tag):
+ if tag == 'td':
+ self._is_td = False
+ elif tag == 'tr':
+ self._is_th = False
+
+ if tag in ('td', 'th'):
+ final_cell = self._separator.join(self._current_cell).strip()
+ self._current_row.append(final_cell)
+ self._current_cell = []
+ elif tag == 'tr':
+ row = self._current_row
+ self._rows.append(row)
+ self._current_row = []
+
+ def error(self, message):
+ pass
+
+ def get_satellites(self):
+ self.reset()
+ request = requests.get(url=self._url, headers=self._HEADERS)
+ reason = request.reason
+ if reason == "OK":
+ print(reason)
+ self.feed(request.text)
+ if self._rows:
+ for num, sat in enumerate(filter(lambda x: all(x) and len(x) == 5, self._rows)):
+ print(num + 1, sat)
+ else:
+ print(reason)
+
+
+if __name__ == "__main__":
+ parser = SatellitesParser(url="https://www.flysat.com/satlist.php")
+ parser.get_satellites()
diff --git a/app/ui/dialogs.glade b/app/ui/dialogs.glade
index 839b60ad..080a8627 100644
--- a/app/ui/dialogs.glade
+++ b/app/ui/dialogs.glade
@@ -9,7 +9,7 @@
system-help
normal
DemonEditor
- 0.3.1 Pre-alpha
+ 0.3.2 Pre-alpha
2018 Dmitriy Yefremov
Enigma2 channel and satellites list editor for GNU/Linux
diff --git a/app/ui/lang/ru/LC_MESSAGES/demon-editor.mo b/app/ui/lang/ru/LC_MESSAGES/demon-editor.mo
index 5475f097..08157d3e 100644
Binary files a/app/ui/lang/ru/LC_MESSAGES/demon-editor.mo and b/app/ui/lang/ru/LC_MESSAGES/demon-editor.mo differ
diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py
index 4b26d809..9a764efa 100644
--- a/app/ui/main_app_window.py
+++ b/app/ui/main_app_window.py
@@ -19,7 +19,8 @@ from .download_dialog import show_download_dialog
from .main_helper import edit_marker, insert_marker, move_items, rename, ViewTarget, set_flags, locate_in_services, \
scroll_to, get_base_model, update_picons, copy_picon_reference, assign_picon, remove_picon, \
is_only_one_item_selected, gen_bouquets, BqGenType
-from .picons_dialog import PiconsDialog
+from .tools.picons_downloader import PiconsDialog
+from .tools.satellites_downloader import SatellitesDownloaderDialog
from .satellites_dialog import show_satellites_dialog
from .settings_dialog import show_settings_dialog
from .service_details_dialog import ServiceDetailsDialog, Action
@@ -104,6 +105,7 @@ class MainAppWindow:
"on_fav_popup": self.on_fav_popup,
"on_locate_in_services": self.on_locate_in_services,
"on_picons_loader_show": self.on_picons_loader_show,
+ "on_satellites_downloader_show": self.on_satellites_downloader_show,
"on_filter_changed": self.on_filter_changed,
"on_assign_picon": self.on_assign_picon,
"on_remove_picon": self.on_remove_picon,
@@ -929,6 +931,10 @@ class MainAppWindow:
dialog.show()
self.update_picons()
+ @run_idle
+ def on_satellites_downloader_show(self, item):
+ SatellitesDownloaderDialog(self._main_window, self._options).show()
+
@run_idle
def on_filter_toggled(self, toggle_button: Gtk.ToggleToolButton):
self._filter_info_bar.set_visible(toggle_button.get_active())
diff --git a/app/ui/main_window.glade b/app/ui/main_window.glade
index 3a945e62..62b43a7c 100644
--- a/app/ui/main_window.glade
+++ b/app/ui/main_window.glade
@@ -122,6 +122,11 @@
False
gtk-save-as
+
-
+
+
+
+
+
-
+
+
+
diff --git a/app/ui/tools/__init__.py b/app/ui/tools/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/app/ui/picons_dialog.py b/app/ui/tools/picons_downloader.py
similarity index 97%
rename from app/ui/picons_dialog.py
rename to app/ui/tools/picons_downloader.py
index eb57185b..45b5440e 100644
--- a/app/ui/picons_dialog.py
+++ b/app/ui/tools/picons_downloader.py
@@ -7,11 +7,11 @@ from gi.repository import GLib, GdkPixbuf
from app.commons import run_idle, run_task
from app.ftp import upload_data, DownloadDataType
-from app.picons.picons import PiconsParser, parse_providers, Provider, convert_to
+from app.tools.picons import PiconsParser, parse_providers, Provider, convert_to
from app.properties import Profile
-from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN
-from .dialogs import show_dialog, DialogType, get_message
-from .main_helper import update_entry_data
+from app.ui.uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN
+from app.ui.dialogs import show_dialog, DialogType, get_message
+from app.ui.main_helper import update_entry_data
class PiconsDialog:
@@ -38,7 +38,7 @@ class PiconsDialog:
builder = Gtk.Builder()
builder.set_translation_domain(TEXT_DOMAIN)
- builder.add_objects_from_file(UI_RESOURCES_PATH + "picons_dialog.glade",
+ builder.add_objects_from_file(UI_RESOURCES_PATH + "tools.glade",
("picons_dialog", "receive_image", "providers_list_store"))
builder.connect_signals(handlers)
self._dialog = builder.get_object("picons_dialog")
diff --git a/app/ui/tools/satellites_downloader.py b/app/ui/tools/satellites_downloader.py
new file mode 100644
index 00000000..17f3d503
--- /dev/null
+++ b/app/ui/tools/satellites_downloader.py
@@ -0,0 +1,24 @@
+from app.ui.uicommons import Gtk, UI_RESOURCES_PATH, TEXT_DOMAIN
+
+
+class SatellitesDownloaderDialog:
+ def __init__(self, transient, options):
+
+ handlers = {}
+
+ builder = Gtk.Builder()
+ builder.set_translation_domain(TEXT_DOMAIN)
+ builder.add_objects_from_file(UI_RESOURCES_PATH + "tools.glade",
+ ("satellites_dialog", "source_urls_list_store", "satellites_list_store"))
+ builder.connect_signals(handlers)
+ self._dialog = builder.get_object("satellites_dialog")
+ self._dialog.set_transient_for(transient)
+ self._satellites_tree_view = builder.get_object("satellites_tree_view")
+
+ def show(self):
+ self._dialog.run()
+ self._dialog.destroy()
+
+
+if __name__ == "__main__":
+ pass
diff --git a/build-deb.sh b/build-deb.sh
index d0d7a67d..5f6bb155 100755
--- a/build-deb.sh
+++ b/build-deb.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-VER="0.3.1_Pre-alpha"
+VER="0.3.2_Pre-alpha"
B_PATH="dist/DemonEditor"
DEB_PATH="$B_PATH/usr/share/demoneditor"
diff --git a/deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo b/deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo
index 5475f097..08157d3e 100644
Binary files a/deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo and b/deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo differ
diff --git a/po/ru/demon-editor.mo b/po/ru/demon-editor.mo
index 5475f097..08157d3e 100644
Binary files a/po/ru/demon-editor.mo and b/po/ru/demon-editor.mo differ
diff --git a/po/ru/demon-editor.po b/po/ru/demon-editor.po
index 4995e18a..a72f043d 100644
--- a/po/ru/demon-editor.po
+++ b/po/ru/demon-editor.po
@@ -142,9 +142,12 @@ msgstr "Родительский замок Вкл/Выкл Ctrl + L"
msgid "Picons"
msgstr "Пиконы"
-msgid "Picons loader"
+msgid "Picons downloader"
msgstr "Загрузчик пиконов"
+msgid "Satellites downloader"
+msgstr "Загрузчик спутников"
+
msgid "Preferences"
msgstr "Настройки"