【发布时间】:2020-12-19 07:49:20
【问题描述】:
我正在尝试创建一个 github 操作,该操作需要向 https://www.instagram.com/<username>/?__a=1 发送 http 请求。
当我在本地运行它时,它运行得非常好,并且给了我关注者的数量。
但是当我在 github 操作中使用它时,它无法解析 JSON 字符串,因为响应为 null
这里是github操作文件https://github.com/ashawe/actions-check/blob/e80ca115544979cdb3180207b99c7724e4446849/index.js的链接
这是获取关注者的代码(从第 94 行开始)
promiseArray.push(new Promise((resolve, reject) => {
const url = 'https://www.instagram.com/' + INSTAGRAM_USERNAME + '/?__a=1';
core.info("url is");
core.info(url);
http.get(url, (response) => {
let chunks_of_data = [];
response.on('data', (fragments) => {
chunks_of_data.push(fragments);
});
response.on('end', () => {
let response_body = Buffer.concat(chunks_of_data);
core.info(response_body.toString());
let responseJSON = JSON.parse(response_body.toString());
resolve((responseJSON.graphql.user.edge_followed_by.count).toString());
});
response.on('error', (error) => {
reject(error);
});
});
}));
然后我正在处理它:
Promise.allSettled(promiseArray).then((results) => {
results.forEach((result, index) => {
if (result.status === 'fulfilled') {
// Succeeded
// core.info(runnerNameArray[index] + ' runner succeeded. Post count: ' + result.value.length);
// postsArray.push(result.value);
instagram_followers = result.value;
} else {
jobFailFlag = true;
// Rejected
//core.error(runnerNameArray[index] + ' runner failed, please verify the configuration. Error:');
core.error(result.reason);
}
});
}).finally(() => {
try {
const followers = instagram_followers;
const readmeData = fs.readFileSync(README_FILE_PATH, 'utf8');
// core.info(readmeData);
const shieldURL = "https://img.shields.io/badge/ %40 " + INSTAGRAM_USERNAME + "-" + followers + "-%23E4405F?style=for-the-badge&logo=instagram";
const instagramBadge = "<img align='left' alt='instagram-followers' src='" + shieldURL + "' />";
const newReadme = buildReadme(readmeData, instagramBadge);
// core.info(newReadme);
// if there's change in readme file update it
if (newReadme !== readmeData) {
core.info('Writing to ' + README_FILE_PATH);
fs.writeFileSync(README_FILE_PATH, newReadme);
if (!process.env.TEST_MODE) {
// noinspection JSIgnoredPromiseFromCall
commitReadme();
}
} else {
core.info('No change detected, skipping');
process.exit(0);
}
} catch (e) {
core.error(e);
process.exit(1);
}
});
这意味着 response_body 不是完整的 JSON 响应,但对 https://www.instagram.com/USERNAME/?__a=1 的请求确实发送了 json 响应。
【问题讨论】:
-
更新:我正在删除 github 存储库。基本上 insta 不会让我从 github 网络访问数据。因此,我必须创建一个 fb 应用程序,一个 instagarm 应用程序,将自己添加为测试人员,授权自己,获取代码,然后将代码交换为短暂的授权令牌(仅一个小时有效)并使用此令牌来获取追随者。我可以获得一个长寿命的令牌,但它的有效期为 2 个月,这意味着我必须在它过期之前刷新它。所有这些只是为了获得关注者的数量似乎不合理,所以我放弃了这个项目(这是为 GH 自述文件创建 IG 关注者徽章
标签: node.js http github-actions