Habs *schähm*
Danke
TT-RSS, Ordnerstruktur
Ich kriege bei zwei Feeds immer wieder, aber unregelmäßig folgende Meldung:
WARNING: could not open URL; maybe content was moved?
<urlopen error [Errno -3] Temporary failure in name resolution>
Die Seiten sind manuell ohne Probleme abrufbar.
Wieso, bzw. wieso unregelmäßig und wie kann ich den Fehler beheben?
WARNING: could not open URL; maybe content was moved?
<urlopen error [Errno -3] Temporary failure in name resolution>
Die Seiten sind manuell ohne Probleme abrufbar.
Wieso, bzw. wieso unregelmäßig und wie kann ich den Fehler beheben?
@Lyreco: Entweder gibt es bei Dir Probleme mit der Namensauflösung oder irgendwo im Netz. Bei Dir könntest Du etwas dagegen tun in dem Du die Ursache findest und beseitigst. Im Netz eher nicht. Das ist letztendlich eine Netzwerkfrage und keine Python-Frage.
Ich konnte das Problem leider nicht lösen...
Es gibt zwei Feeds bei denen unregelmäßig der Error "WARNING: could not open URL; maybe content was moved? <urlopen error [Errno -3] Temporary failure in name resolution>" erscheint.
Nervig daran ist, dass ich jedes mal eine Mail bekomme, da ich mir Updates (der Feeds) bei Mail zuschicken lasse.
Gibts vllt. eine Möglichkeit das Skript so anzupassen, dass mir nur die Updates der Feeds, die Fehlermeldungen jedoch nicht zugeschickt werden?
Hier mal ein Auszug des Skripts, https://github.com/Debianguru/MailWebsi ... ter/mwc.py
Die Fehlermeldung müsste doch der else Zweig sein
oder?
EDIT: Oder auch nicht:
Wäre es möglich in die config.py eine zeile mit bspw. receivererror = admin@mail.de hinzuzufügen und die Zeile in der mwc.py auf abzuändern?
Dann würden nämlich alle normalen Benutzer die FeedUpdates per Mail erhalten und die Error Messages nur der Admin.
Ginge das?
Es gibt zwei Feeds bei denen unregelmäßig der Error "WARNING: could not open URL; maybe content was moved? <urlopen error [Errno -3] Temporary failure in name resolution>" erscheint.
Nervig daran ist, dass ich jedes mal eine Mail bekomme, da ich mir Updates (der Feeds) bei Mail zuschicken lasse.
Gibts vllt. eine Möglichkeit das Skript so anzupassen, dass mir nur die Updates der Feeds, die Fehlermeldungen jedoch nicht zugeschickt werden?
Hier mal ein Auszug des Skripts, https://github.com/Debianguru/MailWebsi ... ter/mwc.py
Code: Alles auswählen
# sends mail notification
def sendmail(receiver, subject, content, sendAsHtml, link):
global mailsession
if sendAsHtml:
baseurl = None
if link != None:
content = '<p><a href="' + link + '">' + subject + '</a></p>\n' + content
baseurl = urljoin(link, '/')
mail = MIMEText('<html><head><title>' + subject + '</title>' + ('<base href="' + baseurl + '">' if baseurl else '') + '</head><body>' + content + '</body></html>', 'html', defaultEncoding)
else:
if link != None:
content = link + '\n\n' + content
mail = MIMEText(content, 'text', defaultEncoding)
mail['From'] = config.sender
mail['To'] = receiver
mail['Subject'] = Header(subject, defaultEncoding)
# initialize session once, not each time this method gets called
if mailsession is None:
mailsession = smtplib.SMTP(config.smtphost, config.smtpport)
if config.useTLS:
mailsession.ehlo()
mailsession.starttls()
if config.smtpusername is not None:
mailsession.login(config.smtpusername, config.smtppwd)
mailsession.sendmail(config.sender, receiver.split(','), mail.as_string())
Code: Alles auswählen
else:
if link != None:
content = link + '\n\n' + content
mail = MIMEText(content, 'text', defaultEncoding)
EDIT: Oder auch nicht:
Code: Alles auswählen
# start polling sites
for site in config.sites:
print('polling site [' + site['shortname'] + '] ...')
parseResult = parseSite(site)
receiver = site.get('receiver', config.receiver)
# if something went wrong, notify the user
if parseResult['warning']:
subject = '[' + site['shortname'] + '] WARNING'
print('WARNING: ' + parseResult['warning'])
if config.enableMailNotifications:
sendmail(receiver, subject, parseResult['warning'], False, None)
if config.enableRSSFeed:
feedXML.xpath('//channel')[0].append(genFeedItem(subject, parseResult['warning'], site['uri'], 0))
else:
# otherwise, check which parts of the site were updated
changes = 0
fileContents = getFileContents(site['shortname'])
i = 0
for content in parseResult['contents']:
if content not in fileContents:
changes += 1
subject = '[' + site['shortname'] + '] ' + parseResult['titles'][i]
print(' ' + subject)
if config.enableMailNotifications and len(fileContents) > 0:
sendmail(receiver, subject, content, (site.get('type', 'html') == 'html'), site['uri'])
if config.enableRSSFeed:
feedXML.xpath('//channel')[0].append(genFeedItem(subject, content, site['uri'], changes))
i += 1
if changes > 0:
storeFileContents(site['shortname'], parseResult)
print(' ' + str(changes) + ' updates')
Code: Alles auswählen
if config.enableMailNotifications and len(fileContents) > 0:
sendmail(receiver, subject, content, (site.get('type', 'html') == 'html'), site['uri'])
Code: Alles auswählen
...sendmail(receivererror, subject...
Dann würden nämlich alle normalen Benutzer die FeedUpdates per Mail erhalten und die Error Messages nur der Admin.
Ginge das?
Es hat natürlich nicht geklappt, da ich 'receivererror' nicht definiert habe (NameError: name 'receivererror' is not defined), was natürlich klar ist.
Ich weiß aber nicht so genau an welcher Stelle ich receivererror defnieren kann und ob das so einfach möglich ist?!
EDIT:
Reicht die Ergänzung?
receivererror = site.get('receivererror', config.receivererror)
Ich weiß aber nicht so genau an welcher Stelle ich receivererror defnieren kann und ob das so einfach möglich ist?!
EDIT:
Reicht die Ergänzung?
receivererror = site.get('receivererror', config.receivererror)