Jelajahi Sumber

Move jobs to json file

JoostSijm 5 tahun lalu
induk
melakukan
e52158c772
7 mengubah file dengan 58 tambahan dan 19 penghapusan
  1. 1 0
      .gitignore
  2. 16 0
      app/__init__.py
  3. 11 8
      app/__main__.py
  4. 2 10
      app/api.py
  5. 1 1
      app/app.py
  6. 18 0
      app/job_storage.py
  7. 9 0
      example.jobs.json

+ 1 - 0
.gitignore

@@ -4,3 +4,4 @@ __pycache__
 *.html
 *.log
 *.png
+jobs.json

+ 16 - 0
app/__init__.py

@@ -58,3 +58,19 @@ BASE_URL = os.environ["API_URL"]
 HEADERS = {
     'Authorization': os.environ["AUTHORIZATION"]
 }
+
+RESOURCE_IDS = {
+    0: 'gold',
+    2: 'oil',
+    4: 'ore',
+    11: 'uranium',
+    15: 'diamond',
+}
+
+RESOURCE_NAMES = {
+    'gold': 0,
+    'oil': 2,
+    'ore': 4,
+    'uranium': 11,
+    'diamond': 15,
+}

+ 11 - 8
app/__main__.py

@@ -3,11 +3,12 @@
 import time
 import sys
 
-from app import SCHEDULER, LOGGER, jobs
+from app import SCHEDULER, LOGGER, RESOURCE_NAMES, job_storage, jobs
 
 
 def add_check_resources(state_id, capital_id, resource_id, do_refill, minute):
     """Add check resources job"""
+    LOGGER.info('Add check for "%s", resource "%s" at "%s"', state_id, resource_id, minute)
     SCHEDULER.add_job(
         jobs.check_resources,
         'cron',
@@ -24,13 +25,15 @@ if __name__ == '__main__':
     # graph()
     # get_resources(4001, datetime.now(), 0)
 
-    # VN
-    add_check_resources(2788, 4008, 0, True, '0,15,30,45')
-    add_check_resources(2788, 4008, 11, True, '0')
-    # Zeelandiae
-    add_check_resources(2620, 0, 0, False, '50')
-    # Belgium
-    add_check_resources(2604, 0, 0, False, '40')
+    JOBS = job_storage.get_jobs()
+    for job in JOBS:
+        add_check_resources(
+            job['state_id'],
+            job['capital_id'],
+            RESOURCE_NAMES[job['resource_type']],
+            job['refill'],
+            job['minutes']
+        )
 
     SCHEDULER.add_job(
         jobs.send_telegram_update,

+ 2 - 10
app/api.py

@@ -5,17 +5,9 @@ import re
 import requests
 from bs4 import BeautifulSoup
 
-from app import BASE_URL, HEADERS, LOGGER
+from app import BASE_URL, HEADERS, LOGGER, RESOURCE_IDS
 
 
-RESOURCES = {
-    0: 'gold',
-    2: 'oil',
-    4: 'ore',
-    11: 'uranium',
-    15: 'diamond',
-}
-
 def download_resources(state_id, resource_id):
     """Download the resource list"""
     # return read_resources()
@@ -82,7 +74,7 @@ def refill(state_id, capital_id, resource_id):
     )
     soup = BeautifulSoup(response.text, 'html.parser')
     active_laws = soup.find('div', {'id': 'parliament_active_laws'})
-    resource_name = RESOURCES[resource_id]
+    resource_name = RESOURCE_IDS[resource_id]
     exploration_laws = active_laws.findAll(
         text='Resources exploration: state, {} resources'.format(resource_name)
     )

+ 1 - 1
app/app.py

@@ -13,8 +13,8 @@ from telegram import ParseMode
 
 from app import LOGGER, SCHEDULER, TELEGRAM_BOT, jobs, api, database
 
-register_matplotlib_converters()
 
+register_matplotlib_converters()
 
 def check_resources(state_id, capital_id, resource_id, do_refill):
     """Check resources and refill if necessary"""

+ 18 - 0
app/job_storage.py

@@ -0,0 +1,18 @@
+"""store and read jobs"""
+
+import json
+
+from app import LOGGER
+
+
+def get_jobs():
+    """Read jobs"""
+    LOGGER.info('Read stored jobs')
+    try:
+        with open('jobs.json', 'r') as jobs_file:
+            jobs = json.load(jobs_file)
+            LOGGER.info('found "%s" job(s) in job storage', len(jobs))
+            return jobs
+    except FileNotFoundError:
+        LOGGER.error('job storage file "jobs.json" not found')
+    return []

+ 9 - 0
example.jobs.json

@@ -0,0 +1,9 @@
+[
+    {
+        "state_id": 2788, 
+        "capital_id": 4008,
+        "resource_type": "gold",
+        "refill": true,
+        "minutes": "0,15,30,45"
+    }
+]