РЕДАКТИРОВАТЬ 2: наконец-то получил это, я использовал API и генератор идентификаторов для HTTPS
запросов и использовал предоставленный параметр &before=
. Параметр &before=
использует даты в качестве аргументов, поэтому мне пришлось взять последнее действие из одного запроса, получить из него дату и указать ее для параметра & before. Затем для каждого элемента массива, содержащего 1000 элементов, я вытащил последний элемент, потому что в итоге я получал повторяющиеся действия.
Теперь у меня появились действия, которые выглядят так: [[actions],[actions],[actions],[actions]]
и так далее, поэтому я использовал Объедините / сгладьте массив массивов, чтобы сделать все [actions]
. Затем я использовал обозначение скобок object["key"] = value
, чтобы установить / заменить действия действиями из моих HTTPS
запросов, и получился ОЧЕНЬ большой файл, и потребовалось довольно много времени, чтобы создать этот файл, он составил около 99.5 MB
.
это весь мой тестовый файл index.js:
const https = require('https');
const fs = require('fs');
var boardinfo = "";
https.get({
hostname: 'trello.com',
path: `/b/Vqrkz3KO.json`,
headers: {'User-Agent': `${Math.random().toString(16).substring(2,16)}`}
}, (r) => {
var data = "";
r.on('data', (d) => {
data+=d;
})
r.on('close', () => {
boardinfo = JSON.parse(data);
});
})
var actions = [];
(function untilDeath(beforeval) {
https.get({
hostname: 'api.trello.com',
path: `/1/boards/Vqrkz3KO/actions?limit=1000${beforeval ? `&before=${beforeval}` : ``}`,
headers: {'User-Agent': `${Math.random().toString(16).substring(2,16)}`}
}, (r) => {
var cmpdta = "";
r.on('data', (d) => {
cmpdta+=d;
})
r.on('close', () => {
cmpdta = JSON.parse(cmpdta);
if(cmpdta.length < 1000) {
if(cmpdta.length) actions.push(cmpdta);
return makeFile(info, [].concat.apply([], actions), fileName);
} else
untilDeath(cmpdta[999].date);
cmpdta.pop();
actions.push(cmpdta);
});
r.on('error', () => {
throw new Error('-----HTTPS Error Occurred, Please retry :(');
});
});
})();
function makeFile(trelloBoard, actions) {
trelloBoard["actions"] = actions;
fs.createWriteStream('./full-board.json');
fs.writeFile(`./full-board.json`, JSON.stringify(trelloBoard, null, `\t`), (c) => {
if(c) console.log(c);
});
}
РЕДАКТИРОВАТЬ: к сожалению, при этом также выбирается только 1000 действий, даже при сохранении файла JSON вручную, он по-прежнему дает 1000 действий.
Я легко решил эту проблему с помощью заголовка HTTPS User-Agent
.
const https = require('https');
https.get({
hostname: 'trello.com',
path: '/b/Vqrkz3KO.json',
headers: {'User-Agent': 'some-random-user-agent'}
}, (r) => {
var str = "";
r.on('data', (d) => {str+=d});
r.on('close', () => {console.log(str)})
})
person
SomePerson
schedule
19.07.2020
fields
,actions
или т. Д. И сделайте несколько запросов для каждого значения - person Alexey Larionov   schedule 07.06.2020