TT-RSS, Ordnerstruktur

Probleme bei der Installation?
Lyreco
User
Beiträge: 17
Registriert: Donnerstag 12. Januar 2017, 09:57

Habs *schähm*

Danke ;)
Lyreco
User
Beiträge: 17
Registriert: Donnerstag 12. Januar 2017, 09:57

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?
BlackJack

@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.
Lyreco
User
Beiträge: 17
Registriert: Donnerstag 12. Januar 2017, 09:57

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

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())
Die Fehlermeldung müsste doch der else Zweig sein

Code: Alles auswählen

        else:
                if link != None:
                        content = link + '\n\n' + content
                mail = MIMEText(content, 'text', defaultEncoding)
oder?

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')
Wäre es möglich in die config.py eine zeile mit bspw. receivererror = admin@mail.de hinzuzufügen und die Zeile

Code: Alles auswählen

if config.enableMailNotifications and len(fileContents) > 0:
                                                sendmail(receiver, subject, content, (site.get('type', 'html') == 'html'), site['uri'])
in der mwc.py auf

Code: Alles auswählen

...sendmail(receivererror, subject...
abzuändern?

Dann würden nämlich alle normalen Benutzer die FeedUpdates per Mail erhalten und die Error Messages nur der Admin.
Ginge das?
Lyreco
User
Beiträge: 17
Registriert: Donnerstag 12. Januar 2017, 09:57

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)
Antworten