mirror of
https://github.com/MaxenceG2M/github-release-notifier.git
synced 2025-12-08 22:03:24 +00:00
Black formatting
This commit is contained in:
106
notifier.py
106
notifier.py
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user