ncore-leaderboard
This is a utility for scraping user ranks from nCore profiles and storing the results in a SQLite database for sorting and analysis. It is designed for efficient data collection using concurrent workers and low-level parsing.
Requirements
- Go 1.26 or later
- just (optional, for automated builds)
- sqlite3 (optional, for CLI queries)
Installation
Clone the repository and install the necessary Go modules:
git clone https://github.com/skidoodle/ncore-leaderboard
cd ncore-leaderboard
go mod tidy
Usage
Create a .env file in the project root with your credentials:
NICK=username
PASS=cookie_pass
Build and execute the program using the provided justfile:
just run
Alternatively, build the binary manually:
go build -o ncore-leaderboard main.go
./ncore-leaderboard
The program processes the profile range defined in main.go and produces
a leaderboard.db file.
Data Analysis
The results are stored in a SQLite database with indices on rank and ID. You can query the data using any standard SQLite client or the following commands:
just top 10 # List the top 10 users by rank
just query 1066 # Find the user at a specific rank
Implementation Details
The scraper utilizes a worker pool to manage concurrent HTTP requests via fasthttp. It performs raw byte signature scanning on HTML responses to extract data without the overhead of a DOM parser. Results are committed to SQLite in a single transaction to ensure atomicity and speed.
License
This software is released under the GNU General Public License v3.0. See the license file for details.