Black formatting

This commit is contained in:
2023-11-10 00:14:00 +01:00
parent 148c647ac7
commit 89e88c8a1b

View File

@@ -1,55 +1,55 @@
import os
from configparser import ConfigParser
import json
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import datetime import datetime
import json
import os
import smtplib
from configparser import ConfigParser
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import requests import requests
SMTP_PORT = 0 SMTP_PORT = 0
SMTP_SERVER = 'null' SMTP_SERVER = "null"
SENDER_EMAIL = 'a@b.c' SENDER_EMAIL = "a@b.c"
RECEIVER_EMAIL = 'd@e.f' RECEIVER_EMAIL = "d@e.f"
def main(): def main():
global SMTP_PORT, SMTP_SERVER, SENDER_EMAIL, RECEIVER_EMAIL global SMTP_PORT, SMTP_SERVER, SENDER_EMAIL, RECEIVER_EMAIL
script_dir = os.path.dirname(__file__) script_dir = os.path.dirname(__file__)
conf_file = os.path.join(script_dir, 'conf.ini') conf_file = os.path.join(script_dir, "conf.ini")
template_file = os.path.join(script_dir, 'template.html') template_file = os.path.join(script_dir, "template.html")
parser = ConfigParser() parser = ConfigParser()
parser.read(conf_file) parser.read(conf_file)
SMTP_PORT = parser.get('config', 'smtp_port') SMTP_PORT = parser.get("config", "smtp_port")
SMTP_SERVER = parser.get('config', 'smtp_server') SMTP_SERVER = parser.get("config", "smtp_server")
SENDER_EMAIL = parser.get('config', 'sender_email') SENDER_EMAIL = parser.get("config", "sender_email")
RECEIVER_EMAIL = parser.get('config', 'receiver_email') RECEIVER_EMAIL = parser.get("config", "receiver_email")
projects = json.loads(parser.get('projects', 'projects')) projects = json.loads(parser.get("projects", "projects"))
new_releases = [] new_releases = []
new_projects = [] new_projects = []
if not parser.has_section('release'): if not parser.has_section("release"):
parser.add_section('release') parser.add_section("release")
for project in projects: for project in projects:
last_release = get_last_release(project) last_release = get_last_release(project)
if not parser.has_option('release', project): if not parser.has_option("release", project):
new_projects.append(last_release) new_projects.append(last_release)
else: else:
last_config_tag = parser.get('release', project) last_config_tag = parser.get("release", project)
if last_config_tag != last_release['release_tag']: if last_config_tag != last_release["release_tag"]:
last_release['preview_tag'] = last_config_tag last_release["preview_tag"] = last_config_tag
new_releases.append(last_release) new_releases.append(last_release)
parser.set('release', project, last_release['release_tag']) parser.set("release", project, last_release["release_tag"])
if not new_releases and not new_projects: if not new_releases and not new_projects:
print('No new projets or new release detected. Bye!') print("No new projets or new release detected. Bye!")
return return
content = "" content = ""
@@ -59,49 +59,55 @@ def main():
<li><a href="{}" target="_blank">{}</a>: new release <a href="{}" target="_blank">{}</a> available (old: {}). <li><a href="{}" target="_blank">{}</a>: new release <a href="{}" target="_blank">{}</a> available (old: {}).
(published {})</li> (published {})</li>
""".format( """.format(
new_r['release_url'], new_r["release_url"],
new_r['project_name'], new_r["project_name"],
new_r['release_url'], new_r["release_url"],
new_r['release_tag'], new_r["release_tag"],
new_r['preview_tag'], new_r["preview_tag"],
convert_date(new_r['published_date'])) convert_date(new_r["published_date"]),
)
for new_p in new_projects: for new_p in new_projects:
content += """ content += """
<li><a href="{}" target="_blank">{}</a> was added to your configuration. Last release: <a href="{}" target="_blank">{}</a> <li><a href="{}" target="_blank">{}</a> was added to your configuration. Last release: <a href="{}" target="_blank">{}</a>
(published {})</li>""".format( (published {})</li>""".format(
new_p['release_url'], new_p["release_url"],
new_p['project_name'], new_p["project_name"],
new_p['release_url'], new_p["release_url"],
new_p['release_tag'], new_p["release_tag"],
convert_date(new_p['published_date'])) convert_date(new_p["published_date"]),
)
# print(content) # print(content)
with open(template_file, 'r') as f_template: with open(template_file, "r") as f_template:
template = f_template.read() template = f_template.read()
send_mail(template.replace('{{content}}', content)) send_mail(template.replace("{{content}}", content))
with open('conf.ini', 'w') as configfile: with open("conf.ini", "w") as configfile:
parser.write(configfile) parser.write(configfile)
def get_last_release(project): def get_last_release(project):
url = 'https://api.github.com/repos/{}/releases/latest'.format(project) url = "https://api.github.com/repos/{}/releases/latest".format(project)
result = requests.get(url) result = requests.get(url)
print(project) print(project)
print(url) print(url)
release = result.json() release = result.json()
release_tag = release['tag_name'] release_tag = release["tag_name"]
published_date = release['published_at'] published_date = release["published_at"]
# body = release['body'] # body = release['body']
release_url = release['html_url'] release_url = release["html_url"]
return {
"release_tag": release_tag,
"published_date": published_date,
# 'body': body,
"project_name": project,
"release_url": release_url,
}
return {'release_tag': release_tag,
'published_date': published_date,
# 'body': body,
'project_name': project,
'release_url': release_url}
def send_mail(content): def send_mail(content):
message = MIMEMultipart("alternative") message = MIMEMultipart("alternative")
@@ -118,8 +124,10 @@ def send_mail(content):
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server: with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.sendmail(SENDER_EMAIL, RECEIVER_EMAIL, message.as_string()) server.sendmail(SENDER_EMAIL, RECEIVER_EMAIL, message.as_string())
def convert_date(date: str, format='%d %b %Y at %H:%M') -> str:
def convert_date(date: str, format="%d %b %Y at %H:%M") -> str:
return datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%SZ").strftime(format) return datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%SZ").strftime(format)
if __name__ == "__main__": if __name__ == "__main__":
main() main()