• Stars
    star
    274
  • Rank 150,274 (Top 3 %)
  • Language
    Python
  • License
    MIT License
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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 here, this readme is mostly the setup manual!

Installing

  • simplest: install from PyPi: pip3 install --user orger

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

    python3 -m orger.modules.instapaper --help
        
  • 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 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 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 for all available modules
  • Most modules are using HPI package for accessing the data. You can learn about setting it up and using here.
  • several examples here
  • demonstration of Roam Research module, including a screencast
  • pocket_demo: documented literate demo
  • and a short short demo:
    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()
        

    That ten line program, when run (./modules/github.py), results in a file Github.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
    ....
        

types of modules

  • Mirror

    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

    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 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 Memacs?

    The main reason Orger exists is because I discovered Memacs after I wrote Orger! One day we might merge them, or at least 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 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

More Repositories

1

promnesia

Another piece of your extended mind
Python
1,534
star
2

HPI

Human Programming Interface 🧑👽🤖
Python
1,252
star
3

cloudmacs

Selfhost your Emacs and access it in browser
Shell
431
star
4

orgparse

Python module for reading Emacs org-mode files
Python
323
star
5

grasp

A reliable org-capture browser extension for Chrome/Firefox
JavaScript
286
star
6

cachew

Transparent and persistent cache/serialization powered by type hints
Python
189
star
7

pockexport

Export/access your Pocket data, including highlights!
Python
148
star
8

rexport

Reddit takeout: export your account data as JSON: comments, submissions, upvotes etc. 🦖
Python
137
star
9

kobuddy

Kobo database backup and parser: extracts notes, highlights, reading progress and more
Python
104
star
10

beepb00p

My blog!
Python
73
star
11

exobrain

My external brain 🧠
67
star
12

fbmessengerexport

Export/access you Messenger/Facebook chat messages
Python
60
star
13

ghexport

Export your Github activity: events, repositories, stars, etc.
Python
39
star
14

myinfra

A diagram of my personal infrastructure
Python
38
star
15

dron

What if cron and systemd had a baby?
Python
35
star
16

hypexport

Export/access your Hypothes.is data: annotations and profile info
Python
33
star
17

spotifyexport

Export your personal Spotify data: playlists, saved tracks/albums/shows, etc. as JSON
Python
29
star
18

instapexport

Export your personal Instapaper data: bookmarked articles and highlights
Python
27
star
19

arctee

Atomic tee
Python
24
star
20

telegram-backup-to-txt

Tool to dump telegram into text files for quick search (e.g. with grep)
Python
23
star
21

axol

Personal news feed: search for results on Reddit/Pinboard/Twitter/Hackernews and read as RSS
Python
23
star
22

pinbexport

Export your bookmarks from Pinboard
Python
22
star
23

inorganic

Convert python structures into org-mode
Python
21
star
24

dashboard

Python
18
star
25

goodrexport

Goodreads data export
Python
17
star
26

dotemacs

Emacs config (Doom/Spacemacs) + supplementary files and scripts
Emacs Lisp
14
star
27

telegram2org

Tool to create TODO tasks from Telegram messages in one tap
Python
14
star
28

bleanser

Tool for cleaning old and redundant backups
Python
11
star
29

blinkist-backup

Extract your blinkist hightlights and library books
Python
11
star
30

open-in-editor

Script to jump into files in you text editor, from your web browser
Python
9
star
31

exobrain-md

8
star
32

stexport

Export and access your Stackexchange data
Python
8
star
33

rescuexport

Export/access your Rescuetime data
Python
8
star
34

vkdump

Script for VK.com backup
Python
7
star
35

sufs

Merge multiple directories into one via symlinks
Python
7
star
36

scrapyroo

Full text search over deliveroo restaurants
JavaScript
6
star
37

exobrain-compiler

Scripts I'm using to generate my exobrain
Emacs Lisp
6
star
38

cofunctor-pl

Haskell
5
star
39

autohash

AutoValue extension which speeds up `hashCode` calculation for immutable objects
Java
5
star
40

monzoexport

Tool to export your Monzo transactions
Python
4
star
41

checker-fenum-android-demo

Demo setup for using Checker Framework custom @Fenum annotations in your Android project
Java
4
star
42

pymplate

My Python project template
Python
4
star
43

emfitexport

Python
4
star
44

exports

Various data export scripts that don't deserve a separate repository yet
Python
3
star
45

endoexport

Export/access your Endomondo data
Python
3
star
46

hpi-personal-overlay

Python
3
star
47

mreddit

Simple script to check whether some of your subreddits are not in a multireddit
Python
3
star
48

nordvpn-kill-switch

Tool to prevent DNS leaks. Discontinued in favor of jotyGill/openpyn-nordvpn
Shell
3
star
49

beepb00p-raw

Raw plaintext export of my blog posts
3
star
50

qm-reverse-engineering

Reverse engineering quantified-mind.com
Python
2
star
51

RobolectricPowermock

Java
2
star
52

hpi_fission_talk

Talk on 20210422
CSS
2
star
53

bt-wifi-reconnect

Make BT Wifi great again
Python
2
star
54

kython

A collection of common python stuff I use
Python
2
star
55

scripts

Various personal scripts
Python
2
star
56

porg

Library for xpath-like org-mode queries
Python
2
star
57

haveibeenpwned

Script to track changes on haveibeenpwned (discontinued in favor of https://monitor.firefox.com)
Python
2
star
58

ruci

Rust
1
star
59

karlicoss.github.io

Staging for my blog
HTML
1
star
60

mydata

Public bits of my personal data
1
star
61

gcal-quickeradd

Python
1
star
62

lagrangians

Jupyter Notebook
1
star
63

my-awesome-list

Awesome stuff I am using
1
star
64

masters-thesis

TeX
1
star
65

exobrain-logseq

CSS
1
star
66

exporthelpers

Python
1
star
67

hsbc-parser

Extract transaction data from HSBC credit card PDF statements
Python
1
star
68

dominatepp

Dominate++
Python
1
star
69

hypothesis-top-annotators

Python
1
star
70

scrapyroo-slides

CSS
1
star
71

android-template

My empty Android project template
Groovy
1
star
72

python_duplicate_warnings_investigation

Python
1
star
73

promnesia-demos

Binary assets for Promnesia
1
star
74

.emacs.d

My emacs config
Emacs Lisp
1
star
75

backup-trees

Python
1
star
76

rtm-backup

Script to backup your Remember The Milk account data
Python
1
star
77

dropbox-paranoid

Tool to detect Dropbox conflicts and prevent symlink mess
Python
1
star
78

syncthing-paranoid

Python
1
star