Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var request = require("request");
- var fs = require("fs");
- var parseString = require('xml2js').parseString;
- var htmlToJson = require('html-to-json');
- var itemnames = require('./output/itemurls2.json');
- const selector = ".post-image-container";
- const url = "https://i.imgur.com/$1.png";
- // Change this section!!
- const kevinfolder = "./resources/NH Furniture Images/Miscellaneous/";
- const dir = "./output/furnitures/miscellaneous/$1 ($2).png";
- const sheet = "./sheet3.xml";
- var download = function(uri, filename, callback){
- request.head(uri, function(err, res, body){
- // console.log('content-type:', res.headers['content-type']);
- // console.log('content-length:', res.headers['content-length']);
- request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
- });
- };
- var getKevinList = function(dir) {
- var kevin = {};
- var maxcount_k = 0;
- var count_k = 0;
- fs.readdirSync(dir).forEach(file => {
- maxcount_k++;
- });
- console.log("Number of files: "+maxcount_k);
- fs.readdirSync(dir).forEach(file => {
- var name = file.substring(0,file.lastIndexOf("."));
- var ext = file.substring(file.lastIndexOf("."));
- kevin[name] = {}
- count_k++;
- if (count_k == maxcount_k) {
- fs.writeFile("./output/kevin.json", JSON.stringify(kevin, null, "\t"));
- return kevin;
- }
- });
- return kevin;
- }
- var getURLs = async function(kevin, xmlsheet) {
- let promise = new Promise((resolve, reject) => {
- fs.readFile(xmlsheet, (err, result) => {
- parseString(result, function (err, result) {
- fs.writeFile('./output/parsedxml.json', JSON.stringify(result.worksheet.sheetData[0], null, "\t"));
- resolve(result.worksheet.sheetData[0]);
- });
- });
- });
- let sheet = await promise;
- var itemurls_arr = [];
- let urls = new Promise((resolve, reject) => {
- for (item in kevin) {
- kevin[item].name = item;
- itemurls_arr.push(kevin[item]);
- }
- var j = 0;
- for (var i = 0; i < itemurls_arr.length; i++) {
- while(!sheet.row[j].c[1].f) {
- j++;
- }
- console.log(("Processing row "+j+". In theory, $1 should be on this row.").replace("$1", itemurls_arr[i].name));
- if(sheet.row[j].c[1].f) {
- var url = sheet.row[j].c[1].f[0]
- url = url.substring(url.indexOf('"')+1,url.lastIndexOf('"'));
- // console.log(i + ": " + itemurls_arr[i-1].name + ", " + url);
- itemurls_arr[i].url = url;
- // get customization urls
- if(sheet.row[j].c[2].f) {
- var url = sheet.row[j].c[2].f[0]
- url = url.substring(url.indexOf('"')+1,url.lastIndexOf(',')-1);
- itemurls_arr[i].album = url;
- }
- } else {
- console.log("f does not exist for "+itemurls_arr[i].name);
- }
- j++;
- }
- resolve(itemurls_arr);
- });
- let result = await urls;
- return result;
- }
- var downloadImagesFromAlbum = function(album, filename) {
- htmlToJson.request(album, [selector, function($item) {
- return $item[0].attribs.id;
- }])
- .done(function(items) {
- for (var i = 0; i < items.length; i++) {
- (function(items){
- var fn = filename.replace("$2", i)
- download(url.replace("$1", items[i]), fn, function(){
- console.log('done '+fn);
- })
- })(items);
- }
- });
- }
- var main = async function() {
- var kevinlist = getKevinList(kevinfolder);
- getURLs(kevinlist, sheet).then((itemnames) => {
- var errors = [];
- var count = 0;
- setInterval(function() {
- var item = itemnames[count];
- if(!item.url) {
- errors.push(item.name);
- } else if(!item.album) {
- console.log("Album does not exist for "+item.name);
- fn = dir.replace("$1",item.name).replace("$2","0");
- download(item.url, fn, function(){
- console.log('done '+fn);
- });
- } else {
- downloadImagesFromAlbum(item.album, dir.replace("$1", item.name));
- }
- count++;
- if (count == 7) {
- fs.writeFile("./output/errors.txt", errors.join(", "));
- }
- }, 1000);
- })
- }
- main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement