Skip to content

Instantly share code, notes, and snippets.

@grischard
Created October 4, 2022 16:15
Show Gist options
  • Save grischard/3d4f9a52f800ba167885c4920deb9c73 to your computer and use it in GitHub Desktop.
Save grischard/3d4f9a52f800ba167885c4920deb9c73 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import xmlrpc.client
from datetime import date
import regex
# today = date.today()
today = date(2022, 10, 2)
server = xmlrpc.client.ServerProxy(
"https://weeklyOSM:[email protected]/login/xmlrpc"
)
wikipage = server.wiki.getPage("StartupPageSource")
# wikipage = server.wiki.getPage("SandBox")
ISSUENUMBER = 636
isodate = today.strftime("%Y-%m-%d")
dmydateslash = today.strftime("%d/%m/%Y")
dmydatedot = today.strftime("%d.%m.%Y")
dmydatedash = today.strftime("%d.%m.%Y")
BEGINBLOCK = "# Begin weekly - leave at the top of the weeklyOSM section, automatically updated, do not edit manually"
ENDBLOCK = "# End weekly - leave at the bottom of the weeklyOSM section, automatically updated, do not edit manually"
BEGINNEWS = "# Begin news - leave at the top of the news section, do not edit or move this comment"
newblock = f"""{BEGINBLOCK}
en: * {isodate} **weeklyOSM**: The weekly round-up of OSM news, issue [https://weeklyosm.eu/en/en/ #{ISSUENUMBER}], is now available online in English
ca: * {dmydatedash} **setmanalOSM** : El resum setmanal de notícies d'OSM, ja està disponible en línia en anglès número [https://weeklyosm.eu/en/en/ #{ISSUENUMBER}] i en castellà [https://weeklyosm.eu/es/ n° {ISSUENUMBER}]
da: * {dmydatedash} **weeklyOSM**: Den ugentlige opsummering af OSM-nyheder, nummer [https://weeklyosm.eu/en/en/ #{ISSUENUMBER}], er nu tilgængelig online på engelsk
de: * {dmydatedot} **Wochennotiz**: Die wöchentliche Ausgabe der OSM-News [https://weeklyosm.eu/de/ #{ISSUENUMBER}] ist nun auf deutsch verfügbar
es: * {dmydatedash} **semanarioOSM** : El resumen semanario de noticias de OSM [https://weeklyosm.eu/es/ n° {ISSUENUMBER}], ya está disponible en línea en español
fr: * {dmydatedash} **hebdoOSM**: Le résumé hebdomadaire [https://www.weeklyosm.eu/fr/ n° {ISSUENUMBER}] de l'actualité OpenStreetMap vient de paraître en français
hu: * {isodate} **weeklyOSM**: Az OSM heti hírösszefoglalójának [https://weeklyosm.eu/en/en/ {ISSUENUMBER}. része] már elérhető angolul.
it: * {dmydatedot} **Notiziario Settimanale OSM**: Il riepilogo settimanale [https://www.weeklyosm.eu/it/ N. {ISSUENUMBER}] delle notizie su OSM è adesso disponibile online e in italiano
ko: * {isodate} **주간OSM**: 이번 주의 오픈스트리트맵 관련 소식을 전해주는 주간OSM [https://weeklyosm.eu/ko/ {ISSUENUMBER}호]가 올라왔습니다
lt: * {isodate} **weeklyOSM**: Savaitinė OSM naujienų santrauka [https://weeklyosm.eu/en/en/ nr. {ISSUENUMBER}] yra prieinama anglų kalba
nl: * {isodate} **weeklyOSM**: De wekelijkse verzameling nieuws over OSM, uitgave [https://weeklyosm.eu/en/en/ #{ISSUENUMBER}], is nu online beschikbaar in het Engels
pl: * {dmydatedot} **Tygodnik OSM**: [nr {ISSUENUMBER}](https://weeklyosm.eu/pl/) cotygodniowego podsumowania wiadomości ze świata OSM jest już dostępny po polsku.
ru: * {isodate} **weeklyOSM**: еженедельный обзор новостей OSM, выпуск [https://weeklyosm.eu/en/en/ #{ISSUENUMBER}], доступен онлайн на английском и нескольких других языках
sk: * {isodate} **weeklyOSM**: Týždenný sumár noviniek v OSM, vydanie [https://weeklyosm.eu/en/en #{ISSUENUMBER}], je už dostupný online v angličtine. [https://weeklyosm.eu/cz/ Český preklad] bude dostupný neskôr.
sr@latin: * {isodate} **weeklyOSM**: Nedeljna tura vesti iz OSM sveta, problem zaveden pod brojem [https://weeklyosm.eu/en/en/ #{ISSUENUMBER}], od sada je dostupna na engleskom jeziku
uk: * {dmydatedot} **weeklyOSM**: Щотижневий огляд новин OSM, випуск [https://weeklyosm.eu/en/en/ #{ISSUENUMBER}], доступний англійською та іншими мовами
zh_CN: * {isodate} **weeklyOSM**:一周一次的 OSM 消息汇报,[https://weeklyosm.eu/cn/ #{ISSUENUMBER}]期中国华语版本已经上线。
zh_TW: * {isodate} **weeklyOSM**:一週一次的 OSM 消息彙報,[https://weeklyosm.eu/zh/ #{ISSUENUMBER}]期台灣華語版本已經上線。
{ENDBLOCK}"""
blockpattern = regex.compile(f"{BEGINBLOCK}\X*{ENDBLOCK}\n")
oldblock = blockpattern.search(wikipage).group()
newcount = newblock.count("\n")
oldcount = oldblock.count("\n") - 1
if oldcount != newcount:
print(
f"Number of old translations ({oldcount-3}) does not match new translation ({newcount-3}). Manually added translation? Manual edit?"
)
else:
# Drop the old weekly, insert new one at top
wikipage = wikipage.replace(oldblock, "").replace(
BEGINNEWS, f"{BEGINNEWS}\n{newblock}"
)
server.wiki.putPage(
"StartupPageSource", wikipage, {"comment": "Semi-automatic weeklyOSM update"}
)
print("Update successful")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment