init
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
node_modules
|
||||
12
main.js
Normal file
12
main.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import BtDonwold from "./util/index.js";
|
||||
|
||||
|
||||
const bt = new BtDonwold({
|
||||
ip:"127.0.0.1",
|
||||
port:17844
|
||||
})
|
||||
|
||||
// const str = bt.base64_encode("C:/Users/116296/Desktop/debian-edu-11.0.0-amd64-netinst.iso.torrent")
|
||||
// bt.addTask("C:/Users/116296/Desktop/debian-edu-11.0.0-amd64-netinst.iso.torrent")
|
||||
// bt.getList()
|
||||
// bt.delete("899d629411da83faf1893f77266d8b40b3adecde")
|
||||
11
package.json
Normal file
11
package.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "btutil",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"axios": "^0.22.0",
|
||||
"form-data": "^4.0.0"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
95
util/index.js
Normal file
95
util/index.js
Normal file
@@ -0,0 +1,95 @@
|
||||
import axios from "axios"
|
||||
import fs from "fs"
|
||||
import FormData from "form-data"
|
||||
|
||||
|
||||
|
||||
class BtDonwold {
|
||||
constructor({ ip, port }) {
|
||||
this.ip = ip
|
||||
this.port = port
|
||||
this.sessionId = ""
|
||||
axios.defaults.baseURL = `http://${this.ip}:${this.port}`
|
||||
this.baseURL = `http://${this.ip}:${this.port}`
|
||||
// this.getTokne()
|
||||
}
|
||||
async getTokne() {
|
||||
axios.post(`/transmission/rpc`, { "method": "torrent-get", "arguments": { "fields": ["id", "error", "errorString", "eta", "isFinished", "isStalled", "leftUntilDone", "metadataPercentComplete", "peersConnected", "peersGettingFromUs", "peersSendingToUs", "percentDone", "queuePosition", "rateDownload", "rateUpload", "recheckProgress", "seedRatioMode", "seedRatioLimit", "sizeWhenDone", "status", "trackers", "downloadDir", "uploadedEver", "uploadRatio", "webseedsSendingToUs"], "ids": "recently-active" } }, {
|
||||
headers: {
|
||||
'X-Transmission-Session-Id': this.sessionId
|
||||
}
|
||||
}).then((res) => {
|
||||
console.log(res.data, "成功")
|
||||
}).catch((err) => {
|
||||
if (err.response.status == 409) {
|
||||
// console.log(err.response.headers['x-transmission-session-id'])
|
||||
this.sessionId = err.response.headers['x-transmission-session-id']
|
||||
this.getTokne()
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
addTask(file) {
|
||||
const form = new FormData()
|
||||
form.append('savepath', 'd:/bt');
|
||||
form.append("autoTMM", "false")
|
||||
form.append("rename", "")
|
||||
form.append("category", "")
|
||||
// true 开始
|
||||
form.append("startTorrentHidden", "")
|
||||
form.append("skip_checking", "")
|
||||
form.append("contentLayout", "Original")
|
||||
form.append("sequentialDownload", "")
|
||||
form.append("dlLimitHidden", "0")
|
||||
form.append("upLimitHidden", "0")
|
||||
form.append("fileselect[]", fs.createReadStream(file))
|
||||
form.submit(`${this.baseURL}/api/v2/torrents/add`, function (err, res) {
|
||||
// res – response object (http.IncomingMessage) //
|
||||
})
|
||||
|
||||
}
|
||||
base64_decode(base64str, file) {
|
||||
// create buffer object from base64 encoded string, it is important to tell the constructor that the string is base64 encoded
|
||||
var bitmap = new Buffer.from(base64str, 'base64');
|
||||
// write buffer to file
|
||||
fs.writeFileSync(file, bitmap);
|
||||
console.log('******** File created from base64 encoded string ********');
|
||||
}
|
||||
base64_encode(file) {
|
||||
// read binary data
|
||||
var bitmap = fs.readFileSync(file);
|
||||
// convert binary data to base64 encoded string
|
||||
return new Buffer.from(bitmap).toString('base64');
|
||||
}
|
||||
async getList() {
|
||||
let { data: { torrents } } = await axios.get("/api/v2/sync/maindata")
|
||||
// console.log(data.torrents)
|
||||
// torrents
|
||||
let list = []
|
||||
for (let i in torrents) {
|
||||
let info = {
|
||||
name: torrents[i].name,
|
||||
amount_left: (torrents[i].amount_left / 1024 / 1024).toFixed(2),
|
||||
fileid: i
|
||||
}
|
||||
|
||||
list.push(info)
|
||||
}
|
||||
console.log(list)
|
||||
|
||||
}
|
||||
async delete(hashes) {
|
||||
try{
|
||||
const form = new FormData()
|
||||
form.append("hashes",hashes)
|
||||
form.append("deleteFiles","false")
|
||||
form.submit(`${this.baseURL}/api/v2/torrents/delete`)
|
||||
}catch (err){
|
||||
console.log("删除失败", err)
|
||||
}
|
||||
console.log("删除成功")
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export default BtDonwold
|
||||
54
yarn-error.log
Normal file
54
yarn-error.log
Normal file
@@ -0,0 +1,54 @@
|
||||
Arguments:
|
||||
C:\Program Files\nodejs\node.exe C:\Users\116296\AppData\Roaming\npm\node_modules\yarn\bin\yarn.js add form-data
|
||||
|
||||
PATH:
|
||||
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\libnvvp;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\PuTTY\;C:\Program Files\nodejs\;C:\Users\116296\Downloads\annie_0.10.3_Windows_64-bit;C:\Users\116296\Downloads\ffmpeg-2021-06-02-git-071930de72-full_build\bin;C:\Program Files\dotnet\;C:\Program Files\Git\cmd;C:\Users\116296\AppData\Local\Yarn\bin;C:\Program Files\NVIDIA Corporation\Nsight Compute 2020.2.1\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Go\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\116296\AppData\Local\Android\Sdk\platform-tools;C:\Users\116296\AppData\Local\Programs\Python\Python39\Scripts\;C:\Users\116296\AppData\Local\Programs\Python\Python39\;C:\Users\116296\AppData\Local\Microsoft\WindowsApps;;C:\Users\116296\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\116296\AppData\Roaming\npm;C:\Program Files\JetBrains\WebStorm 2021.1.1\bin;;C:\Users\116296\.dotnet\tools;C:\Users\116296\go\bin
|
||||
|
||||
Yarn version:
|
||||
1.22.11
|
||||
|
||||
Node version:
|
||||
14.17.0
|
||||
|
||||
Platform:
|
||||
win32 x64
|
||||
|
||||
Trace:
|
||||
Error: Client network socket disconnected before secure TLS connection was established
|
||||
at connResetException (internal/errors.js:607:14)
|
||||
at TLSSocket.onConnectEnd (_tls_wrap.js:1554:19)
|
||||
at TLSSocket.emit (events.js:388:22)
|
||||
at endReadableNT (internal/streams/readable.js:1336:12)
|
||||
at processTicksAndRejections (internal/process/task_queues.js:82:21)
|
||||
|
||||
npm manifest:
|
||||
{
|
||||
"name": "btutil",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"axios": "^0.22.0"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
|
||||
yarn manifest:
|
||||
No manifest
|
||||
|
||||
Lockfile:
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
axios@^0.22.0:
|
||||
version "0.22.0"
|
||||
resolved "https://registry.npmjs.org/axios/-/axios-0.22.0.tgz#bf702c41fb50fbca4539589d839a077117b79b25"
|
||||
integrity sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.4"
|
||||
|
||||
follow-redirects@^1.14.4:
|
||||
version "1.14.4"
|
||||
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
|
||||
integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==
|
||||
53
yarn.lock
Normal file
53
yarn.lock
Normal file
@@ -0,0 +1,53 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.nlark.com/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
||||
|
||||
axios@^0.22.0:
|
||||
version "0.22.0"
|
||||
resolved "https://registry.npmjs.org/axios/-/axios-0.22.0.tgz#bf702c41fb50fbca4539589d839a077117b79b25"
|
||||
integrity sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.4"
|
||||
|
||||
combined-stream@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
||||
integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
||||
|
||||
follow-redirects@^1.14.4:
|
||||
version "1.14.4"
|
||||
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
|
||||
integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==
|
||||
|
||||
form-data@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.nlark.com/form-data/download/form-data-4.0.0.tgz?cache=0&sync_timestamp=1618846951886&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fform-data%2Fdownload%2Fform-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
|
||||
integrity sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI=
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.8"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
mime-db@1.50.0:
|
||||
version "1.50.0"
|
||||
resolved "https://registry.nlark.com/mime-db/download/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f"
|
||||
integrity sha1-q9SslOmNPA4YUBbGerRdX95AwR8=
|
||||
|
||||
mime-types@^2.1.12:
|
||||
version "2.1.33"
|
||||
resolved "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb"
|
||||
integrity sha1-H6EqkERy+v0GjkjZ6EAfdNP3Dts=
|
||||
dependencies:
|
||||
mime-db "1.50.0"
|
||||
Reference in New Issue
Block a user