Странно ведет себя код: в блоке try если закомментировать один из массивов arr1 и оставить другой, все хорошо работает, вот сам код:
'use strict';
var InstagramPrivateAPI = {};
InstagramPrivateAPI = {};
InstagramPrivateAPI.V1 = require(__dirname + '/client/v1');
InstagramPrivateAPI.Helpers = require(__dirname + '/helpers');
var acc = require(__dirname + "/client/v1/account");
var med = require(__dirname + "/client/v1/media")
var Promise = require('../bluebird');
var _ = require('../lodash/');
module.exports = InstagramPrivateAPI;
var Client = require('instagram-private-api').V1;
var device = new Client.Device('maksgmn');
var storage = new Client.CookieFileStorage(__dirname + '/cookies/maksgmn.json');
var session = new Client.Session(device, storage);
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
var fs = require('fs');
var proxyArray = fs.readFileSync('proxy.txt').toString().split("\n");
var usernamesArray = fs.readFileSync('usernames.txt').toString().split("\n");
var proxy = "http://" + proxyArray[getRandomInt(0,proxyArray.length)]
var username = usernamesArray[getRandomInt(0,usernamesArray.length)]
console.log(proxy)
console.log(username)
Client.Request.setProxy(proxy);
acc.searchForUser(session, 'shakila_popi') //поиск id пользователя
.then(function(profile) {
return profile.id
})
.then(function(someId) { //получение промиса lenta
var feed = new Client.Feed.UserMedia(session, someId);
var lenta = Promise.mapSeries(_.range(0, 1), function() {
return feed.get();
}).then(function(lenta) {
return {id: someId, fd : lenta}
})
return lenta
})
.then(function(results) { //обработка промиса и получение ленты пользователя
// result should be Media[][]
var media = _.flatten(results.fd);
var urls = _.map(media, function(medium) {
try {
var arr1 = medium.params.images[0].url;
//var arr2 = medium.params.carouselMedia[0].images[0].url;
return arr1
} catch (err)
{
console.log("lala")
}
//console.log(medium.params.carouselMedia.images[0].url)
});
return {id : results.id, links : urls}
})
.then(function(mediaAndId) {
acc = acc.getById(session, mediaAndId.id)
.then(function(account) {
//console.log(account.params)
let avatar = account.params.profilePicUrl;
let fullName = account.params.fullName;
let bio = account.params.biography;
let media0 = mediaAndId.links[0];
let media1 = mediaAndId.links[1];
let media2 = mediaAndId.links[2];
let media3 = mediaAndId.links[3];
let media4 = mediaAndId.links[4];
//console.log(avatar);
//console.log(fullName);
console.log(bio);
console.log(media0);
console.log(media1);
console.log(media2);
console.log(media3);
console.log(media4);
})
})
Вот вывод в консоль:
MacBook-Pro-Sparrow:instagram-private-api Sparrow$ node index.js
[url]http://0DHVbZ:VkScLB@81.177.22.235:31061[/url]
superfoxyasians
(node:58742) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
[url]https://instagram.fhel3-1.fna.fbcdn.net/vp/551ca4099cea5337ce8317fdf888476b/5C7DB2A0/t51.2885-15/e35/46253156_552428008532000_5574512654800613278_n.jpg?ig_cache_key=MTkxMjIzMDIyNjQzNjU4NjU0Mg%3D%3D.2[/url]
undefined
[url]https://instagram.fhel3-1.fna.fbcdn.net/vp/10925f7f377b775b4a9fef5e2c7dc562/5C8CDEF0/t51.2885-15/e35/43985135_344052449735185_8327097767917702849_n.jpg?ig_cache_key=MTkwODU3MjU4MzQ0ODg5MTM3MA%3D%3D.2[/url]
undefined
[url]https://instagram.fhel3-1.fna.fbcdn.net/vp/82606b2a0741e97a416ca517a9494246/5BF43704/t51.2885-15/e35/43779615_1078737292285840_8766820240873976874_n.jpg[/url]
Вот код если закомментировать arr1 и оставить arr2 (тут блоки catch срабатывают):
'use strict';
var InstagramPrivateAPI = {};
InstagramPrivateAPI = {};
InstagramPrivateAPI.V1 = require(__dirname + '/client/v1');
InstagramPrivateAPI.Helpers = require(__dirname + '/helpers');
var acc = require(__dirname + "/client/v1/account");
var med = require(__dirname + "/client/v1/media")
var Promise = require('../bluebird');
var _ = require('../lodash/');
module.exports = InstagramPrivateAPI;
var Client = require('instagram-private-api').V1;
var device = new Client.Device('maksgmn');
var storage = new Client.CookieFileStorage(__dirname + '/cookies/maksgmn.json');
var session = new Client.Session(device, storage);
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
var fs = require('fs');
var proxyArray = fs.readFileSync('proxy.txt').toString().split("\n");
var usernamesArray = fs.readFileSync('usernames.txt').toString().split("\n");
var proxy = "http://" + proxyArray[getRandomInt(0,proxyArray.length)]
var username = usernamesArray[getRandomInt(0,usernamesArray.length)]
console.log(proxy)
console.log(username)
Client.Request.setProxy(proxy);
acc.searchForUser(session, 'shakila_popi') //поиск id пользователя
.then(function(profile) {
return profile.id
})
.then(function(someId) { //получение промиса lenta
var feed = new Client.Feed.UserMedia(session, someId);
var lenta = Promise.mapSeries(_.range(0, 1), function() {
return feed.get();
}).then(function(lenta) {
return {id: someId, fd : lenta}
})
return lenta
})
.then(function(results) { //обработка промиса и получение ленты пользователя
// result should be Media[][]
var media = _.flatten(results.fd);
var urls = _.map(media, function(medium) {
try {
//var arr1 = medium.params.images[0].url;
var arr2 = medium.params.carouselMedia[0].images[0].url;
return arr2
} catch (err)
{
console.log("lala")
}
//console.log(medium.params.carouselMedia.images[0].url)
});
return {id : results.id, links : urls}
})
.then(function(mediaAndId) {
acc = acc.getById(session, mediaAndId.id)
.then(function(account) {
//console.log(account.params)
let avatar = account.params.profilePicUrl;
let fullName = account.params.fullName;
let bio = account.params.biography;
let media0 = mediaAndId.links[0];
let media1 = mediaAndId.links[1];
let media2 = mediaAndId.links[2];
let media3 = mediaAndId.links[3];
let media4 = mediaAndId.links[4];
//console.log(avatar);
//console.log(fullName);
console.log(bio);
console.log(media0);
console.log(media1);
console.log(media2);
console.log(media3);
console.log(media4);
})
})
и вывод соответственно:
MacBook-Pro-Sparrow:instagram-private-api Sparrow$ node index.js
[url]http://6bZS68:5jWBwC@81.177.22.235:31000[/url]
eldlagorra
(node:58745) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
lala
lala
lala
lala
undefined
[url]https://instagram.fhel3-1.fna.fbcdn.net/vp/4a919f055c8cfabcfdd25ef2cbe4e990/5C800DE9/t51.2885-15/e35/44284874_657896204605028_2619340850189862370_n.jpg?ig_cache_key=MTkxMTkwMDgyMTk1Njk3NzYwOQ%3D%3D.2[/url]
undefined
[url]https://instagram.fhel3-1.fna.fbcdn.net/vp/4d25561f82fb60b311813ed9b84c88db/5C7EFBCB/t51.2885-15/e35/44374724_186168655643109_6032140732754326020_n.jpg?ig_cache_key=MTkwNjM5NDUyNzQ2MDQxNzUyMg%3D%3D.2[/url]
undefined
Вообще, так как не получается нормально вытащить все типы постов из ленты(возвращается json), поэтому я ввел 2 массива - первый для обычных постов и видео, второй для карусели. По отдельности они хорошо работают, хотел их сливать в arr3 и уже работать с ним. Однако не получается по вышеописанной причине. Обьясните пожалуйста и ткните в чем может быть проблема?