在github上搜索解决方案优化

在进行大型项目的过程中,借用其他人的模块和交钥匙解决方案可以节省大量开发人员的时间和投资者的钱。 到目前为止,此类解决方案的最大存储库之一是github。

搜索和选择github解决方案时,我在猫下使用了一个小技巧。

想象一下开发大型OSINT系统的任务,假设我们需要朝这个方向查看github上所有可用的解决方案。 我们使用标准的全局github搜索作为osint关键字。 我们得到1124个存储库,能够按执行语言按关键字搜索的位置(代码,提交,issuse等)进行过滤。 并按各种属性排序(例如,最多/最少的起步,分叉等)。

该决定是根据几个标准做出的:功能,星数,项目支持,开发语言。

图片

表格中汇总了我感兴趣的决定,并在上面的字段中进行了填写,并根据特定测试的结果做出了适当的注释。

在我看来,这种观点的缺点是缺乏跨多个字段同时进行排序和过滤的能力。

使用api_github和python3,我们概述了一个简单的简单脚本,该脚本为我们提供了我们感兴趣的领域的csv文档。

#!/usr/bin/env python3 from requests import get from sys import argv def print_to_csv(out_file,massive): open(out_file,'a').writelines('id;name;full_name;language;description;created_at;updated_at;html_url;homepage;fork' ';pushed_at;stargazers_count;has_wiki;has_pages;archived;license;score;stargazers_count\n') for i in massive: open(out_file,'a').writelines(i+'\n') def string_to_csv_string(my_dict): csv_string='' keys=['id', 'name', 'full_name','language', 'description','created_at', 'updated_at', 'html_url', 'homepage','fork', 'pushed_at', 'stargazers_count','has_wiki', 'has_pages', 'archived', 'license', 'score','stargazers_count'] for i in keys: csv_string+=(str(my_dict[i])+';') return csv_string def dicts_to_dictsString(dicts): strings=set() for dict in dicts: string=string_to_csv_string(dict) strings.add(string) return strings def search_to_git(keyword): item_all=set() req=get('https://api.github.com/search/repositories?q={}&per_page=100&sort=stars'.format(keyword)) item_all=item_all|dicts_to_dictsString(req.json()['items']) page_all=req.json()['total_count']/100 if page_all>=10: page_all=10 for i in range(2,int(page_all)+1): req = get('https://api.github.com/search/repositories?q={}&per_page=100&sort=stars&page={}'.format(keyword,i)) try: item_all=item_all|dicts_to_dictsString(req.json()['items']) except KeyError: return item_all return item_all if __name__ == '__main__': try: strings=list(search_to_git(argv[1])) print_to_csv(argv[1]+'.csv',strings) except IndexError: print('''exemple: ./git_search_info keyword_for_search out_file ''') 

运行脚本

 python3 git_repo_search.py osint 

我们得到

图片

在我看来,隐藏不必要的列之后,使用信息会更方便。

在这里编码

我希望有人派上用场。

Source: https://habr.com/ru/post/zh-CN477268/


All Articles