Class for event, better sh script for testing, added kulturnik

master
Jurij Podgoršek 2021-09-30 21:50:20 +02:00
parent a65612ffd3
commit 665764bc80
10 changed files with 72 additions and 9 deletions

View File

@ -38,7 +38,6 @@ events via mobilizon GraphQL api from yaml or json or whatever. Probably yaml.
*** developing in guix
** Python requests
#+BEGIN_EXAMPLE python
@ -172,3 +171,9 @@ events via mobilizon GraphQL api from yaml or json or whatever. Probably yaml.
#+END_EXAMPLE
** RSS import
This tool can be used to import events from a RSS feed.
Once run, it checks if there are new events to be added and updates existing ones if need be.
*** Identification
Each event is uniquely identified by its' url ("link" field), which is mapped into the "link" field on mobilizon.

View File

@ -1,6 +1,7 @@
setup.py
mobili_cli/__init__.py
mobili_cli/cli.py
mobili_cli/event.py
mobili_cli.egg-info/PKG-INFO
mobili_cli.egg-info/SOURCES.txt
mobili_cli.egg-info/dependency_links.txt
@ -9,4 +10,7 @@ mobili_cli.egg-info/requires.txt
mobili_cli.egg-info/top_level.txt
mobili_cli/commands/__init__.py
mobili_cli/commands/cmd_init.py
mobili_cli/commands/cmd_status.py
mobili_cli/commands/cmd_status.py
mobili_cli/utils/__init__.py
mobili_cli/utils/authenticate.py
mobili_cli/utils/load-rss-feed.py

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,42 @@
#!/usr/bin/env python3
from pprint import pp
from datetime import datetime
class Event:
status = None
def __init__(self, title, time, link):
self.title = title
self.time = time
self.link = link
def setStatus(self, status):
self.status = status
def setLocation(self, location):
self.location = location
def __str__(self):
return str({
'title': self.title,
'time': self.time,
'link': self.link,
'status': self.status
})
def parseRSS(entry):
for k in ['title', 'ical_dtstart', 'link']:
if k not in entry:
raise ValueError(f"{k} is a required event parameter")
title, time, link = (entry.title, datetime.fromisoformat(entry['ical_dtstart']), entry.link)
ev = Event(title, time, link)
if 'ical_status' in entry:
ev.setStatus(entry['ical_status'])
if 'ical_location' in entry:
ev.setLocation(entry['ical_location'])
return ev

View File

View File

@ -2,15 +2,18 @@
import sys
import feedparser
from pprint import pp
from mobili_cli.event import Event, parseRSS
try:
url = sys.argv[1]
f = feedparser.parse(url)
for dogodek in f['entries']:
print(dogodek)
except ValueError:
raise SystemExit('Usage: load-rss-feed.py <url of rss feed>')
f = feedparser.parse(url)
for e in f['entries']:
pp(e)
event = parseRSS(e)
pp(str(event))

View File

@ -0,0 +1,7 @@
#!/bin/bash
polnapot=$(realpath $0)
pot=$(dirname $polnapot)
url="https://dogodki.kulturnik.si/?format=rss"
$pot/../mobili_cli/utils/load-rss-feed.py $url

View File

@ -1,5 +1,7 @@
#!/bin/bash
polnapot=$(realpath $0)
pot=$(dirname $polnapot)
url="https://www.neodvisni.art/novice/feed"
../mobili_cli/utils/load-rss-feed.py $url
$pot/../mobili_cli/utils/load-rss-feed.py $url

View File

@ -3,7 +3,7 @@ from setuptools import setup
setup(
name="mobili_cli",
version="0.1",
packages=["mobili_cli", "mobili_cli.commands"],
packages=["mobili_cli", "mobili_cli.commands", "mobili_cli.utils"],
include_package_data=True,
install_requires=["click", "graphql-core", "requests"],
entry_points="""