├── .build ├── buildOpml.sh └── validator.py ├── .github └── workflows │ └── build.yml ├── .gitignore ├── .gitmodules ├── README.md └── site └── index.html /.build/buildOpml.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | scriptpath=$(readlink "$0") 4 | basedir=$(dirname $(dirname "$scriptpath")) 5 | 6 | cd "$basedir" 7 | 8 | # Extracting table from README.md 9 | table=$(awk 'BEGIN {s=0}; 10 | /^##/ {s=0}; 11 | /^## List/ {s=1; next}; 12 | /^\s*$/ {next}; 13 | s {print}' ./README.md) 14 | 15 | # Trim header 16 | content=$(echo "$table" | tail -n +3) 17 | 18 | # Generation 19 | echo " 20 | 21 | 22 | ${OPML_TITLE} 23 | 24 | 25 | " 26 | 27 | echo "$content" | while read -r line || [[ -n "$line" ]]; do 28 | name=$(echo $line | cut -f2 -d\| | sed 's/[ \t]*$//;s/^[ \t]*//') 29 | xml=$(echo $line | cut -f3 -d\| | sed 's/[ \t]*$//;s/^[ \t]*//') 30 | html=$(echo $line | cut -f4 -d\| | sed 's/[ \t]*$//;s/^[ \t]*//') 31 | if [ ! -z "$xml" ]; then 32 | echo "" 33 | else 34 | echo "" 35 | fi 36 | done 37 | 38 | echo " 39 | 40 | 41 | " 42 | -------------------------------------------------------------------------------- /.build/validator.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from os import sys,path,environ 4 | 5 | environ['LANGUAGE'] = 'en' 6 | 7 | import urllib.request, urllib.error, urllib.parse 8 | # OK I know I cannot write python 9 | sys.path.append(path.join(path.dirname(__file__), 'feedvalidator', 'src')) 10 | 11 | from bs4 import BeautifulSoup 12 | import feedvalidator 13 | import socket 14 | socket.setdefaulttimeout(5) 15 | 16 | with open(sys.argv[1], 'r') as opmlFile: 17 | 18 | opml = opmlFile.read().decode('utf-8') 19 | opml = BeautifulSoup(opml, 'xml') 20 | 21 | entries = opml.find_all('outline') 22 | 23 | total = len(entries) 24 | 25 | # Ones that failed the connectivity test 26 | siteFailed = [] 27 | 28 | # Ones that failed the feed validator test 29 | feedCritical = [] 30 | 31 | # Ones that triggered feed validator warnings 32 | feedWarning = [] 33 | 34 | for entry in entries: 35 | title = entry.get('title').encode('utf-8') 36 | print('=== Validating %s ===' % title) 37 | 38 | site = entry.get('htmlUrl') 39 | code = -1 40 | print("Testing HTTP connectivity...: %s" % site) 41 | try: 42 | resp = urllib.request.urlopen(site) 43 | code = resp.getcode() 44 | except Exception as e: 45 | print("Cannot connect to site: %s" % str(e)) 46 | siteFailed.append([title, entry]) 47 | 48 | if code >= 200 and code < 400: 49 | # Is a valid response 50 | print("Site successfully responded with code %s" % code) 51 | elif code >= 0: 52 | print("Site responded with unexpected response code %s" % code) 53 | siteFailed.append([title, entry]) 54 | 55 | print("Fetching feeds...") 56 | feed = entry.get('xmlUrl') 57 | 58 | events = None 59 | try: 60 | events = feedvalidator.validateURL(feed, firstOccurrenceOnly=1)['loggedEvents'] 61 | except feedvalidator.logging.ValidationFailure as vf: 62 | events = [vf.event] 63 | except Exception as e: 64 | print("Unable to fetch feed: %s" % str(e)) 65 | feedCritical.append(e) 66 | 67 | if events is not None: 68 | from feedvalidator import compatibility 69 | from feedvalidator.formatter.text_plain import Formatter 70 | 71 | criticals = compatibility.A(events) 72 | if len(criticals) > 0: 73 | print("Feed failed validation with critical errors:") 74 | output = Formatter(criticals) 75 | print("\n".join(output)) 76 | feedCritical.append([title, entry]) 77 | else: 78 | warnings = compatibility.AAA(events) 79 | if len(warnings) > 0: 80 | print("Feed passed validation with warnings:") 81 | output = Formatter(warnings) 82 | print("\n".join(output)) 83 | feedWarning.append([title, entry]) 84 | else: 85 | print("Feed passed validation with no error or warning") 86 | 87 | print("") 88 | 89 | print("### SUMMARY ###") 90 | print("In total of %s entries:" % len(entries)) 91 | print("%s entries failed the connectivity test:" % len(siteFailed)) 92 | for [title, entry] in siteFailed: 93 | print("\t%s: %s" % (title, entry)) 94 | print("") 95 | 96 | print("%s entries failed the feed validation:" % len(feedCritical)) 97 | for [title, entry] in feedCritical: 98 | print("\t%s: %s" % (title, entry)) 99 | print("") 100 | 101 | print("%s entries passed the feed validation with warnings:" % len(feedWarning)) 102 | for [title, entry] in feedWarning: 103 | print("\t%s: %s" % (title, entry)) 104 | print("") 105 | 106 | if len(feedCritical) > 0: 107 | sys.exit(1) 108 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: 'Build & Validate OPML file' 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | 7 | build: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | with: 12 | submodules: recursive 13 | - uses: actions/setup-python@v5 14 | with: 15 | python-version: '3.12' 16 | - name: Install dependencies 17 | run: | 18 | python -m pip install --upgrade pip 19 | pip install lxml beautifulsoup4 20 | - name: Build Opml 21 | env: 22 | OPML_TITLE: "TUNA Blogroll" 23 | run: | 24 | .build/buildOpml.sh > site/opml.xml 25 | .build/validator.py site/opml.xml || true 26 | - name: Upload Pages Artifact 27 | if: ${{ github.ref == 'refs/heads/master' }} 28 | uses: actions/upload-pages-artifact@v3 29 | with: 30 | path: site/ 31 | 32 | deploy: 33 | if: ${{ github.ref == 'refs/heads/master' }} 34 | needs: build 35 | permissions: 36 | pages: write 37 | id-token: write 38 | environment: 39 | name: github-pages 40 | url: ${{ steps.deployment.outputs.page_url }} 41 | runs-on: ubuntu-latest 42 | steps: 43 | - name: Deploy to GitHub Pages 44 | id: deployment 45 | uses: actions/deploy-pages@v4 46 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | opml.xml 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule ".build/feedvalidator"] 2 | path = .build/feedvalidator 3 | url = https://github.com/rubys/feedvalidator 4 | branch = master 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TUNA Blogroll 2 | 3 | 世界一流兼容并包 TUNA 协会收集的周围同学们的 Blog。 4 | 5 | ## FAQ 6 | 7 | > 萌新也可以加 blog 列表么? 8 | 9 | 能。 10 | 11 | > 有些 blog 太久没更新或失效了,怎么办? 12 | 13 | 请提 pull request 删掉 14 | 15 | ## 添加方式 16 | 17 | 在**最下面一行**添加(相当于按时间顺序,为以后的增量提醒做准备)。 18 | 19 | TUNA 的同学们有权限可以直接编辑此文件;其它同学们烦请发 pull request。 20 | 21 | 推荐在 commit log 或者 pull request 里面简单介绍一下自己,比如常用的 ID 等。 22 | 23 | ## Lists 24 | 25 | | Name | RSS | HTML | 26 | | -- | -- | -- | 27 | | armsword的涅槃之地| | http://armsword.com/ | 28 | | Bao Haojun - Happy Hacking| http://baohaojun.github.io/atom.xml | http://baohaojun.github.io/ | 29 | | Beyond the Void| https://www.byvoid.com/feed | http://www.byvoid.com/ | 30 | | Binuxの杂货铺| http://blog.binux.me/atom.xml | http://blog.binux.me/ | 31 | | BlahGeek's Blog| https://blog.blahgeek.com/feeds/all.rss.xml | http://blog.blahgeek.com/ | 32 | | Blaok's Blog| https://blog.blaok.me/feed/ | https://blog.blaok.me/ | 33 | | BLOG-LEXUGE| https://lexuge.github.io/atom.xml | https://lexuge.github.io/ | 34 | | Chon's Blog| https://ichon.me/feed/ | https://ichon.me | 35 | | CodingLabs| http://blog.codinglabs.org/rss.xml | http://blog.codinglabs.org/ | 36 | | CS Slayer| https://www.csslayer.info/wordpress/feed/ | https://www.csslayer.info/wordpress | 37 | | cuihao (cvhc)'s blog| | https://blog.cvhc.cc/ | 38 | | DOVEcho Blog - D.B.| http://dovecho.github.io/feed.xml | http://dovecho.github.io/ | 39 | | Farseerfc的小窩| http://farseerfc.me/feeds/atom.xml | http://farseerfc.me/ | 40 | | Felix's Blog| http://feeds.feedburner.com/felixcat?format=xml | http://blog.felixc.at/ | 41 | | Firefly 风物| http://bobylive.com/feed | http://bobylive.com/ | 42 | | Frantic1048| https://pyonpyon.today/rss.xml | https://pyonpyon.today/ | 43 | | ftofficer - 张聪的blog| http://blog.ftofficer.com/feed/ | http://blog.ftofficer.com/ | 44 | | Fugoes's Blog| https://blog.fugoes.xyz/feed.xml | https://blog.fugoes.xyz | 45 | | Giuem| https://www.giuem.com/rss.xml | http://www.giuem.com | 46 | | Gu Lu's Blog| | http://gulu-dev.com/ | 47 | | Hacklook's Product View| http://hacklook.com/rss | http://hacklook.com/ | 48 | | Henry's Blog| http://blog.henryhu.net/?feed=rss2 | http://blog.henryhu.net/ | 49 | | hexchain| https://blog.hexchain.org/feeds/all.atom.xml | https://blog.hexchain.org/ | 50 | | icebox| https://quininer.github.io/rss.xml | https://quininer.github.io/ | 51 | | Igotit的空间| http://by-igotit.com/feed | http://by-igotit.com/ | 52 | | IO-meter| http://io-meter.com/atom.xml | http://io-meter.com/ | 53 | | Jarett's Blog| http://www.nigesb.com/feed | http://www.nigesb.com/ | 54 | | JayXon| http://www.jayxon.com/feed/ | https://www.jayxon.com/ | 55 | | kaori| http://aroma.ichon.me/feed | https://aroma.ichon.me | 56 | | K.I.S.S| http://bigeagle.me/index.xml | http://bigeagle.me/ | 57 | | Kxn's eXercise Notes| https://blog.kangkang.org/index.xml | http://blog.kangkang.org/ | 58 | | laike9m's blog| https://laike9m.com/blog/rss/ | https://laike9m.com/blog/ | 59 | | Librehat's Blog| https://www.librehat.com/feed/ | https://www.librehat.com/ | 60 | | MaskRay| http://maskray.me/atom.xml | http://maskray.me/blog | 61 | | oldj's blog| http://oldj.net/feed/ | http://oldj.net/ | 62 | | Otter Net| http://www.vuryleo.com/atom.xml | https://vuryleo.com/ | 63 | | Phoenix's island| https://blog.phoenixlzx.com/atom.xml | http://blog.phoenixlzx.com/ | 64 | | polyhedron(古韻)的博客| http://blog.sina.com.cn/rss/1180557177.xml | http://blog.sina.com.cn/ychromosome | 65 | | Puncsky CS Notebook| http://www.puncsky.com/atom.xml | http://www.puncsky.com/ | 66 | | Random Tech Thoughts| https://chenyufei.info/atom.xml | http://chenyufei.info/ | 67 | | Sammy Rock Symphony| http://feeds2.feedburner.com/sammyhk | http://sammy.hk/ | 68 | | Sam Stoelinga (Samos IT) - Blog| http://samos-it.com/feeds/sam-stoelinga.rss.xml | http://samos-it.com/ | 69 | | Scateu Blog | http://scateu.me/feed.xml | http://scateu.github.io/ | 70 | | Scateu Pinboard | https://feeds.pinboard.in/rss/u:scateu/ | https://pinboard.in/u:scateu/public/ | 71 | | Taresky| http://taresky.com/feed | http://taresky.com/ | 72 | | tifan.net| http://tifan.net/atom.xml | https://tifan.net/ | 73 | | usr-sbin-blog| http://www.usrsb.in/rss.xml | http://usrsb.in | 74 | | Xiaoji Chen's Design Weblog| http://www.xiaoji-chen.com/feed.xml | http://www.xiaoji-chen.com/blog | 75 | | Yang Boogle - Y.B.| https://leoyaboo.github.io/feed.xml | http://leoyaboo.github.io/ | 76 | | Yi's Words| http://yige.ch/rss/ | http://yige.ch/ | 77 | | Yuxin's Blog| http://ppwwyyxx.com/atom.xml | http://ppwwyyxx.com/ | 78 | | Zongting Lv| http://lvzongting.github.io/atom.xml | http://lvzongting.github.io/ | 79 | | 七月的夏天| http://julyclyde.org/?feed=rss2 | http://julyclyde.org/ | 80 | | 依云's Blog| https://blog.lilydjwg.me/posts.rss | https://blog.lilydjwg.me/ | 81 | | 兰湾| http://st.avros.net//feeds/all.rss.xml | http://st.avros.net/ | 82 | | 半瓶| http://www.orangeclk.com/atom.xml | http://www.orangeclk.com/ | 83 | | 太阳日志| http://www.sunjw.us/blog/feed/ | http://www.sunjw.us/blog | 84 | | 朝闻道| https://fbq.github.io/atom.xml | https://fbq.github.io/ | 85 | | 有一说一(党凡)|| https://dangfan.me/zh-Hans/ | 86 | | 李凡希的Blog| http://www.freemindworld.com/blog/feed | http://www.freemindworld.com/blog | 87 | | 毕扬博客| http://laob.me/feed/ | http://laob.me/ | 88 | | 水渍| http://multisim.me/atom.xml | http://multisim.me/ | 89 | | 老赵点滴 - 追求编程之美| http://blog.zhaojie.me/rss | http://blog.zhaojie.me/ | 90 | | 贺叶霜的树:III| https://heyeshuang.github.io/blog/feed.xml | https://heyeshuang.github.io/blog/ | 91 | | 赵达的个人网站 - Zhao Da's Personal Website| http://zhaoda.net/feed.xml | http://zhaoda.net/ | 92 | | 阅微堂| http://zhiqiang.org/feed.xml | http://zhiqiang.org/ | 93 | | 飞| http://flylai.com/feed | http://flylai.com | 94 | | 高見龍| http://feeds.feedburner.com/aquarianboy?format=xml | http://kaochenlong.com/ | 95 | | 小小泥娃的部落格 | https://iecho.cc/atom.xml | https://iecho.cc/ | 96 | | xiaq | https://elvish.io/feed.atom | https://elvish.io/blog/ | 97 | | xuanwo | https://xuanwo.io/index.xml | https://xuanwo.io/ | 98 | |Jiajie Chen's blog| https://jiegec.github.io/feed.xml | https://jiegec.github.io/ | 99 | | ヨイツの賢狼ホロ | https://blog.yoitsu.moe/feeds/all.atom.xml | https://blog.yoitsu.moe/ | 100 | | 綺麗な賢狼ホロ - jsteward | https://jsteward.moe/feeds/all.atom.xml | https://jsteward.moe/ | 101 | | huiyiqun | https://blog.huiyiqun.me/feed.xml | https://blog.huiyiqun.me/ | 102 | | Nova Kwok's Awesome Blog | https://nova.moe/atom.xml | https://nova.moe/ | 103 | | Kamikat's Blog | https://banana.moe/feed.xml | https://banana.moe/ | 104 | | gaocegege 的博客 | http://gaocegege.com/Blog/rss.xml | http://gaocegege.com/Blog/ | 105 | | 纸飞机 - jxj | http://sdr-x.github.io/feed.xml | http://sdr-x.github.io | 106 | | Chenyao's Blog| https://blog.lcy.im/atom.xml | https://blog.lcy.im/ | 107 | | Gee Law’s Blog | https://geelaw.blog/rss.xml | https://geelaw.blog/ | 108 | | Merrier说 | https://merrier.wang/atom.xml | http://merrier.wang | 109 | | Nicholas Wang | | https://nicholas.wang/articles/ | 110 | | Intermediate Representation| | http://ice1000.org | 111 | | NIR.moe | https://nir.moe/rss-all.xml | http://nir.moe/ | 112 | | stardiviner's Blog | https://stardiviner.github.io/Blog/index.xml | https://stardiviner.github.io/ | 113 | | Non-existent World| https://nano.ac/atom.xml | https://nano.ac/archives/ | 114 | | Dimpurr Cheny: 钉子の次元| http://blog.dimpurr.com/feed | http://dimpurr.com/ | 115 | | Dex Hunter's Blog| https://blog.dex.moe/feed.xml | https://blog.dex.moe/ | 116 | | PRIEWIENV's Blog| https://blog.priewienv.me/index.xml | https://blog.priewienv.me/ | 117 | | Hello From Junde Yhi | https://www.yhi.moe/feed.xml | https://www.yhi.moe/blog/ | 118 | | Lee's Blog | https://lee981265.github.io/atom.xml |https://lee981265.github.io | 119 | | heroxbd | https://heroxbd.github.io/feed.xml | https://heroxbd.github.io/ | 120 | | 王若溪 ReeseWang | https://ruoxi.wang/feed/ | https://ruoxi.wang/ | 121 | | Yay Ka-Boom-Boom | https://blog.nyan.im/feed/ | https://blog.nyan.im/ | 122 | | 郭泽宇 (ZE3kr) | https://guozeyu.com/feed/ | https://guozeyu.com | 123 | | SkylineBin's Blog | https://skylinebin.com/feed.xml | https://skylinebin.com | 124 | | 始终 | https://liam.page/atom.xml | https://liam.page/ | 125 | | Begin-End | https://liam.page/en/atom.xml | https://liam.page/en/ | 126 | | Harry Chen's Blog | https://harrychen.xyz/feed.xml | https://harrychen.xyz/ | 127 | | 业余无线电台BD4SUR | https://bd4sur.com/feed.xml | https://bd4sur.com/ | 128 | | Wars Feng Blog | https://blog.wars.cat/feed | https://blog.wars.cat | 129 | | 黎明灰烬 博客 | https://jackwish.net/feed.xml | https://jackwish.net | 130 | | Kira Blog | https://kira.cool/feed | https://kira.cool | 131 | | 米米的博客 | https://zhangshuqiao.org/atom.xml | https://zhangshuqiao.org/ | 132 | | Prof.Fan's Secret Garden | https://blog.amayume.net/rss/ | https://blog.amayume.net | 133 | | Mathor | https://wmathor.com/index.php/feed | https://wmathor.com | 134 | | Berrysoft的博客 | https://berrysoft.github.io/blogdata/feed.xml | https://berrysoft.github.io/blog/ | 135 | | Angel_Kitty's Blog | http://feed.cnblogs.com/blog/u/329976/rss/ | https://www.cnblogs.com/ECJTUACM-873284962/ | 136 | | C3Meow | https://backend.meow.c-3.moe/feed | https://meow.c-3.moe | 137 | | Bboysoul's Blog | https://www.bboy.app/atom.xml | https://www.bboy.app/ | 138 | | Papersnake | https://blog.pka.moe/atom.xml | https://blog.pka.moe/ | 139 | | Lenciel | https://lenciel.com/feed.xml | https://lenciel.com | 140 | | 1A23 Studio | https://1a23.com/feed/ | https://1a23.com/ | 141 | | 北京龙芯用户俱乐部::刘世伟 | https://www.bjlx.org.cn/blog/1/feed | https://www.bjlx.org.cn/ | 142 | | Pinboard of wwx | https://feeds.pinboard.in/rss/u:stieizc/ | https://wenxinwang.me/ | 143 | | NekoDaemon's Blog | https://nekodaemon.com/atom.xml | https://nekodaemon.com/ | 144 | | 鸿雁自南人自北 Blog | https://renzibei.com/atom.xml | https://renzibei.com | 145 | | 251's Blog | https://blog.251.sh/feed/ | https://blog.251.sh | 146 | | Fidel's Lab | https://fidel.js.org/atom.xml | https://fidel.js.org/ | 147 | | MiaoTony's Blog | https://miaotony.xyz/atom.xml | https://miaotony.xyz/ | 148 | | fernvenue's Blog (en) | https://blog.fernvenue.com/index.xml | https://blog.fernvenue.com/ | 149 | | fernvenue's Blog (zh) | https://blog.fernvenue.com/zh/index.xml | https://blog.fernvenue.com/zh/ | 150 | | 周友松的博客 | http://www.zhouyousong.cn/?feed=rss2 | http://www.zhouyousong.cn | 151 | | Thinking Null | https://awsl.blog/feed/ | https://awsl.blog | 152 | | Hong Ren | | https://blog.zenithal.me/ | 153 | | zu1k's blog | https://lgf.im/index.xml | https://lgf.im/ | 154 | | SilverRainZ 的银色子弹 | https://silverrainz.me/blog/atom.xml | https://silverrainz.me/ | 155 | | 晨曦的博客 | https://blog.whuzfb.cn/feed.xml | https://blog.whuzfb.cn/ | 156 | | lyer's blog | https://biningo.github.io/index.xml | https://biningo.github.io | 157 | | QuarticCat's Blog | https://blog.quarticcat.com/index.xml | https://blog.quarticcat.com/ | 158 | | WeepingDogel's Blog | https://weepingdogel.github.io/index.xml | https://weepingdogel.github.io/ | 159 | | huggy's blog | https://blog.huggy.moe/index.xml | https://blog.huggy.moe/ | 160 | | Jun's Blog | https://www.junz.org/index.xml | https://www.junz.org | 161 | | 日下部 詩's Space | https://www.kskb.eu.org/feeds/posts/default?alt=rss | https://www.kskb.eu.org | 162 | | Phoenix Rain | https://blog.lhp-pku.top/atom.xml | https://blog.lhp-pku.top/ | 163 | | 见字如面 | https://hiwannz.com/feed | https://hiwannz.com/ | 164 | | Zhangzqs's Blog | https://zhangzqs.cn/atom.xml | https://zhangzqs.cn/ | 165 | | Sunnysab's Blog | https://sunnysab.cn/rss.xml | https://sunnysab.cn/ | 166 | | Jimyag | https://jimyag.com/index.xml | https://jimyag.com/ | 167 | | Neo_Chen | https://neochen1024.blogspot.com/feeds/posts/default | https://neochen1024.blogspot.com/ | 168 | | 月见的瞎叨叨 | https://blog.yuejian.fun/rss.xml | https://blog.yuejian.fun/ | 169 | | Vica's Blog | https://blog.vicayang.cc/atom.xml | https://blog.vicayang.cc/ | 170 | | DGideas' Blog | https://dgideas.net/feed/ | https://dgideas.net/ | 171 | | Lhxone的博客 | | https://lhxone.com/ | 172 | | Ethan's Blog | https://ethan-phu.github.io/index.xml | https://ethan-phu.github.io | 173 | | twd2 | https://twd2.me/feed | https://twd2.me/ | 174 | | 晴雀堂 | https://blog.verynb.me/atom.xml | https://blog.verynb.me/ | 175 | | 齐下无贰 | https://blog.270916.xyz/atom.xml | https://blog.270916.xyz/ | 176 | | ECWU's Notebook | https://ecwuuuuu.com/index.xml | https://ecwuuuuu.com | 177 | | Amicoyuan | https://xingyuanjie.top/rss.xml | https://xingyuanjie.top | 178 | | 九仞之行 | https://styunlen.cn/feed | https://styunlen.cn/ | 179 | | A小編也推薦 | https://alittleeditor.com/rss.xml | https://alittleeditor.com/ | 180 | | Starkakrats | https://raw.githubusercontent.com/starkakrats/starkakrats-feed/main/index.xml | https://starkakrats.tiddlyhost.com | 181 | | Lazymio | https://blog.ihomura.cn/atom.xml | https://blog.ihomura.cn | 182 | | kxxt | https://www.kxxt.dev/rss.xml | https://www.kxxt.dev/ | 183 | | Miskcoo's Space | https://blog.miskcoo.com/feed.xml | https://blog.miskcoo.com/ | 184 | | 宇宙尽头的餐馆 | https://www.flyalready.cn/atom.xml | https://www.flyalready.cn/ | 185 | | Raspberry's Blog | https://blog.raspberrykan.dev/index.xml| https://blog.raspberrykan.dev | 186 | | A1ca7raz's Blog | https://blog.wtm.moe/feed.xml | https://blog.wtm.moe/ | 187 | | Clever_Jimmy's Blog | https://leverimmy.top/atom.xml | https://leverimmy.top/ | 188 | | 满久琦的个人网站 | https://www.manjiuqi.com/feed/ | https://www.manjiuqi.com/ | 189 | | Blog Sketch | https://blog.ziaowang.top/feed/ | https://blog.ziaowang.top/ | 190 | | HaoBIT 博客 | https://blog.haobit.top/feed_rss_updated.xml | https://blog.haobit.top/ | 191 | | BH1PHL | https://qsl.net/bh1phl/zh/index.xml | https://qsl.net/bh1phl/zh/ | 192 | | BG1REN | https://qsl.net/bg1ren/index.xml | https://qsl.net/bg1ren/ | 193 | 194 | ## OPML 195 | 196 | 197 | 198 | 在 Inoreader 里可以持续订阅(参见 [#139](https://github.com/tuna/blogroll/issues/139)),在 Feedly 里可以下载之后导入。 199 | 200 | ## See Also 201 | 202 | - https://github.com/timqian/chinese-independent-blogs 203 | -------------------------------------------------------------------------------- /site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TUNA Blogroll 5 | 6 | 7 |

TUNA Blogroll

8 |

Please use opml.xml to subscribe, and see tuna/blogroll for source code.

9 |

Maintained by Tsinghua University TUNA Association.

10 | 11 | 12 | --------------------------------------------------------------------------------