Skip to content
/ ck Public
forked from alinush/ck

A Python tool to manage and tag your bibliography (.bib and .pdf) files on Dropbox

Notifications You must be signed in to change notification settings

aluex/ck

 
 

Repository files navigation

CK

A command-line tool for managing your bibliography (i.e., .bib files and .pdf files) across multiple machines using Dropbox.

Features:

  • add papers, sorted by citation key, to Dropbox
  • easily open any paper given its citation key
  • organize papers by tagging them
  • generate a full .bib file of all your papers
  • export papers with a particular tag

Setup

pip install click pyperclip beautifulsoup4 appdirs fake-useragent bibtexparser lxml

Fill in ck.config and put it in your user_config_dir folder.

For auto tag-suggesting, you can install pdfgrep (optional):

apt install pdfgrep # Ubuntu/Debian
brew install pdfgrep # mac

To install bash auto-completion, run

source bash_completion.d/ck

Other useful, related repositories

Just search GitHub for more: "ieeexplore downloadcitations"

How to use

# add a paper to your library given a paywall URL (e.g., ACM DL, SpringerLink, IEEEXplore)
# or an eprint url (e.g., IACR eprint)
ck add <paper-url> <citation-key>

# add a bib file to your library without a PDF
ck open <citation-key>.bib
# ...and edit the .bib file and save it

# open a paper's PDF
ck open <citation-key>
ck open <citation-key>.pdf

# open a paper's .bib file
ck open <citation-key>.bib

# tag the paper with <tag> (or enter tag manually from keyboard)
ck tag <citation-key> [<tag>]

# search all your .bib files and print matching papers' citation keys
ck search <query>

Best practices

Q: How to deal with multiple published versions of the same paper (eprint, conference, journal)?
A: Have each version as a different CK, since it might contain additional info that needs to be cited.

TODOs

  • ck tag/untag/genbib/copypdfs autocompletion of tags
  • figure out how to have a setup.py that installs this thing
    • add a requirements.txt too
  • if PDFs are not available from publisher, try sci-hub.tw: see python example here
  • might want separate updatebib and updatepdf commands, to support adding the PDF and .bib file from different locations. Then, ck add can just call both of them, with overwrite=false
    • If called individually, they will leave the library in an inconsistent state, so the user should be warned (since either PDF or .bib file might be missing)
    • URL handler should be split into a download_pdf and a download_bib, so we can call them separately in updatebib/pdf
      • this is useful when PDFs are paywalled, but we still want the .bib
  • Cryptology ePrint updater: need it to update papers to their latest versions
    • ck should run this once a day
    • should move old paper to CK<year>.<ckdateadded>.pdf (make sure no naming conflicts)
  • tools for making the .bib files consistent
    • titles should have double brackets
    • same conference shouldn't have different names
    • author names should always be separated by ' and '
    • similar or incomplete author names
  • ck command
    • list subcommand
      • display associated file info
        • nopdf
        • nobib
        • md
        • any other files (e.g., ABC19.slides.pdf)
      • add sort-by options
        • need sort by most recently added (with date & time displayed)
      • list all conferences across papers
      • when invoked without recursion, tell user what other subtags are there in the current subdir?
    • open subcommand
      • add support for various associated files: .bib, .html, .md, .notes.[0-9]*.pdf, .slides.pdf, .etc
      • if you type in a partial citation key, should list all matches
        • if just one match, should just open it, displaying a warning that it only partially matched so as to not train you to use the wrong CK
      • if you type an ambiguous citation key (lowercase / uppercase), maybe you should be prompted for what to open, because there won't be many matches.
    • untag subcommand
      • right now, if we only have a .bib file without any PDFs, untag will not detect any untagged papers. how to handle?

About

A Python tool to manage and tag your bibliography (.bib and .pdf) files on Dropbox

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 91.8%
  • Shell 8.2%