You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.1 KiB
82 lines
2.1 KiB
#!/usr/bin/env python
|
|
|
|
import re
|
|
import json
|
|
import os
|
|
from smtplib import SMTP_SSL
|
|
from email.mime.text import MIMEText
|
|
from requests_html import HTMLSession
|
|
|
|
|
|
with open("config.json", "r") as fil:
|
|
config = json.load(fil)
|
|
|
|
session = HTMLSession()
|
|
r = session.get("https://www.kaffee-netz.de/forums/private-angebote-maschinen-und-muehlen.14/")
|
|
items = r.html.find("div.structItem-title")
|
|
|
|
if not os.path.isfile("matches.json"):
|
|
with open("matches.json", "w") as fil:
|
|
json.dump({}, fil)
|
|
|
|
with open("matches.json", "r") as fil:
|
|
matches = json.load(fil)
|
|
|
|
for item in items:
|
|
title = item.text
|
|
print("\nprocessing item", item, "with title", title)
|
|
|
|
links = item.find("a")
|
|
link = None
|
|
for l in links:
|
|
if not "threads/" in l.attrs["href"]:
|
|
continue
|
|
link = l.attrs["href"]
|
|
if not l:
|
|
print("could not find link for item", title)
|
|
|
|
print("found link", link)
|
|
|
|
found = False
|
|
for kw in config["keywords"]:
|
|
if re.match(kw, title, re.IGNORECASE):
|
|
found = True
|
|
break
|
|
|
|
if not found:
|
|
print("... no match")
|
|
continue
|
|
|
|
print("... match!")
|
|
if link in matches:
|
|
print("... is already known")
|
|
continue
|
|
|
|
matches[link] = "title"
|
|
|
|
content = session.get("https://www.kaffee-netz.de"+link)
|
|
description = content.html.find("div.bbWrapper", first=True).text
|
|
|
|
mail_subject = "Neues Kaffeenetz Item: " + title
|
|
mail_body = """
|
|
Neues Angebot im Kaffeenetz gefunden!
|
|
|
|
%s: %s
|
|
|
|
Beschreibung:
|
|
%s
|
|
"""%(title, "https://www.kaffee-netz.de"+link, description)
|
|
|
|
mime_body = MIMEText(mail_body.encode('utf-8'), _charset='utf-8')
|
|
mime_body["Subject"] = "Neues Kaffeenetz Angebot: "+title
|
|
mime_body["From"] = config["from_mail"]
|
|
mime_body["To"] = config["to_mail"]
|
|
|
|
print("Sending mail ...")
|
|
with SMTP_SSL("mail.ghostdub.de") as smtp:
|
|
smtp.login(config["smtp_user"], config["smtp_pass"])
|
|
smtp.sendmail(config["from_mail"], config["to_mail"], mime_body.as_string())
|
|
|
|
with open("matches.json", "w") as fil:
|
|
json.dump(matches, fil)
|