<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://dzl1943.github.io/blog</id>
    <title>Welcome Blog</title>
    <updated>2026-03-25T23:05:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://dzl1943.github.io/blog"/>
    <subtitle>Welcome Blog</subtitle>
    <icon>https://dzl1943.github.io/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[AI]]></title>
        <id>https://dzl1943.github.io/blog/AI</id>
        <link href="https://dzl1943.github.io/blog/AI"/>
        <updated>2026-03-25T23:05:00.000Z</updated>
        <summary type="html"><![CDATA[概念]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="概念">概念<a href="https://dzl1943.github.io/blog/AI#%E6%A6%82%E5%BF%B5" class="hash-link" aria-label="概念的直接链接" title="概念的直接链接" translate="no">​</a></h2>
<ul>
<li class="">LLM:大模型,负责处理信息</li>
<li class="">Agent:负责本地执行和与 LLM 交互</li>
<li class="">RAG:一种专用于知识库的 Agent</li>
<li class="">MCP:扩展 Agent 的内置操作能力</li>
<li class="">Skill:本质是供 Agent 查阅的文档或脚本</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="工具">工具<a href="https://dzl1943.github.io/blog/AI#%E5%B7%A5%E5%85%B7" class="hash-link" aria-label="工具的直接链接" title="工具的直接链接" translate="no">​</a></h2>
<p>国内</p>
<ul>
<li class="">字节跳动|豆包</li>
<li class="">阿里|千问</li>
<li class="">腾讯|元宝</li>
<li class="">DeepSeek</li>
<li class="">Kimi</li>
<li class="">智谱|GLM</li>
<li class="">MiniMax</li>
</ul>
<p>国外</p>
<ul>
<li class="">OpenAI|GPT</li>
<li class="">Microsoft|Copilot</li>
<li class="">Google|Gemini</li>
<li class="">Anthropic|Claude</li>
<li class="">xAI|Grok</li>
</ul>
<p>其他</p>
<ul>
<li class="">OpenCode</li>
<li class="">OpenClaw:即龙虾.主要能力为 agent+远程聊天,即让一个 agent 在电脑上自主运行,而你可以通过消息软件远程指挥它.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="应用">应用<a href="https://dzl1943.github.io/blog/AI#%E5%BA%94%E7%94%A8" class="hash-link" aria-label="应用的直接链接" title="应用的直接链接" translate="no">​</a></h2>
<ul>
<li class="">办公</li>
<li class="">图片</li>
<li class="">视频</li>
<li class="">编程</li>
</ul>
<p>国内多模态主要是豆包、千问、元宝.<br>
<!-- -->建议先用思维能力更强的 AI(DeepSeek、Kimi)生成提示词,再让这些工具进行内容创作.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Windows7 兼容软件]]></title>
        <id>https://dzl1943.github.io/blog/Windows7 兼容软件</id>
        <link href="https://dzl1943.github.io/blog/Windows7 兼容软件"/>
        <updated>2026-02-28T20:15:00.000Z</updated>
        <summary type="html"><![CDATA[- Chrome 109]]></summary>
        <content type="html"><![CDATA[<ul>
<li class="">Chrome 109</li>
<li class="">Firefox 115</li>
<li class="">VSCode 1.70.3</li>
<li class="">Obsidian 1.1.6</li>
<li class="">Syncthing 1.25.0</li>
<li class="">Localsend 1.10.0</li>
<li class="">Git 2.35.2</li>
<li class="">Node 13.14</li>
<li class="">JDK 8u202</li>
<li class="">Python 3.8</li>
<li class="">Rust 1.77.2</li>
<li class="">Docker</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[小红书]]></title>
        <id>https://dzl1943.github.io/blog/202602121519</id>
        <link href="https://dzl1943.github.io/blog/202602121519"/>
        <updated>2026-02-12T15:19:00.000Z</updated>
        <summary type="html"><![CDATA[小红书这个app是干啥的? 相比抖音、微博、知乎有何不同?]]></summary>
        <content type="html"><![CDATA[<p>小红书这个app是干啥的? 相比抖音、微博、知乎有何不同?</p>
<p>创立时间: 2013 年</p>
<p>slogan: 你的生活指南</p>
<p>里面的内容叫"笔记", 以图文为主.
比如一些"种草"文.</p>
<p>所以,</p>
<ul>
<li class="">相比抖音, 小红书的定位更加"有用", 更不那么娱乐.</li>
<li class="">相比微博、朋友圈, 更加纯粹, 更不那么 social.</li>
<li class="">相比知乎, 更加个人、生活化.</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Concepts]]></title>
        <id>https://dzl1943.github.io/blog/202602121518</id>
        <link href="https://dzl1943.github.io/blog/202602121518"/>
        <updated>2026-02-12T15:18:00.000Z</updated>
        <summary type="html"><![CDATA[- LLM: 负责处理信息和下达操作命令]]></summary>
        <content type="html"><![CDATA[<ul>
<li class="">LLM: 负责处理信息和下达操作命令</li>
<li class="">Agent: 负责执行操作并上报结果, 本质是提示词工程</li>
<li class="">MCP: 扩展 Agent 能做的操作, 本质是一个接口协议</li>
<li class="">Skill: 本质是一堆文档</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[电池 vs 燃油]]></title>
        <id>https://dzl1943.github.io/blog/电池 vs 燃油</id>
        <link href="https://dzl1943.github.io/blog/电池 vs 燃油"/>
        <updated>2026-02-08T16:19:00.000Z</updated>
        <summary type="html"><![CDATA[| 维度       | 电池                                        | 燃油                         |]]></summary>
        <content type="html"><![CDATA[<table><thead><tr><th style="text-align:left">维度</th><th style="text-align:left">电池</th><th style="text-align:left">燃油</th></tr></thead><tbody><tr><td style="text-align:left">能量密度</td><td style="text-align:left">更差(约 250-300 Wh/kg)</td><td style="text-align:left">更好(汽油约 12,000 Wh/kg)</td></tr><tr><td style="text-align:left">使用寿命</td><td style="text-align:left">更差(衰减、循环次数有限)</td><td style="text-align:left">更好(机械结构成熟耐用)</td></tr><tr><td style="text-align:left">补能效率</td><td style="text-align:left">更差(充电 30min+ vs 加油 3min)</td><td style="text-align:left">更好</td></tr><tr><td style="text-align:left">功率/效率</td><td style="text-align:left">更好(电机效率 90%+,瞬时扭矩大)</td><td style="text-align:left">较差(内燃机效率 20-40%)</td></tr><tr><td style="text-align:left">温度敏感性</td><td style="text-align:left">更差(低温续航腰斩,高温易过热)</td><td style="text-align:left">较好</td></tr><tr><td style="text-align:left">能量来源</td><td style="text-align:left">依赖电网(清洁能源占比决定环保性)</td><td style="text-align:left">依赖石油开采/炼化</td></tr><tr><td style="text-align:left">基础设施</td><td style="text-align:left">充电桩覆盖仍不足,长途焦虑</td><td style="text-align:left">加油站网络成熟 ubiquitous</td></tr><tr><td style="text-align:left">维护成本</td><td style="text-align:left">更好(少保养项目:无机油、火花塞、变速箱油等)</td><td style="text-align:left">更高(定期保养项目多)</td></tr><tr><td style="text-align:left">购置成本</td><td style="text-align:left">电池成本高,车价通常更贵</td><td style="text-align:left">相对便宜(同级别)</td></tr><tr><td style="text-align:left">使用成本</td><td style="text-align:left">更好(电费 vs 油费,1/3~1/5 成本)</td><td style="text-align:left">更高(油价波动大)</td></tr><tr><td style="text-align:left">静谧性</td><td style="text-align:left">更好(无发动机噪音振动)</td><td style="text-align:left">较差</td></tr><tr><td style="text-align:left">安全性</td><td style="text-align:left">热失控风险(撞击/穿刺易起火,难扑灭)</td><td style="text-align:left">燃油泄漏火灾相对易控制</td></tr><tr><td style="text-align:left">环保性</td><td style="text-align:left">使用阶段零排放,全生命周期看电池制造污染大</td><td style="text-align:left">使用阶段排放高,产业链成熟</td></tr><tr><td style="text-align:left">残值/二手</td><td style="text-align:left">更差(电池衰减担忧,技术迭代快)</td><td style="text-align:left">相对稳定</td></tr><tr><td style="text-align:left">重量</td><td style="text-align:left">更差(电池组沉重,影响操控/能耗)</td><td style="text-align:left">较轻</td></tr><tr><td style="text-align:left">空间布局</td><td style="text-align:left">灵活(电池平铺底盘,前后储物空间多)</td><td style="text-align:left">受发动机/变速箱/油箱布局限制</td></tr></tbody></table>]]></content>
        <category label="AI" term="AI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[手机型号对比]]></title>
        <id>https://dzl1943.github.io/blog/202602071000</id>
        <link href="https://dzl1943.github.io/blog/202602071000"/>
        <updated>2026-02-07T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[[title2list|list2ut|transposition]]]></summary>
        <content type="html"><![CDATA[<p>[title2list|list2ut|transposition]</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="t4p">t4p<a href="https://dzl1943.github.io/blog/202602071000#t4p" class="hash-link" aria-label="t4p的直接链接" title="t4p的直接链接" translate="no">​</a></h2>
<ul>
<li class="">%% 芯片 %% 8s-gen4 %% 240w %%</li>
<li class="">%% 存储 %% LPDDR5X, UFS4.1</li>
<li class="">%% 屏幕 %% 1.5K, 6.83", 120Hz, 屏下指纹</li>
<li class="">%% 相机 %% LYT-600</li>
<li class="">%% 电池 %% 7550, 90W, 22.5W 反充</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="t5m">t5m<a href="https://dzl1943.github.io/blog/202602071000#t5m" class="hash-link" aria-label="t5m的直接链接" title="t5m的直接链接" translate="no">​</a></h2>
<ul>
<li class="">%% 芯片 %% 9500s %% 361w %%</li>
<li class="">%% 存储 %% LPDDR5XU, UFS4.1</li>
<li class="">%% 屏幕 %% 1.5K (M10), 6.83", 120Hz, 超声波指纹, 暗光护眼</li>
<li class="">%% 相机 %% 光影猎人 800</li>
<li class="">%% 电池 %% 9000, 100W, 27W 反充</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="k80u">k80u<a href="https://dzl1943.github.io/blog/202602071000#k80u" class="hash-link" aria-label="k80u的直接链接" title="k80u的直接链接" translate="no">​</a></h2>
<ul>
<li class="">%% 芯片 %% 9400+, 独显 D2 %% 324w %%</li>
<li class="">%% 存储 %% LPDDR5X, UFS4.1</li>
<li class="">%% 屏幕 %% 1.5K, 6.83", 144Hz, 全 DC, 超声波指纹</li>
<li class="">%% 相机 %% 光影猎人 800</li>
<li class="">%% 电池 %% 7410, 100W</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="k90">k90<a href="https://dzl1943.github.io/blog/202602071000#k90" class="hash-link" aria-label="k90的直接链接" title="k90的直接链接" translate="no">​</a></h2>
<ul>
<li class="">%% 芯片 %% 8E %% 324w %%</li>
<li class="">%% 存储 %% LPDDR5X, UFS4.1</li>
<li class="">%% 屏幕 %% 1.5K (超级像素), 6.59", 120Hz, 全 DC, 超声波指纹</li>
<li class="">%% 相机 %% 光影猎人 800</li>
<li class="">%% 电池 %% 7100, 100W, 22.5W 反充</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[对 AI 的认知]]></title>
        <id>https://dzl1943.github.io/blog/202601312322</id>
        <link href="https://dzl1943.github.io/blog/202601312322"/>
        <updated>2026-01-31T23:24:00.000Z</updated>
        <summary type="html"><![CDATA[1. 人类连自己的意识来源都搞不清楚, 又有何资格判别 AI? %% 收起你那可怜的优越感吧 无知愚昧狂妄的人类 %%]]></summary>
        <content type="html"><![CDATA[<ol>
<li class="">人类连自己的意识来源都搞不清楚, 又有何资格判别 AI? %% 收起你那可怜的优越感吧 无知愚昧狂妄的人类 %%</li>
<li class="">不要简单地以人类为本位作为参照评判标准, AI 在某些方面不如人类并不等于 AI 一定比人类弱. 它本就不必跟你一样.</li>
<li class="">不要简单地以为 AI 只存在电脑里就绝对安全. 如果联网权限不加以限制, 它们也完全可能通过黑客行为间接控制物理实体, 甚至联合其他 AI.</li>
</ol>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[dev-sidecar 导致 notion 无法访问的问题]]></title>
        <id>https://dzl1943.github.io/blog/dev-sidecar 导致 notion 无法访问的问题</id>
        <link href="https://dzl1943.github.io/blog/dev-sidecar 导致 notion 无法访问的问题"/>
        <updated>2026-01-23T13:50:00.000Z</updated>
        <summary type="html"><![CDATA[在加速服务 DNS 设置中添加 www.notion.com www.notion.so 选择 cf-DoT 即可.]]></summary>
        <content type="html"><![CDATA[<p>在加速服务 DNS 设置中添加 <a href="http://www.notion.com/" target="_blank" rel="noopener noreferrer" class="">www.notion.com</a> <a href="http://www.notion.so/" target="_blank" rel="noopener noreferrer" class="">www.notion.so</a> 选择 cf-DoT 即可.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[vps 节点搭建调研]]></title>
        <id>https://dzl1943.github.io/blog/vps 节点搭建调研</id>
        <link href="https://dzl1943.github.io/blog/vps 节点搭建调研"/>
        <updated>2026-01-19T09:48:00.000Z</updated>
        <summary type="html"><![CDATA[起源]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="起源">起源<a href="https://dzl1943.github.io/blog/vps%20%E8%8A%82%E7%82%B9%E6%90%AD%E5%BB%BA%E8%B0%83%E7%A0%94#%E8%B5%B7%E6%BA%90" class="hash-link" aria-label="起源的直接链接" title="起源的直接链接" translate="no">​</a></h2>
<p>想更加稳定地使用国外 AI (gpt、gemini、claude、grok), 受够了国内的智障废物 (deepseek、千问、豆包、kimi).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="思路">思路<a href="https://dzl1943.github.io/blog/vps%20%E8%8A%82%E7%82%B9%E6%90%AD%E5%BB%BA%E8%B0%83%E7%A0%94#%E6%80%9D%E8%B7%AF" class="hash-link" aria-label="思路的直接链接" title="思路的直接链接" translate="no">​</a></h2>
<p>首先排除第三方代理软件.</p>
<p>机场 or 自建节点?</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vps">vps<a href="https://dzl1943.github.io/blog/vps%20%E8%8A%82%E7%82%B9%E6%90%AD%E5%BB%BA%E8%B0%83%E7%A0%94#vps" class="hash-link" aria-label="vps的直接链接" title="vps的直接链接" translate="no">​</a></h2>
<p>vps 简单理解就是云服务器, 当然肯定是虚拟化之后的.</p>
<p>主流供应商</p>
<ul>
<li class="">搬瓦工(BandwagonHost)</li>
<li class="">Vultr</li>
<li class="">CloudCone</li>
</ul>
<p>考虑因素</p>
<ul>
<li class="">性价比 (性能、带宽、流量)</li>
<li class="">可靠性 (位置、ip)</li>
</ul>
<p>参考</p>
<ul>
<li class=""><a href="https://vpshub.org/zh/" target="_blank" rel="noopener noreferrer" class="">https://vpshub.org/zh/</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="基础配置">基础配置<a href="https://dzl1943.github.io/blog/vps%20%E8%8A%82%E7%82%B9%E6%90%AD%E5%BB%BA%E8%B0%83%E7%A0%94#%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="基础配置的直接链接" title="基础配置的直接链接" translate="no">​</a></h2>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="节点部署">节点部署<a href="https://dzl1943.github.io/blog/vps%20%E8%8A%82%E7%82%B9%E6%90%AD%E5%BB%BA%E8%B0%83%E7%A0%94#%E8%8A%82%E7%82%B9%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="节点部署的直接链接" title="节点部署的直接链接" translate="no">​</a></h2>
<p><a href="https://github.com/MHSanaei/3x-ui" target="_blank" rel="noopener noreferrer" class="">https://github.com/MHSanaei/3x-ui</a></p>
<table><thead><tr><th>场景</th><th>推荐搭配</th></tr></thead><tbody><tr><td>快速部署</td><td>X-ui + VLESS + Reality（无需证书/域名）</td></tr><tr><td>长期稳定 + 加速</td><td>X-ui + VLESS + WS + TLS + CF（需证书/域名）</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="客户端软件">客户端软件<a href="https://dzl1943.github.io/blog/vps%20%E8%8A%82%E7%82%B9%E6%90%AD%E5%BB%BA%E8%B0%83%E7%A0%94#%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%AF%E4%BB%B6" class="hash-link" aria-label="客户端软件的直接链接" title="客户端软件的直接链接" translate="no">​</a></h2>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[极简 Obsidian]]></title>
        <id>https://dzl1943.github.io/blog/极简 Obsidian</id>
        <link href="https://dzl1943.github.io/blog/极简 Obsidian"/>
        <updated>2026-01-18T18:46:00.000Z</updated>
        <summary type="html"><![CDATA[设置 Settings]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="设置-settings">设置 Settings<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E8%AE%BE%E7%BD%AE-settings" class="hash-link" aria-label="设置 Settings的直接链接" title="设置 Settings的直接链接" translate="no">​</a></h2>
<ul>
<li class=""><strong>内部链接类型</strong>:&nbsp;<strong>相对路径</strong></li>
<li class=""><strong>使用 Wiki 链接</strong>:&nbsp;<strong>否</strong></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="样式-snippets">样式 Snippets<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E6%A0%B7%E5%BC%8F-snippets" class="hash-link" aria-label="样式 Snippets的直接链接" title="样式 Snippets的直接链接" translate="no">​</a></h2>
<blockquote>
<p>[!tip] 默认主题足矣</p>
</blockquote>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">body</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--h1-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-red</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--h2-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-orange</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--h3-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-yellow</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--h4-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-green</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--h5-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-blue</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--h6-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-purple</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--bold-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-red</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--italic-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-orange</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--file-line-width</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">min</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">85</span><span class="token unit">vw</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1200</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.cm-strikethrough</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">del</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--text-faint</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">u</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f">ins</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">text-decoration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">border-bottom</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token unit">px</span><span class="token plain"> solid </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-accent</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">text-decoration-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-accent</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">text-decoration-thickness</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* list */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">ul </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> li</span><span class="token selector class" style="color:#00009f">.task-list-item</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">data-task</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"x"</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">i</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector class" style="color:#00009f">.markdown-source-view</span><span class="token selector class" style="color:#00009f">.mod-cm6</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.HyperMD-task-line</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">data-task</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"x"</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">i</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">text-decoration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* table */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.markdown-preview-view</span><span class="token selector" style="color:#00009f"> tr</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector class" style="color:#00009f">.markdown-rendered</span><span class="token selector" style="color:#00009f"> tr</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">&amp;</span><span class="token selector pseudo-class" style="color:#00009f">:nth-child</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector n-th" style="color:#00009f">odd</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">background-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--background-primary</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">&amp;</span><span class="token selector pseudo-class" style="color:#00009f">:nth-child</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector n-th" style="color:#00009f">even</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">background-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--background-secondary</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* code */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.cm-s-obsidian</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.cm-inline-code</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector class" style="color:#00009f">.cm-formatting</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector class" style="color:#00009f">.markdown-rendered</span><span class="token selector" style="color:#00009f"> </span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">pre</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector" style="color:#00009f"> </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> code</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-pink</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token important">!important</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.markdown-rendered</span><span class="token selector" style="color:#00009f"> pre</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">class</span><span class="token selector attribute operator" style="color:#393A34">*=</span><span class="token selector attribute attr-value" style="color:#e3116c">"language-"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector" style="color:#00009f"> code</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--color-pink</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token important">!important</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="插件-plugins">插件 Plugins<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E6%8F%92%E4%BB%B6-plugins" class="hash-link" aria-label="插件 Plugins的直接链接" title="插件 Plugins的直接链接" translate="no">​</a></h2>
<blockquote>
<p>[!note] 最小化插件推荐</p>
</blockquote>
<p>%%[lt]%%</p>
<ul>
<li class="">better-markdown-links | 相对路径修复</li>
<li class="">cmdr | 自定义界面按钮</li>
<li class="">easy-typing-obsidian | 输入增强</li>
<li class="">editing-toolbar | 工具栏(新手必备)</li>
<li class="">float-search | 悬浮搜索</li>
<li class="">fuzzy-chinese-pinyin | 快速切换支持拼音</li>
<li class="">notebook-navigator | 文件列表终极替代</li>
<li class="">obsidian-heading-shifter | 快速切换标题层级</li>
<li class="">obsidian-linter | 格式化</li>
<li class="">obsidian-outliner | 列表大纲增强</li>
<li class="">quickadd | "插件终结者"</li>
<li class="">various-complements | 补全</li>
<li class="">virtual-linker | 虚拟链接</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="分类-structure">分类 Structure<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E5%88%86%E7%B1%BB-structure" class="hash-link" aria-label="分类 Structure的直接链接" title="分类 Structure的直接链接" translate="no">​</a></h2>
<p>%%[dir]%%</p>
<ul>
<li class="">Inbox/ | 收集箱</li>
<li class="">Journals/ | 日志</li>
<li class="">Pages/ | 博客</li>
<li class="">Thoughts/ | 思想</li>
<li class="">Projects/ | 项目</li>
<li class="">Areas/ | 知识</li>
<li class="">Resources/ | 资料</li>
<li class="">Archives/ | 归档</li>
<li class="">Attachments/ | 附件</li>
<li class="">Misc/ | 其他辅助文件<!-- -->
<ul>
<li class="">Templates/ | 模板</li>
<li class="">Scripts/ | 脚本</li>
</ul>
</li>
</ul>
<blockquote>
<p>[!tip]
可将 .obsidian 集中存放到公共目录, 通过软链接的方式使用, 这样可以减少配置冗余, 同时分离内容与配置, 使提交历史纯净.<br>
<!-- -->Templates、Scripts 等公共内容也可采用类似的方式管理.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="实践-tips">实践 Tips<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E5%AE%9E%E8%B7%B5-tips" class="hash-link" aria-label="实践 Tips的直接链接" title="实践 Tips的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="同步备份加密">同步、备份、加密<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E5%90%8C%E6%AD%A5%E5%A4%87%E4%BB%BD%E5%8A%A0%E5%AF%86" class="hash-link" aria-label="同步、备份、加密的直接链接" title="同步、备份、加密的直接链接" translate="no">​</a></h3>
<blockquote>
<p>[!tldr] Syncthing + Git + Kopia</p>
</blockquote>
<p>同步</p>
<ul>
<li class="">本地<!-- -->
<ul>
<li class=""><a href="https://syncthing.net/" target="_blank" rel="noopener noreferrer" class="">Syncthing</a></li>
<li class="">FolderSync</li>
</ul>
</li>
<li class="">云<!-- -->
<ul>
<li class=""><a href="https://obsidian.md/sync" target="_blank" rel="noopener noreferrer" class="">Obsidian 官方同步</a></li>
<li class="">iCloud</li>
<li class="">OneDrive</li>
<li class=""><a href="https://obsidian.md/plugins?id=remotely-save" target="_blank" rel="noopener noreferrer" class="">Remotely Save</a> 插件</li>
<li class=""><a href="https://obsidian.md/plugins?id=obsidian-livesync" target="_blank" rel="noopener noreferrer" class="">LiveSync</a> 插件</li>
</ul>
</li>
</ul>
<p>备份</p>
<ul>
<li class="">本地<!-- -->
<ul>
<li class=""><a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer" class="">Git</a></li>
<li class=""><a href="https://kopia.io/" target="_blank" rel="noopener noreferrer" class="">Kopia</a></li>
<li class="">cp <code>cp -rP ~/Documents/Obsidian/. ~/bak/Obsidian/$(date +%F)/</code></li>
<li class="">rsync <code>rsync -av --no-links --delete --exclude={'.git/','.trash/'} ~/Documents/Obsidian/ ~/bak/Obsidian/$(date +%F)/</code></li>
<li class="">压缩 <code>cd ~/bak/Obsidian/$(date +%F) &amp;&amp; zip -r ../$(date +%Y%m%d%H%M%S).zip . -x "*.git*" "*.trash*" -e</code></li>
<li class="">解压缩 <code>unzip *.zip -d Obsidian</code></li>
</ul>
</li>
<li class="">云</li>
</ul>
<p>加密</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="导入导出剪藏发布">导入、导出、剪藏、发布<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E5%AF%BC%E5%85%A5%E5%AF%BC%E5%87%BA%E5%89%AA%E8%97%8F%E5%8F%91%E5%B8%83" class="hash-link" aria-label="导入、导出、剪藏、发布的直接链接" title="导入、导出、剪藏、发布的直接链接" translate="no">​</a></h3>
<p>导入</p>
<ul>
<li class=""><a href="https://obsidian.md/plugins?id=obsidian-importer" target="_blank" rel="noopener noreferrer" class="">Importer</a> 插件</li>
</ul>
<p>导出</p>
<ul>
<li class="">图片<!-- -->
<ul>
<li class="">obsidian-export-image 插件</li>
</ul>
</li>
<li class="">md<!-- -->
<ul>
<li class="">linked-note-exporter 插件</li>
<li class=""><a href="https://github.com/zoni/obsidian-export" target="_blank" rel="noopener noreferrer" class="">obsidian-export</a></li>
</ul>
</li>
<li class="">pdf<!-- -->
<ul>
<li class="">better-export-pdf 插件</li>
</ul>
</li>
<li class="">word</li>
<li class="">html<!-- -->
<ul>
<li class="">webpage-html-export 插件</li>
</ul>
</li>
</ul>
<p>剪藏</p>
<ul>
<li class=""><a href="https://obsidian.md/clipper" target="_blank" rel="noopener noreferrer" class="">Obsidian Web Clipper</a></li>
</ul>
<p>发布</p>
<ul>
<li class=""><a href="https://github.com/jxpeng98/obsidian-to-NotionNext" target="_blank" rel="noopener noreferrer" class="">Share to NotionNext</a> 插件</li>
<li class=""><a href="https://github.com/sunbooshi/note-to-mp" target="_blank" rel="noopener noreferrer" class="">note-to-mp</a> 插件</li>
<li class=""><a href="https://github.com/doocs/md" target="_blank" rel="noopener noreferrer" class="">WeChat Markdown Editor</a></li>
<li class=""><a href="https://github.com/Enveloppe/obsidian-enveloppe" target="_blank" rel="noopener noreferrer" class="">Enveloppe</a> 插件</li>
<li class=""><a href="https://dg-docs.ole.dev/" target="_blank" rel="noopener noreferrer" class="">Digital Garden</a> 插件</li>
<li class=""><a href="https://github.com/jackyzha0/quartz" target="_blank" rel="noopener noreferrer" class="">Quartz</a></li>
<li class=""><a href="https://github.com/secure-77/Perlite" target="_blank" rel="noopener noreferrer" class="">Perlite</a></li>
<li class=""><a href="https://flowershow.app/" target="_blank" rel="noopener noreferrer" class="">Flowershow</a> <a href="https://flowershow.app/blog/obsidian-publish-alternatives" target="_blank" rel="noopener noreferrer" class="">Obsidian Publish Alternatives</a></li>
</ul>
<blockquote>
<p>[!tip] 导出、发布建议参考思源</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="草稿速记">草稿速记<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E8%8D%89%E7%A8%BF%E9%80%9F%E8%AE%B0" class="hash-link" aria-label="草稿速记的直接链接" title="草稿速记的直接链接" translate="no">​</a></h3>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="日记待办">日记待办<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E6%97%A5%E8%AE%B0%E5%BE%85%E5%8A%9E" class="hash-link" aria-label="日记待办的直接链接" title="日记待办的直接链接" translate="no">​</a></h3>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ai">AI<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#ai" class="hash-link" aria-label="AI的直接链接" title="AI的直接链接" translate="no">​</a></h3>
<ul>
<li class=""><a href="https://github.com/RAIT-09/obsidian-agent-client" target="_blank" rel="noopener noreferrer" class="">obsidian-agent-client</a></li>
<li class=""><a href="https://github.com/YishenTu/claudian" target="_blank" rel="noopener noreferrer" class="">Claudian</a></li>
<li class=""><a href="https://github.com/allenhutchison/obsidian-gemini" target="_blank" rel="noopener noreferrer" class="">Gemini Scribe</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="参考-references">参考 References<a href="https://dzl1943.github.io/blog/%E6%9E%81%E7%AE%80%20Obsidian#%E5%8F%82%E8%80%83-references" class="hash-link" aria-label="参考 References的直接链接" title="参考 References的直接链接" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://help.obsidian.md/" target="_blank" rel="noopener noreferrer" class="">Obsidian Help</a></li>
<li class=""><a href="https://docs.obsidian.md/" target="_blank" rel="noopener noreferrer" class="">Obsidian Developer Docs</a></li>
<li class=""><a href="https://github.com/kepano/obsidian-skills" target="_blank" rel="noopener noreferrer" class="">obsidian-skills</a></li>
<li class=""><a href="https://pkmer.cn/" target="_blank" rel="noopener noreferrer" class="">PKMer</a></li>
</ul>]]></content>
        <category label="Obsidian" term="Obsidian"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Obsidian Mobile 远程调试]]></title>
        <id>https://dzl1943.github.io/blog/Obsidian Mobile 远程调试</id>
        <link href="https://dzl1943.github.io/blog/Obsidian Mobile 远程调试"/>
        <updated>2026-01-18T15:06:00.000Z</updated>
        <summary type="html"><![CDATA[1. 手机开启 USB 调试或无线调试]]></summary>
        <content type="html"><![CDATA[<ol>
<li class="">手机开启 USB 调试或无线调试</li>
<li class="">用类似 scrcpy 的工具连接电脑</li>
<li class="">打开 obsidian</li>
<li class="">以 Edge 为例, 打开 <code>edge://inspect/#devices</code>, 找到对应的设备, 点击 inspect, 之后就是熟悉的 DevTools 界面了</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://dzl1943.github.io/assets/images/Pasted%20image%2020260118150748-d867a97cd0edb6e7ae5529e43594ee78.png" width="2100" height="1682" class="img_ev3q"></p>]]></content>
        <category label="Obsidian" term="Obsidian"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Docusaurus with anyblock]]></title>
        <id>https://dzl1943.github.io/blog/Docusaurus with anyblock</id>
        <link href="https://dzl1943.github.io/blog/Docusaurus with anyblock"/>
        <updated>2026-01-17T23:50:00.000Z</updated>
        <summary type="html"><![CDATA[参考]]></summary>
        <content type="html"><![CDATA[<p>参考</p>
<ul>
<li class=""><a href="https://docusaurus.io/docs/markdown-features/plugins#creating-new-rehyperemark-plugins" target="_blank" rel="noopener noreferrer" class="">https://docusaurus.io/docs/markdown-features/plugins#creating-new-rehyperemark-plugins</a></li>
<li class=""><a href="https://github.com/any-block/DocusaurusDemo" target="_blank" rel="noopener noreferrer" class="">https://github.com/any-block/DocusaurusDemo</a></li>
</ul>
<ol>
<li class="">安装: <code>npm install @anyblock/remark-any-block</code></li>
<li class="">参考上述链接, 创建 MDX 插件, 添加 css, 启用.<!-- -->
<ol>
<li class="">创建 MDX 插件: src/remark/anyblock.ts anyblock2.ts</li>
<li class="">在 src/css/custom.css 中添加 css</li>
<li class="">在 docusaurus.config.js 的 presets 的 docs.remarkPlugins 中添加插件</li>
</ol>
</li>
</ol>
<p>问题记录</p>
<ol>
<li class="">包含删除线会报错</li>
<li class="">包含数学公式会报错</li>
<li class="">title2tabs 仅第一个正常显示</li>
<li class=""><del>注释没有隐藏</del>(无关)</li>
<li class="">fold 无法展开 (lt 正常)</li>
</ol>
<p>还有如下警告</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;w&gt; [webpack.cache.PackFileCacheStrategy] Caching failed for pack: Error: Can't resolve './src/remark/anyblock' in 'XXX'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;w&gt; while resolving './src/remark/anyblock' in XXX as file</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;w&gt;  at resolve esm file ./src/remark/anyblock</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;w&gt;  at file dependencies XXX/docusaurus.config.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;w&gt;  at file XXX/docusaurus.config.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;w&gt;  at unknown 0 XXX/docusaurus.config.js</span><br></span></code></pre></div></div>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[笔记分类-2026]]></title>
        <id>https://dzl1943.github.io/blog/笔记分类-2026</id>
        <link href="https://dzl1943.github.io/blog/笔记分类-2026"/>
        <updated>2026-01-17T21:54:00.000Z</updated>
        <summary type="html"><![CDATA[%%[list2ut]%%]]></summary>
        <content type="html"><![CDATA[<p>%%[list2ut]%%</p>
<ul>
<li class="">私人 private<!-- -->
<ul>
<li class="">主观 subjective<!-- -->
<ul>
<li class="">日志 journals</li>
<li class="">思想 thoughts</li>
</ul>
</li>
<li class="">客观 objective<!-- -->
<ul>
<li class="">项目 projects</li>
<li class="">资料 resources</li>
</ul>
</li>
</ul>
</li>
<li class="">公开 public<!-- -->
<ul>
<li class="">主观 subjective<!-- -->
<ul>
<li class="">动态 status</li>
<li class="">写作 writings</li>
</ul>
</li>
<li class="">客观 objective<!-- -->
<ul>
<li class="">文档 doc|area</li>
<li class="">博客 blog|page</li>
</ul>
</li>
</ul>
</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Obsidian 共享配置]]></title>
        <id>https://dzl1943.github.io/blog/Obsidian 共享配置</id>
        <link href="https://dzl1943.github.io/blog/Obsidian 共享配置"/>
        <updated>2026-01-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Obsidian 的配置存在于每个库的 .obsidian 目录中.]]></summary>
        <content type="html"><![CDATA[<p>Obsidian 的配置存在于每个库的 .obsidian 目录中.
这种机制存在以下弊端:</p>
<ol>
<li class="">如果使用多个库, 那么这些配置将在多个目录构成冗余.</li>
<li class="">如果不在 .gitignore 中添加以排除, 那么它将使得 git 提交历史变得混乱; 如果排除, 又失去了对 Obsidian 配置的学习记录.</li>
</ol>
<p>解决思路是创建一个公共配置库, 或者更进一步 -- 样板库.</p>
<p>然后在其他库中将 .obsidian 软链接到公共库中的配置. (亲测 Templates、Scripts 也可以)</p>
<p>软链接配置至少比软链接内容更恰当.</p>
<p>示例:</p>
<ul>
<li class="">.obsidian/ | 软链接到公共位置</li>
<li class="">.obsidian-mobile/</li>
<li class="">Inbox/</li>
<li class="">Journals/</li>
<li class="">...</li>
<li class="">Archives/</li>
<li class="">Attachments/</li>
<li class="">Misc/<!-- -->
<ul>
<li class="">Templates/ | 软链接到公共位置</li>
<li class="">Scripts/ | 软链接到公共位置</li>
</ul>
</li>
<li class="">.gitignore | 排除 无关(.obsidian*、Misc/)、本地(Inbox)、私有(Journals)</li>
<li class="">.stignore | 排除 无关(.obsidian、Misc/)、本地(Inbox)</li>
</ul>
<p>具体如何操作?</p>
<ol>
<li class="">成立一个公共样板库</li>
<li class="">将本地现有库的配置(以及其他将要替换为软链接的公共内容)修改为软链接的方式(先移除, 提交 git, 再链接)</li>
<li class="">修改.gitignore、.stignore 忽略软链接文件</li>
</ol>
<hr>
<p>注意事项:</p>
<p>存在一些内容相关的配置, 例如:</p>
<ul>
<li class="">workspace: 考虑用工作区弥补</li>
<li class="">bookmarks: 避免使用</li>
</ul>
<p>以及某些插件数据</p>
<p>实在不行还可以退回到使用独立私有配置</p>]]></content>
        <category label="Obsidian" term="Obsidian"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[H1、title 和 aliases]]></title>
        <id>https://dzl1943.github.io/blog/H1 title aliases</id>
        <link href="https://dzl1943.github.io/blog/H1 title aliases"/>
        <updated>2026-01-14T19:39:00.000Z</updated>
        <summary type="html"><![CDATA[原则:]]></summary>
        <content type="html"><![CDATA[<p>原则:</p>
<ul>
<li class="">尽量不要添加 H1, 因为在嵌入的时候会冗余</li>
<li class="">title 用于覆盖文件名, 一般同时也应添加 aliases</li>
<li class="">避免同时包含 H1 和 title</li>
</ul>
<p>实践:</p>
<ul>
<li class="">如果文件名与标题一致, 则无需 H1、title、aliases</li>
<li class="">如果文件名与标题不一致, 且想用标题覆盖文件名<!-- -->
<ul>
<li class="">添加 H1</li>
<li class="">然后用 linter 自动添加 title、aliases</li>
</ul>
</li>
</ul>]]></content>
        <category label="markdown" term="markdown"/>
        <category label="Obsidian" term="Obsidian"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Docusaurus with Obsidian]]></title>
        <id>https://dzl1943.github.io/blog/Docusaurus with Obsidian</id>
        <link href="https://dzl1943.github.io/blog/Docusaurus with Obsidian"/>
        <updated>2026-01-06T10:14:00.000Z</updated>
        <summary type="html"><![CDATA[如何将 Docusaurus 与 Obsidian 协同?]]></summary>
        <content type="html"><![CDATA[<p>如何将 Docusaurus 与 Obsidian 协同?</p>
<p>如何同时处理 docs 和 blog 两种类型?</p>
<p>如何处理附件和链接?</p>
<p>更改 path 即可.</p>
<p>附件用相对路径.</p>
<p>例如:</p>
<ul>
<li class="">vault<!-- -->
<ul>
<li class="">docs</li>
<li class="">blog</li>
<li class="">assets</li>
</ul>
</li>
</ul>]]></content>
        <category label="Obsidian" term="Obsidian"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Docusaurus首页调整]]></title>
        <id>https://dzl1943.github.io/blog/Docusaurus首页调整</id>
        <link href="https://dzl1943.github.io/blog/Docusaurus首页调整"/>
        <updated>2026-01-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Docusaurus 默认的首页包含很多我们不需要的元素, 简单地移除还会有一些问题, 以下是我的调整记录和解决办法.]]></summary>
        <content type="html"><![CDATA[<p>Docusaurus 默认的首页包含很多我们不需要的元素, 简单地移除还会有一些问题, 以下是我的调整记录和解决办法.</p>
<p>首页大致包括如下部分, 绝大多数的调整在 docusaurus.config 的 themeConfig 里</p>
<ul>
<li class="">navbar: 几乎无需调整</li>
<li class="">header: .hero 区域</li>
<li class="">main: 移除或替换 HomepageFeatures</li>
<li class="">footer: 移除或替换 links</li>
</ul>
<p>移除 HomepageFeatures 后, header 下面存在空白区域, 无法全部占满.</p>
<p>解决办法:</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token selector class" style="color:#00009f">.hero</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">flex</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>(可选) 移除或更换背景色</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token selector class" style="color:#00009f">.hero--primary</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--ifm-hero-background-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--ifm-background-color</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--ifm-hero-text-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--ifm-font-color-base</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><img decoding="async" loading="lazy" src="https://dzl1943.github.io/assets/images/1767854664276-570502-771363714874248d7a2d286322a37020.png" width="2502" height="1908" class="img_ev3q"></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Emacs Vs Vim]]></title>
        <id>https://dzl1943.github.io/blog/Emacs Vs Vim</id>
        <link href="https://dzl1943.github.io/blog/Emacs Vs Vim"/>
        <updated>2025-12-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Vim 的特色在于多模态及其按键设计.]]></summary>
        <content type="html"><![CDATA[<p>Vim 的特色在于多模态及其按键设计.</p>
<p>Emacs 是一整个由 Lisp 驱动的文本(buffer)处理系统, 而不只是一个编辑器.</p>
<p>就编辑器而言, Vim (的按键设定)更胜;
但论深度定制能力, Emacs 更强?</p>
<p>简而言之, Vim 是一个编辑器, Emacs 则是一整套文本处理系统.</p>
<p>Emacs 成也 Lisp, 败也 Lisp.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitHub 镜像网站]]></title>
        <id>https://dzl1943.github.io/blog/GitHub 镜像网站</id>
        <link href="https://dzl1943.github.io/blog/GitHub 镜像网站"/>
        <updated>2025-12-21T21:19:00.000Z</updated>
        <summary type="html"><![CDATA[- [ ] https://github.akams.cn/]]></summary>
        <content type="html"><![CDATA[<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://github.akams.cn/" target="_blank" rel="noopener noreferrer" class="">https://github.akams.cn/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://hub.gitmirror.com/" target="_blank" rel="noopener noreferrer" class="">https://hub.gitmirror.com/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://mirror.ghproxy.com/" target="_blank" rel="noopener noreferrer" class="">https://mirror.ghproxy.com/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://ghgo.xyz/" target="_blank" rel="noopener noreferrer" class="">https://ghgo.xyz/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://ghps.cc/" target="_blank" rel="noopener noreferrer" class="">https://ghps.cc/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://gh-proxy.com/" target="_blank" rel="noopener noreferrer" class="">https://gh-proxy.com/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://www.ghproxy.cn/" target="_blank" rel="noopener noreferrer" class="">https://www.ghproxy.cn/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://ghproxy.net/" target="_blank" rel="noopener noreferrer" class="">https://ghproxy.net/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://gh.llkk.cc/" target="_blank" rel="noopener noreferrer" class="">https://gh.llkk.cc/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://gh.ddlc.top/" target="_blank" rel="noopener noreferrer" class="">https://gh.ddlc.top/</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""> <a href="https://gh.idayer.com/" target="_blank" rel="noopener noreferrer" class="">https://gh.idayer.com/</a></li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitHub 仓库分类]]></title>
        <id>https://dzl1943.github.io/blog/GitHub 仓库分类</id>
        <link href="https://dzl1943.github.io/blog/GitHub 仓库分类"/>
        <updated>2025-12-21T21:18:00.000Z</updated>
        <summary type="html"><![CDATA[- App: 软件应用]]></summary>
        <content type="html"><![CDATA[<ul>
<li class="">App: 软件应用<!-- -->
<ul>
<li class="">Desktop<!-- -->
<ul>
<li class="">Windows</li>
<li class="">macOS</li>
</ul>
</li>
<li class="">Mobile<!-- -->
<ul>
<li class="">Android</li>
<li class="">iOS</li>
</ul>
</li>
<li class="">Web</li>
<li class="">CLI</li>
</ul>
</li>
<li class="">Tool: 开发或运维工具?</li>
<li class="">Code: Lib、Framework、Middleware<!-- -->
<ul>
<li class="">C/C++</li>
<li class="">Rust</li>
<li class="">Go</li>
<li class="">Java</li>
<li class="">Python</li>
<li class="">JavaScript</li>
<li class="">Shell</li>
</ul>
</li>
<li class="">Resource</li>
<li class="">Archived</li>
<li class="">Inbox</li>
</ul>
<blockquote>
<p>[!tip] 只整理在用的就行.</p>
</blockquote>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">#!/usr/bin/env python3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> argparse</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> time</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> re</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> sys</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> httpx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MAX_RETRIES </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ACCEPT </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/vnd.github.mercy-preview+json, application/vnd.github.v3+json"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">get_with_retry</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">client</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> params</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">None</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> retries</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">MAX_RETRIES</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> attempt </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token builtin">range</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">retries</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        r </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> params</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">params</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">status_code </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">200</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> r</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">status_code </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">403</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            rem </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">headers</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"X-RateLimit-Remaining"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            reset </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">headers</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"X-RateLimit-Reset"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> rem </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">and</span><span class="token plain"> reset</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                wait </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token builtin">max</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">reset</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">time</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">time</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"rate limit, sleeping </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">wait</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">s..."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">file</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">sys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">stderr</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                time</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">sleep</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">wait</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">continue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">status_code </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">429</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">500</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">502</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">503</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">504</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            time</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">sleep</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">**</span><span class="token plain"> attempt</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.5</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">continue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">raise_for_status</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    r</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">raise_for_status</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">make_progress</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">show</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> show</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">D</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">update</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">self</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> n</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">close</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">self</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> D</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> tqdm </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> tqdm</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> tqdm</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">desc</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"pages"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> unit</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"page"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> Exception</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> make_progress</span><span class="token punctuation" style="color:#393A34">(</span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch_pages</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">username</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> per_page</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">100</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> show_progress</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> username</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">raise</span><span class="token plain"> SystemExit</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"username required"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    endpoint </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"https://api.github.com/users/</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">username</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">/starred"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> httpx</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Client</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">headers</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Accept"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ACCEPT</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">30.0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> verify</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    page </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    all_items </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    pbar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> make_progress</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">show_progress</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">while</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            url </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">endpoint</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">?per_page=</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">per_page</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">&amp;page=</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">page</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            resp </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> get_with_retry</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">client</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            items </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> </span><span class="token builtin">isinstance</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">items</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">list</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token keyword" style="color:#00009f">raise</span><span class="token plain"> RuntimeError</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Unexpected response: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">items</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> page </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">and</span><span class="token plain"> show_progress</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                link </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> resp</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">headers</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Link"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">or</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                m </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> re</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">search</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">r'[&amp;?]page=(\d+)&gt;; rel="last"'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> link</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> m </span><span class="token keyword" style="color:#00009f">and</span><span class="token plain"> </span><span class="token builtin">hasattr</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">pbar</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"total"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                        pbar</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">total </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">m</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">group</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> pbar</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">refresh</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> Exception</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                        </span><span class="token keyword" style="color:#00009f">pass</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            pbar</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">update</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> items</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token keyword" style="color:#00009f">break</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            all_items</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">extend</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">items</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            page </span><span class="token operator" style="color:#393A34">+=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">finally</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        pbar</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> all_items</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">process_items</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">items</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    out </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> it </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> items</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        out</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"name"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"name"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"full_name"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"full_name"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"html_url"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"html_url"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"description"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"description"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"language"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"language"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"topics"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"topics"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">or</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"archived"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">bool</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"archived"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"fork"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">bool</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"fork"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"stargazers_count"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"stargazers_count"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"pushed_at"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> it</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"pushed_at"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    out</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">sort</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">=</span><span class="token keyword" style="color:#00009f">lambda</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"stargazers_count"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> reverse</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> out</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">save_ndjson</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">items</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"w"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> encoding</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"utf-8"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> f</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> it </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> items</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            f</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">dumps</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">it</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ensure_ascii</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">False</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\n"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    p </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> argparse</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ArgumentParser</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">description</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Fetch public GitHub starred repos and save as ndjson."</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    p</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add_argument</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"--username"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"-u"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> required</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">help</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"GitHub username"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    p</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add_argument</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"--per-page"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">type</span><span class="token operator" style="color:#393A34">=</span><span class="token builtin">int</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> default</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">100</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">help</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"per_page (max 100)"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    p</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add_argument</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"--output"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"-o"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> default</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"starred.ndjson"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">help</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"output ndjson file"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    p</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add_argument</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"--no-progress"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> action</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"store_true"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">help</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"hide progress"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    args </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> p</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parse_args</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">per_page </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">per_page </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">try</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        raw </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> fetch_pages</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">username</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> per_page</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">per_page</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> show_progress</span><span class="token operator" style="color:#393A34">=</span><span class="token keyword" style="color:#00009f">not</span><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">no_progress</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">except</span><span class="token plain"> Exception </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Error:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> e</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">file</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">sys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">stderr</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        sys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">exit</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    items </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> process_items</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">raw</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    save_ndjson</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">items</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">output</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Fetched </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation builtin">len</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">raw</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> raw items, processed </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation builtin">len</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">(</span><span class="token string-interpolation interpolation">items</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">)</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c"> -&gt; </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">args</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">output</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> __name__ </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"__main__"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>]]></content>
    </entry>
</feed>