fetching and reading calendar
This commit is contained in:
parent
d19406d3b4
commit
420deb16cf
@ -1,6 +1,11 @@
|
||||
from typing import Generator, Type, Dict
|
||||
import os.path
|
||||
from pathlib import Path
|
||||
|
||||
from ..utils import config, error
|
||||
import requests
|
||||
from ics import Calendar
|
||||
|
||||
from ..utils import config, error, prompt, ICS_FILE
|
||||
from ..feeds import *
|
||||
|
||||
|
||||
@ -36,6 +41,32 @@ class Routine:
|
||||
except (TypeError, error.InvalidCredential):
|
||||
raise error.InvalidCredential(f"Invalid credentials for {feed.__name__}.")
|
||||
|
||||
@staticmethod
|
||||
def get_ics(use_cached: bool = False) -> Path:
|
||||
if use_cached and ICS_FILE.exists():
|
||||
with ICS_FILE.open("r") as f:
|
||||
return Calendar(f.read())
|
||||
|
||||
ics_url = config.get_field("ics_url")
|
||||
if not len(ics_url):
|
||||
ics_url = prompt.for_string("url or path to the ICS file")
|
||||
config.set_field("ics_url", ics_url)
|
||||
|
||||
origin_path = Path(ics_url)
|
||||
|
||||
if origin_path.is_file():
|
||||
with origin_path.open("rb") as f:
|
||||
with ICS_FILE.open("wb") as t:
|
||||
t.write(f.read())
|
||||
else:
|
||||
r = requests.get(ics_url)
|
||||
with ICS_FILE.open("wb") as t:
|
||||
t.write(r.content)
|
||||
|
||||
with ICS_FILE.open("r") as f:
|
||||
return Calendar(f.read())
|
||||
|
||||
|
||||
|
||||
def run(self):
|
||||
pass
|
||||
|
@ -4,7 +4,4 @@ from ..feeds import Feed
|
||||
|
||||
class Development(Routine):
|
||||
def run(self):
|
||||
for feed_class in self.iter_feeds():
|
||||
feed: Feed = self.init_feed(feed_class)
|
||||
|
||||
feed.post(message="This worked second try!")
|
||||
print(self.get_ics())
|
||||
|
@ -1,12 +1,15 @@
|
||||
import logging
|
||||
from pathlib import Path
|
||||
|
||||
import platformdirs
|
||||
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
PROGRAM_NAME: str = "publish-meetups"
|
||||
PROGRAM_DATA_DIR: str = platformdirs.user_config_path(appname=PROGRAM_NAME)
|
||||
PROGRAM_DATA_DIR: Path = platformdirs.user_config_path(appname=PROGRAM_NAME)
|
||||
PROGRAM_DATA_DIR.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
ICS_FILE = Path(PROGRAM_DATA_DIR / "meetup.ics")
|
||||
|
||||
__all__ = ["prompt", "PROGRAM_DATA_DIR", "PROGRAM_NAME", "errors", "config"]
|
||||
|
||||
__all__ = ["prompt", "PROGRAM_DATA_DIR", "PROGRAM_NAME", "errors", "config", "ICS_FILE"]
|
||||
|
@ -11,6 +11,7 @@ _config: dict = {
|
||||
"mastodon",
|
||||
"twitter",
|
||||
],
|
||||
"ics_url": "",
|
||||
"mastodon": {},
|
||||
"twitter": {},
|
||||
"lemmy": {},
|
||||
|
@ -37,6 +37,8 @@ dependencies = [
|
||||
"twikit~=1.1.12",
|
||||
"toml~=0.10.2",
|
||||
"platformdirs~=3.2.0",
|
||||
"ics~=0.7.2",
|
||||
"requests~=2.31.0"
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
|
Loading…
Reference in New Issue
Block a user