diff --git a/euroexange/euroexange.py b/euroexange/euroexange.py index 37a321a..5bfd422 100644 --- a/euroexange/euroexange.py +++ b/euroexange/euroexange.py @@ -26,6 +26,7 @@ import shlex import subprocess import email.utils import hashlib +import json import pywikibot @@ -46,6 +47,7 @@ class EuroExangeBotJob(): class EuroExangeBot( pywikibot.bot.BaseBot ): + base_dir = os.path.dirname(os.path.realpath(__file__)) + "/.." working_dir = os.path.dirname(os.path.realpath(__file__)) + "/../wdir" gnuplot_script_dir = os.path.dirname(os.path.realpath(__file__)) + \ "/../gnuplot_scripts" @@ -55,10 +57,6 @@ class EuroExangeBot( pywikibot.bot.BaseBot ): csv_file = "eurofxref-hist.csv" upload_comment = "Bot: ([[User:Jogobot/Euroexange|euroexange]]) update chart" - jobs = [ - EuroExangeBotJob( image="TEST_Euro_exchange_rate_to_TRY_-_Turkish_Currency_and_Debt_Crisis_2018.svg", script="Euro_exchange_rate_to_TRY_-_Turkish_Currency_and_Debt_Crisis_2018", freq=1 ) - ] - def __init__( self, genFactory, **kwargs ): # Init working directory @@ -71,10 +69,10 @@ class EuroExangeBot( pywikibot.bot.BaseBot ): # Make sure input data is uptodate self.update_data() - for job in type(self).jobs: + # Load and treat jobs + for job in self.load_jobs(): self.treat_job(job) - pass def init_wdir(self): """ @@ -199,6 +197,23 @@ class EuroExangeBot( pywikibot.bot.BaseBot ): os.path.join(self.wdir, type(self).csv_file)), path=self.wdir ) + def load_jobs( self ): + """ + Load jobs from json file + + @returns Generator of EuroExangeBotJob objects + @rtype generator + """ + + # Load json jobs file + with open( os.path.join(self.base_dir, "jobs.json"), "r") as fd: + jobs_js = json.load( fd ) + + # yield each job + for job_args in jobs_js: + yield EuroExangeBotJob( **job_args ) + + def treat_job( self, job ): """ Handles working on specific jobs