all repos — Private-Trackers-Spreadsheet @ 616a8b56abbc7289db5210d44137c8284a109ea1

A spreadsheet providing detailed information about private trackers

update: switch to bun
HDVinnie unit3d@protonmail.com
Fri, 29 Aug 2025 17:04:13 -0400
commit

616a8b56abbc7289db5210d44137c8284a109ea1

parent

1e15551f9e049753ed437940e45f20f14b51bdb9

6 files changed, 74 insertions(+), 84 deletions(-)

jump to
M .github/workflows/update-jackett.yml.github/workflows/update-jackett.yml

@@ -1,4 +1,4 @@

-name: Update Jackett Trackers +name: Update trackers2.json from Jackett on: schedule: - cron: '0 0 * * 0' # weekly

@@ -12,15 +12,14 @@ timeout-minutes: 20

steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Set up Node.js - uses: actions/setup-node@v4 + - name: Set up Bun + uses: oven-sh/setup-bun@v1 with: - node-version: '20' - cache: 'npm' + bun-version: latest - name: Install dependencies - run: npm ci - - name: Run Jackett fetch script - run: node read.js + run: bun install --no-progress + - name: Update trackers2.json from Jackett + run: bun run update:jackett env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Check for changes
M README.mdREADME.md

@@ -28,22 +28,27 @@

### 💻 **Local Development** ```bash +# Install Bun +curl -fsSL https://bun.sh/install | bash + # Clone the repository git clone https://github.com/hdvinnie/Private-Trackers-Spreadsheet.git # Navigate to project directory cd Private-Trackers-Spreadsheet -# Install dependencies (for Jackett updates) -npm install +# Install deps and start dev server +bun install +bun run dev +``` -# Update Jackett tracker data (optional) -node read.js -# or via npm script -npm run update:jackett +### 💻 **Update trackers2.json from Jackett** + +```bash +bun run update:jackett ``` -> Optional: to increase GitHub API rate limits, set an access token: +> Recommended: Increase GitHub API rate limits when running `npm run update:jackett`, set an access token: > > macOS/Linux > ```bash

@@ -53,6 +58,11 @@ > Windows (PowerShell)

> ```powershell > $Env:GITHUB_TOKEN = "ghp_yourtoken" > ``` + +--- + +## 🤖 Automation +- A weekly GitHub Action is used to update trackers2.json from Jackett and commit changes when a diff is present. ---
A bun.lock

@@ -0,0 +1,25 @@

+{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "private-trackers-spreadsheet", + "dependencies": { + "undici": "^6.19.8", + }, + "devDependencies": { + "js-yaml": "^3.13.1", + }, + }, + }, + "packages": { + "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], + + "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], + + "undici": ["undici@6.21.3", "", {}, "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw=="], + } +}
A bun.server.ts

@@ -0,0 +1,22 @@

+const server = Bun.serve({ + port: Number(process.env.PORT || 3000), + async fetch(req) { + const url = new URL(req.url); + let pathname = url.pathname; + if (pathname === "/") pathname = "/index.html"; + + // Prevent path traversal + pathname = pathname.replace(/\.\.+/g, ""); + + const filePath = `.${pathname}`; + const file = Bun.file(filePath); + if (await file.exists()) { + return new Response(file); + } + + return new Response("Not found", { status: 404 }); + }, +}); + +console.log(`Server running at http://localhost:${server.port}`); +
D package-lock.json

@@ -1,68 +0,0 @@

-{ - "name": "private-trackers-spreadsheet", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "private-trackers-spreadsheet", - "version": "1.0.0", - "dependencies": { - "undici": "^6.19.8" - }, - "devDependencies": { - "js-yaml": "^3.13.1" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/undici": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", - "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - } - } -}
M package.jsonpackage.json

@@ -9,6 +9,8 @@ "devDependencies": {

"js-yaml": "^3.13.1" }, "scripts": { - "update:jackett": "node read.js" + "update:jackett": "bun run read.js", + "dev": "bun run bun.server.ts", + "start": "bun run bun.server.ts" } }