From d2b740f21da76cb3b3701127e8bea73390831ab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Fri, 26 Feb 2021 22:29:06 +0100 Subject: [PATCH] initial commit, untested --- .gitignore | 1 + bot.py | 108 +++++++++++++++++ config.py | 15 +++ piss.jpg | Bin 0 -> 41321 bytes poetry.lock | 320 +++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 17 +++ 6 files changed, 461 insertions(+) create mode 100644 .gitignore create mode 100644 bot.py create mode 100644 config.py create mode 100644 piss.jpg create mode 100644 poetry.lock create mode 100644 pyproject.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c8cc056 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +state.pickle diff --git a/bot.py b/bot.py new file mode 100644 index 0000000..21daf37 --- /dev/null +++ b/bot.py @@ -0,0 +1,108 @@ +import asyncio +import logging +import pickle +import textwrap +from asyncio import sleep + +import aiohttp +import arrow +from ics import Calendar + +from config import Config + +config = Config() + + +class State: + notified = [] + notified_soon = [] + + +def process_event(event, template): + if event.begin.hour == event.begin.minute == 0: + date_fmt = 'dddd, D. MMMM YYYY' + else: + date_fmt = 'HH:mm / dddd, D. MMMM YYYY' + + date = event.begin.format(date_fmt, locale='cs_CZ') + when = event.begin.humanize() + + location = f"@ {event.location}" if event.location else "" + + description = event.description or "" + description = description.strip() + if description: + lines = description.splitlines() + if "http" in lines[0]: + url = lines[0].strip() + description = "\n".join(lines[1:]) + else: + url = "" + else: + url = "" + + description = description or "???" + description = textwrap.shorten(description, width=512, placeholder="...") + + return template.format( + title=event.name, + date=date, + location=location, + when=when, + url=url, + description=description + ) + + +async def send_message(text): + async with aiohttp.ClientSession() as session: + await session.post(config.WEBHOOK_URL, json={ + "text": text, + "format": "html", + "displayName": "PUBLIC INFORMATION STREAMS & SERVICES", + "avatarUrl": "http://i.imgur.com/IDOBtEJ.png" + }) + + +async def main(): + try: + with open('state.pickle', 'rb') as state_fp: + state = pickle.load(state_fp) + except FileNotFoundError: + state = State() + + while True: + calendars = [] + async with aiohttp.ClientSession() as session: + for url in config.URLS: + logging.debug(f"Requesting {url}...") + async with session.get(url) as resp: + calendars.append(Calendar(await resp.text())) + + future_events = [event for calendar in calendars for event in calendar.events if event.begin > arrow.now()] + logging.debug(f"Got {len(future_events)} future events...") + + for event in future_events: + if event.name not in state.notified and event.begin.shift(days=-2) < arrow.now(): + await send_message(process_event(event, config.EVENT_TEMPLATE)) + state.notified.append(event.name) + + if event.name not in state.notified_soon and event.begin.shift(hours=-2) < arrow.now(): + await send_message(process_event(event, config.SOON_TEMPLATE)) + state.notified_soon.append(event.name) + + with open('state.pickle', 'wb') as state_fp: + pickle.dump(state, state_fp) + + logging.debug("Sleeping for 60s...") + await sleep(60) + + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - [%(levelname)s] %(message)s') + + if config.WEBHOOK_URL is None: + raise RuntimeError("WEBHOOK_URL is not defined.") + + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/config.py b/config.py new file mode 100644 index 0000000..17fde6b --- /dev/null +++ b/config.py @@ -0,0 +1,15 @@ +class Config: + WEBHOOK_URL = None + AVATAR_URL = 'https://gitlab.com/sdbs_cz/piss-bot/-/raw/master/piss.jpg' + URLS = [ + 'https://sdbs.cz/wp-content/themes/sdbs/file-download.php?type=in', + 'https://sdbs.cz/wp-content/themes/sdbs/file-download.php?type=out' + ] + EVENT_TEMPLATE = "\n".join(( + "{title}", + "{date} {location}", + "{url}", + "/// /// ///", + "{description}" + )) + SOON_TEMPLATE = "FYI: \"{title}\" is starting {when}!" diff --git a/piss.jpg b/piss.jpg new file mode 100644 index 0000000000000000000000000000000000000000..571aa54386d7f963ebdbfea9ee67ad3d1f934be7 GIT binary patch literal 41321 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 literal 0 HcmV?d00001 diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..c325001 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,320 @@ +[[package]] +name = "aiohttp" +version = "3.7.4" +description = "Async http client/server framework (asyncio)" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +async-timeout = ">=3.0,<4.0" +attrs = ">=17.3.0" +chardet = ">=2.0,<4.0" +multidict = ">=4.5,<7.0" +typing-extensions = ">=3.6.5" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["aiodns", "brotlipy", "cchardet"] + +[[package]] +name = "arrow" +version = "0.14.7" +description = "Better dates & times for Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +python-dateutil = "*" + +[[package]] +name = "async-timeout" +version = "3.0.1" +description = "Timeout context manager for asyncio programs" +category = "main" +optional = false +python-versions = ">=3.5.3" + +[[package]] +name = "attrs" +version = "20.3.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] +docs = ["furo", "sphinx", "zope.interface"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] + +[[package]] +name = "chardet" +version = "3.0.4" +description = "Universal encoding detector for Python 2 and 3" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "humanize" +version = "3.2.0" +description = "Python humanize utilities" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +tests = ["freezegun", "pytest", "pytest-cov"] + +[[package]] +name = "ics" +version = "0.7" +description = "Python icalendar (rfc5545) parser" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +arrow = ">=0.11,<0.15" +python-dateutil = "*" +six = ">1.5" +tatsu = ">4.2" + +[[package]] +name = "idna" +version = "3.1" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.4" + +[[package]] +name = "multidict" +version = "5.1.0" +description = "multidict implementation" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "python-dateutil" +version = "2.8.1" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tatsu" +version = "4.4.0" +description = "TatSu takes a grammar in a variation of EBNF as input, and outputs a memoizing PEG/Packrat parser in Python." +category = "main" +optional = false +python-versions = "*" + +[package.extras] +future-regex = ["regex"] + +[[package]] +name = "typing-extensions" +version = "3.7.4.3" +description = "Backported and Experimental Type Hints for Python 3.5+" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "yarl" +version = "1.6.3" +description = "Yet another URL library" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" +typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} + +[metadata] +lock-version = "1.1" +python-versions = "^3.7" +content-hash = "0c4963a9087c744c76312b9ed8a9a57369cf1069504a602ae61d0d517735501d" + +[metadata.files] +aiohttp = [ + {file = "aiohttp-3.7.4-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:6c8200abc9dc5f27203986100579fc19ccad7a832c07d2bc151ce4ff17190076"}, + {file = "aiohttp-3.7.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:dd7936f2a6daa861143e376b3a1fb56e9b802f4980923594edd9ca5670974895"}, + {file = "aiohttp-3.7.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:bc3d14bf71a3fb94e5acf5bbf67331ab335467129af6416a437bd6024e4f743d"}, + {file = "aiohttp-3.7.4-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:8ec1a38074f68d66ccb467ed9a673a726bb397142c273f90d4ba954666e87d54"}, + {file = "aiohttp-3.7.4-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:b84ad94868e1e6a5e30d30ec419956042815dfaea1b1df1cef623e4564c374d9"}, + {file = "aiohttp-3.7.4-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:d5d102e945ecca93bcd9801a7bb2fa703e37ad188a2f81b1e65e4abe4b51b00c"}, + {file = "aiohttp-3.7.4-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:c2a80fd9a8d7e41b4e38ea9fe149deed0d6aaede255c497e66b8213274d6d61b"}, + {file = "aiohttp-3.7.4-cp36-cp36m-win32.whl", hash = "sha256:481d4b96969fbfdcc3ff35eea5305d8565a8300410d3d269ccac69e7256b1329"}, + {file = "aiohttp-3.7.4-cp36-cp36m-win_amd64.whl", hash = "sha256:16d0683ef8a6d803207f02b899c928223eb219111bd52420ef3d7a8aa76227b6"}, + {file = "aiohttp-3.7.4-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:eab51036cac2da8a50d7ff0ea30be47750547c9aa1aa2cf1a1b710a1827e7dbe"}, + {file = "aiohttp-3.7.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:feb24ff1226beeb056e247cf2e24bba5232519efb5645121c4aea5b6ad74c1f2"}, + {file = "aiohttp-3.7.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:119feb2bd551e58d83d1b38bfa4cb921af8ddedec9fad7183132db334c3133e0"}, + {file = "aiohttp-3.7.4-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:6ca56bdfaf825f4439e9e3673775e1032d8b6ea63b8953d3812c71bd6a8b81de"}, + {file = "aiohttp-3.7.4-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:5563ad7fde451b1986d42b9bb9140e2599ecf4f8e42241f6da0d3d624b776f40"}, + {file = "aiohttp-3.7.4-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:62bc216eafac3204877241569209d9ba6226185aa6d561c19159f2e1cbb6abfb"}, + {file = "aiohttp-3.7.4-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:f4496d8d04da2e98cc9133e238ccebf6a13ef39a93da2e87146c8c8ac9768242"}, + {file = "aiohttp-3.7.4-cp37-cp37m-win32.whl", hash = "sha256:2ffea7904e70350da429568113ae422c88d2234ae776519549513c8f217f58a9"}, + {file = "aiohttp-3.7.4-cp37-cp37m-win_amd64.whl", hash = "sha256:5e91e927003d1ed9283dee9abcb989334fc8e72cf89ebe94dc3e07e3ff0b11e9"}, + {file = "aiohttp-3.7.4-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:4c1bdbfdd231a20eee3e56bd0ac1cd88c4ff41b64ab679ed65b75c9c74b6c5c2"}, + {file = "aiohttp-3.7.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:71680321a8a7176a58dfbc230789790639db78dad61a6e120b39f314f43f1907"}, + {file = "aiohttp-3.7.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7dbd087ff2f4046b9b37ba28ed73f15fd0bc9f4fdc8ef6781913da7f808d9536"}, + {file = "aiohttp-3.7.4-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:dee68ec462ff10c1d836c0ea2642116aba6151c6880b688e56b4c0246770f297"}, + {file = "aiohttp-3.7.4-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:99c5a5bf7135607959441b7d720d96c8e5c46a1f96e9d6d4c9498be8d5f24212"}, + {file = "aiohttp-3.7.4-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:5dde6d24bacac480be03f4f864e9a67faac5032e28841b00533cd168ab39cad9"}, + {file = "aiohttp-3.7.4-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:418597633b5cd9639e514b1d748f358832c08cd5d9ef0870026535bd5eaefdd0"}, + {file = "aiohttp-3.7.4-cp38-cp38-win32.whl", hash = "sha256:e76e78863a4eaec3aee5722d85d04dcbd9844bc6cd3bfa6aa880ff46ad16bfcb"}, + {file = "aiohttp-3.7.4-cp38-cp38-win_amd64.whl", hash = "sha256:950b7ef08b2afdab2488ee2edaff92a03ca500a48f1e1aaa5900e73d6cf992bc"}, + {file = "aiohttp-3.7.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:2eb3efe243e0f4ecbb654b08444ae6ffab37ac0ef8f69d3a2ffb958905379daf"}, + {file = "aiohttp-3.7.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:822bd4fd21abaa7b28d65fc9871ecabaddc42767884a626317ef5b75c20e8a2d"}, + {file = "aiohttp-3.7.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:58c62152c4c8731a3152e7e650b29ace18304d086cb5552d317a54ff2749d32a"}, + {file = "aiohttp-3.7.4-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:7c7820099e8b3171e54e7eedc33e9450afe7cd08172632d32128bd527f8cb77d"}, + {file = "aiohttp-3.7.4-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:5b50e0b9460100fe05d7472264d1975f21ac007b35dcd6fd50279b72925a27f4"}, + {file = "aiohttp-3.7.4-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:c44d3c82a933c6cbc21039326767e778eface44fca55c65719921c4b9661a3f7"}, + {file = "aiohttp-3.7.4-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:cc31e906be1cc121ee201adbdf844522ea3349600dd0a40366611ca18cd40e81"}, + {file = "aiohttp-3.7.4-cp39-cp39-win32.whl", hash = "sha256:fbd3b5e18d34683decc00d9a360179ac1e7a320a5fee10ab8053ffd6deab76e0"}, + {file = "aiohttp-3.7.4-cp39-cp39-win_amd64.whl", hash = "sha256:40bd1b101b71a18a528ffce812cc14ff77d4a2a1272dfb8b11b200967489ef3e"}, + {file = "aiohttp-3.7.4.tar.gz", hash = "sha256:5d84ecc73141d0a0d61ece0742bb7ff5751b0657dab8405f899d3ceb104cc7de"}, +] +arrow = [ + {file = "arrow-0.14.7-py2.py3-none-any.whl", hash = "sha256:4bfacea734ead51495dc47df00421ecfd4ca1f2c0fbe58b9a26eaeddedc31caf"}, + {file = "arrow-0.14.7.tar.gz", hash = "sha256:67f8be7c0cf420424bc62d8d7dc40b44e4bb2f7b515f9cc2954fb36e35797656"}, +] +async-timeout = [ + {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"}, + {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"}, +] +attrs = [ + {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"}, + {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +humanize = [ + {file = "humanize-3.2.0-py3-none-any.whl", hash = "sha256:d47d80cd47c1511ed3e49ca5f10c82ed940ea020b45b49ab106ed77fa8bb9d22"}, + {file = "humanize-3.2.0.tar.gz", hash = "sha256:ab69004895689951b79f2ae4fdd6b8127ff0c180aff107856d5d98119a33f026"}, +] +ics = [ + {file = "ics-0.7-py2.py3-none-any.whl", hash = "sha256:bf5fbdef6e1e073afdadf1b996f0271186dd114a148e38e795919a1ae644d6ac"}, + {file = "ics-0.7-py3.7.egg", hash = "sha256:3b606205b9582ad27dff77f9b227a30d02fdac532731927fe39df1f1ddf8673f"}, +] +idna = [ + {file = "idna-3.1-py3-none-any.whl", hash = "sha256:5205d03e7bcbb919cc9c19885f9920d622ca52448306f2377daede5cf3faac16"}, + {file = "idna-3.1.tar.gz", hash = "sha256:c5b02147e01ea9920e6b0a3f1f7bb833612d507592c837a6c49552768f4054e1"}, +] +multidict = [ + {file = "multidict-5.1.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:b7993704f1a4b204e71debe6095150d43b2ee6150fa4f44d6d966ec356a8d61f"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:9dd6e9b1a913d096ac95d0399bd737e00f2af1e1594a787e00f7975778c8b2bf"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:f21756997ad8ef815d8ef3d34edd98804ab5ea337feedcd62fb52d22bf531281"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:1ab820665e67373de5802acae069a6a05567ae234ddb129f31d290fc3d1aa56d"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:9436dc58c123f07b230383083855593550c4d301d2532045a17ccf6eca505f6d"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:830f57206cc96ed0ccf68304141fec9481a096c4d2e2831f311bde1c404401da"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:2e68965192c4ea61fff1b81c14ff712fc7dc15d2bd120602e4a3494ea6584224"}, + {file = "multidict-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:2f1a132f1c88724674271d636e6b7351477c27722f2ed789f719f9e3545a3d26"}, + {file = "multidict-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:3a4f32116f8f72ecf2a29dabfb27b23ab7cdc0ba807e8459e59a93a9be9506f6"}, + {file = "multidict-5.1.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:46c73e09ad374a6d876c599f2328161bcd95e280f84d2060cf57991dec5cfe76"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:018132dbd8688c7a69ad89c4a3f39ea2f9f33302ebe567a879da8f4ca73f0d0a"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:4b186eb7d6ae7c06eb4392411189469e6a820da81447f46c0072a41c748ab73f"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:3a041b76d13706b7fff23b9fc83117c7b8fe8d5fe9e6be45eee72b9baa75f348"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:051012ccee979b2b06be928a6150d237aec75dd6bf2d1eeeb190baf2b05abc93"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:6a4d5ce640e37b0efcc8441caeea8f43a06addace2335bd11151bc02d2ee31f9"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:5cf3443199b83ed9e955f511b5b241fd3ae004e3cb81c58ec10f4fe47c7dce37"}, + {file = "multidict-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:f200755768dc19c6f4e2b672421e0ebb3dd54c38d5a4f262b872d8cfcc9e93b5"}, + {file = "multidict-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:05c20b68e512166fddba59a918773ba002fdd77800cad9f55b59790030bab632"}, + {file = "multidict-5.1.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:54fd1e83a184e19c598d5e70ba508196fd0bbdd676ce159feb412a4a6664f952"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:0e3c84e6c67eba89c2dbcee08504ba8644ab4284863452450520dad8f1e89b79"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:dc862056f76443a0db4509116c5cd480fe1b6a2d45512a653f9a855cc0517456"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:0e929169f9c090dae0646a011c8b058e5e5fb391466016b39d21745b48817fd7"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:d81eddcb12d608cc08081fa88d046c78afb1bf8107e6feab5d43503fea74a635"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:585fd452dd7782130d112f7ddf3473ffdd521414674c33876187e101b588738a"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:37e5438e1c78931df5d3c0c78ae049092877e5e9c02dd1ff5abb9cf27a5914ea"}, + {file = "multidict-5.1.0-cp38-cp38-win32.whl", hash = "sha256:07b42215124aedecc6083f1ce6b7e5ec5b50047afa701f3442054373a6deb656"}, + {file = "multidict-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:929006d3c2d923788ba153ad0de8ed2e5ed39fdbe8e7be21e2f22ed06c6783d3"}, + {file = "multidict-5.1.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b797515be8743b771aa868f83563f789bbd4b236659ba52243b735d80b29ed93"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d5c65bdf4484872c4af3150aeebe101ba560dcfb34488d9a8ff8dbcd21079647"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b47a43177a5e65b771b80db71e7be76c0ba23cc8aa73eeeb089ed5219cdbe27d"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:806068d4f86cb06af37cd65821554f98240a19ce646d3cd24e1c33587f313eb8"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:46dd362c2f045095c920162e9307de5ffd0a1bfbba0a6e990b344366f55a30c1"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:ace010325c787c378afd7f7c1ac66b26313b3344628652eacd149bdd23c68841"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:ecc771ab628ea281517e24fd2c52e8f31c41e66652d07599ad8818abaad38cda"}, + {file = "multidict-5.1.0-cp39-cp39-win32.whl", hash = "sha256:fc13a9524bc18b6fb6e0dbec3533ba0496bbed167c56d0aabefd965584557d80"}, + {file = "multidict-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:7df80d07818b385f3129180369079bd6934cf70469f99daaebfac89dca288359"}, + {file = "multidict-5.1.0.tar.gz", hash = "sha256:25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, + {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, +] +six = [ + {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, + {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, +] +tatsu = [ + {file = "TatSu-4.4.0-py2.py3-none-any.whl", hash = "sha256:c9211eeee9a2d4c90f69879ec0b518b1aa0d9450249cb0dd181f5f5b18be0a92"}, + {file = "TatSu-4.4.0.zip", hash = "sha256:80713413473a009f2081148d0f494884cabaf9d6866b71f2a68a92b6442f343d"}, +] +typing-extensions = [ + {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"}, + {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"}, + {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"}, +] +yarl = [ + {file = "yarl-1.6.3-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:0355a701b3998dcd832d0dc47cc5dedf3874f966ac7f870e0f3a6788d802d434"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:bafb450deef6861815ed579c7a6113a879a6ef58aed4c3a4be54400ae8871478"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:547f7665ad50fa8563150ed079f8e805e63dd85def6674c97efd78eed6c224a6"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:63f90b20ca654b3ecc7a8d62c03ffa46999595f0167d6450fa8383bab252987e"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:97b5bdc450d63c3ba30a127d018b866ea94e65655efaf889ebeabc20f7d12406"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:d8d07d102f17b68966e2de0e07bfd6e139c7c02ef06d3a0f8d2f0f055e13bb76"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:15263c3b0b47968c1d90daa89f21fcc889bb4b1aac5555580d74565de6836366"}, + {file = "yarl-1.6.3-cp36-cp36m-win32.whl", hash = "sha256:b5dfc9a40c198334f4f3f55880ecf910adebdcb2a0b9a9c23c9345faa9185721"}, + {file = "yarl-1.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:b2e9a456c121e26d13c29251f8267541bd75e6a1ccf9e859179701c36a078643"}, + {file = "yarl-1.6.3-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:ce3beb46a72d9f2190f9e1027886bfc513702d748047b548b05dab7dfb584d2e"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2ce4c621d21326a4a5500c25031e102af589edb50c09b321049e388b3934eec3"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:d26608cf178efb8faa5ff0f2d2e77c208f471c5a3709e577a7b3fd0445703ac8"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:4c5bcfc3ed226bf6419f7a33982fb4b8ec2e45785a0561eb99274ebbf09fdd6a"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:4736eaee5626db8d9cda9eb5282028cc834e2aeb194e0d8b50217d707e98bb5c"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:68dc568889b1c13f1e4745c96b931cc94fdd0defe92a72c2b8ce01091b22e35f"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:7356644cbed76119d0b6bd32ffba704d30d747e0c217109d7979a7bc36c4d970"}, + {file = "yarl-1.6.3-cp37-cp37m-win32.whl", hash = "sha256:00d7ad91b6583602eb9c1d085a2cf281ada267e9a197e8b7cae487dadbfa293e"}, + {file = "yarl-1.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:69ee97c71fee1f63d04c945f56d5d726483c4762845400a6795a3b75d56b6c50"}, + {file = "yarl-1.6.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e46fba844f4895b36f4c398c5af062a9808d1f26b2999c58909517384d5deda2"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:31ede6e8c4329fb81c86706ba8f6bf661a924b53ba191b27aa5fcee5714d18ec"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fcbb48a93e8699eae920f8d92f7160c03567b421bc17362a9ffbbd706a816f71"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:72a660bdd24497e3e84f5519e57a9ee9220b6f3ac4d45056961bf22838ce20cc"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:324ba3d3c6fee56e2e0b0d09bf5c73824b9f08234339d2b788af65e60040c959"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:e6b5460dc5ad42ad2b36cca524491dfcaffbfd9c8df50508bddc354e787b8dc2"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:6d6283d8e0631b617edf0fd726353cb76630b83a089a40933043894e7f6721e2"}, + {file = "yarl-1.6.3-cp38-cp38-win32.whl", hash = "sha256:9ede61b0854e267fd565e7527e2f2eb3ef8858b301319be0604177690e1a3896"}, + {file = "yarl-1.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:f0b059678fd549c66b89bed03efcabb009075bd131c248ecdf087bdb6faba24a"}, + {file = "yarl-1.6.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:329412812ecfc94a57cd37c9d547579510a9e83c516bc069470db5f75684629e"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c49ff66d479d38ab863c50f7bb27dee97c6627c5fe60697de15529da9c3de724"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f040bcc6725c821a4c0665f3aa96a4d0805a7aaf2caf266d256b8ed71b9f041c"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:d5c32c82990e4ac4d8150fd7652b972216b204de4e83a122546dce571c1bdf25"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:d597767fcd2c3dc49d6eea360c458b65643d1e4dbed91361cf5e36e53c1f8c96"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:8aa3decd5e0e852dc68335abf5478a518b41bf2ab2f330fe44916399efedfae0"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:73494d5b71099ae8cb8754f1df131c11d433b387efab7b51849e7e1e851f07a4"}, + {file = "yarl-1.6.3-cp39-cp39-win32.whl", hash = "sha256:5b883e458058f8d6099e4420f0cc2567989032b5f34b271c0827de9f1079a424"}, + {file = "yarl-1.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:4953fb0b4fdb7e08b2f3b3be80a00d28c5c8a2056bb066169de00e6501b986b6"}, + {file = "yarl-1.6.3.tar.gz", hash = "sha256:8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..3ad934a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,17 @@ +[tool.poetry] +name = "pissbot" +version = "0.1.0" +description = "" +authors = ["Tomáš Mládek "] +license = "MIT" + +[tool.poetry.dependencies] +python = "^3.7" +aiohttp = "^3.7.4" +ics = "^0.7" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api"