████ ███ ████ █████ ████ █████ █████ █████ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █
████ █████ ████ ████ ████ ████ ████ ████ ████ █ █
█ █ █ █ █ █ █ █ █ █ █ █
█ █ █ █ █████ █ █ █ █████ █████ ████
A personal thermal newspaper that automatically generates a daily briefing
Paper-feed has useful modules such as the weather, market metrics, quotes, XKCD comics, stock summaries, etc. which print directly to a USB ESC/POS thermal printer. It can also print arbitrary text and images, making it a lightweight dashboard on paper.
- Weather forecast for any city (powered by wttr.in)
- Market performance summary
- Individual stock lookup
- Random inspirational quotes
- Latest XKCD comic
- Print custom text
- Print local images
- Terminal test mode (no printer required)
- Python 3.13+
- USB ESC/POS thermal printer (or use
--testmode for terminal output)
Clone the repository:
git clone https://github.com/brick-24/paper-feed.git cd paper-feed
Install dependencies:
pip install -r requirements.txt
Update the USB Vendor ID and Product ID in config.py:
DEFAULT_VENDOR_ID = 0x0483 DEFAULT_PRODUCT_ID = 0x5840
These values must match your printer.
Run with no arguments to print the default feed:
python daily_arg.py
By default, this prints:
- Weather
- Market summary
- Quote
python daily_arg.py --weatherSpecify a city:
python daily_arg.py --weather --city Delhipython daily_arg.py --marketspython daily_arg.py --stock AAPLor
python daily_arg.py --stock RELIANCE.NSDisplays:
- Weekly return
- Monthly return
- Yearly return
- Market capitalization
- P/E ratio
- Dividend yield
- 52-week high/low
python daily_arg.py --quotepython daily_arg.py --xkcdpython daily_arg.py --text "Hello, World!"python daily_arg.py --image path/to/image.pngPrint everything to the terminal instead of a USB printer:
python daily_arg.py --testThis is useful for development and debugging
- RSS news headlines
- Calendar integration
- Todo list printing
- GitHub notifications
- Daily schedule
- QR codes
- Custom templates
- Automatic scheduled printing
If you have any ideas please create issues with the prefix "feature: ..."