Compare commits

...

5 commits

Author SHA1 Message Date
n
64e7e7eaa6
move CI to Forgejo (n/playbooks#227)
All checks were successful
lint / lint (push) Successful in 37s
2024-09-14 09:30:49 +02:00
n
4ff47074db
fix filename generation
All checks were successful
lint / lint (push) Successful in 38s
2024-07-20 19:12:59 +02:00
n
9784a9ccba
add Gitea CI
All checks were successful
lint / lint (push) Successful in 35s
2024-02-15 21:30:26 +01:00
n
fb726f6cca
pylint fixes 2024-02-15 21:30:26 +01:00
n
07cc34877b fix filenames generation 2023-01-22 23:57:22 +01:00
2 changed files with 53 additions and 32 deletions

View file

@ -0,0 +1,23 @@
name: lint
run-name: lint is launched by ${{ github.actor }}
on: [push]
jobs:
check:
runs-on: ubuntu-latest
name: lint
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Forgejo!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v4
- name: Create Python virtualenv
run: |
mkdir -p .cache
python -m venv .
source bin/activate
XDG_CACHE_HOME=.cache pip install pylint-venv pylint
- name: Lint
run: XDG_CACHE_HOME=.cache ./bin/pylint -d E0401 blog/*.py
- run: echo "🍏 This job's status is ${{ job.status }}."

View file

@ -1,27 +1,25 @@
#!/usr/bin/env python #!/usr/bin/env python
''' fetch (almost) all blog posts from Dotclear database and export them in Markdown format ''' '''fetch (almost) all blog posts from Dotclear database and export them in Markdown format
''' TODO: use rss/atom feed instead ''' TODO: use rss/atom feed instead
''' TODO: convert to proper Gemtext ''' TODO: convert to proper Gemtext'''
import os
import re
import html2markdown import html2markdown
import mysql.connector import mysql.connector
import re
import os
from urllib.parse import quote
path_regex = re.compile('\d+/\d+/\d+') path_regex = re.compile('\\d+/\\d+/\\d+')
date_regex = re.compile('\d+-\d+-\d+') date_regex = re.compile('\\d+-\\d+-\\d+')
filename_regex = re.compile('\d+/\d+/\d+/(.*)') filename_regex = re.compile('\\d+/\\d+/\\d+/(.*)')
db_password_regex = re.compile("'DC_DBPASSWORD','(.*)'") db_password_regex = re.compile("'DC_DBPASSWORD','(.*)'")
db_host_regex = re.compile("'DC_DBHOST','(.*)'") db_host_regex = re.compile("'DC_DBHOST','(.*)'")
db_name_regex = re.compile("'DC_DBNAME','(.*)'") db_name_regex = re.compile("'DC_DBNAME','(.*)'")
db_user_regex = re.compile("'DC_DBUSER','(.*)'") db_user_regex = re.compile("'DC_DBUSER','(.*)'")
f = open("/home/www/dotclear/inc/config.php", "r") with open("/home/www/dotclear/inc/config.php", "r", encoding="utf-8") as f:
c = f.read() c = f.read()
f.close()
mydb = mysql.connector.connect( mydb = mysql.connector.connect(
host=db_host_regex.findall(c)[0], host=db_host_regex.findall(c)[0],
@ -30,36 +28,36 @@ mydb = mysql.connector.connect(
database=db_name_regex.findall(c)[0] database=db_name_regex.findall(c)[0]
) )
mycursor = mydb.cursor() mycursor = mydb.cursor()
mycursor.execute("SELECT post_url, post_title, post_content_xhtml FROM dc_post WHERE post_url LIKE '%/%/%/%' ORDER BY post_id DESC") mycursor.execute("SELECT post_url, post_title, post_content_xhtml \
FROM dc_post WHERE post_url LIKE '%/%/%/%' ORDER BY post_id DESC")
myresult = mycursor.fetchall() myresult = mycursor.fetchall()
mydb.close()
f = open("index.gmi", "w") with open("index.gmi", "w", encoding="utf-8") as f:
f.write("# Tourmentine's blog-to-gemlog\n\n"); f.write("# Tourmentine's blog-to-gemlog\n\n")
f.close()
for x in myresult: for x in myresult:
path = path_regex.findall(x[0])[0] path = path_regex.findall(x[0])[0]
filename = filename_regex.findall(x[0])[0] path_with_dashes = path.replace("/","-")
title = filename_regex.findall(x[0])[0]
filename = re.sub(r'\W+','', title)
f = open("index.gmi", "a") with open("index.gmi", "a", encoding="utf-8") as f:
f.write("=> %s/%s.gmi %s - %s\n" % (path, filename, path.replace("/","-"), x[1])) f.write(f'=> {path}/{filename}.gmi {path_with_dashes} - {x[1]}\n')
f.close()
try: try:
if not os.path.exists(path): if not os.path.exists(path):
os.makedirs(path) os.makedirs(path)
except OSError: except OSError:
print ("Creation of the directory %s failed" % path) print (f"Creation of the directory {path} failed")
if not os.path.isfile('%s/%s.gmi' % (path,quote(filename))): if not os.path.isfile(f'{path}/{filename}.gmi'):
print("creating %s/%s.gmi" % (path,quote(filename))) print(f"creating {path}/{filename}.gmi")
f = open("%s/%s.gmi" % (path,quote(filename)), "w") with open(f'{path}/{filename}.gmi', "w", encoding="utf-8") as f:
f.write("# %s\n\n" % x[1]) f.write(f"# {x[1]}\n\n")
f.write("Publié le %s\n\n" % path) f.write(f"Publié le {path}\n\n")
f.write(html2markdown.convert(x[2])) f.write(html2markdown.convert(x[2]))
f.write("\n\n=> /blog/ Retour au menu du blog") f.write("\n\n=> /blog/ Retour au menu du blog")
f.close()
f = open("index.gmi", "a") with open("index.gmi", "a", encoding="utf-8") as f:
f.write("\n=> Retour") f.write("\n=> Retour")
f.close()