adsfolio.pdf.obsidian

Obsidian-friendly Markdown note generation for tracked PDFs.

class adsfolio.pdf.obsidian.NotePlan(original_filename, note_filename, note_path, pdf_path, action)[source]

Bases: object

One planned Obsidian note for a tracked PDF.

Parameters:
action: str
note_filename: str
note_path: pathlib.Path
original_filename: str
pdf_path: pathlib.Path
class adsfolio.pdf.obsidian.ObsidianNoteWriter(client=None)[source]

Bases: object

Generate Obsidian-friendly Markdown notes from sidecar-tracked PDF metadata.

Parameters:

client (ADSClient | None)

MAX_BATCH_TERMS = 2000
fetch_missing_abstracts(bibcodes)[source]

Batch-fetch abstracts for bibcodes from ADS. Returns bibcode -> abstract.

Parameters:

bibcodes (list[str])

Return type:

dict[str, str]

generate(directory, state, notes_dir=None, apply=False, force=False)[source]

Plan (and, if apply, write) Obsidian notes for every tracked PDF.

Parameters:
Return type:

list[adsfolio.pdf.obsidian.NotePlan]

render_note(record, pdf_path)[source]

Render one Obsidian Markdown note (YAML frontmatter + body) for record.

Parameters:
Return type:

str