کاربر:Ebrahim/commonsdupe
(تغییرمسیر از کاربر:Ebraminio/commonsdupe)
<syntaxhighlight lang="javascript"> /**
* @author User:Ebraminio * @description Node.js script to retrieve dupe images with commons, temporary solution as join between dbs is not supported on labs yet */
var fs = require('fs'), ini = require('ini'), Q = require('q'), mysql = require('mysql');
var client = ini.parse(fs.readFileSync('../replica.my.cnf').toString()).client; var connection = mysql.createConnection({
host: 'enwiki.labsdb', user: client.user, password: client.password, database: 'fawiki_p'
});
connection.connect(); connection.query('SELECT img_sha1, img_name FROM image', function (err, rows) {
if (err) throw err;
var batches = []; for (var i = 0; i < rows.length; i += 500) { var batch = {}; for (var j = i; j < i + 500 && j < rows.length; ++j) { batch[rows[j].img_sha1.toString()] = rows[j].img_name.toString(); } batches.push(batch); }
var connection = mysql.createConnection({ host: 'enwiki.labsdb', user: client.user, password: client.password, database: 'commonswiki_p' }); connection.connect();
var result = ['{| class="wikitable sortable"\n! !! محلی !! انبار']; batches.map(function (batch) { return function () { var defer = Q.defer(); connection.query('SELECT img_sha1, img_name FROM image WHERE ' + "img_sha1 IN ('" + Object.keys(batch).join("', '") + "')", function (err, rows) { if (err) throw err; for (var i in rows) { var local = batch[rows[i].img_sha1.toString()].replace(/_/g, ' '); if (local === "Wiki.png") { // Wiki.png should be local continue; } var commons = rows[i].img_name.toString().replace(/_/g, ' '); result.push("| " + (local === commons ? "همنام" : ) + " || File:" + local + "" + " || commons:File:" + commons + ""); } defer.resolve(); }); return defer.promise; }; }).reduce(function (defer, job) { return defer.then(job); }, Q()).then(function () { fs.writeFileSync('dupes.txt', result.join('\n|-\n') + '\n|}'); connection.end(); });
}); connection.end();