https://github.com/thiswillbeyourgithub/mini_litoy
Minimalist LiTOY task sorting algorithm based on ELO scores
https://github.com/thiswillbeyourgithub/mini_litoy
Last synced: 7 months ago
JSON representation
Minimalist LiTOY task sorting algorithm based on ELO scores
- Host: GitHub
- URL: https://github.com/thiswillbeyourgithub/mini_litoy
- Owner: thiswillbeyourgithub
- License: lgpl-3.0
- Created: 2024-05-31T15:17:54.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-04T21:24:56.000Z (over 1 year ago)
- Last Synced: 2024-12-09T22:50:01.059Z (about 1 year ago)
- Language: Python
- Size: 127 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# mini_LiTOY
Minimalist approach to the [LiTOY task sorting algorithm](https://github.com/thiswillbeyourgithub/LiTOY-aka-List-that-Outlives-You) based on [ELO scores](https://en.wikipedia.org/wiki/Elo_rating_system).
*Note: for an android version with similar intention, take a look at [rank-my-favs](https://github.com/dessalines/rank-my-favs/)*
# Features
* Minimalist
* Statically typed via typeguard
* Made to be extensible
* Supports callbacks
# FAQ
### What is LiTOY?
[LiTOY](https://github.com/thiswillbeyourgithub/LiTOY-aka-List-that-Outlives-You) was a personal project. The idea is to dump all your TODOs in one place, then rank them using the mean ELO scores of question answer. The default questions are `Which is more important to you?` and `Which takes the less time?` but you can use anything you like instead!
### Why make mini_LiTOY?
mini_LiTOY's idea is to keep the code idea but this time in a minimalist python script. As long as the user takes care of storing the tasks in a text files, the LiTOY algorithm will update an output json (or toml) based on the score. The first use for this will be to rank my [Omnivore](https://github.com/omnivore-app/omnivore) reading queue by downloading titles of articles to read via their API, then uploading the ELO score as a label. This can be found in the examples folder.
# Usage
* `python -m pip install mini_LiTOY` or `python -m pip install git+https://github.com/thiswillbeyourgithub/mini_LiTOY.git`
* Then you can either launch it with `python -m mini_LiTOY [ARGS]` or use the alias `mlitoy [ARGS]`
* `mlitoy --input_file my_text_file.txt --output_path output_file.json`
## Notes
* each new (nonempty nor commented) line in input_file will be added to the input_file.json with the default values. Each answer from the user will update the json file.
* In case anything goes wrong, you can see the recovery files and logs using --verbose.
* You can use toml file format instead of json. Just use an `output_path` that ends with ".toml" instead of ".json".
## Examples
* To sort the elements by ELO score: `cat output_file.json | jq 'sort_by(.ELO)'`