├── .github └── workflows │ └── update-rss.yml ├── README.md ├── _config.yml ├── favicon.ico ├── requirements.txt └── update.py /.github/workflows/update-rss.yml: -------------------------------------------------------------------------------- 1 | name: Update RSS Feed 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | update-rss: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout repository 14 | uses: actions/checkout@v2 15 | 16 | - name: Set up Python 17 | uses: actions/setup-python@v2 18 | with: 19 | python-version: 3.11 20 | 21 | - name: Install dependencies 22 | run: pip install -r requirements.txt 23 | 24 | - name: Run update 25 | run: python update.py 26 | env: 27 | MINIFLUX_ENDPOINT: ${{ secrets.MINIFLUX_ENDPOINT }} 28 | MINIFLUX_API_KEY: ${{ secrets.MINIFLUX_API_KEY }} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BlogRoll 2 | 3 | > 南京航空航天大学 Blog 收集计划 4 | 5 | ## Welcome 6 | 7 | 南京航空航天大学在校生及校友均可参与此项目,提交 `issue` 或 `pull request` 即可添加 Blog 至此列表。 8 | 具体可参见文件末尾 `Note` 。 9 | 10 | Telegram channel:[A2OS 聚合](https://t.me/s/a2os_rss) 11 | 12 | 13 | ## Organization Blog List 14 | 15 | | Name | Web | RSS | 16 | | ---------------------------------- | ----------------------- | --- | 17 | | [A2OS](https://nuaa-open-source.github.io/a2os_index/) | https://nuaa-open-source.github.io/a2os_index/ | - | 18 | | ~~[NUAATUG](https://tug.nuaalug.org)~~ | ~~https://tug.nuaalug.org~~ | - | 19 | 20 | ## Personal Blog List 21 | 22 | 23 | 24 | | Name | Web | RSS | 25 | | ------------------------------------------------ | ------------------------------ | -------------------------------------- | 26 | | [0xe799bde88f9c](https://www.summershrimp.com/) | https://www.summershrimp.com/ | https://www.summershrimp.com/feed/ | 27 | | [R·ex / Zeng](https://blog.rexskz.info/) | https://blog.rexskz.info/ | https://blog.rexskz.info/feed/ | 28 | | [arcosx](https://arcosx.com/) | https://arcosx.com/ | https://arcosx.com/index.php/feed/ | 29 | | [TripleZ's Blog](https://blog.triplez.cn/) | https://blog.triplez.cn/ | https://blog.triplez.cn/index.xml | 30 | | [VVBLOG](https://blog.vvzero.com/) | https://blog.vvzero.com/ | https://blog.vvzero.com/atom.xml | 31 | | [NINJIACODER忍者小屋](https://rayzhao98.top/) | https://rayzhao98.top/ | https://rayzhao98.top/rss | 32 | | [QRZ's Blog](https://blog.qrzbing.cn/) | https://blog.qrzbing.cn/ | https://blog.qrzbing.cn/index.xml | 33 | | [LogicJake's Blog](https://www.logicjake.xyz/) | https://www.logicjake.xyz/ | https://www.logicjake.xyz/atom.xml | 34 | | [Stdio's Blog](https://blog.stdioa.com/) | https://blog.stdioa.com/ | https://blog.stdioa.com/atom.xml | 35 | | [KarlRixon's Blog](https://blog.karlrixon.cn/) | https://blog.karlrixon.cn/ | https://blog.karlrixon.cn/atom.xml | 36 | | [DoubleMice](https://doublemice.github.io) | https://doublemice.github.io | https://doublemice.github.io/feed.xml | 37 | | [The Invariant](https://invariant.me/) | https://invariant.me/ | https://invariant.me/rss/ | 38 | | [The Invariant 中文](https://blog.invariant.cn/) | https://blog.invariant.cn/ | https://blog.invariant.cn/rss/ | 39 | | [Hyperiats](https://www.hyperiats.com/) | https://www.hyperiats.com/ | - | 40 | | [Zedd's Blog](https://www.zeddyu.info) | https://www.zeddyu.info/ | https://blog.zeddyu.info/atom.xml | 41 | | [l1nk3dHouse](http://showlinkroom.me/) | http://showlinkroom.me/ | - | 42 | | [PM Extra's Blog](https://www.jubeat.net/) | https://www.jubeat.net/ | - | 43 | | [狐狸的小小窝](https://www.noisyfox.io/) | https://www.noisyfox.io/ | https://www.noisyfox.io/feed/ | 44 | | [Creedowl's Blog](https://blog.creedowl.com) | https://blog.creedowl.com/ | https://blog.creedowl.com/posts/index.xml | 45 | | [苏瑞辅的个人网站](https://www.suruifu.com/) | https://www.suruifu.com/ | https://www.suruifu.com/feed | 46 | | [Raphael Yang’s Tabloid](https://zhizhiyang.cn/) | https://zhizhiyang.cn/ | https://zhizhiyang.cn/rss | 47 | | [MiaoTony](https://miaotony.xyz) | https://miaotony.xyz/ | https://miaotony.xyz/atom.xml | 48 | | [zhuwenq 的博客](https://blog.zhuwenq.icu/) | https://blog.zhuwenq.icu/ | https://blog.zhuwenq.icu/atom.xml | 49 | | [风的个人网站](http://www.windboy.top/) | http://www.windboy.top/ | http://www.windboy.top/atom.xml | 50 | | [CosmosNing的个人博客](https://cosmosning.github.io/) | https://cosmosning.github.io/ | https://cosmosning.github.io/atom.xml | 51 | | [Zwlin's Blog](https://blog.zwlin.io)| https://blog.zwlin.io | https://blog.zwlin.io/index.xml | 52 | | [S3lab 每日论文推荐](https://nuaa-s3lab.github.io/dailyPaper/) | https://nuaa-s3lab.github.io/dailyPaper/ | https://nuaa-s3lab.github.io/dailyPaper/rss.xml | 53 | | [Kindem's blog](https://www.kindem.xyz/) | https://www.kindem.xyz/ | - | 54 | | [Tyfann's blog](https://tyfann.github.io/) | https://tyfann.github.io/ | - | 55 | | [ImCaO's blog](https://www.imcao.cn/) | https://www.imcao.cn/ | - | 56 | | [Misaka10201's blog](https://www.aurora.love/) | https://www.aurora.love/ | - | 57 | | [PeaceSheep's blog](https://blog.peacesheep.xyz/) | https://blog.peacesheep.xyz/ | - | 58 | 59 | ## Note 60 | 61 | - 项目地址 [https://github.com/NUAA-Open-Source/BlogRoll/](https://github.com/NUAA-Open-Source/BlogRoll/) 62 | - 点击右上角 `Watch`, 关注 BlogRoll 更新; 63 | - 点击右上角 `Star` ,收藏本仓库到星标列表中; 64 | - 若不熟悉 Git flow, 则点击上方 `issues` 提交你们的分享或个人 Blog; 65 | - 推荐: `Fork` 后, 编辑本 `README` 文件的目录内容,提 `Pull Request` 来提交个人 Blog 及 RSS 地址; 66 | - 可以在评论中通过 `@` 通知相关同学和分组. 67 | 68 | ## 最新文章 69 | 70 | 71 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NUAA-Open-Source/BlogRoll/0f7d51635ca0a64c64d01ddfee5a0c23403e9bc7/favicon.ico -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | miniflux==1.0.1 2 | mistune==3.0.2 3 | Requests==2.31.0 4 | -------------------------------------------------------------------------------- /update.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import miniflux 5 | import mistune 6 | import os 7 | import pprint 8 | import requests 9 | 10 | from mistune.plugins.table import table 11 | 12 | 13 | markdown = mistune.create_markdown(renderer='ast', plugins=[table]) 14 | 15 | 16 | def format_rss(blogroll_url): 17 | table_line = [] 18 | rss_urls = [] 19 | checked_rss_urls = [] 20 | 21 | r = requests.get(blogroll_url) 22 | ast = markdown(r.text) 23 | 24 | for elem in ast: 25 | if isinstance(elem, dict) and elem['type'] == 'table': 26 | for tbl_elem in elem['children']: 27 | if tbl_elem['type'] == "table_body": 28 | for line_elem in tbl_elem['children']: 29 | table_line.append(line_elem['children'][2]) 30 | for elem in table_line: 31 | raw_data: str = elem['children'][0]['raw'] 32 | if raw_data.startswith("http"): 33 | rss_urls.append(raw_data) 34 | 35 | pprint.pp(rss_urls) 36 | 37 | for url in rss_urls: 38 | print("getting {}".format(url)) 39 | try: 40 | req = requests.get(url) 41 | if req.status_code != 200: 42 | print(f"{url} with status code {req.status_code}") 43 | continue 44 | if req.text.startswith("