From 65bf00f4526b0385f33a05416c3841fd62a9d0ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sat, 9 Apr 2022 22:33:43 +0100 Subject: [PATCH] Add linkutils --- .gitignore | 1 + flake.nix | 4 ++++ utils/__init__.py | 0 utils/linkutils.py | 25 +++++++++++++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 .gitignore create mode 100644 utils/__init__.py create mode 100644 utils/linkutils.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c18dd8d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/flake.nix b/flake.nix index 1999251..5e902e9 100644 --- a/flake.nix +++ b/flake.nix @@ -15,6 +15,10 @@ pkgs = import nixpkgs {inherit system;}; in { devShell = pkgs.mkShell { + shellHook = '' + export PYTHONPATH="$(pwd)" + ''; + nativeBuildInputs = with pkgs; [ zip unzip diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/linkutils.py b/utils/linkutils.py new file mode 100644 index 0000000..d572f97 --- /dev/null +++ b/utils/linkutils.py @@ -0,0 +1,25 @@ +"""Utility functions for handling links.""" +import csv +from typing import List, NamedTuple, TextIO + + +class Link(NamedTuple): + """A type for links - contains its url and date.""" + + url: str + date: str + + +def dump_links(links: List[Link], f: TextIO): + """Dump links to a file in csv format.""" + writer = csv.writer(f) + writer.writerow(["index", "link", "date"]) + for i, link in enumerate(links): + writer.writerow([i, link[0], link[1]]) + + +def read_links(f: TextIO) -> List[Link]: + """Read links from a csv format.""" + reader = csv.reader(f) + next(reader) # Skip the header + return [Link(link[1], link[2]) for link in reader]