API อย่างไม่เป็นทางการ ( แบ็กเอนด์ ) สำหรับเครื่องมือติดตามฝนตกหนัก RuTracker, Kinozal, RuTor และ NoNameClub ใช้สำหรับการค้นหาการเผยแพร่อย่างรวดเร็วและรวมศูนย์ การรับไฟล์ทอร์เรนต์ ลิงก์แม่เหล็ก และข้อมูลโดยละเอียดเกี่ยวกับการเผยแพร่ตามชื่อภาพยนตร์ ซีรีส์ หรือตัวระบุการเผยแพร่ และยังให้ฟีด RSS ข่าวสารแก่ผู้ให้บริการทั้งหมดด้วยการกรองตามหมวดหมู่
คุณสามารถใช้เวอร์ชันสาธารณะและเวอร์ชันฟรีที่เผยแพร่บน Vercel รวมถึงปรับใช้ด้วยตนเองบนแพลตฟอร์มคลาวด์ใดๆ ที่ใช้ เซิร์ฟเวอร์แบบไร้เซิร์ฟเวอร์ หรือในเครื่องด้วย Docker
ข้อมูลจำเพาะ ของ OpenAPI มีอยู่ในเว็บไซต์ Swagger Hub อย่างเป็นทางการ
เผยแพร่ภายใต้ใบอนุญาต MIT
คุณไม่จำเป็นต้องใช้ VPN เมื่อใช้เวอร์ชันสาธารณะ เนื่องจากบริการนี้อยู่ในบทบาทเกตเวย์ ซึ่งช่วยให้คุณสามารถรวม API
เข้ากับโปรเจ็กต์ใดก็ได้โดยไม่มีข้อจำกัดด้านเครือข่าย และยังใช้ฟีดข่าวบนอุปกรณ์มือถือ เช่น ผ่าน ReadYou หรือเครื่องป้อน ไม่จำเป็นต้องมีโทเค็นการเข้าถึงและการอนุญาตในตัวติดตามเพื่อให้ API ทำงาน
โครงการได้รับแรงบันดาลใจจาก Torrent-Api-py (เดิมคือ Torrents-Api) สำหรับผู้ให้บริการฝนตกหนักที่พูดภาษารัสเซีย
XML
และ JSON
การใช้งานส่วนต่อประสานผู้ใช้ที่เรียบง่าย (เช่น Jackett) นั้นมีให้ผ่านส่วนขยายของ Google Chrome ? Libre Kinopoisk สำหรับการค้นหาการกระจายในตัวติดตามทอร์เรนต์ที่มีอยู่ทั้งหมดและดาวน์โหลดเนื้อหาผ่านลิงก์แม่เหล็กหรือไฟล์ทอร์เรนต์โดยตรงจากตัวติดตาม
ปลั๊กอิน Torrent Search สำหรับการค้นหาการแจกแจงในตัวติดตามทอร์เรนต์ที่มีอยู่ทั้งหมดอย่างรวดเร็วผ่านอินเทอร์เฟซ Wox ซึ่งสามารถติดตั้งได้จากที่เก็บปลั๊กอิน
ชื่อผู้ให้บริการ | กระจกเงา | การลงทะเบียน | กรองการค้นหาและ RSS | ค้นหาด้วยรหัส | อาร์เอสเอส |
---|---|---|---|---|---|
RuTracker | 3 | ใช่* | หมวดหมู่ | ใช่ | พื้นเมือง |
คิโนซัล | 3 | ใช่* | หมวดหมู่ ปีที่ออก รูปแบบ | ใช่ | กำหนดเอง |
รท | 2 | เลขที่ | หมวดหมู่ | ใช่ | กำหนดเอง |
โนเนมคลับ | 1 | เลขที่ | หมวดหมู่ | ใช่ | พื้นเมือง |
* จำเป็นต้องลงทะเบียนเมื่อดาวน์โหลดไฟล์ torrent ผ่านลิงก์โดยตรงเท่านั้น การแจกแจงทั้งหมดเมื่อค้นหาด้วย รหัส (ตัวระบุ) จะมี ข้อมูลแฮชรวม และ ลิงก์แม่เหล็ก (มีรายการเซิร์ฟเวอร์ตัวติดตามฝนตกหนักอยู่แล้ว) ซึ่งอนุญาตให้เริ่มโหลดการกระจายเนื้อหาทันทีหรือสร้างไฟล์ฝนตกหนักหลังจากดาวน์โหลดข้อมูลเมตาโดยใช้ไคลเอนต์ฝนตกหนักใด ๆ เช่น qBittorrent (รองรับ RSS และปลั๊กอินการค้นหา), Transmission หรือ Webtorrent Desktop
การเข้าถึงฟีด RSS สำหรับ RuTracker และ NoNameClub ทำได้โดยการเปลี่ยนเส้นทางช่องดั้งเดิม สำหรับผู้ให้บริการ Kinozal และ RuTor มีการใช้ฟีดข่าวที่ส่งจากหน้าแรกซึ่งรองรับการกรองตามหมวดหมู่
คุณสามารถปรับใช้ API สาธารณะของคุณเองกับ Vercel ได้จากพื้นที่เก็บข้อมูลนี้ เพียงคลิกปุ่มด้านล่างแล้วทำตามคำแนะนำ:
โปรเจ็กต์ใช้ GitHub Actions เพื่อสร้างคอนเทนเนอร์ Docker และทดสอบการทำงานของตำแหน่งข้อมูลทั้งหมดโดยอัตโนมัติ
อัปโหลดรูปภาพและเรียกใช้คอนเทนเนอร์จาก Docker Hub:
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped lifailon/torapi:latest
หากคุณใช้พร็อกซีเซิร์ฟเวอร์:
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped
-e PROXY_ADDRESS= " 192.168.3.100 "
-e PROXY_PORT= " 9090 "
-e USERNAME= " TorAPI "
-e PASSWORD= " TorAPI "
lifailon/torapi:latest
แทนที่เนื้อหาของตัวแปรสำหรับการเชื่อมต่อกับพร็อกซีเซิร์ฟเวอร์ด้วยตัวคุณเอง หากคุณไม่ได้ใช้การอนุญาตบนพร็อกซีเซิร์ฟเวอร์ ก็อย่าระบุพารามิเตอร์เหล่านี้เมื่อเริ่มต้นคอนเทนเนอร์
คุณสามารถดาวน์โหลดและใช้ไฟล์นักเทียบท่าเพื่อสร้างคอนเทนเนอร์จาก Docker Hub:
curl -sO https://raw.githubusercontent.com/Lifailon/TorAPI/main/docker-compose.yml
curl -sO https://raw.githubusercontent.com/Lifailon/TorAPI/main/.env.yml
แก้ไขตัวแปรสภาพแวดล้อมในไฟล์ .env (จำเป็นหากใช้พร็อกซีเซิร์ฟเวอร์) และเริ่มต้นคอนเทนเนอร์:
docker-compose up -d
คุณสามารถบันทึกภาพที่ดาวน์โหลดจาก Docker Hub เพื่อถ่ายโอนไปยังเครื่องที่ไม่มีสิทธิ์เข้าถึง Docker Hub ได้:
docker save -o TorAPI-Docker-Image.tar lifailon/torapi
ในไฟล์รีลีส คุณสามารถดาวน์โหลดอิมเมจที่เตรียมไว้และบู๊ตบนเครื่องของคุณได้:
docker load -i TorAPI-Docker-Image.tar
เรียกใช้คอนเทนเนอร์จากอิมเมจในเครื่องที่ดาวน์โหลด:
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped lifailon/torapi:latest
คุณสามารถสร้างอิมเมจด้วยตนเองจากไฟล์ต้นฉบับของโปรเจ็กต์โดยใช้ dockerfile
โคลนที่เก็บนี้:
git clone https://github.com/Lifailon/TorAPI
cd TorAPI
แก้ไขตัวแปรหรือการตั้งค่าอื่นๆ ใน dockerfile
หากจำเป็น:
ENV PROXY_ADDRESS= " 192.168.3.100 "
ENV PROXY_PORT= " 9090 "
ENV USERNAME= " TorAPI "
ENV PASSWORD= " TorAPI "
สร้างอิมเมจและรันคอนเทนเนอร์:
docker build -t torapi .
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped torapi
หากต้องการติดตั้งโปรเจ็กต์และการขึ้นต่อกันทั้งหมด คุณสามารถใช้ตัวจัดการแพ็คเกจ npm:
npm install -g torapi
โคลนพื้นที่เก็บข้อมูล ติดตั้งการขึ้นต่อกัน และเริ่มต้นเซิร์ฟเวอร์:
git clone https://github.com/Lifailon/TorAPI
cd TorAPI
npm install
npm start
โดยค่าเริ่มต้น เซิร์ฟเวอร์จะถูกเปิดใช้งานบนพอร์ต 8443
คุณสามารถระบุพอร์ตอื่นได้:
npm start -- -- port 2024
สำหรับการพัฒนา ให้ใช้โหมด nodemon (รีสตาร์ทเซิร์ฟเวอร์เมื่อเนื้อหาของไฟล์เปลี่ยนแปลง):
npm run dev
ใช้พรอกซีสำหรับคำขอทั้งหมด:
npm start -- -- port 2024 -- proxyAddress 192.168 .3 .100 -- proxyPort 9090
หากจำเป็นต้องมีการอนุญาตบนพร็อกซีเซิร์ฟเวอร์:
npm start -- -- port 2024 -- proxyAddress 192.168 .3 .100 -- proxyPort 9090 -- username TorAPI -- password TorAPI
เอกสารประกอบมีอยู่ใน Swagger UI ที่: http://localhost:8443/docs
ผ่านโมดูล swagger-ui-express เอกสารอธิบายผ่านไลบรารี swagger-jsdoc
หากต้องการสร้างไฟล์เอกสาร Swagger ที่เป็นปัจจุบันหรืออัปเดตในรูปแบบ JSON
และ YAML
ให้ใช้คำสั่ง:
npm run docs
คุณสามารถทำการทดสอบเพื่อตรวจสอบความสมบูรณ์ของปลายทางทั้งหมดในคอนโซลได้อย่างรวดเร็ว:
npm start -- --test
ในระหว่างการทดสอบ เซิร์ฟเวอร์ภายในจะเริ่มทำงาน มีการร้องขอไปยังจุดสิ้นสุด /api/provider/test
เอาต์พุตจะถูกบันทึกในรูปแบบ JSON และเซิร์ฟเวอร์ออก
เปลี่ยนพารามิเตอร์ส่วนหัวตามคำขอ:
npm start -- --test --q " The Rookie "
การทดสอบแบบกำหนดพารามิเตอร์ยังมีให้ใช้งานผ่าน GitHub Actions โดยใช้ Postman ผ่าน newman ในรูปแบบ JUnit
:
หากต้องการรันการทดสอบในเครื่อง:
npm install -g newman
newman run postman-tests.json
--iteration-count 1
--env-var " baseUrl=http://localhost:8443 "
--env-var " query=The Rookie "
--env-var " queryAllPage=test "
--env-var " categoryRuTracker=1605 "
--env-var " categoryKinozal=20 "
--env-var " categoryRuTor=10 "
--env-var " categoryNoNameClub=1318 "
...
┌─────────────────────────┬────────────────────┬───────────────────┐
│ │ executed │ failed │
├─────────────────────────┼────────────────────┼───────────────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ requests │ 45 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ test-scripts │ 167 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ prerequest-scripts │ 154 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ assertions │ 169 │ 0 │
├─────────────────────────┴────────────────────┴───────────────────┤
│ total run duration: 32s │
├──────────────────────────────────────────────────────────────────┤
│ total data received: 1.95MB (approx) │
├──────────────────────────────────────────────────────────────────┤
│ average response time: 663ms [min: 2ms, max: 6.1s, s.d.: 1216ms] │
└──────────────────────────────────────────────────────────────────┘
- LibreKinopoisk - ส่วนขยายของ Google Chrome ที่เพิ่มปุ่มลงในเว็บไซต์ Kinopoisk และจัดเตรียมอินเทอร์เฟซ TorAPI ในรูปแบบ Jackett (โดยไม่จำเป็นต้องติดตั้งส่วนเซิร์ฟเวอร์และใช้ VPN) เพื่อการค้นหาภาพยนตร์และซีรีส์ในโอเพ่นซอร์สอย่างรวดเร็ว
- Kinozal bot - บอทโทรเลขที่ช่วยให้คุณดำเนินการส่งเนื้อหาไปยังทีวีของคุณโดยอัตโนมัติโดยใช้โทรศัพท์ของคุณเท่านั้น มอบอินเทอร์เฟซที่สะดวกสบายสำหรับการโต้ตอบกับตัวติดตามทอร์เรนต์ Kinozal และฐานข้อมูล TMDB เพื่อติดตามวันที่เผยแพร่ตอน ซีซั่น และค้นหานักแสดงสำหรับแต่ละตอน รวมถึงความสามารถในการจัดการไคลเอนต์ทอร์เรนต์ qBittorrent หรือการส่งผ่านบนคอมพิวเตอร์ของคุณ ระยะไกลจากบ้านและจากอินเทอร์เฟซเดียว
❤️ WebTorrent Desktop api - ทางแยกของไคลเอ็นต์ WebTorrent Desktop ซึ่งเพิ่มกลไกการควบคุมระยะไกลผ่าน REST API
ที่ใช้ Express Framework
- Reverse Proxy .NET - ยูทิลิตี้บรรทัดคำสั่งข้ามแพลตฟอร์มสำหรับการใช้พร็อกซีเซิร์ฟเวอร์ย้อนกลับที่ใช้ .NET มันถูกใช้เพื่อให้การเข้าถึงโฮสต์บนเครือข่ายจากอินเทอร์เฟซเครือข่ายหนึ่งไปยังแอปพลิเคชันระยะไกลผ่านโปรโตคอล TCP , UDP หรือ HTTP/HTTPS (รองรับคำขอ GET
และ POST
เพื่อเข้าถึงทรัพยากรภายนอกผ่านอินเทอร์เน็ต) ที่มีให้ผ่านอินเทอร์เฟซเครือข่ายอื่น (เช่นผ่าน VPN ) บนโฮสต์ของคุณโดยไม่มีการกำหนดค่าที่ไม่จำเป็นและรองรับการอนุญาต