Files
btcore/util/index.js
2021-10-12 21:04:23 +08:00

95 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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