| update - seedlinux - Torrent indexing tool opensource torrents with share ratio… | |
| git clone git://jay.scot/seedlinux | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| update (2441B) | |
| --- | |
| 1 #!/usr/bin/env node | |
| 2 'use strict'; | |
| 3 | |
| 4 console.log('Updating Seeder and Leecher information'); | |
| 5 | |
| 6 const async = require('async'); | |
| 7 const mongoose = require('mongoose'); | |
| 8 const webtorrentHealth = require('webtorrent-health'); | |
| 9 const config = require('../app/config'); | |
| 10 | |
| 11 const mongoDB = config.dbURI; | |
| 12 const Torrent = require('../models/torrent_model'); | |
| 13 | |
| 14 mongoose.connect(mongoDB); | |
| 15 | |
| 16 var db = mongoose.connection; | |
| 17 | |
| 18 db.on('error', console.error.bind(console, 'MongoDB connection error:')); | |
| 19 | |
| 20 function updateTorrent(torrent, callback) { | |
| 21 webtorrentHealth(torrent.magneturi, {trackers: torrent.announce}, func… | |
| 22 if (err) { | |
| 23 callback(err, null); | |
| 24 } else { | |
| 25 let newData = { | |
| 26 seeders: data.seeds, | |
| 27 leechers: data.peers, | |
| 28 ratio: (Math.round((data.peers > 0 ? data.seeds / data.peers : d… | |
| 29 }; | |
| 30 callback(null, newData); | |
| 31 } | |
| 32 }); | |
| 33 } | |
| 34 | |
| 35 function getTorrent(query, callback) { | |
| 36 Torrent.find(query, function(err, data) { | |
| 37 if (err) { | |
| 38 callback(err, null); | |
| 39 } else { | |
| 40 callback(null, data[0]); | |
| 41 } | |
| 42 }); | |
| 43 } | |
| 44 | |
| 45 function saveTorrent(query, data, callback) { | |
| 46 Torrent.findOneAndUpdate(query, data, function(err, data) { | |
| 47 if (err) { | |
| 48 callback(err, null); | |
| 49 } else { | |
| 50 callback(null, data[0]); | |
| 51 } | |
| 52 }); | |
| 53 } | |
| 54 | |
| 55 Torrent.find({}, function(err, data) { | |
| 56 if (err) console.log(err); | |
| 57 | |
| 58 async.eachSeries(data, function(file, callback) { | |
| 59 async.waterfall([ | |
| 60 function(callback){ | |
| 61 getTorrent({hash: file.hash }, function(err, torrent) { | |
| 62 if (err) callback(true); | |
| 63 | |
| 64 if (!torrent) | |
| 65 callback(true); | |
| 66 else | |
| 67 callback(null, torrent); | |
| 68 }); | |
| 69 }, | |
| 70 function(arg1, callback){ | |
| 71 updateTorrent(arg1, function(err, data) { | |
| 72 if (err) callback(true); | |
| 73 | |
| 74 callback(null, data); | |
| 75 | |
| 76 }); | |
| 77 }, | |
| 78 function(arg1, callback){ | |
| 79 saveTorrent({hash: file.hash }, arg1, function(err, data) { | |
| 80 if (err) callback(true); | |
| 81 | |
| 82 console.log("Saved - " + file.hash); | |
| 83 callback(null, data); | |
| 84 | |
| 85 }); | |
| 86 }], function (err) { | |
| 87 | |
| 88 if (err) | |
| 89 throw err; | |
| 90 | |
| 91 callback(); | |
| 92 } | |
| 93 ); | |
| 94 }, function(err) { | |
| 95 if( err ) { | |
| 96 console.log('A torrent failed to process'); | |
| 97 process.exit(1); | |
| 98 } else { | |
| 99 console.log('All torrents have been processed successfully'); | |
| 100 process.exit(); | |
| 101 } | |
| 102 }); | |
| 103 }); | |
| 104 |