- Scrapes 1592 Demonic Pacts tasks from the OSRS Wiki into tasks.json - Zola static site with OSRS-themed dark UI, filters, search, and progress tracking - Client-side localStorage persistence and RuneLite JSON import/export - Live countdown to league end date in the site header
77 lines
2.2 KiB
Markdown
77 lines
2.2 KiB
Markdown
# Leagues Task Fixer
|
|
|
|
A static website for tracking [Old School RuneScape](https://oldschool.runescape.wiki) Leagues task completion. Built with [Zola](https://www.getzola.org).
|
|
|
|
## Features
|
|
|
|
- **1592 tasks** for the Demonic Pacts League, scraped from the OSRS Wiki
|
|
- Filter by difficulty, area, and completion status
|
|
- Search by task name or description
|
|
- Completion status persisted in browser `localStorage`
|
|
- Live countdown to league end
|
|
- Import task completions from a RuneLite JSON export
|
|
- Export completion state as JSON (compatible with tasks-tracker-plugin format)
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
OSRS-Task-Fixer/
|
|
├── scripts/
|
|
│ ├── scrape_tasks.py # Scrapes task data from the OSRS Wiki
|
|
│ └── requirements.txt
|
|
└── website/ # Zola site
|
|
├── config.toml # Site config (league name, end date)
|
|
├── content/
|
|
├── templates/
|
|
└── static/
|
|
├── data/tasks.json # Generated task data (committed)
|
|
├── css/style.css
|
|
└── js/tracker.js
|
|
```
|
|
|
|
## Development
|
|
|
|
**Prerequisites:** [Zola](https://www.getzola.org/documentation/getting-started/installation/) and Python 3.10+
|
|
|
|
```bash
|
|
# Serve locally with live reload
|
|
cd website
|
|
zola serve
|
|
|
|
# Build static output to website/public/
|
|
cd website
|
|
zola build
|
|
```
|
|
|
|
## Updating Task Data
|
|
|
|
Re-run the scraper whenever task data changes on the wiki:
|
|
|
|
```bash
|
|
pip install -r scripts/requirements.txt
|
|
python scripts/scrape_tasks.py
|
|
```
|
|
|
|
The updated `website/static/data/tasks.json` can then be committed.
|
|
|
|
## RuneLite Import
|
|
|
|
Export your task completions from RuneLite using either:
|
|
- [tasks-tracker-plugin](https://github.com/osrs-reldo/tasks-tracker-plugin)
|
|
- [osleague-runelite-plugin](https://github.com/tylerthardy/osleague-runelite-plugin)
|
|
|
|
Then click **Import RuneLite** on the site and select the exported `.json` file.
|
|
|
|
## Updating for a New League
|
|
|
|
1. Update `league_name` and `league_end_date` in `website/config.toml`
|
|
2. Re-run the scraper with the new league's wiki URL:
|
|
```bash
|
|
python scripts/scrape_tasks.py --url https://oldschool.runescape.wiki/w/<LeagueName>/Tasks
|
|
```
|
|
3. Commit the updated `tasks.json`
|
|
|
|
## License
|
|
|
|
GPL-3.0 — see [LICENSE](LICENSE).
|