aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorpixelexplosion2019-12-28 17:20:11 +0100
committerpixelexplosion2019-12-28 17:20:11 +0100
commit9ab9b43476dee0e85c6fd277ca5acb49a4cea87f (patch)
tree9c0972a6b9b86d27316b888f1a63f0d5789e9282
parentf62a6417e1c8b791efa249b1984346726c0bacbd (diff)
parentbe7194cac8a87fc7ddb525db67c53dd8154d0717 (diff)
Merge remote-tracking branch 'origin/master'
# Conflicts: # app.py
-rw-r--r--.gitignore2
-rw-r--r--README.md2
-rw-r--r--app.py7
-rw-r--r--config.py3
-rw-r--r--parser/__init__.py0
-rw-r--r--parser/schedule.py51
6 files changed, 57 insertions, 8 deletions
diff --git a/.gitignore b/.gitignore
index 08a0108..36bc589 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@ venv/
.idea/
.vscode/
/**/__pycache__/
+debug.py
+testdata.json \ No newline at end of file
diff --git a/README.md b/README.md
index 86d4b32..9b374b9 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
# 36c3schedule parser
-URL: data.c3voc.de/36C3/everything.schedule.json
+URL: <https://data.c3voc.de/36C3/everything.schedule.json>
diff --git a/app.py b/app.py
index f923427..ef3b450 100644
--- a/app.py
+++ b/app.py
@@ -1,7 +1,2 @@
-import requests
import config
-
-r = requests.get(config.URL)
-
-days = r.json()[""]
-print(r.json()) \ No newline at end of file
+from parser.schedule import ScheduleParser
diff --git a/config.py b/config.py
index 236f849..35e292b 100644
--- a/config.py
+++ b/config.py
@@ -1 +1,2 @@
-URL = "http://data.c3voc.de/36C3/everything.schedule.json"
+SCHEDULE_URL = "http://data.c3voc.de/36C3/everything.schedule.json"
+KEYS = ['speaker', 'time', 'room', 'title'] \ No newline at end of file
diff --git a/parser/__init__.py b/parser/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/parser/__init__.py
diff --git a/parser/schedule.py b/parser/schedule.py
new file mode 100644
index 0000000..30bb74e
--- /dev/null
+++ b/parser/schedule.py
@@ -0,0 +1,51 @@
+import config
+import requests
+
+class ScheduleParser():
+ def parse(self, params: dict, do_req: bool = True, l: list = []) -> list:
+ if do_req:
+ l = self.__get_data()
+
+ param_name = list(params.keys())[0]
+ param_value = params[param_name]
+ del params[param_name]
+
+ confs = []
+
+ if param_name == 'speaker':
+ for conference in l:
+ for person in conference['persons']:
+ if param_value.lower() in person['public_name'].lower():
+ confs.append(conference)
+ break
+
+ elif param_name == 'room':
+ for conference in l:
+ if param_value.lower() in conference['room'].lower():
+ confs.append(conference)
+
+ elif param_name == 'time':
+ for conference in l:
+ if conference['start'].lower() == param_value.lower():
+ confs.append(conference)
+
+ elif param_name == 'title':
+ for conference in l:
+ if param_value.lower() in conference['abstract'].lower():
+ confs.append(conference)
+
+
+
+ if len(list(params.keys())) > 0:
+ return self.parse(params, False, confs)
+ return confs
+
+ def __get_data(self) -> list:
+ resp = requests.get(config.SCHEDULE_URL)
+ elements = []
+ for day in resp.json()['schedule']['conference']['days']:
+ for room in day['rooms']:
+ for conference in day['rooms'][room]:
+ elements.append(conference)
+ return elements
+