fetching and reading calendar
This commit is contained in:
parent
d19406d3b4
commit
420deb16cf
@ -1,6 +1,11 @@
|
|||||||
from typing import Generator, Type, Dict
|
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 *
|
from ..feeds import *
|
||||||
|
|
||||||
|
|
||||||
@ -36,6 +41,32 @@ class Routine:
|
|||||||
except (TypeError, error.InvalidCredential):
|
except (TypeError, error.InvalidCredential):
|
||||||
raise error.InvalidCredential(f"Invalid credentials for {feed.__name__}.")
|
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):
|
def run(self):
|
||||||
pass
|
pass
|
||||||
|
@ -4,7 +4,4 @@ from ..feeds import Feed
|
|||||||
|
|
||||||
class Development(Routine):
|
class Development(Routine):
|
||||||
def run(self):
|
def run(self):
|
||||||
for feed_class in self.iter_feeds():
|
print(self.get_ics())
|
||||||
feed: Feed = self.init_feed(feed_class)
|
|
||||||
|
|
||||||
feed.post(message="This worked second try!")
|
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import platformdirs
|
import platformdirs
|
||||||
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
PROGRAM_NAME: str = "publish-meetups"
|
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)
|
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",
|
"mastodon",
|
||||||
"twitter",
|
"twitter",
|
||||||
],
|
],
|
||||||
|
"ics_url": "",
|
||||||
"mastodon": {},
|
"mastodon": {},
|
||||||
"twitter": {},
|
"twitter": {},
|
||||||
"lemmy": {},
|
"lemmy": {},
|
||||||
|
@ -37,6 +37,8 @@ dependencies = [
|
|||||||
"twikit~=1.1.12",
|
"twikit~=1.1.12",
|
||||||
"toml~=0.10.2",
|
"toml~=0.10.2",
|
||||||
"platformdirs~=3.2.0",
|
"platformdirs~=3.2.0",
|
||||||
|
"ics~=0.7.2",
|
||||||
|
"requests~=2.31.0"
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
|
Loading…
Reference in New Issue
Block a user