# 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//Tasks ``` 3. Commit the updated `tasks.json` ## License GPL-3.0 — see [LICENSE](LICENSE).