more...
This commit is contained in:
		| @ -9,9 +9,6 @@ module.exports = { | ||||
|         primaryKey: true, | ||||
|         type: Sequelize.INTEGER | ||||
|       }, | ||||
|       torrent_id: { | ||||
|         type: Sequelize.STRING | ||||
|       }, | ||||
|       hashString: { | ||||
|         type: Sequelize.STRING | ||||
|       }, | ||||
|  | ||||
| @ -6,14 +6,14 @@ const conf = require('>/conf'); | ||||
| const tr_client = new Transmission(conf.transmission) | ||||
|  | ||||
| const statusMap = [ | ||||
|   'STOPPED',        | ||||
|   'CHECK_WAIT',     | ||||
|   'CHECK',          | ||||
|   'DOWNLOAD_WAIT',  | ||||
|   'DOWNLOAD',       | ||||
|   'SEED_WAIT',      | ||||
|   'SEED',           | ||||
|   'ISOLATED',       | ||||
|   'STOPPED', // 0 | ||||
|   'CHECK_WAIT', // 1   | ||||
|   'CHECK', // 2 | ||||
|   'DOWNLOAD_WAIT', // 3  | ||||
|   'DOWNLOAD', // 4      | ||||
|   'SEED_WAIT', // 5  | ||||
|   'SEED', // 6    | ||||
|   'ISOLATED', // 7   | ||||
| ]; | ||||
|  | ||||
| module.exports = (sequelize, DataTypes, Model) => { | ||||
| @ -41,7 +41,6 @@ module.exports = (sequelize, DataTypes, Model) => { | ||||
|  | ||||
|         return await super.create({ | ||||
|           magnetLink: data.magnetLink, | ||||
|           torrent_id: res.id, | ||||
|           hashString: res.hashString, | ||||
|           name: res.name, | ||||
|           added_by: data.added_by, | ||||
| @ -49,14 +48,14 @@ module.exports = (sequelize, DataTypes, Model) => { | ||||
|           percentDone: 0, | ||||
|         }, args); | ||||
|       }catch (error){ | ||||
|         // console.log('Torrent create error', error); | ||||
|         console.log('Torrent create error', error); | ||||
|         throw error; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     async getTorrentData(noUpdate){ | ||||
|       try{ | ||||
|         let res = ( await tr_client.get(Number(this.torrent_id), [ | ||||
|         let res = ( await tr_client.get(this.hashString, [ | ||||
|           "eta", "percentDone", "status", "rateDownload", | ||||
|           "errorString", "hashString", 'name', | ||||
|           'downloadDir', | ||||
| @ -69,17 +68,38 @@ module.exports = (sequelize, DataTypes, Model) => { | ||||
|           'sizeWhenDone', | ||||
|         ]) ).torrents[0]; | ||||
|  | ||||
|         if(this.percentDone === 1) return this.dataValues | ||||
|         await this.update(res); | ||||
|         if(noUpdate) await this.save(); | ||||
|         return {...res, ...this.dataValues}; | ||||
|       }catch(error){ | ||||
|         console.error(`Torrent ${this.id} getTorrentData error`, error); | ||||
|         if(error.code === 'ECONNREFUSED'){ | ||||
|           let e = new Error('TorrentGatewayDown') | ||||
|           e.status = 555 | ||||
|           throw e | ||||
|         } | ||||
|         // console.error(`Torrent ${this.hashString} getTorrentData error`, error); | ||||
|         throw error; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     async stop(){ | ||||
|       return await this.constructor.trClient.stop(this.hashString); | ||||
|     } | ||||
|  | ||||
|     async start(force){ | ||||
|       if(force) return await this.constructor.trClient.startNow(this.hashString); | ||||
|       let res = await this.constructor.trClient.start(this.hashString); | ||||
|       console.log('start', res); | ||||
|       return res; | ||||
|     } | ||||
|  | ||||
|     async destroy(){ | ||||
|       await await this.constructor.trClient.remove(this.hashString, true); | ||||
|       return await super.destroy() | ||||
|     } | ||||
|   } | ||||
|   Torrent.init({ | ||||
|     torrent_id: DataTypes.STRING, | ||||
|     magnetLink: { | ||||
|       type: DataTypes.STRING, | ||||
|       allowNull: false, | ||||
|  | ||||
		Reference in New Issue
	
	Block a user