Class for event, better sh script for testing, added kulturnik
parent
a65612ffd3
commit
665764bc80
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
@ -10,3 +11,6 @@ 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/utils/__init__.py
|
||||
mobili_cli/utils/authenticate.py
|
||||
mobili_cli/utils/load-rss-feed.py
|
Binary file not shown.
Binary file not shown.
|
@ -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
|
|
@ -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))
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
2
setup.py
2
setup.py
|
@ -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="""
|
||||
|
|
Loading…
Reference in New Issue