Les choses sérieuses commencent
This commit is contained in:
parent
7a9fe18463
commit
c63f62721b
41 changed files with 1270 additions and 0 deletions
33
erminig/controllers/evezh/parsers/sourceforge.py
Normal file
33
erminig/controllers/evezh/parsers/sourceforge.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import re
|
||||
import requests
|
||||
import xml.etree.ElementTree as ET
|
||||
from erminig.controllers.evezh.abstract import UpstreamSource
|
||||
from erminig.system.retry import retry_on_failure
|
||||
|
||||
|
||||
class SourceForgeRSS(UpstreamSource):
|
||||
|
||||
@retry_on_failure()
|
||||
def get_latest(self):
|
||||
rss_url = self.config["sourceforge"]
|
||||
r = requests.get(rss_url, timeout=10)
|
||||
r.raise_for_status()
|
||||
root = ET.fromstring(r.text)
|
||||
items = root.findall(".//item")
|
||||
|
||||
versions = []
|
||||
for item in items:
|
||||
title = item.findtext("title") or ""
|
||||
match = re.search(r"([0-9]+\.[0-9]+(?:\.[0-9]+)?)", title)
|
||||
if match:
|
||||
version = match.group(1)
|
||||
link = item.findtext("link")
|
||||
versions.append((version, link))
|
||||
|
||||
if not versions:
|
||||
print(f"[{self.name}] Aucune version trouvée via RSS.")
|
||||
return None
|
||||
|
||||
latest = sorted(versions, key=lambda x: list(map(int, x[0].split("."))))[-1]
|
||||
print(latest[1])
|
||||
return {"name": self.name, "version": latest[0], "url": latest[1]}
|
||||
Loading…
Add table
Add a link
Reference in a new issue