Compare commits

..

1 Commits

Author SHA1 Message Date
SABnzbd Automation
b5dda7c52d Update translatable texts
[skip ci]
2025-12-30 08:24:04 +00:00
21 changed files with 176 additions and 237 deletions

View File

@@ -1558,6 +1558,14 @@ msgstr ""
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr ""
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr ""
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1584,14 +1592,6 @@ msgstr ""
msgid "RSS Feed %s was empty"
msgstr ""
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr ""
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr ""

View File

@@ -1649,6 +1649,14 @@ msgstr ""
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Prázdný RSS záznam nalezen (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Nekompatibilní kanál"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1675,14 +1683,6 @@ msgstr ""
msgid "RSS Feed %s was empty"
msgstr "RSS kanál %s byl prázdný"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Nekompatibilní kanál"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Prázdný RSS záznam nalezen (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Zobrazit rozhraní"

View File

@@ -1723,6 +1723,14 @@ msgstr "Fejl ved lukning af system"
msgid "Received a DBus exception %s"
msgstr "Modtog en DBus-undtagelse %s"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tom RSS post blev fundet (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Inkompatibel feed"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1749,14 +1757,6 @@ msgstr "Server %s bruger et upålideligt HTTPS-certifikat"
msgid "RSS Feed %s was empty"
msgstr "RSS Feed %s er tom"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Inkompatibel feed"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tom RSS post blev fundet (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Vis grænseflade"

View File

@@ -1779,6 +1779,14 @@ msgstr "Fehler beim Herunterfahren des Systems"
msgid "Received a DBus exception %s"
msgstr "DBus-Ausnahmefehler empfangen %s "
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Leerer RSS-Feed gefunden: %s"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Inkompatibeler RSS-Feed"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1805,14 +1813,6 @@ msgstr "Der Server %s nutzt ein nicht vertrauenswürdiges HTTPS-Zertifikat"
msgid "RSS Feed %s was empty"
msgstr "RSS-Feed %s war leer"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Inkompatibeler RSS-Feed"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Leerer RSS-Feed gefunden: %s"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Interface anzeigen"

View File

@@ -1767,6 +1767,14 @@ msgstr "Error al apagarel sistema"
msgid "Received a DBus exception %s"
msgstr "Se ha recibido una excepción DBus %s"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Entrada RSS vacía (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Canal Incorrecto"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1795,14 +1803,6 @@ msgstr "El servidor %s utiliza un certificado HTTPS no fiable"
msgid "RSS Feed %s was empty"
msgstr "El canal RSS %s estaba vacío"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Canal Incorrecto"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Entrada RSS vacía (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Mostrar interfaz"

View File

@@ -1676,6 +1676,14 @@ msgstr "Virhe sammutettaessa järjestelmää"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tyhjä RSS kohde löytyi (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Puutteellinen syöte"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1702,14 +1710,6 @@ msgstr "Palvelin %s käyttää epäluotettavaa HTTPS sertifikaattia"
msgid "RSS Feed %s was empty"
msgstr "RSS syöte %s oli tyhjä"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Puutteellinen syöte"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tyhjä RSS kohde löytyi (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Näytä käyttöliittymä"

View File

@@ -1765,6 +1765,14 @@ msgstr "Erreur lors de l'arrêt du système"
msgid "Received a DBus exception %s"
msgstr "Exception DBus reçue %s"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Entrée vide de flux RSS trouvée (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Flux incompatible"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1792,14 +1800,6 @@ msgstr "Le serveur %s utilise un certificat de sécurité HTTPS non authentifié
msgid "RSS Feed %s was empty"
msgstr "Le flux RSS %s était vide"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Flux incompatible"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Entrée vide de flux RSS trouvée (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Afficher linterface"

View File

@@ -1695,6 +1695,14 @@ msgstr "שגיאה בזמן כיבוי מערכת"
msgid "Received a DBus exception %s"
msgstr "חריגת DBus התקבלה %s"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "כניסת RSS ריקה נמצאה (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "הזנה בלתי תואמת"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1721,14 +1729,6 @@ msgstr "השרת %s משתמש בתעודת HTTPS בלתי מהימנה"
msgid "RSS Feed %s was empty"
msgstr "הזנת RSS %s הייתה ריקה"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "הזנה בלתי תואמת"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "כניסת RSS ריקה נמצאה (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "הראה ממשק"

View File

@@ -1746,6 +1746,14 @@ msgstr "Errore durante lo spegnimento del sistema"
msgid "Received a DBus exception %s"
msgstr "Ricevuta un'eccezione DBus %s"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Trovata voce RSS vuota (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Feed incompatibile"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1772,14 +1780,6 @@ msgstr "Il server %s utilizza un certificato HTTPS non attendibile"
msgid "RSS Feed %s was empty"
msgstr "Il feed RSS %s era vuoto"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Feed incompatibile"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Trovata voce RSS vuota (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Mostra interfaccia"

View File

@@ -1674,6 +1674,14 @@ msgstr "Feil under avslutting av systemet"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tom RSS post funnet (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Ukompatibel nyhetsstrøm"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1700,14 +1708,6 @@ msgstr "Server %s bruker et usikkert HTTP sertifikat"
msgid "RSS Feed %s was empty"
msgstr "RSS-kilde %s var tom"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Ukompatibel nyhetsstrøm"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tom RSS post funnet (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Vis grensesnitt"

View File

@@ -1749,6 +1749,14 @@ msgstr "Fout bij het afsluiten van het systeem"
msgid "Received a DBus exception %s"
msgstr "DBus foutmelding %s "
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Lege RSS-feed gevonden (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Ongeschikte RSS-feed"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1775,14 +1783,6 @@ msgstr "Server %s gebruikt een onbetrouwbaar HTTPS-certificaat"
msgid "RSS Feed %s was empty"
msgstr "RSS-feed %s is leeg"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Ongeschikte RSS-feed"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Lege RSS-feed gevonden (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Toon webinterface"

View File

@@ -1683,6 +1683,14 @@ msgstr "Wyłączenie systemu nie powiodło się"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Znaleziono pusty wpis RSS (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Niekompatybilny kanał"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1709,14 +1717,6 @@ msgstr "Serwer %s używa niezaufanego certyfikatu HTTPS"
msgid "RSS Feed %s was empty"
msgstr "Kanał RSS %s był pusty"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Niekompatybilny kanał"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Znaleziono pusty wpis RSS (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Pokaż interfejs"

View File

@@ -1693,6 +1693,14 @@ msgstr "Erro ao desligar o sistema"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Entrada RSS vazia encontrada (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Feed incompatível"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1720,14 +1728,6 @@ msgstr "Servidor %s usa um certificado HTTPS não confiável"
msgid "RSS Feed %s was empty"
msgstr "O feed RSS %s estava vazio"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Feed incompatível"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Entrada RSS vazia encontrada (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Exibir interface"

View File

@@ -1712,6 +1712,14 @@ msgstr "Eroare la oprirea sistemului"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Valoare RSS gasită a fost goală (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Fulx RSS incompatibil"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1738,14 +1746,6 @@ msgstr "Serverul %s utilizează un certificat HTTPS nesigur"
msgid "RSS Feed %s was empty"
msgstr "Fluxul RSS %s a fost gol"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Fulx RSS incompatibil"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Valoare RSS gasită a fost goală (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Arată interfața"

View File

@@ -1676,6 +1676,14 @@ msgstr "Не удалось завершить работу системы"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Обнаружена пустая запись RSS (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Несовместимая лента"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1702,14 +1710,6 @@ msgstr ""
msgid "RSS Feed %s was empty"
msgstr "RSS-лента %s была пустой"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Несовместимая лента"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Обнаружена пустая запись RSS (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Показать интерфейс"

View File

@@ -1669,6 +1669,14 @@ msgstr "Greška pri gašenju sistema"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Nađen prazan RSS unos (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Некомпатибилан Фид"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1695,14 +1703,6 @@ msgstr "Server %s koristi nepouzdan HTTPS sertifikat"
msgid "RSS Feed %s was empty"
msgstr "RSS фид %s је празан"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Некомпатибилан Фид"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Nađen prazan RSS unos (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Pokaži interfejs"

View File

@@ -1675,6 +1675,14 @@ msgstr "Fel uppstod då systemet skulle stängas"
msgid "Received a DBus exception %s"
msgstr ""
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tom RSS post hittades (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Inkompatibel feed"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1701,14 +1709,6 @@ msgstr "Server %s använder ett otillförlitlig HTTPS-certifikat"
msgid "RSS Feed %s was empty"
msgstr "RSS-flödet %s var tomt"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Inkompatibel feed"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Tom RSS post hittades (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Visa gränssnitt"

View File

@@ -1738,6 +1738,14 @@ msgstr "Sistemin kapatılması esnasında hata"
msgid "Received a DBus exception %s"
msgstr "Bir DBUS istisnası alındı %s"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Boş RSS girdisi bulundu (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Uyumsuz besleme"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1764,14 +1772,6 @@ msgstr "%s sunucusu güvenilmez bir HTTPS sertifikası kullanıyor"
msgid "RSS Feed %s was empty"
msgstr "%s RSS Beselemesi boştu"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "Uyumsuz besleme"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "Boş RSS girdisi bulundu (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "Arayüzü göster"

View File

@@ -1665,6 +1665,14 @@ msgstr "关闭系统时出错"
msgid "Received a DBus exception %s"
msgstr "收到 DBus 异常 %s"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "发现空的 RSS 条目 (%s)"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "feed 不兼容"
#. Error message
#: sabnzbd/rss.py
msgid "Incorrect RSS feed description \"%s\""
@@ -1691,14 +1699,6 @@ msgstr "服务器 %s 使用的 HTTPS 证书不受信任"
msgid "RSS Feed %s was empty"
msgstr "RSS Feed %s 为空"
#: sabnzbd/rss.py
msgid "Incompatible feed"
msgstr "feed 不兼容"
#: sabnzbd/rss.py
msgid "Empty RSS entry found (%s)"
msgstr "发现空的 RSS 条目 (%s)"
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Show interface"
msgstr "显示界面"

View File

@@ -38,7 +38,6 @@ from typing import Optional, Callable, Union, Any
from guessit.api import properties as guessit_properties
import sabnzbd
from sabnzbd.rss import RSSStatus
from sabnzbd.misc import (
to_units,
from_units,
@@ -1946,7 +1945,7 @@ def GetRssLog(feed):
# Now we apply some formatting
job["title"] = job["title"]
job["skip"] = "*" * int(RSSStatus(job.get("status", RSSStatus.BAD)).is_starred)
job["skip"] = "*" * int(job.get("status", "").endswith("*"))
# These fields could be empty
job["cat"] = job.get("cat", "")
job["size"] = job.get("size", "")
@@ -1988,12 +1987,11 @@ def GetRssLog(feed):
jobs = sabnzbd.RSSReader.show_result(feed).values()
good, bad, done = ([], [], [])
for job in jobs:
status = RSSStatus(job["status"])
if status.is_good:
if job["status"][0] == "G":
good.append(make_item(job))
elif status.is_bad:
elif job["status"][0] == "B":
bad.append(make_item(job))
elif status == RSSStatus.DOWNLOADED:
elif job["status"] == "D":
done.append(make_item(job))
try:

View File

@@ -26,7 +26,6 @@ import datetime
import threading
import urllib.parse
from dataclasses import dataclass, field
from enum import Enum
from typing import Union, Optional
import sabnzbd
@@ -55,60 +54,6 @@ _RE_SIZE1 = re.compile(r"Size:\s*(\d+\.\d+\s*[KMG]?)B\W*", re.I)
_RE_SIZE2 = re.compile(r"\W*(\d+\.\d+\s*[KMG]?)B\W*", re.I)
class RSSStatus(str, Enum):
"""RSS Job status values.
Status values indicate the state of an RSS feed entry:
- GOOD: Matched by filter rules (should be grabbed)
- BAD: Rejected by filter rules
- DOWNLOADED: Successfully downloaded to queue
- EXPIRED: No longer in feed (marked for cleanup)
- GOOD_INITIAL: Good match from initial batch (starred)
- DOWNLOADED_HIDDEN: Downloaded but hidden from display
"""
GOOD = "G"
BAD = "B"
DOWNLOADED = "D"
EXPIRED = "X"
GOOD_INITIAL = "G*" # Good match from first scan (starred)
DOWNLOADED_HIDDEN = "D-" # Downloaded but not displayed anymore
@property
def is_good(self) -> bool:
"""Check if status represents a good match (G or G*)"""
return self in (RSSStatus.GOOD, RSSStatus.GOOD_INITIAL)
@property
def is_downloaded(self) -> bool:
"""Check if status represents a download (D or D-)"""
return self in (RSSStatus.DOWNLOADED, RSSStatus.DOWNLOADED_HIDDEN)
@property
def is_bad(self) -> bool:
"""Check if status represents a bad match"""
return self == RSSStatus.BAD
@property
def is_expired(self) -> bool:
"""Check if status is expired"""
return self == RSSStatus.EXPIRED
@property
def is_starred(self) -> bool:
"""Check if status is starred (from initial batch)"""
return self == RSSStatus.GOOD_INITIAL
@property
def base_status(self) -> "RSSStatus":
"""Get base status (G* -> G, D- -> D)"""
if self == RSSStatus.GOOD_INITIAL:
return RSSStatus.GOOD
elif self == RSSStatus.DOWNLOADED_HIDDEN:
return RSSStatus.DOWNLOADED
return self
@dataclass(frozen=True)
class NormalisedEntry:
link: Optional[str]
@@ -264,7 +209,7 @@ class ResolvedEntry:
priority: Optional[int]
rule: int
status: RSSStatus
status: str # "G", "B", "G*", "D"
download: bool
@@ -562,7 +507,9 @@ class RSSReader:
# jobs is a NAME-indexed dictionary
# Each element is link-indexed dictionary
# Each element is another dictionary:
# status : RSSStatus enum (DOWNLOADED, GOOD, BAD, EXPIRED, GOOD_INITIAL, DOWNLOADED_HIDDEN)
# status : 'D', 'G', 'B', 'X' (downloaded, good-match, bad-match, obsolete)
# '*' added means: from the initial batch
# '-' added to 'D' means downloaded, but not displayed anymore
# title : Title
# url : URL
# cat : category
@@ -752,7 +699,7 @@ class RSSReader:
@staticmethod
def remove_obsolete(jobs: dict[str, dict], new_jobs: list[str]):
"""Expire G/B links that are not in new_jobs (mark them EXPIRED)
"""Expire G/B links that are not in new_jobs (mark them 'X')
Expired links older than 3 days are removed from 'jobs'
"""
now = time.time()
@@ -760,10 +707,9 @@ class RSSReader:
for old in list(jobs):
tm = jobs[old]["time"]
if old not in new_jobs:
status = RSSStatus(jobs[old].get("status", RSSStatus.BAD))
if status.is_good or status.is_bad:
jobs[old]["status"] = RSSStatus.EXPIRED
if jobs[old]["status"] == RSSStatus.EXPIRED and tm < limit:
if jobs[old].get("status", " ")[0] in ("G", "B"):
jobs[old]["status"] = "X"
if jobs[old]["status"] == "X" and tm < limit:
logging.debug("Purging link %s", old)
del jobs[old]
@@ -838,13 +784,9 @@ class RSSReader:
"""
link = entry.link
job = jobs.get(link)
if job:
job_status = RSSStatus(job.get("status"))
else:
job_status = None
job_status = job.get("status", " ")[0] if job else "N"
# Skip if already processed (unless expired and we're doing a readout)
if job_status and not (job_status.is_good or job_status.is_bad) and not (job_status.is_expired and readout):
if job_status not in "NGB" and not (job_status == "X" and readout):
return None, None, None
# Match this title against all filters
@@ -857,7 +799,7 @@ class RSSReader:
episode=entry.episode,
)
is_starred = job and RSSStatus(job.get("status")).is_starred
is_starred = job and job.get("status", "").endswith("*")
star = first or is_starred
should_download = (download and not first and not is_starred) or force
@@ -884,7 +826,7 @@ class RSSReader:
"status": update.status,
}
if update.status.is_downloaded:
if update.status == "D":
jobs[update.link]["time_downloaded"] = time.localtime()
@staticmethod
@@ -934,13 +876,13 @@ class RSSReader:
Returns True if the entry was queued for download.
"""
if should_download and evaluation.matched:
status = RSSStatus.DOWNLOADED
status = "D"
elif is_starred and evaluation.matched:
status = RSSStatus.GOOD_INITIAL
status = "G*"
elif evaluation.matched:
status = RSSStatus.GOOD
status = "G"
else:
status = RSSStatus.BAD
status = "B"
update = ResolvedEntry(
link=entry.link,
@@ -957,7 +899,7 @@ class RSSReader:
priority=evaluation.priority,
rule=evaluation.rule_index,
status=status,
download=status.is_downloaded,
download=(status == "D"),
)
self.update_job_entry(jobs, update)
@@ -1024,7 +966,7 @@ class RSSReader:
lst = self.jobs[feed]
for link in lst:
if lst[link].get("url", "") == fid:
lst[link]["status"] = RSSStatus.DOWNLOADED
lst[link]["status"] = "D"
lst[link]["time_downloaded"] = time.localtime()
@synchronized(RSS_LOCK)
@@ -1047,9 +989,8 @@ class RSSReader:
# Mark downloaded jobs, so that they won't be displayed any more.
if feed in self.jobs:
for item in self.jobs[feed]:
status = RSSStatus(self.jobs[feed][item]["status"])
if status == RSSStatus.DOWNLOADED:
self.jobs[feed][item]["status"] = RSSStatus.DOWNLOADED_HIDDEN
if self.jobs[feed][item]["status"] == "D":
self.jobs[feed][item]["status"] = "D-"
def _normalise_str_or_none(value: Optional[str]) -> Optional[str]: