All Projects → karlicoss → Orger

karlicoss / Orger

Licence: mit
Tool to convert data into searchable and interactive org-mode views

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Orger

Org Java
Org mode files Java parser
Stars: ✭ 138 (-28.12%)
Mutual labels:  org-mode
Orgparse
Python module for reading Emacs org-mode files
Stars: ✭ 156 (-18.75%)
Mutual labels:  org-mode
Orgro
An org-mode file viewer for iOS and Android
Stars: ✭ 175 (-8.85%)
Mutual labels:  org-mode
Org Graph View
View Org buffers as a clickable, graphical mind-map
Stars: ✭ 141 (-26.56%)
Mutual labels:  org-mode
Orgzly Android
Outliner for taking notes and managing to-do lists
Stars: ✭ 2,042 (+963.54%)
Mutual labels:  org-mode
Awesome Scientific Writing
⌨️ A curated list of awesome tools, demos and resources to go beyond LaTeX
Stars: ✭ 162 (-15.62%)
Mutual labels:  org-mode
Walkman
Write HTTP requests in Org mode and replay them at will using cURL
Stars: ✭ 120 (-37.5%)
Mutual labels:  org-mode
Braindump
knowledge repository managed with org-mode and org-roam.
Stars: ✭ 184 (-4.17%)
Mutual labels:  org-mode
Org Msg
OrgMsg is a GNU/Emacs global minor mode mixing up Org mode and Message mode to compose and reply to emails in a Outlook HTML friendly style.
Stars: ✭ 153 (-20.31%)
Mutual labels:  org-mode
Slideshow
slideshow gems - write your slides / talks / presentations in plain text with markdown formatting conventions
Stars: ✭ 173 (-9.9%)
Mutual labels:  plaintext
Swift Org
org-mode with swift
Stars: ✭ 146 (-23.96%)
Mutual labels:  org-mode
Writingwithemacs
Tips, Examples, and Resources for Writing with Emacs
Stars: ✭ 150 (-21.87%)
Mutual labels:  org-mode
Org Pdftools
A custom org link type for pdf-tools
Stars: ✭ 165 (-14.06%)
Mutual labels:  org-mode
Hledger
A reliable, user-friendly Plain Text Accounting tool with command line, terminal and web interfaces.
Stars: ✭ 1,887 (+882.81%)
Mutual labels:  plaintext
Go Org
Org mode parser with html & pretty printed org rendering. also shitty static site generator.
Stars: ✭ 177 (-7.81%)
Mutual labels:  org-mode
Novels.org
Novels.org - Your Novels in Plain Text (Emacs . org-mode)
Stars: ✭ 120 (-37.5%)
Mutual labels:  org-mode
Hexo Renderer Org
Hexo renderer plugin for emacs org-mode
Stars: ✭ 157 (-18.23%)
Mutual labels:  org-mode
Ob Http
make http request within org-mode babel
Stars: ✭ 191 (-0.52%)
Mutual labels:  org-mode
Org Books
Reading list management with org mode
Stars: ✭ 186 (-3.12%)
Mutual labels:  org-mode
Plainbudget
Minimalist Plain Text Budgeting
Stars: ✭ 167 (-13.02%)
Mutual labels:  plaintext

-- org-confirm-babel-evaluate: nil; --

Orger converts your data into a hierarchical Org-mode representation to allow for quick access and search.

I write in detail about usecases and motivation for it [[https://beepb00p.xyz/orger.html][here]], this readme is mostly the setup manual!

  • Installing
  • simplest: install from [[https://pypi.org/project/orger][PyPi]]: pip3 install --user orger

    After that you should be able to run orger modules via =python3 -m=:

    : python3 -m orger.modules.instapaper --help

  • [[https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs][editable]] install

    This will allow you to quickly prototype and debug, the local changes to the code will be reflected immiedately.

    • clone: =https://github.com/karlicoss/orger /path/to/orger=
    • =cd /path/to/orger=
    • =pip3 install --user .=
    • after that you can use =python3 -m orger.modules.modulename=, same way as the previous section, or run =modules/modulename.py= directly
  • NOTE: most Orger modules are relying on [[https://github.com/karlicoss/HPI#readme][HPI]] module for input data

    Please refer to the HPI install guide/documentation and make sure the corresponding data providers work (e.g. via =hpi doctor= command).

  • [optional]: install [[https://pandoc.org/installing.html][pandoc]], it might give you better org-mode outputs for some modules

    If you do have pandoc installed, but don't want the module to use it, pass =--disable-pandoc= flag to it.

  • Usage and examples I usually run Orger modules overnight via cron.
  • see [[./modules][modules]] for all available modules

  • Most modules are using [[https://github.com/karlicoss/HPI][HPI]] package for accessing the data. You can learn about setting it up and using [[https://github.com/karlicoss/HPI/blob/master/doc/SETUP.org#orger][here]].

  • several examples [[https://beepb00p.xyz/orger.html#examples][here]]

  • [[https://beepb00p.xyz/myinfra-roam.html#orger][demonstration]] of Roam Research module, including a [[https://www.youtube.com/watch?v=ib_PDJpTh-Q][screencast]]

  • [[./modules/pocket_demo.py][pocket_demo]]: documented literate demo

  • and a short short demo:

    #+BEGIN_SRC python from orger import Mirror from orger.inorganic import node, link from orger.common import dt_heading

    import my.coding.github as github_data

    class Github(Mirror): def get_items(self): for event in github_data.get_events(): yield node(dt_heading(event.dt, event.summary))

    Github.main() #+END_SRC

    That ten line program, when run (=./modules/github.py=), results in a file =Github.org=:

    #+BEGIN_SRC org

    AUTOGENERATED BY /code/orger/github.py

    ,* [2016-10-30 Sun 10:29] opened PR Add enter and exit to Pool stub ,* [2016-11-10 Thu 09:29] opened PR Update gradle to 2.14.1 and gradle plugin to 2.1.1 ,* [2016-11-16 Wed 20:20] commented on issue Linker error makes it impossible to use a stack-provided ghc ,* [2016-12-30 Fri 11:57] commented on issue Fix performance in the rare case of hashCode evaluating to zero ,* [2019-09-21 Sat 16:51] commented on issue Tags containing letters outside of a-zA-Z .... #+END_SRC

  • types of modules
  • Mirror

    #+begin_src python :dir src :exports results :results drawer output import orger print(orger.Mirror.doc) #+end_src

    #+RESULTS: :results:

    *Mirror* (old name =StaticView=): mirrors *all data* from a source, and generated from scratch every time, hence *read only*.
    

    🔚

    You can run such module with

    : ./orger_module.py --to /path/to/output.org

  • Queue

    #+BEGIN_SRC python :dir src :exports results :results drawer output import orger print(orger.Queue.doc) #+END_SRC

    #+RESULTS: :results:

    *Queue* (old name =InteractiveView=): works as a queue, *only previously unseen items* from the data source are added to the output org-mode file.
    
    To keep track of previously seen iteems, it's using a separate JSON =state= file.
    
    A typical usecase is a todo list, or a content processing queue.
    You can use such a module as you use any other org-mode file: schedule/refile/comment/set priorities, etc.
    

    🔚

    Typically you'd want to use these as a source of tasks for your todo list. See [[./modules/ip2org.py][ip2org]] as an example.

    You can run such a module as:

    : ./orger_module.py --to /path/to/output.org

    This will keep the state file in your user config dir (e.g. =~/.config/orger/=).

    Alternatively, you can pass the state file explicitly:

    : ./orger_module.py --to /path/to/output.org --state /path/to/state.json

  • FAQ
  • Why are the files output by some modules read only?

    =Mirror= type modules output read only files, so you don't modify them by accident, they are overwritten every time.

    If you want to temporary lift this restriction (e.g. to experiment with the format), you can use =chmod +w=, or =M-x toggle-read-only= in Emacs.

  • How is it different from [[https://github.com/novoid/Memacs][Memacs]]?

    The main reason Orger exists is because I discovered Memacs after I wrote Orger! One day we might merge them, or at least [[https://github.com/karlicoss/orger/issues/5][reuse org-mode formatting routines]].

    That said there are some differences at the moment:

    • Memacs is more of a lifelogging utility, generating a linear output with the intent to be used with your org agenda
    • Orger's =Mirror= modules are meant to be more of a full local reflection of a data source, preserving the hierarchy as much as possible
    • Orger's =Queue= module: I believe they don't have Memacs analogue (but please correct me if I'm wrong)
    • Orger modules are slim and relying on [[https://github.com/karlicoss/HPI][HPI]] to encapsulate data access. But you can also use HPI with Memacs, please ping me if you set up such an integration!
  • I want active timestamps for org-agenda integration

    Pass the =--timestamp= argument to the module, for example:

    : modules/polar.py --timestamps active

  • Similar projects
  • [[https://github.com/novoid/Memacs][Memacs by novoid]]
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].