资讯专栏INFORMATION COLUMN

分享一个自己写的github-trending小工具

darkerXi / 1627人阅读

摘要:步骤主要是建立一个,然后分三步创建一个以日期的文件访问页面然后抓取关注语言的写入文件部署代码写完了,然后就可以部署了,当然你可以放在自己的电脑上跑。但是这是个每天的定时任务,所以不能关机比较尴尬。

缘起

Github Trending基本上是我每天都会浏览的网页,上面会及时发布一些GIthub上比较有潜力的项目,或者说每日Star数增量排行榜。

不过由于Github Trending经常会实时更新,即使你访问得再勤,难免还是会错过一些你感兴趣的项目,为此不少人都想出了自己的解决办法,例如
josephyzhou ,他的 github-trending 项目得到了众多人的青睐,我仔细阅读了他的源码 (Go),发现实现也较为简单, 就用Python 重写了一下,发现代码少了好多,详见 我的 github-trending。

步骤

主要是建立一个Job,然后分三步:

创建一个以 日期.md 的文件

访问Github-Trending 页面 然后抓取关注语言的Trending List 写入 md文件

Git Add + Commit + Push

Job
def job():

    strdate = datetime.datetime.now().strftime("%Y-%m-%d")
    filename = "{date}.md".format(date=strdate)

    # create markdown file
    createMarkdown(strdate, filename)

    # write markdown
    scrape("python", filename)
    scrape("swift", filename)
    scrape("javascript", filename)
    scrape("go", filename)

    # git add commit push
    git_add_commit_push(strdate, filename)
create markdown
def createMarkdown(date, filename):
    with open(filename, "w") as f:
        f.write("###" + date + "
")
write markdown
def scrape(language, filename):

    HEADERS = {
        "User-Agent"        : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0",
        "Accept"            : "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Accept-Encoding"    : "gzip,deflate,sdch",
        "Accept-Language"    : "zh-CN,zh;q=0.8"
    }

    url = "https://github.com/trending/{language}".format(language=language)
    r = requests.get(url, headers=HEADERS)
    assert r.status_code == 200

    d = pq(r.content)
    items = d("ol.repo-list li")

    # codecs to solve the problem utf-8 codec like chinese
    with codecs.open(filename, "a", "utf-8") as f:
        f.write("
####{language}
".format(language=language))

        for item in items:
            i = pq(item)
            title = i("h3 a").text()
            owner = i("span.prefix").text()
            description = i("p.col-9").text()
            url = i("h3 a").attr("href")
            url = "https://github.com" + url
            f.write(u"* [{title}]({url}):{description}
".format(title=title, url=url, description=description))
git operations
def git_add_commit_push(date, filename):
    cmd_git_add = "git add {filename}".format(filename=filename)
    cmd_git_commit = "git commit -m "{date}"".format(date=date)
    cmd_git_push = "git push -u origin master"

    os.system(cmd_git_add)
    os.system(cmd_git_commit)
    os.system(cmd_git_push)
部署

代码写完了,然后就可以部署了,当然你可以放在自己的电脑上跑。但是这是个每天的定时任务,所以不能关机比较尴尬。比较好的办法是部署到VPS,具体主机商就不推荐了,反正就这几家,大家随意。部署之前记得先将VPS 的 SSH key 添加到Github 的信任列表,这样这个代码就可以顺利跑起来啦!

  $ git clone https://github.com/bonfy/github-trending.git
  $ cd github-trending
  $ pip install -r requirements.txt
  $ python scraper.py
一般人我不告诉

还有个好处,偷偷告诉你们,这代码是每天定时跑的,所以每天都会Commit 到Github上,想象一下吧,一年之后你的Github下面的Commit 一栏将是多么的美观啊!所以赶快去Star 我的项目,行动起来吧,少年!

项目地址: https://github.com/bonfy/github-trending
欢迎大家Star

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38431.html

相关文章

  • 一个前端菜鸟的成长历程

    摘要:张鑫旭老师的文章写的很棒,解决了我的许多困惑。所以,基础知识的牢固就显得尤为重要是个不怎么听话的孩子,总是会搞出一些奇奇怪怪的事情来张鑫旭老师十年磨一剑,钻研的魔法,可见其中技术细节有多复杂。   从实习算起,到现在工作了也有一年半的时间了,在这期间,深深感受到了前端领域的飞速发展,在这里记录一下自己的成长历程,算是对知识的一个梳理,也希望帮助到刚入行的同学们。说来惭愧,大学里并没有涉...

    lieeps 评论0 收藏0
  • 一个前端菜鸟的成长历程

    摘要:张鑫旭老师的文章写的很棒,解决了我的许多困惑。所以,基础知识的牢固就显得尤为重要是个不怎么听话的孩子,总是会搞出一些奇奇怪怪的事情来张鑫旭老师十年磨一剑,钻研的魔法,可见其中技术细节有多复杂。   从实习算起,到现在工作了也有一年半的时间了,在这期间,深深感受到了前端领域的飞速发展,在这里记录一下自己的成长历程,算是对知识的一个梳理,也希望帮助到刚入行的同学们。说来惭愧,大学里并没有涉...

    SHERlocked93 评论0 收藏0
  • 程序员为什么值得写博客

    摘要:写的人越来越想,阅读的人越来越多的这个信息冗余的年代,会写就代表会思考转载保留程序员为什么值得写博客为什么要写博文写一篇博文意味着要花一定的时间,有时候可能是一个小时,有时候可能会更多,于是人们开始去。 Hire Great Writers 仿佛这是写给自己看的,不过这在其中也有着相当有趣的意义 。虽然自己算是一个能写的人,或许这算是一种不算才华的才华,写博文的意义通常不会在于去描述...

    WrBug 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<