lib.itmens/journal/importers/__init__.py

39 lines
972 B
Python
Raw Normal View History

import os
import zipfile
2025-03-03 00:15:53 -05:00
from .csv import CsvImporter
2024-12-26 01:51:24 -05:00
from .douban import DoubanImporter
from .goodreads import GoodreadsImporter
from .letterboxd import LetterboxdImporter
2025-03-06 11:21:01 -05:00
from .ndjson import NdjsonImporter
2024-12-26 01:51:24 -05:00
from .opml import OPMLImporter
2025-03-06 11:21:01 -05:00
def get_neodb_importer(
filename: str,
) -> type[CsvImporter] | type[NdjsonImporter] | None:
if not os.path.exists(filename) or not zipfile.is_zipfile(filename):
return None
with zipfile.ZipFile(filename, "r") as z:
files = z.namelist()
if any(f == "journal.ndjson" for f in files):
2025-03-06 11:21:01 -05:00
return NdjsonImporter
if any(
f.endswith("_mark.csv")
or f.endswith("_review.csv")
or f.endswith("_note.csv")
for f in files
):
return CsvImporter
2025-03-03 00:15:53 -05:00
__all__ = [
"CsvImporter",
2025-03-06 11:21:01 -05:00
"NdjsonImporter",
2025-03-03 00:15:53 -05:00
"LetterboxdImporter",
"OPMLImporter",
"DoubanImporter",
"GoodreadsImporter",
"get_neodb_importer",
2025-03-03 00:15:53 -05:00
]