upcomingEvents: Use pyclip to copy the result to clipboard

This commit is contained in:
Adam Goldsmith 2023-05-09 17:27:56 -04:00
parent 981cb12aa6
commit 9cf12b1bdd
3 changed files with 67 additions and 25 deletions

View File

@ -1,6 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from datetime import datetime from datetime import datetime
import sys
import pyclip
from .config import Config from .config import Config
@ -45,7 +48,7 @@ def format_section(title: str, blurb: str, events, truncate: bool):
""" """
def main(): def generate_post():
config = Config() config = Config()
now = datetime.now() now = datetime.now()
@ -98,32 +101,36 @@ def main():
</div> </div>
""" """
print(header) yield header
print( yield format_section(
format_section( "Upcoming Events",
"Upcoming Events", "Events that are currently open for registration.",
"Events that are currently open for registration.", upcoming_events,
upcoming_events, truncate=False,
truncate=False,
)
) )
print(
format_section( yield format_section(
"Just Missed", "Just Missed",
"These classes are currently full at time of writing. If you are interested, please check the event's page; spots occasionally open up. Keep an eye on this newsletter to see when these classes are offered again.", "These classes are currently full at time of writing. If you are interested, please check the event's page; spots occasionally open up. Keep an eye on this newsletter to see when these classes are offered again.",
full_events, full_events,
truncate=True, truncate=True,
)
) )
print(
format_section( yield format_section(
"Ongoing", "Ongoing",
"These classes are ongoing. Registration is closed, but they may be offered again in the future.", "These classes are ongoing. Registration is closed, but they may be offered again in the future.",
ongoing_events, ongoing_events,
truncate=True, truncate=True,
)
) )
print(footer)
yield (footer)
def main():
result = "\n".join(generate_post())
print(result)
pyclip.copy(result)
print("Copied to clipboard!", file=sys.stderr)
if __name__ == "__main__": if __name__ == "__main__":

36
poetry.lock generated
View File

@ -724,6 +724,21 @@ files = [
{file = "mysqlclient-2.1.1.tar.gz", hash = "sha256:828757e419fb11dd6c5ed2576ec92c3efaa93a0f7c39e263586d1ee779c3d782"}, {file = "mysqlclient-2.1.1.tar.gz", hash = "sha256:828757e419fb11dd6c5ed2576ec92c3efaa93a0f7c39e263586d1ee779c3d782"},
] ]
[[package]]
name = "pasteboard"
version = "0.3.3"
description = "Pasteboard - Python interface for reading from NSPasteboard (macOS clipboard)"
category = "main"
optional = false
python-versions = ">=3.6,<4.0"
files = [
{file = "pasteboard-0.3.3-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:afd171e200316f6b3d3da381476921ca57cb8f26d2fa418f779454913918dbb9"},
{file = "pasteboard-0.3.3-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:f99dd6c7039b755756b2068942c4c2487d6366e5a56eafd6db0ae7aa2a371a0e"},
{file = "pasteboard-0.3.3-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:19229dfa28f41afb5e731ac81e52bbc4212f67d678c082d3e3621cec0628a773"},
{file = "pasteboard-0.3.3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:20a5c53bae8ac8186ecdd621020fb1b072d45a35f9f11a8e4cd5e82d76b485d0"},
{file = "pasteboard-0.3.3.tar.gz", hash = "sha256:d80275e76ff1eaaa5ca3d0e0fd8aecd5ea1298523dfd51f3774b5aaebdde02cf"},
]
[[package]] [[package]]
name = "pathspec" name = "pathspec"
version = "0.11.1" version = "0.11.1"
@ -766,6 +781,25 @@ typing-extensions = {version = ">=4.5", markers = "python_version < \"3.8\""}
docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
[[package]]
name = "pyclip"
version = "0.7.0"
description = "Cross-platform clipboard utilities supporting both binary and text data."
category = "main"
optional = false
python-versions = "*"
files = [
{file = "pyclip-0.7.0-py3-none-any.whl", hash = "sha256:a7b7ea2cfad2dd61e86a529af588d006070d3eb0bd32981afaee5215f4604fec"},
{file = "pyclip-0.7.0.tar.gz", hash = "sha256:57602047a4ceab709bdcd42f3dde6449a3349b95c16154cfdce27376a2072491"},
]
[package.dependencies]
pasteboard = {version = "0.3.3", markers = "platform_system == \"Darwin\""}
pywin32 = {version = ">=1.0", markers = "platform_system == \"Windows\""}
[package.extras]
test = ["pytest"]
[[package]] [[package]]
name = "pywin32" name = "pywin32"
version = "227" version = "227"
@ -1095,4 +1129,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.7" python-versions = "^3.7"
content-hash = "ad657c4c736847ce55f3049ce04eb4a8c502914e083004842ae1f4091dd44c66" content-hash = "5411556fafd7ccd3542124c1efeddecd7dcd00927c0e04d9f558c3a6862a1cb3"

View File

@ -23,6 +23,7 @@ lxml = "^4.5.0"
peewee = "^3.13.2" peewee = "^3.13.2"
mysqlclient = "^2.1.0" mysqlclient = "^2.1.0"
udm-rest-client = "^1.0.6" udm-rest-client = "^1.0.6"
pyclip = "^0.7.0"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
black = "^22.3.0" black = "^22.3.0"