Jonathan Golder
6 yıl önce
5 değiştirilmiş dosya ile 349 ekleme ve 32 silme
@ -0,0 +1,133 @@ |
|||
|
|||
# Created by https://www.gitignore.io/api/python |
|||
|
|||
### Python ### |
|||
# Byte-compiled / optimized / DLL files |
|||
__pycache__/ |
|||
*.py[cod] |
|||
*$py.class |
|||
|
|||
# C extensions |
|||
*.so |
|||
|
|||
# Distribution / packaging |
|||
.Python |
|||
build/ |
|||
develop-eggs/ |
|||
dist/ |
|||
downloads/ |
|||
eggs/ |
|||
.eggs/ |
|||
lib/ |
|||
lib64/ |
|||
parts/ |
|||
sdist/ |
|||
var/ |
|||
wheels/ |
|||
*.egg-info/ |
|||
.installed.cfg |
|||
*.egg |
|||
MANIFEST |
|||
|
|||
# PyInstaller |
|||
# Usually these files are written by a python script from a template |
|||
# before PyInstaller builds the exe, so as to inject date/other infos into it. |
|||
*.manifest |
|||
*.spec |
|||
|
|||
# Installer logs |
|||
pip-log.txt |
|||
pip-delete-this-directory.txt |
|||
|
|||
# Unit test / coverage reports |
|||
htmlcov/ |
|||
.tox/ |
|||
.nox/ |
|||
.coverage |
|||
.coverage.* |
|||
.cache |
|||
nosetests.xml |
|||
coverage.xml |
|||
*.cover |
|||
.hypothesis/ |
|||
.pytest_cache/ |
|||
|
|||
# Translations |
|||
*.mo |
|||
*.pot |
|||
|
|||
# Django stuff: |
|||
*.log |
|||
local_settings.py |
|||
db.sqlite3 |
|||
|
|||
# Flask stuff: |
|||
instance/ |
|||
.webassets-cache |
|||
|
|||
# Scrapy stuff: |
|||
.scrapy |
|||
|
|||
# Sphinx documentation |
|||
docs/_build/ |
|||
|
|||
# PyBuilder |
|||
target/ |
|||
|
|||
# Jupyter Notebook |
|||
.ipynb_checkpoints |
|||
|
|||
# IPython |
|||
profile_default/ |
|||
ipython_config.py |
|||
|
|||
# pyenv |
|||
.python-version |
|||
|
|||
# celery beat schedule file |
|||
celerybeat-schedule |
|||
|
|||
# SageMath parsed files |
|||
*.sage.py |
|||
|
|||
# Environments |
|||
.env |
|||
.venv |
|||
env/ |
|||
venv/ |
|||
ENV/ |
|||
env.bak/ |
|||
venv.bak/ |
|||
|
|||
# Spyder project settings |
|||
.spyderproject |
|||
.spyproject |
|||
|
|||
# Rope project settings |
|||
.ropeproject |
|||
|
|||
# mkdocs documentation |
|||
/site |
|||
|
|||
# mypy |
|||
.mypy_cache/ |
|||
.dmypy.json |
|||
dmypy.json |
|||
|
|||
### Python Patch ### |
|||
.venv/ |
|||
|
|||
### Python.VirtualEnv Stack ### |
|||
# Virtualenv |
|||
# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ |
|||
[Bb]in |
|||
[Ii]nclude |
|||
[Ll]ib |
|||
[Ll]ib64 |
|||
[Ll]ocal |
|||
[Ss]cripts |
|||
pyvenv.cfg |
|||
pip-selfcheck.json |
|||
|
|||
|
|||
# End of https://www.gitignore.io/api/python |
@ -0,0 +1,47 @@ |
|||
#!/usr/bin/env python3 |
|||
# -*- coding: utf-8 -*- |
|||
# |
|||
# config.py |
|||
# |
|||
# Copyright 2018 Jonathan Golder <jonathan@golderweb.de> |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation; either version 2 of the License, or |
|||
# (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with this program; if not, write to the Free Software |
|||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|||
# MA 02110-1301, USA. |
|||
# |
|||
# |
|||
""" |
|||
Loads configuration of EuroExchangeBot |
|||
""" |
|||
|
|||
import os |
|||
|
|||
import jogobot |
|||
|
|||
|
|||
class Config(): |
|||
""" |
|||
Configuration container for EuroExchangeBot |
|||
""" |
|||
|
|||
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"] |
|||
gnuplot_script_comment = jogobot.config["euroexchange"]["gnuplot_script_comment"] |
|||
gnuplot_script_help = jogobot.config["euroexchange"]["gnuplot_script_help"] |
@ -0,0 +1,129 @@ |
|||
#!/usr/bin/env python3 |
|||
# -*- coding: utf-8 -*- |
|||
# |
|||
# descpage.py |
|||
# |
|||
# Copyright 2018 Jonathan Golder <jonathan@golderweb.de> |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation; either version 2 of the License, or |
|||
# (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with this program; if not, write to the Free Software |
|||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|||
# MA 02110-1301, USA. |
|||
# |
|||
# |
|||
|
|||
import os |
|||
import re |
|||
|
|||
import pywikibot |
|||
import mwparserfromhell as mwparser |
|||
|
|||
from config import Config |
|||
|
|||
class DescPageBot(pywikibot.bot.Bot): |
|||
""" |
|||
Updates file description page with EuroExchangeBot related content |
|||
""" |
|||
|
|||
def treat_job( self, job ): |
|||
""" |
|||
Handles work on file description page for given job |
|||
|
|||
@param job Job to work on |
|||
@type EuroExchangeBotJob |
|||
""" |
|||
# Store job |
|||
self.job = job |
|||
# Store file page object |
|||
self.current_page = job.filepage |
|||
|
|||
# Parse filepage |
|||
self.parse_page() |
|||
|
|||
# Update gnuplot script |
|||
self.update_gnuplot_script() |
|||
|
|||
# Update wiki page |
|||
self.update_page() |
|||
|
|||
def load_gnuplot_script(self): |
|||
""" |
|||
Load the gnuplot script for current job |
|||
|
|||
@return Gnuplot script content |
|||
@rtype str |
|||
""" |
|||
|
|||
with open( os.path.join( |
|||
Config.gnuplot_script_dir, self.job.script + ".plt" ), "r") as fd: |
|||
return fd.read() |
|||
|
|||
def prepare_gnuplot_script(self): |
|||
""" |
|||
Prepare gnuplot script code for publishing on image description page |
|||
""" |
|||
|
|||
# Load gnuplot script |
|||
gnuplot_script = self.load_gnuplot_script() |
|||
|
|||
# Strip leadig and trailing whitespace |
|||
gnuplot_script = gnuplot_script.strip(" \n") |
|||
|
|||
# Replace |
|||
gnuplot_script = gnuplot_script.\ |
|||
replace( "system(\"echo $INFILE\")", |
|||
"'{}'".format( os.path.basename( Config.csv_file ) ) ).\ |
|||
replace( "system(\"echo $OUTFILE\")", |
|||
"'{}'".format (os.path.basename( self.job.image ) ) ) |
|||
|
|||
# Locate first empty line |
|||
m = re.search(r"^\s*$", gnuplot_script, re.MULTILINE) |
|||
if m: |
|||
# Insert help lines |
|||
gnuplot_script = gnuplot_script[:m.end()] +\ |
|||
Config.gnuplot_script_help + gnuplot_script[m.end():] |
|||
|
|||
return gnuplot_script |
|||
|
|||
def parse_page(self): |
|||
""" |
|||
Load current page content and parse with mwparser |
|||
""" |
|||
self.current_page.wikicode = mwparser.parse(self.current_page.text) |
|||
|
|||
def update_gnuplot_script(self): |
|||
""" |
|||
Update the gnuplot script embedded in page |
|||
""" |
|||
|
|||
# Get source tag with gnuplot script |
|||
gnuplot_script = next( |
|||
self.current_page.wikicode.ifilter_tags( |
|||
matches="<source lang=\"gnuplot\">" ) ) |
|||
|
|||
# Replace script |
|||
gnuplot_script.contents = "\n" + self.prepare_gnuplot_script() + "\n" |
|||
|
|||
def update_page(self): |
|||
""" |
|||
Put updated content to wiki |
|||
""" |
|||
|
|||
# Convert wikicode back to str |
|||
new_text = str(self.current_page.wikicode) |
|||
|
|||
# Save new text |
|||
self.userPut( self.current_page, |
|||
self.current_page.text, |
|||
new_text, |
|||
summary=Config.gnuplot_script_comment ) |
Yükleniyor…
Yeni konuda referans