获取github某个issue的所有评论

python版本

import requests

import json

from time import sleep

from datetime import datetime

owner = ''; # 仓库所有者

repo = ''; # 仓库名

issueNumber = ''; # 你想要获取评论的问题的编号

pageCount = 9 # 要获取的页数

allComments = []

def get_all_comments():

  for i in range(1, pageCount):

    sleep(1)

    url = f"<https://api.github.com/repos/{owner}/{repo}/issues/{issueNumber}/comments?per_page=100&page={i}>"

    response = requests.get(url)

    if response.status_code == 200:

      comments = response.json()

      if len(comments) != 0:

        allComments.extend(comments)

      else:

        save_comments_to_json()

        break

def save_comments_to_json():

  now = datetime.now()

  formatted_date = now.strftime("%Y-%m-%d") # 格式化日期为年月日

  with open(f'{formatted_date}.json', 'w') as f:

    json.dump(allComments, f, indent=2)

get_all_comments()

nodejs版本

const axios = require('axios');
const fs = require('fs');

const owner = ''; # 仓库所有者
const repo = ''; # 仓库名
const issueNumber = ''; # 你想要获取评论的问题的编号
const pageCount = 9 # 要获取的页数
let allComments = [];

async function get_all_comments() {
  for (let i = 0; i <= pageCount; i++) {
    await new Promise(resolve => setTimeout(resolve, 1000));
    const url = `https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}/comments?per_page=100&page=${i}`;

    try {
      const response = await axios.get(url);
      
      if (response.status === 200) {
        const comments = response.data;
        
        if (comments.length !== 0) {
          allComments = allComments.concat(comments);
        } else {
          save_comments_to_json();
          break;
        }
      }
    } catch (error) {
      console.error(`Error fetching comments: ${error.message}`);
      break;
    }
  }
}

function save_comments_to_json() {
  // 当前日期时间,用于生成文件名
  const now = DateTime.local();
  fs.writeFile(`${now}.json`, JSON.stringify(allComments, null, 2), err => {
    if (err) {
      console.error(`Error saving comments to JSON: ${err.message}`);
    } else {
      console.log('Comments saved successfully.');
    }
  });
}

get_all_comments();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值