5 Commits
Author SHA1 Message Date
golderweb 3cd639eef9 Move configuration vars to jogobot config 2018-10-05 20:24:00 +02:00
golderweb c35c296e92 Do not track gnuplotscripts in this repo
Since they are more config, we will use separate repo
2018-10-05 16:14:48 +02:00
golderweb b3a0857ddd Fix typo in Euroexchange 2018-10-05 16:11:35 +02:00
golderweb 0477940fdf Define requirements
Installable via pip install -r requirements.txt
2018-10-05 14:46:50 +02:00
golderweb f9a39a6f49 Make it possible to run Bot with -always
To be able to run script unattended
2018-10-05 14:43:43 +02:00
5 changed files with 28 additions and 108 deletions
+3 -4
View File
@@ -1,4 +1,4 @@
# wiki-jogobot-euroexange
# wiki-jogobot-euroexchange
This is a [Pywikibot](https://www.mediawiki.org/wiki/Manual:Pywikibot) based [Wikipedia Bot](https://de.wikipedia.org/wiki/Wikipedia:Bots)
of [User:JogoBot](https://de.wikipedia.org/wiki/Benutzer:JogoBot) on the
[German Wikipedia](https://de.wikipedia.org/wiki/Wikipedia:Hauptseite).
@@ -12,14 +12,13 @@ of [User:JogoBot](https://de.wikipedia.org/wiki/Benutzer:JogoBot) on the
## Usage
```
python euroexange.py
```
python euroexchange.py
## Versions
*
## Bugs
[jogobot-euroexange Issues](https://git.golderweb.de/wiki/jogobot-euroexange/issues)
[jogobot-euroexchange Issues](https://git.golderweb.de/wiki/jogobot-euroexchange/issues)
## License
GPLv3+
@@ -34,9 +34,9 @@ import pywikibot.specialbots
import jogobot
class EuroExangeBotJob():
class EuroExchangeBotJob():
"""
Used for EuroExangeBot job queue
Used for EuroExchangeBot job queue
"""
def __init__( self, **kwargs ):
@@ -51,24 +51,23 @@ class EuroExangeBotJob():
self.image = "TEST_{}".format(self.image)
class EuroExangeBot( pywikibot.bot.BaseBot ):
class EuroExchangeBot( 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"
gnuplot = "/usr/bin/gnuplot"
data_source = "http://www.ecb.int/stats/eurofxref/eurofxref-hist.zip"
zip_file = "eurofxref-hist.zip"
csv_file = "eurofxref-hist.csv"
upload_comment = "Bot: ([[User:JogoBot/Euroexange|euroexange]]) update chart"
base_dir = os.path.expanduser(jogobot.config["euroexchange"]["base_dir"])
working_dir = os.path.join( base_dir, "working_dir" )
gnuplot_script_dir = os.path.join(base_dir, "gnuplot_scripts")
gnuplot = jogobot.config["euroexchange"]["gnuplot_bin"]
data_source = jogobot.config["euroexchange"]["data_source"]
zip_file = jogobot.config["euroexchange"]["data_zip_filename"]
csv_file = jogobot.config["euroexchange"]["data_csv_filename"]
upload_comment = jogobot.config["euroexchange"]["upload_comment"]
def __init__( self, genFactory, **kwargs ):
# Init working directory
self.init_wdir()
super().__init__(*kwargs)
super().__init__(**kwargs)
def run(self):
@@ -207,7 +206,7 @@ class EuroExangeBot( pywikibot.bot.BaseBot ):
"""
Load jobs from json file
@returns Generator of EuroExangeBotJob objects
@returns Generator of EuroExchangeBotJob objects
@rtype generator
"""
@@ -217,7 +216,7 @@ class EuroExangeBot( pywikibot.bot.BaseBot ):
# yield each job
for job_args in jobs_js:
yield EuroExangeBotJob( **job_args )
yield EuroExchangeBotJob( **job_args )
def treat_job( self, job ):
@@ -225,7 +224,7 @@ class EuroExangeBot( pywikibot.bot.BaseBot ):
Handles working on specific jobs
@param job: Job to work on
@type job: EuroExangeBotJob
@type job: EuroExchangeBotJob
"""
# Store reference to current job in Bot obj
@@ -289,7 +288,7 @@ class EuroExangeBot( pywikibot.bot.BaseBot ):
"""
@param job: Job to work on
@type job: EuroExangeBotJob
@type job: EuroExchangeBotJob
"""
cmd = shlex.split ( type(self).gnuplot + " " + os.path.realpath(
@@ -326,7 +325,7 @@ class EuroExangeBot( pywikibot.bot.BaseBot ):
"""
@param job: Job to work on
@type job: EuroExangeBotJob
@type job: EuroExchangeBotJob
"""
comment = type(self).upload_comment
@@ -337,6 +336,8 @@ class EuroExangeBot( pywikibot.bot.BaseBot ):
verifyDescription = True #set to False to skip double-checking/editing description => change to bot-mode
ignoreWarning = [ "exists", "duplicate", ] #set to True to skip warnings, Upload even if another file would be overwritten or another mistake would be risked
targetSite = pywikibot.Site()
always = self.getOption("always")
aborts = True if self.getOption("always") else list()
bot = pywikibot.specialbots.UploadRobot(
filepath,
@@ -345,7 +346,9 @@ class EuroExangeBot( pywikibot.bot.BaseBot ):
keepFilename=keepFilename,
verifyDescription=verifyDescription,
ignoreWarning=ignoreWarning,
targetSite = targetSite
targetSite = targetSite,
always=always,
aborts=aborts,
)
bot.run()
@@ -380,7 +383,7 @@ def main(*args):
local_args, None )
# Init Bot
bot = jogobot.bot.init_bot( task_slug, None, EuroExangeBot, genFactory)
bot = jogobot.bot.init_bot( task_slug, None, EuroExchangeBot, genFactory, **subtask_args)
# Run bot
jogobot.bot.run_bot( task_slug, None, bot )
@@ -1,84 +0,0 @@
# based on code of [[User:Gorgo]]/[[:c:File:Euro exchange rate to TRY.svg]]
# gnuplot script for plotting eurofxref-hist.csv as obtained from
# http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html
infile=system("echo $INFILE")
outfile=system("echo $OUTFILE")
# Start und Ende ermitteln (z.Zt. nur für Consolenausagabe)
stats infile every ::1 u (strptime("%Y-%m-%d",strcol(1))) nooutput
print ' -----Stats-(Timestamp)----'
print ' Start: ', strftime("%d. %B %Y",STATS_min)
print ' Ende: ', strftime("%d. %B %Y",STATS_max)
print ' --------------------------'
set label 'last update: ' . strftime("%Y-%m-%d",STATS_max) at graph 0.05, graph 0.9
#input
set timefmt "%Y-%m-%d"
set datafile missing 'N/A'
set datafile separator ','
#output
set key bottom right
set style data lines
set border 3 # Rahmen unten (Bit 1) und links (+ Bit 2)
unset grid # Gitterlinien verwenden
# Gitterlinienen per Hand setzen falls gewünscht
set style line 1 linetype rgb '#696969' linewidth 0.5 dashtype 0 # Def. Major-grid
set style line 2 linetype rgb '#C9C9C9' linewidth 0.5 dashtype 3 # def. Minor-grid
#set grid xtics mxtics # eventuell noxtics und nomxtics
set grid x2tics
set grid ytics mytics # eventuell noytics und nomytics
set grid back # Gitter im Hintergrund
set grid linestyle 1, linestyle 2 # Setzen des linestyle für Major u. Minor
# die Kalenderwochen-Markierung machen wir über x2 !!!
set xdata time
set x2data time
set format x '1. %b'
set xtics rotate by +15 center offset 0,-0.5
set format x2 ''
set xrange ['2018-01-01':'2019-01-01']
set x2range ['2018-01-01':'2019-01-01']
set x2tics '2018-01-01', 60 * 60 * 24 * 7
set x2tic scale 0
set xtics nomirror
unset mxtics
set xlabel '2018'
set ylabel 'TRY'
# set y2label 'TRY'
set format y '%.0f'
# set format y2 '%.0f'
set ytics 1
set mytics 5
set ytics nomirror
# Zebramuster
set style rect fillcolor lt -1 fillstyle solid 0.06 noborder
do for [i=1:12:2] {
marker_start=sprintf("2018-%1.2d-01",i)
marker_stop =sprintf("2018-%1.2d-01",i+1)
print 'setze grauen Marker: ' . marker_start . "-" . marker_stop
set object rectangle from marker_start,graph 0 to marker_stop, graph 1
}
## gnuplot for SVG - gnuplot 4.2 / Ubuntu 8.10
set term svg size 800,400 font "Arial,16"
set outp outfile
set style line 1 lt rgb 'blue' lw 1
#available currencies:
#first one is $2, second $3 and so on
#USD,JPY,BGN,CYP,CZK,DKK,EEK,GBP,HUF,LTL,LVL,MTL,PLN,ROL,RON,SEK,SIT,SKK,CHF,ISK,NOK,HRK,RUB,TRL,TRY,AUD,BRL,CAD,CNY,HKD,IDR,ILS,INR,KRW,MXN,MYR,NZD,PHP,SGD,THB,ZAR
plot \
infile \
usi 1:($26) axis x1y1 tit '1 EUR in TRY' lt rgb 'blue' lw 1,\
infile \
usi 1:($26) axis x1y1 notit w p lc rgb 'black' lt 1 lw 1.5 pt 7 ps 0.1 \
+2
View File
@@ -0,0 +1,2 @@
# jogobot
git+https://git.golderweb.de/wiki/jogobot.git#egg=jogobot