mirror of
https://github.com/tomasriveral/ReSSPublica.git
synced 2026-08-12 10:40:45 +02:00
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from SPARQLWrapper import SPARQLWrapper, JSON
|
|
from feedgen.feed import FeedGenerator
|
|
from importlib.resources import files
|
|
|
|
def getValue(row, key):
|
|
return row.get(key, {}).get("value") or None
|
|
|
|
def generateFederalFeed():
|
|
sparql = SPARQLWrapper("https://cached.lindas.admin.ch/query")
|
|
query = files("resspublica.queries").joinpath("federalPopularInitiatives.sparql").read_text()
|
|
sparql.setQuery(query)
|
|
sparql.setReturnFormat(JSON)
|
|
|
|
results = sparql.query().convert()
|
|
|
|
# remove some of useless json data such as "head": {"vars": [...]}
|
|
data = results["results"]["bindings"]
|
|
|
|
feeds = {
|
|
"fr": [],
|
|
"de": [],
|
|
"it": []
|
|
}
|
|
|
|
for entry in data:
|
|
for lang in ["fr", "de", "it"]:
|
|
item = {
|
|
"id": getValue(entry, "id"),
|
|
"date": getValue(entry, "date"),
|
|
"title": getValue(entry, "title_" + lang),
|
|
"article": getValue(entry, "artikel_" + lang),
|
|
"text": getValue(entry, "text_" + lang)
|
|
}
|
|
feeds[lang].append(item)
|
|
print(feeds["fr"])
|
|
def main():
|
|
generateFederalFeed()
|