Skip to content

Commit 21dee3a

Browse files
committed
Merge branch 'dev'
2 parents b30b90e + 0bddf9f commit 21dee3a

File tree

8 files changed

+68
-5
lines changed

8 files changed

+68
-5
lines changed

src/core/QtExtensions.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,11 @@ def save_content(self):
283283

284284
with open(self.toml_file, "w") as tf:
285285
tf.write(content)
286-
SimpleMessageBox("File Saved", "Successfully saved configuration.").exec()
286+
SimpleMessageBox("File Saved",
287+
"Successfully saved configuration. "
288+
"Some changes only apply after restarting OpenWebScraper.").exec()
289+
290+
self.close()
287291
except toml.TomlDecodeError as exc:
288292
core.MASTER_LOGGER.exception(f"{type(exc).__name__}: {exc}")
289293
SimpleErrorInfo("Error", "Content not in correct toml formal.", details=str(exc)).exec()

src/modules/crawler/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@
3131

3232
MOD_PATH = os.path.join(APP_SETTINGS["modloader"]["mod_dir"], "crawler")
3333

34-
SETTINGS = toml.load(os.path.join(MOD_PATH, "settings.toml"))
34+
35+
def load_settings():
36+
return toml.load(os.path.join(MOD_PATH, "settings.toml"))
37+
38+
39+
SETTINGS = load_settings()
3540

3641

3742
def init(main_window):

src/modules/crawler/controller.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@ def setup_behaviour(self):
161161
self._view.parser_select)
162162
)
163163

164+
self._view.initializer_select.currentIndexChanged.connect(
165+
lambda: self.set_initializer_info("")
166+
)
164167
self._view.initializer_select.currentIndexChanged.connect(
165168
lambda: self.switch_sub_view(SETTINGS["ui"]["initializer"]["widgets"],
166169
self._view.initializer_container.layout(),
@@ -228,6 +231,10 @@ def register_parser_view(self, parser_view_path):
228231

229232
self.update_view()
230233

234+
def set_initializer_info(self, text, color="black"):
235+
self._view.initializer_info.setText(text)
236+
self._view.initializer_info.setStyleSheet('QLabel { color: %s }' % color)
237+
231238
def switch_initializer_view(self):
232239
key = self._view.initializer_select.currentText()
233240
self.register_initializer_view(SETTINGS["ui"]["initializer"]["widgets"][key])

src/modules/crawler/settings.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[general]
22
title = "Crawler"
33
main_widget = "modules.crawler.view.CrawlerWidget"
4-
version = "0.6.0 <beta>"
4+
version = "0.6.1 <beta>"
55
copyright = "2019 Maximilian Pensel"
6-
scrapy_wrapper_exec = '/mnt/Data/Projects/Crawler/OWS-scrapy-wrapper/venv-ubuntu/bin/python /mnt/Data/Projects/Crawler/OWS-scrapy-wrapper/src/scrapy_wrapper.py'
6+
scrapy_wrapper_exec = 'SPECIFY EXECUTION COMMAND FOR OWS-SCRAPY-WRAPPER'
77

88
[ui]
99

src/modules/crawler/ui/initializers/local.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
You should have received a copy of the GNU General Public License
2121
along with OpenWebScraper. If not, see <https://www.gnu.org/licenses/>.
2222
"""
23+
import json
2324
import os
2425
import subprocess
2526
import sys
27+
import threading
2628

2729
from PyQt5.QtWidgets import QComboBox, QPushButton, QVBoxLayout, QGroupBox, QLineEdit, QHBoxLayout, QMessageBox
2830

@@ -114,6 +116,14 @@ def setup_behaviour(self):
114116
else:
115117
self._view.crawl_name_input.textChanged.connect(self.update_model)
116118

119+
# test connection to scrapy wrapper and produce feedback
120+
def set_info(info):
121+
if "version" in info:
122+
self.master_cnt.set_initializer_info(f"Connected to OWS-scrapy-wrapper version {info['version']}")
123+
else:
124+
self.master_cnt.set_initializer_info(info['message'], color="red")
125+
thread = threading.Thread(target=check_scrapy_connection, args=[set_info])
126+
thread.start()
117127

118128
def update_model(self):
119129
if self.master_cnt:
@@ -269,3 +279,21 @@ def start_scrapy(settings_path):
269279
close_fds=True)
270280
except Exception as exc:
271281
LOG.exception("{0}: {1}".format(type(exc).__name__, exc))
282+
283+
284+
def check_scrapy_connection(callback):
285+
scrapy_script = SETTINGS["general"]["scrapy_wrapper_exec"]
286+
command = scrapy_script + " INFO"
287+
LOG.info("Running {0}".format(command))
288+
try:
289+
proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=None, shell=False)
290+
291+
info_json, _ = proc.communicate()
292+
293+
info = json.loads(info_json.splitlines()[-1])
294+
LOG.info("Connected to OWS-scrapy-wrapper version {0}".format(info["version"]))
295+
except Exception as exc:
296+
LOG.exception("{0}: {1}".format(type(exc).__name__, exc))
297+
info = dict(message="Could not connect to OWS-scrapy-wrapper. Check your config.")
298+
299+
callback(info)

src/modules/crawler/view.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,14 @@ def __init__(self):
6767
self.initializer_select = QComboBox()
6868
self.initializer_select.setSizeAdjustPolicy(QComboBox.AdjustToContents)
6969

70+
self.initializer_info = QLabel()
71+
7072
initializer_select_layout = QHBoxLayout()
7173
initializer_select_layout.addWidget(initializer_label)
7274
initializer_select_layout.addWidget(self.initializer_select)
7375
initializer_select_layout.addSpacerItem(QSpacerItem(100, 1, QSizePolicy.Expanding, QSizePolicy.Fixed))
76+
initializer_select_layout.addWidget(self.initializer_info)
77+
initializer_select_layout.addSpacerItem(QSpacerItem(100, 1, QSizePolicy.Expanding, QSizePolicy.Fixed))
7478

7579
self.initializer_container = VerticalContainer()
7680
self.initializer_container.addLayout(initializer_select_layout)

src/settings.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[general]
22
modules = ["crawler", "template"]
3-
version = "0.6.0 <beta>"
3+
version = "0.6.1 <beta>"
44
copyright = "2019 Maximilian Pensel"
55
master_log = "master.log"
66

test.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"blacklist": [],
3+
"finalizers": {},
4+
"logs": "/mnt/Data/Projects/Crawler/SpiderGUI/src/default_workspace/logs/",
5+
"name": "test",
6+
"output": "/mnt/Data/Projects/Crawler/SpiderGUI/src/default_workspace/data/raw",
7+
"parser": "parsers.RawParser",
8+
"parser_data": {
9+
"allowed_content_type": [
10+
"text/html"
11+
]
12+
},
13+
"pipelines": {},
14+
"urls": []
15+
}

0 commit comments

Comments
 (0)