<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Kulafan&#39;s Blog</title>
  
  <subtitle>库拉饭博客</subtitle>
  <link href="https://www.kulafan.com/atom.xml" rel="self"/>
  
  <link href="https://www.kulafan.com/"/>
  <updated>2026-07-13T11:52:48.680Z</updated>
  <id>https://www.kulafan.com/</id>
  
  <author>
    <name>kulafan</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>读&lt;瓦尔登湖&gt;我们有资格像梭罗一样生活吗？</title>
    <link href="https://www.kulafan.com/ee96296a/"/>
    <id>https://www.kulafan.com/ee96296a/</id>
    <published>2026-05-06T00:00:00.000Z</published>
    <updated>2026-07-13T11:52:48.680Z</updated>
    
    <content type="html"><![CDATA[<h3 id><a href="#" class="headerlink" title></a></h3><img src="/ee96296a/img2026-05-06-001.png" alt="img2026-05-06-001.png" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>在读《瓦尔登湖》时，我脑子里始终盘旋着一个很现实的声音：<strong>在这个时代，如果没有一定的经济基础，劝人减少欲望，是不是另一种形式的“何不食肉糜”？</strong></p><p>梭罗可以拎着一把借来的斧头走进山林，是因为他受过哈佛教育，有爱默生这样的朋友作为后盾，他随时拥有“回到文明社会”的选择权。</p><p>但对于今天的我们来说，我们活得累，并不是因为欲望太多，而是因为时代的红利已经被消耗殆尽，有时候，仅仅是为了维持一份体面的生活我们就已经必须拼尽全力，甚至压榨掉所有的业余时间</p><p>梭罗的减法，是建立在他有退路的基础上的；而现代人的忙碌，是为了生存。</p><h3 id="那么，这本书对我们还有意义吗？"><a href="#那么，这本书对我们还有意义吗？" class="headerlink" title="那么，这本书对我们还有意义吗？"></a>那么，这本书对我们还有意义吗？</h3><p>如果把《瓦尔登湖》当成一份“隐居指南”，那它确实太不切实际了。</p><p>它给我的启示不是“辞职去山里”，而是在为生活奋斗的间隙，让自己有时间去给自己一个喘息的间隙，例如写博客、周末去和朋友一起找个清静的河边喝喝咖啡，聊聊天。抛下“功利”，做一些看似毫无意义的的事情。</p><img src="/ee96296a/img2026-05-06-002.png" alt="img2026-05-06-002.png" style="width: 40%; height: auto; display: block; margin: 1rem auto;"><p>《荒野独居》是一个很火的户外生存类节目，按理来说，想要达到生存的目标，应该把每一份热量都运用到收益最高的事情上，可是往往这样子的选手都会被“孤独”打败。用弹幕的话来说就是“san值”掉光了。</p><p>反而有些看似毫无意义甚至是负收益的行为，能让他们产生更强的驱动力，有人执着于盖房子，有人执着于记录着荒野生活的点滴，有人执着于捕猎一头大型野兽，虽然到最后他也没见到这头野兽，可是这头“野兽”的存在让他坚持了很久。。。但是这些都是以物资能满足当前的基本生存为前提。</p><p>《瓦尔登湖》也是给自己留一个念想，设置一个目标，希望自己以后可以像梭罗一样有选择的余地，进可在城市里工作拼搏出自己的天地，退可到山林中过上远离尘世的隐居生活。</p>]]></content>
    
    
    <summary type="html">&lt;h3 id&gt;&lt;a href=&quot;#&quot; class=&quot;headerlink&quot; title&gt;&lt;/a&gt;&lt;/h3&gt;&lt;img src=&quot;/ee96296a/img2026-05-06-001.png&quot; alt=&quot;img2026-05-06-001.png&quot; style=&quot;max-width: 100%; height: auto; display: block; margin: 1rem auto;&quot;&gt;</summary>
    
    
    
    <category term="阅读" scheme="https://www.kulafan.com/categories/%E9%98%85%E8%AF%BB/"/>
    
    
    <category term="阅读" scheme="https://www.kulafan.com/tags/%E9%98%85%E8%AF%BB/"/>
    
  </entry>
  
  <entry>
    <title>香港赛马拍摄之旅</title>
    <link href="https://www.kulafan.com/d502fa3d/"/>
    <id>https://www.kulafan.com/d502fa3d/</id>
    <published>2026-05-02T00:00:00.000Z</published>
    <updated>2026-07-13T11:52:52.401Z</updated>
    
    <content type="html"><![CDATA[<img src="/d502fa3d/img2026-05-02-001.jpg" alt="img2026-05-02-001.jpg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>夜晚在香港的随手拍，这个路标颇有故人之姿</p><p>第一次了解赛马的时候就是在港片里，赌一场马能赢好多钱…虽然这也是一项体育赛事，但是赛事属性几乎已经被掩盖了,这项赛事的一切配套设施好像都是为了押注而生，就连现场屏幕上显示最多的就是赔率。</p><img src="/d502fa3d/img2026-05-02-002.jpg" alt="img2026-05-02-002.jpg" style="width: 60%; height: auto; display: block; margin: 1rem auto;"><p>其实作为旅客而言，来赛马场玩玩也挺有意思的。赛马日也会请明星来表演，这次是周柏豪和华沙。我好几个朋友上个月刚刚买票去看周柏豪的演唱会，这次我无意中就拍到了。。而且我是在媒体区的，所以距离也比较近。现场的氛围也是塑造的很足。而且马场里面的餐厅价格比其他地方便宜好多，味道也好很多。一个海南鸡腿饭+汤 71港币，算是我在香港吃过性价比最高的一顿了。</p><p>马场周围的环境也是挺不错的。</p><img src="/d502fa3d/img2026-05-02-003.jpg" alt="img2026-05-02-003.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>上一次来香港还是2019年的时候，时隔这么多年，香港给我的感觉还是挺大的，之前用alipay和wechat也是一件比较新奇的事情，更多的还是用现金，如今连地铁和一些街边小摊都支持支付宝了。</p><p>变化最大的还是酒店的价格,之前随随便便一间酒店都上千了，现在一家四星级的水准也只要500出头，对比一下现在性价比确实已经起来了。。之前在杭州的亚朵都要600一间，而且大陆许多新兴的酒店品牌给人一种小资，但是又舍不得砸钱的感觉。香港这个地方好歹也是老牌国际化都市，这些服务给人的感觉还是十分到位的。</p><p>之前到香港的基本路线就是，早上过关，匆忙过去购物，到下午七八点再过关回深圳。这次因为出差提前了一晚到，所以也有了在这边当街溜子的机会。</p><img src="/d502fa3d/img2026-05-02-004.jpg" alt="img2026-05-02-004.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>酒店这边的便利店居然在11:00就关门了，以至于我要步行十分钟去买饮料。路上也见到好多人在路边骑车 聊天，也有几个男生拎着篮球成群结队各回各家。以前香港人走路总是特别快,我们不能慢慢悠悠地走，不能挡住他们的路。如今我居然在他们身上感受到了松弛感..我们成了匆忙的那个角色…</p><img src="/d502fa3d/img2026-05-02-005.jpg" alt="img2026-05-02-005.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><img src="/d502fa3d/img2026-05-02-006.jpg" alt="img2026-05-02-006.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><img src="/d502fa3d/img2026-05-02-007.jpg" alt="img2026-05-02-007.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><img src="/d502fa3d/img2026-05-02-008.jpg" alt="img2026-05-02-008.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;">]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/d502fa3d/img2026-05-02-001.jpg&quot; alt=&quot;img2026-05-02-001.jpg&quot; style=&quot;width: 50%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;夜晚在香港的随手拍，这个路标颇有故人之姿&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://www.kulafan.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
    <category term="摄影" scheme="https://www.kulafan.com/tags/%E6%91%84%E5%BD%B1/"/>
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>从写博客到写日记,我理清了这二者的差异</title>
    <link href="https://www.kulafan.com/ffd95897/"/>
    <id>https://www.kulafan.com/ffd95897/</id>
    <published>2026-04-24T00:00:00.000Z</published>
    <updated>2026-07-13T11:52:52.807Z</updated>
    
    <content type="html"><![CDATA[<p>博客断断续续也写了一段时间，自从去年从公司离职以后，也没什么好记录的了，生活也是乱糟糟，毫无规律，更加别提有什么值得记录的事件了。</p><img src="/ffd95897/img2026-04-24-001.jpg" alt="img2026-04-24-001.jpg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>可我一想，我一开始写博客不就是为了记录这些琐碎的事情吗？我现在到底处于何种原因停下来了呢？…其实只要把这些信息放上互联网开始，就不可避免地会把自己摆在一个被审视的位置上。虽然不断地告诉自己，不要有包袱不要有负担，想写什么都可以，在这里没人会认识你。。。</p><p>可事实上赛博空间里的一个个访客，在屏幕背后也是一个社会化的人。更何况现在的博客圈子也把一个个孤立的网站连在了一起，组成了一个与传统博客不一样的社交网络。</p><p>而且，大家的个人信息在网络上使用了那么久，只要稍微查一查，基本上都能顺藤摸瓜地通过你的id，邮箱、域名来锁定你就是你，当你的网络空间和现实世界的社交关系产生了联系之后，还能毫无顾虑地记录现实生活里发生的一切吗？</p><p>所以，我就开始写起了日记。我的日记承担了我曾经认为“博客”的作用。只要我保管好它，大概率不会被其他人知道。而且用笔在纸上记录的仪式感，是电子产品不能替代的。我曾经也用过很多笔记软件写日记，但最后都是会放弃。日记虽然经常会因为某天太累，某天忘了导致断了几天，但是总归还是断断续续地在记录着。</p><p>日记和电子记录最大的区别就是翻看的体验，回看日记的时候，我可以从当时的字迹来回忆起那天的情况，我当时的心情。或许某页纸上还残留着那天在咖啡厅留下的茶渍…..这些都是真真实实所发生的痕迹。虽然电子记录手段也可以通过拍照来把这些场景给记录下来，提醒我那天的环境、天气、氛围。。但是直接暴露出来的信息就像硬塞到嘴里的味精，还是隐晦的线索比较耐人寻味。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;博客断断续续也写了一段时间，自从去年从公司离职以后，也没什么好记录的了，生活也是乱糟糟，毫无规律，更加别提有什么值得记录的事件了。&lt;/p&gt;
&lt;img src=&quot;/ffd95897/img2026-04-24-001.jpg&quot; alt=&quot;img2026-04-24-001.jpg&quot; style=&quot;width: 50%; height: auto; display: block; margin: 1rem auto;&quot;&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>杭州出差之旅-西湖溜达节</title>
    <link href="https://www.kulafan.com/707fa98f/"/>
    <id>https://www.kulafan.com/707fa98f/</id>
    <published>2026-03-23T00:00:00.000Z</published>
    <updated>2026-07-13T11:52:54.983Z</updated>
    
    <content type="html"><![CDATA[<p>这次是跟着客户一起出差到杭州拍摄“西湖溜达节”，住的酒店还挺不错的，能看到杭州的街景。</p><img src="/707fa98f/img2026-03-23-001.jpg" alt="img2026-03-23-001.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><img src="/707fa98f/img2026-03-23-002.jpg" alt="img2026-03-23-002.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>在杭州西湖旁边，风景确实不错，光秃秃的树木，对比广东，有不一样的感觉。</p><img src="/707fa98f/img2026-03-23-003.jpg" alt="img2026-03-23-003.jpg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><img src="/707fa98f/img2026-03-23-004.jpg" alt="img2026-03-23-004.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>传说中的“西湖醋鱼”，也是吃上了，不过这个是改良版。。其实如果没那么多酱的话，味道是可以说非常好的，可是这个酱太过于地狱了，端上来就已经闻到一股扑面而来酸到发苦的醋味。鱼炸的很酥脆，有点像糖醋鱼，如果没有这些致死量的醋汁的话还挺好吃的。</p><img src="/707fa98f/img2026-03-23-005.jpg" alt="img2026-03-23-005.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>晚上下起了小雨，出去散步觅食，杭州的景色也是挺好的，比广东更有人文气息一点，让我有点想起来小时候的感觉，空气里也有一些比较好闻的植物的香气，绿化带也比较丰富，会有一些花来点缀。而广东的绿化很多都是只有绿油油的叶子。。</p><img src="/707fa98f/img2026-03-23-006.jpg" alt="img2026-03-23-006.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><img src="/707fa98f/img2026-03-23-007.jpg" alt="img2026-03-23-007.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>这边的店都比较有设计感，在这里散散步的感觉还是挺好。</p><img src="/707fa98f/img2026-03-23-008.jpg" alt="img2026-03-23-008.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;">]]></content>
    
    
    <summary type="html">&lt;p&gt;这次是跟着客户一起出差到杭州拍摄“西湖溜达节”，住的酒店还挺不错的，能看到杭州的街景。&lt;/p&gt;
&lt;img src=&quot;/707fa98f/img2026-03-23-001.jpg&quot; alt=&quot;img2026-03-23-001.jpg&quot; style=&quot;max-width: 100%; height: auto; display: block; margin: 1rem auto;&quot;&gt;</summary>
    
    
    
    <category term="日常" scheme="https://www.kulafan.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>失而复得的手表</title>
    <link href="https://www.kulafan.com/a6a87ee5/"/>
    <id>https://www.kulafan.com/a6a87ee5/</id>
    <published>2026-01-31T00:00:00.000Z</published>
    <updated>2026-07-13T11:52:55.391Z</updated>
    
    <content type="html"><![CDATA[<img src="/a6a87ee5/img2026-01-31-001.jpeg" alt="img2026-01-31-001.jpeg" style="width: 70%; height: auto; display: block; margin: 1rem auto;"><p>这只手表是我2017高考的时候买的…因为考场内没有钟表 必须自己买手表看时间。</p><p>因为我平时就没有带手表的习惯 所以这只表也经常放在抽屉里吃灰…也仅仅是偶尔拿出来晒晒太阳，因为是一只光动能的表。</p><p>最近一次工作的时候发现掏手机出来看时间确实不太方便 有只手表会比较顺手，于是就想起了它。不过记忆里似乎很久没有看到这只手表了，去年的九月份 我找了好久也没找到，已经接受了它可能不小心被我丢掉的结局。</p><p>但是最近无意中又从抽屉里翻了出来 但我清晰地记得我上次就是翻过这个抽屉 根本就没找到，不过也罢了 能找到总归是好事。</p><p>这只表也有很多离奇的事情。</p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/a6a87ee5/img2026-01-31-001.jpeg&quot; alt=&quot;img2026-01-31-001.jpeg&quot; style=&quot;width: 70%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;这只手表是我2017高考的时候买的…因为考场内没有钟表 必须自己买手表看时间。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>摄影师第一次以伴郎身份参加好兄弟的接亲</title>
    <link href="https://www.kulafan.com/4d5c6725/"/>
    <id>https://www.kulafan.com/4d5c6725/</id>
    <published>2025-10-03T00:00:00.000Z</published>
    <updated>2026-07-13T11:52:57.356Z</updated>
    
    <content type="html"><![CDATA[<img src="/4d5c6725/img2025-10-03-001.jpg" alt="img2025-10-03-001.jpg" style="width: 70%; height: auto; display: block; margin: 1rem auto;"><p>天气还挺不错的，但是比较闷热，穿上衬衫之后汗止不住地流下来。。。</p><p>拍婚礼也拍过不少次了，但这次是以兄弟伴郎团的身份体验了一下接亲的过程，说实话站在不一样的视角体验这个流程 会有很多不一样的感觉。</p><p>原本他是想让我拍摄的，但后面想一想这样拍摄之后又要一边当伴郎太累了，而且他也想和我们几个一起整整齐齐地被记录。</p><p>不过，我在一年前就被定了10.2号早上的接亲拍摄，不过还好他们没有定晚宴 这样我就可以在早上拍摄完之后休息一阵子，这样晚上就有充足的精力来参加接亲了。</p><img src="/4d5c6725/img2025-10-03-002.jpg" alt="img2025-10-03-002.jpg" style="width: 60%; height: auto; display: block; margin: 1rem auto;"><p>下午6点吃了开厨宴，也是第一次才知道接亲前有这个环节。</p><p>我们这帮人好久都没有像这样聚在一起了，真的好难得。</p><img src="/4d5c6725/img2025-10-03-003.jpg" alt="img2025-10-03-003.jpg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>这盘菜挺好吃的，蒜苔炒猪肚，带着一点点好像盐焗鸡一样的味道。</p><img src="/4d5c6725/img2025-10-03-004.jpg" alt="img2025-10-03-004.jpg" style="width: 60%; height: auto; display: block; margin: 1rem auto;"><p>晚上11点出门、我们九点既要就位准备拍摄了。</p><p>我个人觉得最爽的环节还是开车的时候，大家一起开着微信语音，一边听着头车指挥一边跟在婚车后面让婚车拍摄。</p><img src="/4d5c6725/img2025-10-03-005.webp" alt="img2025-10-03-005.webp" style="width: 50%; height: auto; display: block; margin: 1rem auto;">]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/4d5c6725/img2025-10-03-001.jpg&quot; alt=&quot;img2025-10-03-001.jpg&quot; style=&quot;width: 70%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;天气还挺不错的，但是比较闷热，穿上衬衫之后汗止不住地流下来。。。&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://www.kulafan.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>Mac盒盖休眠就Kernel Panic崩溃？原来是MuMu模拟器的问题</title>
    <link href="https://www.kulafan.com/3d531f98/"/>
    <id>https://www.kulafan.com/3d531f98/</id>
    <published>2025-08-07T16:00:00.000Z</published>
    <updated>2026-07-13T11:52:58.095Z</updated>
    
    <content type="html"><![CDATA[<img src="/3d531f98/img2025-08-08-001.webp" alt="img2025-08-08-001.webp" style="width: 60%; height: auto; display: block; margin: 1rem auto;"><blockquote><p>最近我的 Mac 经常遇到一个很诡异的问题，盒盖待机后，再打开时电脑会弹出：因出现问题而重新启动。请按一下按键，或等几秒钟以继续启动。<br>这是我之前略有耳闻的“六国语言”崩溃提示（Kernel Panic）。<br>一开始我以为是硬件问题，结果排查后发现——竟然是某个模拟器的驱动在作妖。<br>这篇文章记录完整的排查思路和解决过程，供大家参考。</p></blockquote><h2 id="现象"><a href="#现象" class="headerlink" title="现象"></a>现象</h2><ul><li>使用 MacBook（macOS 13&#x2F;14 系列）</li><li>平时合上盖子让它睡眠</li><li>再次打开时，屏幕黑底白字弹出一大段文字：<br>“Your computer restarted because of a problem”<br>而且是经典的<strong>六国语言提示</strong></li></ul><h2 id="第一步：找到崩溃日志"><a href="#第一步：找到崩溃日志" class="headerlink" title="第一步：找到崩溃日志"></a>第一步：找到崩溃日志</h2><p>macOS 会在 <code>/Library/Logs/DiagnosticReports</code> 保存 Kernel Panic 日志。</p><p>在终端输入：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -lt /Library/Logs/DiagnosticReports/*panic*</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>我找到了最新的文件：</p><figure class="highlight plaintext"><figcaption><span>text</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">/Library/Logs/DiagnosticReports/Kernel-2025-08-08-142054.panic</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="第二步：分析-Panic-关键段落"><a href="#第二步：分析-Panic-关键段落" class="headerlink" title="第二步：分析 Panic 关键段落"></a>第二步：分析 Panic 关键段落</h2><p>我们需要关注日志里 <code>Kernel Extensions in backtrace</code> 这一段。</p><p>执行：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">grep -A30 <span class="string">&quot;Kernel Extensions in backtrace&quot;</span> /Library/Logs/DiagnosticReports/Kernel-2025-08-08-142054.panic</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>输出中赫然出现了：</p><figure class="highlight plaintext"><figcaption><span>text</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">com.netease.nemu.kext.NemuDrv (15.2.99)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>这是一款<strong>网易 MuMu 模拟器</strong>的内核扩展驱动（NemuDrv）。</p><h2 id="第三步：原因分析"><a href="#第三步：原因分析" class="headerlink" title="第三步：原因分析"></a>第三步：原因分析</h2><p>macOS 在唤醒时会执行电源管理调用链（IOService power management stack）。</p><p>这次的调用链大致如下：</p><figure class="highlight plaintext"><figcaption><span>text</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">IOService::systemWake</span><br><span class="line">  → Spotlight/indexing</span><br><span class="line">    → com.netease.nemu.kext.NemuDrv</span><br><span class="line">      → Kernel Panic 💥</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>简单说：<strong>睡眠唤醒 + Spotlight 索引 &#x3D; NemuDrv 没处理好 → 系统直接崩溃</strong>。</p><img src="/3d531f98/img2025-08-08-002.webp" alt="img2025-08-08-002.webp" style="width: 60%; height: auto; display: block; margin: 1rem auto;"><h2 id="第四步：解决方案"><a href="#第四步：解决方案" class="headerlink" title="第四步：解决方案"></a>第四步：解决方案</h2><h3 id="方法一：彻底卸载-NemuDrv-驱动"><a href="#方法一：彻底卸载-NemuDrv-驱动" class="headerlink" title="方法一：彻底卸载 NemuDrv 驱动"></a>方法一：彻底卸载 NemuDrv 驱动</h3><ol><li><p>关闭所有 MuMu 模拟器进程</p></li><li><p>在终端执行：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> <span class="built_in">rm</span> -rf /Library/Extensions/NemuDrv.kext</span><br><span class="line"><span class="built_in">sudo</span> kextcache --clear-staging</span><br><span class="line"><span class="built_in">sudo</span> kextcache -i /</span><br><span class="line"></span><br></pre></td></tr></table></figure></li><li><p>重启 Mac</p></li><li><p>验证是否卸载成功：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">kextstat | grep -v com.apple</span><br><span class="line"></span><br></pre></td></tr></table></figure></li></ol><p>如果不再显示 <code>com.netease.nemu.kext.NemuDrv</code>，说明已经清除。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><ul><li><strong>内核扩展（kext）是 macOS 内核级插件</strong>，一旦兼容性不好，可能直接导致 Kernel Panic</li><li>升级系统后，某些旧驱动更容易出问题</li><li>如果你遇到类似六国语言崩溃，建议第一时间查看 <code>Kernel Extensions in backtrace</code>，从驱动入手排查</li></ul>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/3d531f98/img2025-08-08-001.webp&quot; alt=&quot;img2025-08-08-001.webp&quot; style=&quot;width: 60%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;blockquote&gt;
&lt;p&gt;最近我的 Mac 经常遇到一个很诡异的问题，盒盖待机后，再打开时电脑会弹出：因出现问题而重新启动。请按一下按键，或等几秒钟以继续启动。&lt;br&gt;这是我之前略有耳闻的“六国语言”崩溃提示（Kernel Panic）。&lt;br&gt;一开始我以为是硬件问题，结果排查后发现——竟然是某个模拟器的驱动在作妖。&lt;br&gt;这篇文章记录完整的排查思路和解决过程，供大家参考。&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="mac" scheme="https://www.kulafan.com/tags/mac/"/>
    
  </entry>
  
  <entry>
    <title>难以达到生活和工作的平衡</title>
    <link href="https://www.kulafan.com/fb0be981/"/>
    <id>https://www.kulafan.com/fb0be981/</id>
    <published>2025-08-04T12:58:00.000Z</published>
    <updated>2026-07-13T11:52:59.103Z</updated>
    
    <content type="html"><![CDATA[<img src="/fb0be981/img2025-08-04-001.webp" alt="img2025-08-04-001.webp" style="width: 70%; height: auto; display: block; margin: 1rem auto;"><p>2025.07.12拍摄于回家的路上，得知自己将要面对离职，有点不太习惯。以前在家附近拍照，是为了在工作的时候看看这些照片，能够让自己有个盼头，坚持住很快就要放假了。</p><p>知道自己将要辞职之后，却又开始为下一份工作所忧虑。似乎很难找到一个平衡点，让生活和工作之间达到平衡为什么就这么难呢。</p><img src="/fb0be981/img2025-08-04-002.webp" alt="img2025-08-04-002.webp" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>最近看到一个帖子,有位仁兄也离职了，他已经休息了一阵子，结果已经习惯了这种休闲的生活，很难再重新鼓起劲投入工作中。我也有点害怕自己变成这样。不过我是个很矛盾的人，工作的时候就想着怎么偷懒，真正休息的时候，又想着要找点正事去做，而且这种事不能与工作相关。</p><p>最近在自学c语言，可是我在家里就一直难以专注，自从大学以后就是这样，总是会时不时想看一下手机，然后注意力就被转移到其他地方，或是倒水的时候看见杯子不是很透明，就想着洗一洗，洗到实验室的标准。</p><p>还是在外面找个安静点的咖啡店效率高一些，之前看到有人说这种现象是表演型人格：一到公共场合就会觉得有人在看着自己的一举一动。我在外面学c语言的话，如果看手机超过一分钟，就会想着有人在盯着自己，不可以这样。便会在这种压力下专注于电脑上的网课。</p><img src="/fb0be981/img2025-08-04-003.webp" alt="img2025-08-04-003.webp" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>而且外面的空调吹得实在是爽，在家吹空调总有种莫名而来的负罪感。在咖啡店用MacBook，总有种难以洗脱的装逼嫌疑，虽然以前我真的不理解，现在长大了才明白，年纪越大越来越难专注于某件事情，甚至对外部条件也越来越苛刻。在高二之前，教室里都没有空调，已经实在想不起来我是怎么在没有空调的环境下学习的。</p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/fb0be981/img2025-08-04-001.webp&quot; alt=&quot;img2025-08-04-001.webp&quot; style=&quot;width: 70%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;2025.07.12拍摄于回家的路上，得知自己将要面对离职，有点不太习惯。以前在家附近拍照，是为了在工作的时候看看这些照片，能够让自己有个盼头，坚持住很快就要放假了。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>离职后的第一天，回归原本的生活</title>
    <link href="https://www.kulafan.com/bfed7778/"/>
    <id>https://www.kulafan.com/bfed7778/</id>
    <published>2025-08-02T01:29:00.000Z</published>
    <updated>2026-07-13T11:52:59.909Z</updated>
    
    <content type="html"><![CDATA[<p>看到了曾经入职后的第一篇博客<a href="https://www.kulafan.com/6d0da52d/#more">《</a><a href="https://www.kulafan.com/6d0da52d/#more"><strong>或许再也回不去的生活》</strong></a><strong>现在也回到了原来的生活了。还是比较感慨的，一眨眼两年半就这样过去了。</strong></p><p>我原本是一个独立摄影师，说白了就是接散活的。日子过的也算安逸，但是在疫情的冲击下，我不得不开始为后面的单子感到焦虑了。于是在同学的介绍下进入了公司。</p><p>这是个月休5天的公司，曾经的我觉得<strong>大小周是个很恐怖的制度</strong>，剥削劳动者的休息时间，劳动者根本没有业余时间来娱乐或者是提升自己，湮没在重复的机械动作里，即便有一天休息时间，也仅够驱散6天工作带来的劳累。但是我却找了个单休的工作…只有月底的那一天是双休的。</p><p>所幸我坚持了下来，我也不知道自己的适应力原来这么强。慢慢地习惯了这种工作强度，曾经的我估计也不会想到吧。</p><p>工作的前两年还是很开心的，虽然有点波折，但是同事们都挺友好，工作虽然累但也有所收获，拍出好看的片子我也很有成就感。</p><p>但是最近经济情况不好，整个行业的业绩其实都是下滑的，我们公司就有种病急乱投医的感觉了。朝令夕改、人员频繁更换，上层脑子一热就把原先计划全部打乱，让我们频繁地加班，做一些没有意义的工作。最终效果不好，责任还落到了我们这里。</p><p>导火索就是新来的领导完全忽视客观规律去安排任务，本来四天的工作量要我压缩到两天，剩下的三天安排新的任务。拿明星的片子还有好莱坞电影让我们对标去拍,也无法提供对应的拍摄条件。既要数量又要质量还舍不得花钱。</p><p>最近听说公司开始看起了风水，为了改变风水他们要把刚刚装修好一年多的公司全部拆了重新装修。对自己人压工资、缩减预算的时候就说大环境不好，花这些没必要的钱就大手大脚。</p><p>前两年我们公司的工资是准时15号发放的，今年开始要拖两三天才能发到，我看网上说如果公司发工资开始变慢了，就说明财务状况出现问题，现金流不足了。我这时候走也算是全身而退吧，如果等到后面开始拖工资的话，就真的进退两难了。</p><p>现在回到了原本的生活，但我想要的并不是这种完全回到。我希望的是能够保持工作的同时，能够有正常的业余时间，8小时工作制、双休。既能保证我的生活、也不用担心经济来源。</p><p>希望后面可以找到份合适的工作吧。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;看到了曾经入职后的第一篇博客&lt;a href=&quot;https://www.kulafan.com/6d0da52d/#more&quot;&gt;《&lt;/a&gt;&lt;a href=&quot;https://www.kulafan.com/6d0da52d/#more&quot;&gt;&lt;strong&gt;或许再也回不去的生活》&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;现在也回到了原来的生活了。还是比较感慨的，一眨眼两年半就这样过去了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我原本是一个独立摄影师，说白了就是接散活的。日子过的也算安逸，但是在疫情的冲击下，我不得不开始为后面的单子感到焦虑了。于是在同学的介绍下进入了公司。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="公司" scheme="https://www.kulafan.com/tags/%E5%85%AC%E5%8F%B8/"/>
    
  </entry>
  
  <entry>
    <title>终于还是离开了我第一家公司</title>
    <link href="https://www.kulafan.com/49052ff6/"/>
    <id>https://www.kulafan.com/49052ff6/</id>
    <published>2025-08-01T16:52:00.000Z</published>
    <updated>2026-07-13T11:53:00.469Z</updated>
    
    <content type="html"><![CDATA[<img src="/49052ff6/img2025-08-02-001.webp" alt="img2025-08-02-001.webp" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>7月31日，是我在这个公司的最后一天了。离开之前也有不少铺垫了，管理层大变动，2025年1月份到7月份我换了5个领导。我们部门在公司里应该是烫手山芋吧，工作是拍摄视频，老板对视频的质量要求比较高。</p><p>我们其实拍的已经属于同行业的比较好的水准了，但是老板还是不满足，拿明星、好莱坞电影的片子要我们去对标。但是人员、设备、场地、预算费用这些几乎完全没有。。</p><p>第一任领导带了我们一年多，其实也算不上“领导”，因为，领导只是起到一个和老板对接的作用。具体的技术困难还是我们自己去解决。拍摄视频属于一个技术活了，整个公司除了我们两个摄影师以外，没人懂这方面的东西。</p><p>在7个月内给我们换了5个领导，新官上任三把火，每个领导上来都要颁布新政，是在不熟悉业务流程的时候制定的，我们底下的人累死累活，最终效果没有多大提升，甚至视频数据也不如之前。但是老板并没有觉得自己有什么问题，反而觉得是我们摄影师的问题，没有拍出她想要的效果。</p><p>这是我第一家公司，工资开的也算比较满意了。因为我们老板对视频的美感要求很高，面试了十几个摄影师，都不理想。后面在同事介绍下过去面试然后入职了。前期的工作拍出来的效果都挺不错的，前两年在这里呆着也挺开心。</p><p>可以说我们两个摄影师在的时候，是视频数据的巅峰期了。也就是2023这一年发了年终奖。后来在公司高层的各种骚操作下公司不断衰退…</p><img src="/49052ff6/img2025-08-02-002.webp" alt="img2025-08-02-002.webp" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>今年4月份开始，公司很多老同事都不见了，见到的都是一些陌生面孔，曾经的“归属感”也开始减弱，我也有预感，后面应该就要轮到我了。</p><p>领导的选择真的很关键。可惜现实中太多只懂得包装自己,却没有能力的管理层了。然后恰巧遇到了没有辨识能力的老板还以为遇到了宝藏。千辛万苦挖进自己的公司，其实是个毒瘤，已经把公司弄的腥风血雨，却浑然不知。</p><p>最终，我还是离开了这个呆了1000多天的公司了。</p><p>相关文章：</p><p>**·公司空降新领导,把她的部门干解散了 **<a href="https://www.kulafan.com/9f14260e/">https://www.kulafan.com/9f14260e/</a></p><p><strong>·</strong><a href="https://www.leonscave.com/p/2025/zhong-yu-ci-zhi/"><strong>终于辞职-by</strong></a><span class="exturl" data-url="aHR0cHM6Ly93d3cubGVvbnNjYXZlLmNvbS9wLzIwMjUvemhvbmcteXUtY2ktemhpLw==">醒石https://www.leonscave.com/p/2025/zhong-yu-ci-zhi/</span></p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/49052ff6/img2025-08-02-001.webp&quot; alt=&quot;img2025-08-02-001.webp&quot; style=&quot;width: 50%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;7月31日，是我在这个公司的最后一天了。离开之前也有不少铺垫了，管理层大变动，2025年1月份到7月份我换了5个领导。我们部门在公司里应该是烫手山芋吧，工作是拍摄视频，老板对视频的质量要求比较高。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
    <category term="公司" scheme="https://www.kulafan.com/tags/%E5%85%AC%E5%8F%B8/"/>
    
  </entry>
  
  <entry>
    <title>修改waline颜色</title>
    <link href="https://www.kulafan.com/bb9e71be/"/>
    <id>https://www.kulafan.com/bb9e71be/</id>
    <published>2025-07-26T00:00:00.000Z</published>
    <updated>2026-07-13T11:52:59.753Z</updated>
    
    <content type="html"><![CDATA[<p>1.下载waline的css文件</p><p><span class="exturl" data-url="aHR0cHM6Ly91bnBrZy5jb20vQHdhbGluZS9jbGllbnRAdjIvZGlzdC93YWxpbmUuY3Nz">https:&#x2F;&#x2F;unpkg.com&#x2F;@waline&#x2F;client@v2&#x2F;dist&#x2F;waline.css</span></p><p>把css文件放入路径：source\css\waline.css</p><p>2.修改css文件</p><p>我把css文件发给ai，让ai帮我排列好顺序，</p><p>之后导入进vscode修改，因为vscode可以实时预览颜色。</p><img src="/bb9e71be/img2025-07-26-001.webp" alt="img2025-07-26-001.webp" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>3.在waline配置文件设置本地css路径</p><p>在主题配置文件中的waline添加：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">cssUrl:</span> <span class="string">/css/waline.css</span></span><br></pre></td></tr></table></figure><img src="/bb9e71be/img2025-07-26-002.webp" alt="img2025-07-26-002.webp" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;">]]></content>
    
    
    <summary type="html">&lt;p&gt;1.下载waline的css文件&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly91bnBrZy5jb20vQHdhbGluZS9jbGllbnRAdjIvZGlzdC93YWxpbmUuY3Nz&quot;&gt;https:&amp;#x2F;&amp;#x2F;unpkg.com&amp;#x2F;@waline&amp;#x2F;client@v2&amp;#x2F;dist&amp;#x2F;waline.css&lt;/span&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="BLOG" scheme="https://www.kulafan.com/categories/BLOG/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>EdgeOne测速后直接获得两个免费套餐 无需邀请码</title>
    <link href="https://www.kulafan.com/fcfc9966/"/>
    <id>https://www.kulafan.com/fcfc9966/</id>
    <published>2025-07-25T06:05:00.000Z</published>
    <updated>2026-07-13T11:53:00.759Z</updated>
    
    <content type="html"><![CDATA[<img src="/fcfc9966/img2025-07-25-001.webp" alt="img2025-07-25-001.webp" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>无论用户此前是否有免费套餐，都可以通过分享测速结果再获得两个免费套餐。</p><p>完成测速后，点击 X 和 Facebook 图标即可快速分享 —— 每成功分享到一个平台，回到现在的活动页即可获得一个免费套餐，每个平台仅可获得一次。</p><p><span class="exturl" data-url="aHR0cHM6Ly9lZGdlb25lLmFpL3poL2dldC1mcmVlLXBsYW4=">https://edgeone.ai/zh/get-free-plan</span></p><p>虽然对于未备案站点而言无法使用国内节点，但是整体来说使用edgeone后会比之前稳定很多。虽然ping的结果和cf差不多都是170-200之间，但是通过edgeone加速之后打开的稳定性很好，之前偶尔会有几次转圈很久之后才加载出页面。</p><p>虽然用vercel的ping值是最低的，仅60左右，不过还是有同样的问题，打开站点之后没加载东西出来，要等一阵子网页才会加载出。综合下来edgeone对网站还是有提升的。老外怎么可能比腾讯更懂我们这些在海外服务器建站的中国人呢。。</p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/fcfc9966/img2025-07-25-001.webp&quot; alt=&quot;img2025-07-25-001.webp&quot; style=&quot;max-width: 100%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;无论用户此前是否有免费套餐，都可以通过分享测速结果再获得两个免费套餐。&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="博客" scheme="https://www.kulafan.com/tags/%E5%8D%9A%E5%AE%A2/"/>
    
  </entry>
  
  <entry>
    <title>历时一年 解决必应bing不收录问题</title>
    <link href="https://www.kulafan.com/8562f354/"/>
    <id>https://www.kulafan.com/8562f354/</id>
    <published>2025-07-22T08:09:00.000Z</published>
    <updated>2026-07-13T11:53:05.397Z</updated>
    
    <content type="html"><![CDATA[<img src="/8562f354/img2025-07-22-001.webp" alt="img2025-07-22-001.webp" style="width: 60%; height: auto; display: block; margin: 1rem auto;"><p>我的博客2017-2019年都在使用wordpress建站，那时候百度 bing google收录都是没问题的，甚至bing是最积极收录的。后来改用了google的blogger，百度收录没那么频繁了，但bing和google还是正常收录，发布的文章基本上很快就能搜索到。</p><h1 id="问题起因"><a href="#问题起因" class="headerlink" title="问题起因"></a>问题起因</h1><p>问题来了，2024年5月份的时候开始把博客转到hexo上了转过去之后没多久三家的收录全掉了。我就觉得很奇怪，难道hexo对收录支持得不友好吗？<br>今年4月份开始更新得比较频繁了，但是收录依然缓慢，只有google的收录比较积极，百度只收录了主页，bing是一页都没有收录呀。于是扎到了这个大神的方法，发送了一封邮件。<br>7月16日的时候，为了引流我把文章转载到知乎上面，添加了原文链接。，到7月21日就恢复收录了，不知道和这个操作有没有关系。<br>今天早上看见也有一位大佬恢复收录了<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmdvb2Rib3lib3kudG9wL3Bvc3RzLzMxMjk4Njk5ODAuaHRtbA==">https://blog.goodboyboy.top/posts/3129869980.html</span><br>不知道这之间有没有什么关联</p><h1 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h1><p>感谢这位大神TopsTip提供的解决方法：<span class="exturl" data-url="aHR0cHM6Ly90b3BzdGlwLmNvbS9zb2x2ZS10aGUtcHJvYmxlbS1vZi1iaW5nLXNlYXJjaC1lbmdpbmUtaW5kZXgtbm90LWJlaW5nLWluY2x1ZGVkLyNnb29nbGVfdmlnbmV0dGU=">https://topstip.com/solve-the-problem-of-bing-search-engine-index-not-being-included/#google_vignette</span></p><h2 id="步骤一：打开登录网站关联的“Bing-Webmasters”；"><a href="#步骤一：打开登录网站关联的“Bing-Webmasters”；" class="headerlink" title="步骤一：打开登录网站关联的“Bing Webmasters”；"></a><strong>步骤一</strong>：打开登录网站关联的“<span class="exturl" data-url="aHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVycy8=">Bing Webmasters</span>”；</h2><h2 id="步骤二：点击页面右上角“-”，然后点击“必应网站管理员支持”；"><a href="#步骤二：点击页面右上角“-”，然后点击“必应网站管理员支持”；" class="headerlink" title="步骤二：点击页面右上角“?”，然后点击“必应网站管理员支持”；"></a><strong>步骤二</strong>：点击页面右上角“?”，然后点击“<span class="exturl" data-url="aHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVycy9oZWxwL3dlYm1hc3RlcnMtc3VwcG9ydC0yNGFiNWViZg==">必应网站管理员支持</span>”；</h2><img src="/8562f354/img2025-07-22-002.png" alt="img2025-07-22-002.png" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><h2 id="第三步：在打开的页面中，拉到最底部，找到“Raise-support-request”-发起支持请求-，并点击它。"><a href="#第三步：在打开的页面中，拉到最底部，找到“Raise-support-request”-发起支持请求-，并点击它。" class="headerlink" title="第三步：在打开的页面中，拉到最底部，找到“Raise support request”(发起支持请求)，并点击它。"></a><strong>第三步</strong>：在打开的页面中，拉到最底部，找到“Raise support request”(发起支持请求)，并点击它。</h2><img src="/8562f354/img2025-07-22-003.png" alt="img2025-07-22-003.png" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><h2 id="步骤四：提交一个请求支持的表单"><a href="#步骤四：提交一个请求支持的表单" class="headerlink" title="步骤四：提交一个请求支持的表单"></a><strong>步骤四</strong>：提交一个请求支持的表单</h2><p>然后你可以通过“<span class="exturl" data-url="aHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVycy9zdXBwb3J0">填写必应网站管理员工具支持的表单</span>”提交一个请求支持的表单。这是最关键的位置，如下图所示，按照以下方式选择问题类型：</p><ul><li><strong>选择需要帮助的网站？清仅选择一个站点</strong>：这里选择你不被必应索引的网站；</li><li><strong>你有哪种类型的问题</strong>：编制索引；</li><li>需<strong>要什么帮助</strong>：我的网站不在索引中<br>重点来了！一定要打开下图中红色箭头所指的“Still have a question?”，默认是“否”。打开后，在“描述你在上面所选网站中遇到的问题。请不要在描述中添加更多网站”输入你遇到的问题。</li></ul><img src="/8562f354/img2025-07-22-004.png" alt="img2025-07-22-004.png" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>然后输入验证码，并点击“获取帮助”。这样这个 FeedBack 就会发送到必应相关审核团队去。以下是我发送的样式，仅供参考！内容请一定要用英文撰写。</p><blockquote><p>I have a problem and need your help! My website does not have any infringing content. All content is written manually by us without using AI and other tools. However, it cannot be indexed by Bing. It prompts the following:</p><p>“The inspected URL is known to Bing but has some issues which are preventing us from serving it to our users. We recommend you to follow Bing Webmaster Guidelines.”</p><p>Could you please help me solve this problem. If there is any problem that needs to be corrected, please inform me by email. Thanks!</p></blockquote><p>本方法转载自TopsTip：</p><p><span class="exturl" data-url="aHR0cHM6Ly90b3BzdGlwLmNvbS9zb2x2ZS10aGUtcHJvYmxlbS1vZi1iaW5nLXNlYXJjaC1lbmdpbmUtaW5kZXgtbm90LWJlaW5nLWluY2x1ZGVkLw==">https://topstip.com/solve-the-problem-of-bing-search-engine-index-not-being-included/</span></p><h1 id="收到回复-问题已解决"><a href="#收到回复-问题已解决" class="headerlink" title="收到回复 问题已解决"></a>收到回复 问题已解决</h1><p>我是6月份开始发送邮件的，然后今天突然发现bing能搜到我自己的博客，之后我在邮件里发现bing给我回复了。</p><img src="/8562f354/img2025-07-22-005.webp" alt="img2025-07-22-005.webp" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;">]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/8562f354/img2025-07-22-001.webp&quot; alt=&quot;img2025-07-22-001.webp&quot; style=&quot;width: 60%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;我的博客2017-2019年都在使用wordpress建站，那时候百度 bing google收录都是没问题的，甚至bing是最积极收录的。后来改用了google的blogger，百度收录没那么频繁了，但bing和google还是正常收录，发布的文章基本上很快就能搜索到。&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="博客" scheme="https://www.kulafan.com/tags/%E5%8D%9A%E5%AE%A2/"/>
    
  </entry>
  
  <entry>
    <title>公司空降新领导,把她的部门干解散了——与朋友的一次撸猫聊天</title>
    <link href="https://www.kulafan.com/9f14260e/"/>
    <id>https://www.kulafan.com/9f14260e/</id>
    <published>2025-07-19T09:29:00.000Z</published>
    <updated>2026-07-13T11:53:06.705Z</updated>
    
    <content type="html"><![CDATA[<img src="/9f14260e/img2025-07-19-001.webp" alt="img2025-07-19-001.webp" style="width: 99%; height: auto; display: block; margin: 1rem auto;"><p>上次在朋友住所喝完茶之后 现在他又把猫接了过来.</p><p>这只猫他从2019年上大学的时候开始养了，后面也跟他在深圳东莞之间往返，因为他喜欢经常搬家，有些地方不适合养猫，这次的地方他觉得还可以，就把猫再接回来了</p><p>距上一次跟他喝茶也过了一个月了吧：<a href="https://www.kulafan.com/589d646b/">https://www.kulafan.com/589d646b/</a></p><h1 id="和朋友聊天"><a href="#和朋友聊天" class="headerlink" title="和朋友聊天"></a>和朋友聊天</h1><p>这次还有另外一个朋友也过来了,他最近想在深圳找工作,但是没有地方落脚。刚刚好我朋友租的这个房子还能再摆一个床垫给他睡觉(就是猫躺着的这里)，这样把床垫一摆 把loft单间瞬间变成双床房了..这么一看房东好像挺亏的呀 本来可以爆改成双房…这样戏谑的玩笑之下也是对深圳租房现状感到无奈吧..</p><img src="/9f14260e/img2025-07-19-002.webp" alt="img2025-07-19-002.webp" style="width: 70%; height: auto; display: block; margin: 1rem auto;"><p>三个中午一起围在小桌子上吃东西..他煎了个山姆买回来的牛扒 看起来确实挺不错的.因为我最近肠胃不好，不敢吃其他东西 只敢吃吃泡面了，变成了真牛肉面。</p><p>吃完饭之后还是像往常一样喝喝茶，聊聊天，就跟以前大学的时候在宿舍里一样。吃着泡面就更加像是在学校宿舍里了，这种令人怀念的感觉就是一霎那闪过，还来不及感受一下这种惬意的氛围，它就溜走了，随之而来的就是生活和工作带来的压力。以前没什么压力，或者说站在现在的视角看来 以前的那些压力根本谈不上是压力。</p><p>步入社会之后自己的抗压能力也加强了好多，很多事情也看淡了，一笑而过。</p><img src="/9f14260e/img2025-07-19-003.webp" alt="img2025-07-19-003.webp" style="width: 80%; height: auto; display: block; margin: 1rem auto;"><h1 id="空降新领导：谁才是公司的“毒瘤”？"><a href="#空降新领导：谁才是公司的“毒瘤”？" class="headerlink" title="空降新领导：谁才是公司的“毒瘤”？"></a>空降新领导：谁才是公司的“毒瘤”？</h1><p>最近公司空降了一位新领导，说是能力出众，其实更擅长的是拍马屁。她原本负责的部门，业绩每况愈下，最后整个团队几乎走光，只剩她一个人还稳稳地待在领导位子上。</p><p>令人费解的是——<strong>她的下属全走了，她却被留下来了，而且老板对她“赞不绝口”。</strong></p><p>如果是某个员工的问题，那走一两个还说得过去。可整个团队解散了，难道问题不是出在她这个“核心”身上吗？</p><p>原本以为她业务水平不行就让她去“摆烂”吧，没想到她还把手伸到了我们部门。我是摄影师，说实话，她的审美简直一言难尽。我们发片到群里等她审核，她从不主动说话，老板说好，她就跟着说好；老板说不好，她立马顺着那个点发表意见。</p><p><strong>她就是个复读机，既无审美，也无判断，却天天指手画脚。</strong></p><p>更荒谬的是，她完全不了解我们部门的运作逻辑，却开始瞎指挥、乱分配任务。原本我们团队的数据还不错，自从她插手后，数据直线下滑。但在她眼里，永远是“执行力不够”在背锅。</p><p>比如她说要拍什么样的风格，我们照做，结果成片发出去数据惨淡；我们按经验拍了一条她看不上的片子，数据却爆了。你说问题到底出在哪？</p><p>现在公司里，老员工几乎走光了，新人一批接一批。所有人都心知肚明：<strong>她没能力，只会甩锅邀功，甚至靠“踩人上位”。</strong></p><p>大家的工作热情正在被一点点磨灭。她时不时来一套“临时起意”的安排，把原本已经排好的拍摄计划搅得一地鸡毛。出问题了，她拍拍屁股走人，责任全归到执行员工身上。</p><p>她手下的成绩是别人撑起来的，出了好结果就全归她邀功；出了差错就说团队不配合、水平不行。</p><p>**这种人，说难听点，是团队的“寄生虫”,**最可怕的是：全公司都看穿她了，只有老板还蒙在鼓里。</p><p>我不知道这样的公司能撑多久。一个没有真才实学的管理者，掌握着话语权，不听专业、不顾逻辑，按情绪行事，最后拖垮的，不止是一个部门，而是整家公司。</p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/9f14260e/img2025-07-19-001.webp&quot; alt=&quot;img2025-07-19-001.webp&quot; style=&quot;width: 99%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;上次在朋友住所喝完茶之后 现在他又把猫接了过来.&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://www.kulafan.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
    <category term="公司" scheme="https://www.kulafan.com/tags/%E5%85%AC%E5%8F%B8/"/>
    
  </entry>
  
  <entry>
    <title>把公众号内容抓取到hexo博客上</title>
    <link href="https://www.kulafan.com/2ac12299/"/>
    <id>https://www.kulafan.com/2ac12299/</id>
    <published>2025-07-13T18:56:00.000Z</published>
    <updated>2026-07-13T11:53:10.958Z</updated>
    
    <content type="html"><![CDATA[<h1 id="一、下载微信公众号的文章"><a href="#一、下载微信公众号的文章" class="headerlink" title="一、下载微信公众号的文章"></a>一、下载微信公众号的文章</h1><p>首先使用某个工具<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3FpeWU0NS93ZWNoYXREb3dubG9hZA==">https://github.com/qiye45/wechatDownload</span> </p><p>把微信公众号的文章全部下载下来，虽然支持md格式，但是有以下问题：</p><ol><li>格式不符合hexo博客的标准</li><li>md文档内的图片地址是保存在微信公众号上面的，需要迁移到本地保存</li></ol><h1 id="二、转换格式"><a href="#二、转换格式" class="headerlink" title="二、转换格式"></a>二、转换格式</h1><p>第一个问题很好解决，可以设置脚本，在每个md文件头加入标题和日期，至于tag这些就暂时不考虑了。</p><p>复制以下代码 粘贴到convert_to_hexo.bat 文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line">@<span class="built_in">echo</span> off</span><br><span class="line">chcp 65001 &gt;nul</span><br><span class="line">setlocal enabledelayedexpansion</span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span> 正在转换公众号文章为Hexo格式...</span><br><span class="line"><span class="built_in">echo</span>.</span><br><span class="line"></span><br><span class="line">:: 创建输出目录</span><br><span class="line"><span class="keyword">if</span> not exist <span class="string">&quot;hexo_posts&quot;</span> <span class="built_in">mkdir</span> <span class="string">&quot;hexo_posts&quot;</span></span><br><span class="line"><span class="keyword">if</span> not exist <span class="string">&quot;post_images&quot;</span> <span class="built_in">mkdir</span> <span class="string">&quot;post_images&quot;</span></span><br><span class="line"></span><br><span class="line">:: 临时文件</span><br><span class="line"><span class="built_in">set</span> <span class="string">&quot;temp_file=hexo_temp.md&quot;</span></span><br><span class="line"></span><br><span class="line">:: 处理所有.md文件</span><br><span class="line"><span class="keyword">for</span> %%f <span class="keyword">in</span> (*.md) <span class="keyword">do</span> (</span><br><span class="line">    <span class="built_in">set</span> <span class="string">&quot;fullname=%%f&quot;</span></span><br><span class="line">    <span class="built_in">set</span> <span class="string">&quot;name=%%~nf&quot;</span></span><br><span class="line">    </span><br><span class="line">    :: 提取日期部分(前8位数字)</span><br><span class="line">    <span class="built_in">set</span> <span class="string">&quot;fdate=!name:~0,8!&quot;</span></span><br><span class="line">    </span><br><span class="line">    :: 验证是否为有效日期</span><br><span class="line">    <span class="built_in">echo</span> !fdate!|findstr /r <span class="string">&quot;^[0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]$&quot;</span>&gt;nul</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> errorlevel 1 (</span><br><span class="line">        <span class="built_in">echo</span> 文件 [!name!] 跳过 - 无效的日期格式</span><br><span class="line">    ) <span class="keyword">else</span> (</span><br><span class="line">        :: 提取标题部分(第9个字符开始)</span><br><span class="line">        <span class="built_in">set</span> <span class="string">&quot;title=!name:~8!&quot;</span></span><br><span class="line">        </span><br><span class="line">        :: 创建对应的图片目录</span><br><span class="line">        <span class="keyword">if</span> not exist <span class="string">&quot;post_images\!name!&quot;</span> <span class="built_in">mkdir</span> <span class="string">&quot;post_images\!name!&quot;</span></span><br><span class="line">        </span><br><span class="line">        :: 格式化日期为YYYY-MM-DD</span><br><span class="line">        <span class="built_in">set</span> <span class="string">&quot;hexo_date=!fdate:~0,4!-!fdate:~4,2!-!fdate:~6,2!&quot;</span></span><br><span class="line">        </span><br><span class="line">        :: 生成临时文件（Front Matter部分）</span><br><span class="line">        (</span><br><span class="line">            <span class="built_in">echo</span> ---</span><br><span class="line">            <span class="built_in">echo</span> title: !title!</span><br><span class="line">            <span class="built_in">echo</span> <span class="built_in">date</span>: !hexo_date! 12:00:00</span><br><span class="line">            <span class="built_in">echo</span> tags: []</span><br><span class="line">            <span class="built_in">echo</span> categories: []</span><br><span class="line">            <span class="built_in">echo</span> ---</span><br><span class="line">            <span class="built_in">echo</span>.</span><br><span class="line">        ) &gt; <span class="string">&quot;%temp_file%&quot;</span></span><br><span class="line">        </span><br><span class="line">        :: 合并Front Matter和原文件内容</span><br><span class="line">        <span class="built_in">type</span> <span class="string">&quot;%temp_file%&quot;</span> <span class="string">&quot;!fullname!&quot;</span> &gt; <span class="string">&quot;hexo_posts\!fullname!&quot;</span></span><br><span class="line">        </span><br><span class="line">        <span class="built_in">echo</span> 已转换: !name!</span><br><span class="line">    )</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line">:: 清理临时文件</span><br><span class="line"><span class="keyword">if</span> exist <span class="string">&quot;%temp_file%&quot;</span> del <span class="string">&quot;%temp_file%&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span>.</span><br><span class="line"><span class="built_in">echo</span> 转换完成！共处理了 %%~f 个文件</span><br><span class="line"><span class="built_in">echo</span> Hexo格式文章保存在 hexo_posts 文件夹</span><br><span class="line"><span class="built_in">echo</span> 图片文件夹保存在 post_images 文件夹</span><br><span class="line">pause</span><br></pre></td></tr></table></figure><h1 id="三、保存图片"><a href="#三、保存图片" class="headerlink" title="三、保存图片"></a>三、保存图片</h1><p>第二个问题的思路就是把每个md文件的图片保存到本地，并且重新命名，命名之后再修改md文档里插入的图片路径。通过node.js脚本来实现。</p><p>处理图片时又遇到如下问题</p><p>1.后面获取的图片会把前面的图片覆盖掉</p><p>2.会把头像信息也获取进来，而且每个文章的图片文件夹是独立的，意味着每个公众号下的头像都会重复保存一次</p><p>复制以下代码 粘贴到 download-images4.js</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> fs = <span class="built_in">require</span>(<span class="string">&#x27;fs&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&#x27;path&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> https = <span class="built_in">require</span>(<span class="string">&#x27;https&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> http = <span class="built_in">require</span>(<span class="string">&#x27;http&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> crypto = <span class="built_in">require</span>(<span class="string">&#x27;crypto&#x27;</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">IMG_REGEX</span> = <span class="regexp">/!\[.*?\]\((http.*?)\)/g</span>;</span><br><span class="line"><span class="keyword">const</span> mimeExtensions = &#123;</span><br><span class="line">  <span class="string">&#x27;image/jpeg&#x27;</span>: <span class="string">&#x27;.jpg&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;image/png&#x27;</span>: <span class="string">&#x27;.png&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;image/gif&#x27;</span>: <span class="string">&#x27;.gif&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;image/webp&#x27;</span>: <span class="string">&#x27;.webp&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;image/svg+xml&#x27;</span>: <span class="string">&#x27;.svg&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;image/bmp&#x27;</span>: <span class="string">&#x27;.bmp&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;image/tiff&#x27;</span>: <span class="string">&#x27;.tiff&#x27;</span></span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">getExtensionFromMime</span>(<span class="params">mime</span>) &#123;</span><br><span class="line">  <span class="keyword">return</span> mimeExtensions[mime] || <span class="string">&#x27;.jpg&#x27;</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">downloadImage</span>(<span class="params">url, savePath</span>) &#123;</span><br><span class="line">  <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">Promise</span>(<span class="function">(<span class="params">resolve, reject</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> mod = url.<span class="title function_">startsWith</span>(<span class="string">&#x27;https&#x27;</span>) ? https : http;</span><br><span class="line">    mod.<span class="title function_">get</span>(url, <span class="function"><span class="params">res</span> =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">if</span> (res.<span class="property">statusCode</span> !== <span class="number">200</span>) <span class="keyword">return</span> <span class="title function_">reject</span>(<span class="string">`状态码 <span class="subst">$&#123;res.statusCode&#125;</span>`</span>);</span><br><span class="line">      <span class="keyword">const</span> ext = <span class="title function_">getExtensionFromMime</span>(res.<span class="property">headers</span>[<span class="string">&#x27;content-type&#x27;</span>] || <span class="string">&#x27;&#x27;</span>);</span><br><span class="line">      <span class="keyword">const</span> filePath = savePath + ext;</span><br><span class="line">      <span class="keyword">const</span> fileStream = fs.<span class="title function_">createWriteStream</span>(filePath);</span><br><span class="line">      res.<span class="title function_">pipe</span>(fileStream);</span><br><span class="line">      fileStream.<span class="title function_">on</span>(<span class="string">&#x27;finish&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">        fileStream.<span class="title function_">close</span>(<span class="function">() =&gt;</span> <span class="title function_">resolve</span>(filePath));</span><br><span class="line">      &#125;);</span><br><span class="line">    &#125;).<span class="title function_">on</span>(<span class="string">&#x27;error&#x27;</span>, reject);</span><br><span class="line">  &#125;);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">collectImageURLs</span>(<span class="params">mdFiles</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> urlCountMap = <span class="keyword">new</span> <span class="title class_">Map</span>();</span><br><span class="line">  <span class="keyword">const</span> fileMap = <span class="keyword">new</span> <span class="title class_">Map</span>(); <span class="comment">// 记录每个文件里有哪些 url</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">const</span> file <span class="keyword">of</span> mdFiles) &#123;</span><br><span class="line">    <span class="keyword">const</span> content = fs.<span class="title function_">readFileSync</span>(file, <span class="string">&#x27;utf8&#x27;</span>);</span><br><span class="line">    <span class="keyword">const</span> urls = [...content.<span class="title function_">matchAll</span>(<span class="variable constant_">IMG_REGEX</span>)].<span class="title function_">map</span>(<span class="function"><span class="params">m</span> =&gt;</span> m[<span class="number">1</span>]);</span><br><span class="line">    fileMap.<span class="title function_">set</span>(file, urls);</span><br><span class="line">    urls.<span class="title function_">forEach</span>(<span class="function"><span class="params">url</span> =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">if</span> (!url.<span class="title function_">startsWith</span>(<span class="string">&#x27;http&#x27;</span>)) <span class="keyword">return</span>;</span><br><span class="line">      urlCountMap.<span class="title function_">set</span>(url, (urlCountMap.<span class="title function_">get</span>(url) || <span class="number">0</span>) + <span class="number">1</span>);</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> &#123; urlCountMap, fileMap &#125;;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">processFiles</span>(<span class="params">mdFiles, urlCountMap, fileMap</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> sharedDir = <span class="string">&#x27;./shared&#x27;</span>;</span><br><span class="line">  <span class="keyword">if</span> (!fs.<span class="title function_">existsSync</span>(sharedDir)) fs.<span class="title function_">mkdirSync</span>(sharedDir);</span><br><span class="line"></span><br><span class="line">  <span class="keyword">const</span> sharedMap = <span class="keyword">new</span> <span class="title class_">Map</span>(); <span class="comment">// URL -&gt; local name</span></span><br><span class="line">  <span class="keyword">let</span> sharedIndex = <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">const</span> file <span class="keyword">of</span> mdFiles) &#123;</span><br><span class="line">    <span class="keyword">const</span> content = fs.<span class="title function_">readFileSync</span>(file, <span class="string">&#x27;utf8&#x27;</span>);</span><br><span class="line">    <span class="keyword">const</span> baseName = path.<span class="title function_">basename</span>(file, <span class="string">&#x27;.md&#x27;</span>);</span><br><span class="line">    <span class="keyword">const</span> folder = <span class="string">`./<span class="subst">$&#123;baseName&#125;</span>`</span>;</span><br><span class="line">    <span class="keyword">if</span> (!fs.<span class="title function_">existsSync</span>(folder)) fs.<span class="title function_">mkdirSync</span>(folder);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">let</span> newContent = content;</span><br><span class="line">    <span class="keyword">let</span> uniqueIndex = <span class="number">1</span>;</span><br><span class="line">    <span class="keyword">const</span> urls = fileMap.<span class="title function_">get</span>(file);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">const</span> url <span class="keyword">of</span> urls) &#123;</span><br><span class="line">      <span class="keyword">if</span> (!url.<span class="title function_">startsWith</span>(<span class="string">&#x27;http&#x27;</span>)) <span class="keyword">continue</span>;</span><br><span class="line"></span><br><span class="line">      <span class="keyword">let</span> newPath = <span class="string">&#x27;&#x27;</span>;</span><br><span class="line"></span><br><span class="line">      <span class="keyword">if</span> (urlCountMap.<span class="title function_">get</span>(url) &gt; <span class="number">1</span>) &#123;</span><br><span class="line">        <span class="comment">// 多处使用的图片</span></span><br><span class="line">        <span class="keyword">if</span> (!sharedMap.<span class="title function_">has</span>(url)) &#123;</span><br><span class="line">          <span class="keyword">const</span> fileName = <span class="string">`img<span class="subst">$&#123;sharedIndex++&#125;</span>`</span>;</span><br><span class="line">          <span class="keyword">try</span> &#123;</span><br><span class="line">            <span class="keyword">const</span> savedPath = <span class="keyword">await</span> <span class="title function_">downloadImage</span>(url, path.<span class="title function_">join</span>(sharedDir, fileName));</span><br><span class="line">            <span class="keyword">const</span> relPath = <span class="string">`shared/<span class="subst">$&#123;path.basename(savedPath)&#125;</span>`</span>;</span><br><span class="line">            sharedMap.<span class="title function_">set</span>(url, relPath);</span><br><span class="line">            <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`✅ [共享] 下载 <span class="subst">$&#123;url&#125;</span> -&gt; <span class="subst">$&#123;relPath&#125;</span>`</span>);</span><br><span class="line">          &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">            <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`❌ 下载失败（共享）<span class="subst">$&#123;url&#125;</span>: <span class="subst">$&#123;err&#125;</span>`</span>);</span><br><span class="line">            <span class="keyword">continue</span>;</span><br><span class="line">          &#125;</span><br><span class="line">        &#125;</span><br><span class="line">        newPath = sharedMap.<span class="title function_">get</span>(url);</span><br><span class="line">      &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">        <span class="comment">// 独占图片</span></span><br><span class="line">        <span class="keyword">const</span> fileName = <span class="string">`img<span class="subst">$&#123;uniqueIndex++&#125;</span>`</span>;</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line">          <span class="keyword">const</span> savedPath = <span class="keyword">await</span> <span class="title function_">downloadImage</span>(url, path.<span class="title function_">join</span>(folder, fileName));</span><br><span class="line">          newPath = <span class="string">`<span class="subst">$&#123;baseName&#125;</span>/<span class="subst">$&#123;path.basename(savedPath)&#125;</span>`</span>;</span><br><span class="line">          <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`✅ [独占] 下载 <span class="subst">$&#123;url&#125;</span> -&gt; <span class="subst">$&#123;newPath&#125;</span>`</span>);</span><br><span class="line">        &#125; <span class="keyword">catch</span> (err) &#123;</span><br><span class="line">          <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`❌ 下载失败（独占）<span class="subst">$&#123;url&#125;</span>: <span class="subst">$&#123;err&#125;</span>`</span>);</span><br><span class="line">          <span class="keyword">continue</span>;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line"></span><br><span class="line">      <span class="comment">// 替换 md 内容</span></span><br><span class="line">      newContent = newContent.<span class="title function_">replaceAll</span>(url, newPath);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    fs.<span class="title function_">writeFileSync</span>(file, newContent, <span class="string">&#x27;utf8&#x27;</span>);</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`📄 完成处理：<span class="subst">$&#123;file&#125;</span>`</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">(<span class="title function_">async</span> () =&gt; &#123;</span><br><span class="line">  <span class="keyword">const</span> mdFiles = fs.<span class="title function_">readdirSync</span>(<span class="string">&#x27;.&#x27;</span>).<span class="title function_">filter</span>(<span class="function"><span class="params">f</span> =&gt;</span> f.<span class="title function_">endsWith</span>(<span class="string">&#x27;.md&#x27;</span>));</span><br><span class="line">  <span class="keyword">const</span> &#123; urlCountMap, fileMap &#125; = <span class="title function_">collectImageURLs</span>(mdFiles);</span><br><span class="line">  <span class="keyword">await</span> <span class="title function_">processFiles</span>(mdFiles, urlCountMap, fileMap);</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`✅ 全部完成！`</span>);</span><br><span class="line">&#125;)();</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;一、下载微信公众号的文章&quot;&gt;&lt;a href=&quot;#一、下载微信公众号的文章&quot; class=&quot;headerlink&quot; title=&quot;一、下载微信公众号的文章&quot;&gt;&lt;/a&gt;一、下载微信公众号的文章&lt;/h1&gt;&lt;p&gt;首先使用某个工具&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9naXRodWIuY29tL3FpeWU0NS93ZWNoYXREb3dubG9hZA==&quot;&gt;https://github.com/qiye45/wechatDownload&lt;/span&gt; &lt;/p&gt;</summary>
    
    
    
    <category term="BLOG" scheme="https://www.kulafan.com/categories/BLOG/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
  </entry>
  
  <entry>
    <title>waline 访客记录</title>
    <link href="https://www.kulafan.com/2d8342c4/"/>
    <id>https://www.kulafan.com/2d8342c4/</id>
    <published>2025-07-13T15:05:00.000Z</published>
    <updated>2026-07-13T11:53:10.381Z</updated>
    
    <content type="html"><![CDATA[<p>在使用 Waline 官方组件时，通过增加<code>count</code>参数改变评论显示数量，具体操作因使用场景（如博客框架类型）而异，以下为常见场景下的教程：</p><h3 id="基于-Hexo-框架（以集成-Next-主题为例）"><a href="#基于-Hexo-框架（以集成-Next-主题为例）" class="headerlink" title="基于 Hexo 框架（以集成 Next 主题为例）"></a><strong>基于 Hexo 框架（以集成 Next 主题为例）</strong></h3><ol><li><strong>找到配置文件</strong>：在 Hexo 根目录下的<code>node_modules/@waline</code>中找到<code>default.yaml</code>文件，这里面包含了 Waline 的所有设置选项。同时，为了方便管理，通常会将需要修改的选项手动写入到 Next 主题下的<code>_config.yml</code>文件中。</li><li><strong>增加或修改</strong><code>**count**</code><strong>参数</strong>：打开<code>_config.yml</code>文件，找到<code>waline</code>配置部分，如果没有则添加。在其中增加<code>count</code>参数并设置期望的值，比如设置为显示 20 条评论：<figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">waline</span>:</span><br><span class="line">  <span class="attr">enable</span>: <span class="literal">true</span> # 是否开启</span><br><span class="line">  <span class="attr">serverurl</span>: waline-server-ecru.<span class="property">vercel</span>.<span class="property">app</span> # waline服务端地址</span><br><span class="line">  <span class="attr">locale</span>:</span><br><span class="line">    <span class="attr">placeholder</span>: 疑义相与析，畅所欲言，不登录也没关系哒 # 评论框的默认文字</span><br><span class="line">  <span class="attr">avatar</span>: mm # 头像风格</span><br><span class="line">  <span class="attr">meta</span>: (nick,mail) # 自定义评论框上面的三个输入框的内容</span><br><span class="line">  <span class="attr">pagesize</span>: <span class="number">20</span> # 这里将评论数量修改为<span class="number">20</span></span><br><span class="line">  <span class="attr">lang</span>: zh-cn # 语言,可选值: en,zh-cn</span><br><span class="line">  <span class="attr">visitor</span>: <span class="literal">true</span> # 文章阅读统计</span><br><span class="line">  <span class="attr">comment_count</span>: <span class="literal">true</span> # 如果为<span class="literal">false</span>,评论数量只会在当前评论页面显示,主页则不显示</span><br><span class="line">  <span class="attr">requiredfields</span>: (nick) # 设置用户评论时必填的信息，(nick,mail):(nick)|(nick,mail)</span><br><span class="line">  <span class="attr">liburl</span>: <span class="attr">https</span>:<span class="comment">//unpkg.com/@waline/client@v2/dist/waline.js # set custom library cdn url</span></span><br></pre></td></tr></table></figure></li></ol><p><span class="exturl" data-url="aHR0cHM6Ly93YWxpbmUua3VsYWZhbi5jb20vY29tbWVudD90eXBlPXJlY2VudA==">https://waline_server&#x2F;comment?type&#x3D;recent</span></p><p>但是这样有个严重的问题，就是通过上面的这个地址每次只能抓取最近的10条评论。</p><p>所以我有了另外一个思路，就是抓取每个页面里的评论内容，生成一个总的文件，这样就能直接通过统计这个文件里的评论内容来整理出访客记录了。</p><h1 id="抓取评论数据的代码：命名为fetch-js"><a href="#抓取评论数据的代码：命名为fetch-js" class="headerlink" title="抓取评论数据的代码：命名为fetch.js"></a>抓取评论数据的代码：命名为fetch.js</h1><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> fs = <span class="built_in">require</span>(<span class="string">&#x27;fs&#x27;</span>).<span class="property">promises</span>;</span><br><span class="line"><span class="keyword">const</span> fetch = <span class="built_in">require</span>(<span class="string">&#x27;node-fetch&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> &#123; <span class="variable constant_">JSDOM</span> &#125; = <span class="built_in">require</span>(<span class="string">&#x27;jsdom&#x27;</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">SITEMAP_URL</span> = “your sitemap<span class="string">&quot;;</span></span><br><span class="line"><span class="string">const WALINE_SERVER = &quot;</span>your comment server<span class="string">&quot;;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">// 从 URL 提取路径</span></span><br><span class="line"><span class="string">function urlToAbbrlinkPath(url) &#123;</span></span><br><span class="line"><span class="string">  try &#123;</span></span><br><span class="line"><span class="string">    const u = new URL(url);</span></span><br><span class="line"><span class="string">    return u.pathname.match(/^\/[a-z0-9]+\/$/)?.[0] || null;</span></span><br><span class="line"><span class="string">  &#125; catch &#123;</span></span><br><span class="line"><span class="string">    return null;</span></span><br><span class="line"><span class="string">  &#125;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">// 获取单个页面的评论</span></span><br><span class="line"><span class="string">async function fetchCommentsForPath(path) &#123;</span></span><br><span class="line"><span class="string">  const pageSize = 100;</span></span><br><span class="line"><span class="string">  let page = 1;</span></span><br><span class="line"><span class="string">  let allComments = [];</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">  while (true) &#123;</span></span><br><span class="line"><span class="string">    const res = await fetch(`$&#123;WALINE_SERVER&#125;/comment?type=comment&amp;page=$&#123;page&#125;&amp;pageSize=$&#123;pageSize&#125;&amp;path=$&#123;encodeURIComponent(path)&#125;`);</span></span><br><span class="line"><span class="string">    const data = await res.json();</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    if (!data || !data.data || data.data.length === 0) break;</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    // 为每条评论添加 path 信息</span></span><br><span class="line"><span class="string">    const commentsWithPath = data.data.map(comment =&gt; (&#123;</span></span><br><span class="line"><span class="string">      ...comment,</span></span><br><span class="line"><span class="string">      path</span></span><br><span class="line"><span class="string">    &#125;));</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    allComments.push(...commentsWithPath);</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    if (data.data.length &lt; pageSize) break;</span></span><br><span class="line"><span class="string">    page++;</span></span><br><span class="line"><span class="string">  &#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">  return allComments;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">// 获取评论的回复</span></span><br><span class="line"><span class="string">async function fetchRepliesForComment(comment) &#123;</span></span><br><span class="line"><span class="string">  const pageSize = 100;</span></span><br><span class="line"><span class="string">  let page = 1;</span></span><br><span class="line"><span class="string">  let replies = [];</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">  while (true) &#123;</span></span><br><span class="line"><span class="string">    const res = await fetch(`$&#123;WALINE_SERVER&#125;/comment?type=reply&amp;page=$&#123;page&#125;&amp;pageSize=$&#123;pageSize&#125;&amp;parent=$&#123;comment._id&#125;`);</span></span><br><span class="line"><span class="string">    const data = await res.json();</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    if (!data || !data.data || data.data.length === 0) break;</span></span><br><span class="line"><span class="string">    replies.push(...data.data);</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    if (data.data.length &lt; pageSize) break;</span></span><br><span class="line"><span class="string">    page++;</span></span><br><span class="line"><span class="string">  &#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">  return replies;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">// 解析 sitemap 获取所有页面路径</span></span><br><span class="line"><span class="string">async function fetchSitemapPaths() &#123;</span></span><br><span class="line"><span class="string">  const res = await fetch(SITEMAP_URL);</span></span><br><span class="line"><span class="string">  const xml = await res.text();</span></span><br><span class="line"><span class="string">  const dom = new JSDOM(xml, &#123; contentType: &quot;</span>application/xml<span class="string">&quot; &#125;);</span></span><br><span class="line"><span class="string">  </span></span><br><span class="line"><span class="string">  const urls = Array.from(dom.window.document.querySelectorAll(&#x27;url &gt; loc&#x27;))</span></span><br><span class="line"><span class="string">    .map(url =&gt; url.textContent.trim());</span></span><br><span class="line"><span class="string">  </span></span><br><span class="line"><span class="string">  return urls</span></span><br><span class="line"><span class="string">    .map(urlToAbbrlinkPath)</span></span><br><span class="line"><span class="string">    .filter(Boolean)</span></span><br><span class="line"><span class="string">    .filter((path, index, self) =&gt; self.indexOf(path) === index); // 去重</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">// 主函数：抓取所有页面的评论及回复</span></span><br><span class="line"><span class="string">async function fetchAllComments() &#123;</span></span><br><span class="line"><span class="string">  const paths = await fetchSitemapPaths();</span></span><br><span class="line"><span class="string">  let allComments = [];</span></span><br><span class="line"><span class="string">  const concurrency = 5; // 并发请求数量</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">  for (let i = 0; i &lt; paths.length; i += concurrency) &#123;</span></span><br><span class="line"><span class="string">    const batchPaths = paths.slice(i, i + concurrency);</span></span><br><span class="line"><span class="string">    console.log(`处理第 $&#123;i+1&#125;-$&#123;Math.min(i+concurrency, paths.length)&#125; 条路径（共 $&#123;paths.length&#125; 条）`);</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    const batchResults = await Promise.all(</span></span><br><span class="line"><span class="string">      batchPaths.map(async path =&gt; &#123;</span></span><br><span class="line"><span class="string">        try &#123;</span></span><br><span class="line"><span class="string">          const comments = await fetchCommentsForPath(path);</span></span><br><span class="line"><span class="string">          console.log(`成功获取 $&#123;path&#125; 的 $&#123;comments.length&#125; 条评论`);</span></span><br><span class="line"><span class="string">          return comments;</span></span><br><span class="line"><span class="string">        &#125; catch (error) &#123;</span></span><br><span class="line"><span class="string">          console.warn(`跳过路径 $&#123;path&#125;: $&#123;error.message&#125;`);</span></span><br><span class="line"><span class="string">          return [];</span></span><br><span class="line"><span class="string">        &#125;</span></span><br><span class="line"><span class="string">      &#125;)</span></span><br><span class="line"><span class="string">    );</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    allComments.push(...batchResults.flat());</span></span><br><span class="line"><span class="string">  &#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">  // 为每条评论获取回复</span></span><br><span class="line"><span class="string">  console.log(&quot;</span>开始获取评论回复...<span class="string">&quot;);</span></span><br><span class="line"><span class="string">  const commentsWithReplies = await Promise.all(</span></span><br><span class="line"><span class="string">    allComments.map(async comment =&gt; &#123;</span></span><br><span class="line"><span class="string">      const replies = await fetchRepliesForComment(comment);</span></span><br><span class="line"><span class="string">      return &#123; ...comment, replies &#125;;</span></span><br><span class="line"><span class="string">    &#125;)</span></span><br><span class="line"><span class="string">  );</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">  return commentsWithReplies;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">// 保存评论数据到 JSON 文件</span></span><br><span class="line"><span class="string">async function main() &#123;</span></span><br><span class="line"><span class="string">  try &#123;</span></span><br><span class="line"><span class="string">    console.log(&quot;</span>开始抓取所有评论...<span class="string">&quot;);</span></span><br><span class="line"><span class="string">    const comments = await fetchAllComments();</span></span><br><span class="line"><span class="string">    console.log(`共抓取到 $&#123;comments.length&#125; 条评论`);</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">    await fs.writeFile(&#x27;source/comments.json&#x27;, JSON.stringify(comments, null, 2));</span></span><br><span class="line"><span class="string">    console.log(&quot;</span>评论数据已保存到 comments.<span class="property">json</span><span class="string">&quot;);</span></span><br><span class="line"><span class="string">  &#125; catch (error) &#123;</span></span><br><span class="line"><span class="string">    console.error(&quot;</span>抓取评论失败:<span class="string">&quot;, error);</span></span><br><span class="line"><span class="string">    process.exit(1);</span></span><br><span class="line"><span class="string">  &#125;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">main();</span></span><br></pre></td></tr></table></figure><h1 id="访客列表页面"><a href="#访客列表页面" class="headerlink" title="访客列表页面"></a>访客列表页面</h1><p>在页面上添加下面的代码，就能识别到抓取的全部评论</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;visitors&quot;</span> <span class="attr">class</span>=<span class="string">&quot;visitors-container&quot;</span>&gt;</span>加载中…<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.visitors-container</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">display</span>: grid;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">grid-template-columns</span>: <span class="built_in">repeat</span>(auto-fill, <span class="built_in">minmax</span>(<span class="number">80px</span>, <span class="number">1</span>fr));</span></span><br><span class="line"><span class="language-css">    <span class="attribute">gap</span>: <span class="built_in">clamp</span>(<span class="number">8px</span>, <span class="number">3vw</span>, <span class="number">16px</span>);</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-top</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">padding</span>: <span class="number">0</span> <span class="number">10px</span>; <span class="comment">/* 增加边距防止内容贴边 */</span></span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.visitor</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">display</span>: flex;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">flex-direction</span>: column;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">align-items</span>: center;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">100%</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: <span class="built_in">var</span>(--background-hover, <span class="built_in">rgba</span>(<span class="number">255</span> <span class="number">255</span> <span class="number">255</span> / <span class="number">0.05</span>));</span></span><br><span class="line"><span class="language-css">    <span class="attribute">padding</span>: <span class="number">6px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">border-radius</span>: <span class="number">8px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">transition</span>: all <span class="number">0.3s</span> ease;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">box-sizing</span>: border-box;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.visitor</span><span class="selector-pseudo">:hover</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">transform</span>: <span class="built_in">translateY</span>(-<span class="number">3px</span>);</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-color</span>: <span class="built_in">var</span>(--background-hover, <span class="built_in">rgba</span>(<span class="number">255</span> <span class="number">255</span> <span class="number">255</span> / <span class="number">0.1</span>));</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.visitor</span> <span class="selector-tag">img</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">48px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">height</span>: <span class="number">48px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="built_in">var</span>(--border-color, <span class="number">#555</span>);</span></span><br><span class="line"><span class="language-css">    <span class="attribute">transition</span>: border-color <span class="number">0.3s</span> ease;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">object-fit</span>: cover; <span class="comment">/* 确保头像不变形 */</span></span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.visitor-name</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">margin-top</span>: <span class="number">6px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-weight</span>: bold;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="built_in">var</span>(--text-color, <span class="number">#eee</span>);</span></span><br><span class="line"><span class="language-css">    <span class="attribute">transition</span>: color <span class="number">0.3s</span> ease;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">white-space</span>: nowrap;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">overflow</span>: hidden;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">text-overflow</span>: ellipsis;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">width</span>: <span class="number">100%</span>;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.visitor-count</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">font-size</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">color</span>: <span class="built_in">var</span>(--text-secondary-color, <span class="number">#bbb</span>);</span></span><br><span class="line"><span class="language-css">    <span class="attribute">transition</span>: color <span class="number">0.3s</span> ease;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 移动端适配 */</span></span></span><br><span class="line"><span class="language-css">  <span class="keyword">@media</span> (<span class="attribute">max-width</span>: <span class="number">576px</span>) &#123;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.visitors-container</span> &#123;</span></span><br><span class="line"><span class="language-css">      <span class="attribute">grid-template-columns</span>: <span class="built_in">repeat</span>(auto-fill, <span class="built_in">minmax</span>(<span class="number">65px</span>, <span class="number">1</span>fr));</span></span><br><span class="line"><span class="language-css">      <span class="attribute">gap</span>: <span class="number">8px</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    </span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.visitor</span> <span class="selector-tag">img</span> &#123;</span></span><br><span class="line"><span class="language-css">      <span class="attribute">width</span>: <span class="number">40px</span>;</span></span><br><span class="line"><span class="language-css">      <span class="attribute">height</span>: <span class="number">40px</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    </span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.visitor-name</span> &#123;</span></span><br><span class="line"><span class="language-css">      <span class="attribute">font-size</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    </span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.visitor-count</span> &#123;</span></span><br><span class="line"><span class="language-css">      <span class="attribute">font-size</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="comment">/* 骨架屏加载状态 */</span></span></span><br><span class="line"><span class="language-css">  <span class="selector-class">.skeleton</span> &#123;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background</span>: <span class="built_in">linear-gradient</span>(<span class="number">90deg</span>, <span class="number">#f0f0f0</span> <span class="number">25%</span>, <span class="number">#e0e0e0</span> <span class="number">50%</span>, <span class="number">#f0f0f0</span> <span class="number">75%</span>);</span></span><br><span class="line"><span class="language-css">    <span class="attribute">background-size</span>: <span class="number">200%</span> <span class="number">100%</span>;</span></span><br><span class="line"><span class="language-css">    <span class="attribute">animation</span>: skeleton-loading <span class="number">1.5s</span> infinite;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css">  </span></span><br><span class="line"><span class="language-css">  <span class="keyword">@keyframes</span> skeleton-loading &#123;</span></span><br><span class="line"><span class="language-css">    <span class="number">0%</span> &#123; <span class="attribute">background-position</span>: <span class="number">200%</span> <span class="number">0</span>; &#125;</span></span><br><span class="line"><span class="language-css">    <span class="number">100%</span> &#123; <span class="attribute">background-position</span>: -<span class="number">200%</span> <span class="number">0</span>; &#125;</span></span><br><span class="line"><span class="language-css">  &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-handlebars"><span class="language-xml"></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  const WALINE_SERVER = &quot;https://your server&quot;;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  const visitorsElement = document.getElementById(&quot;visitors&quot;);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  // 显示骨架屏</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  function showSkeleton() &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    let skeletonHTML = &#x27;&#x27;;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    for (let i = 0; i &lt; 12; i++) &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      skeletonHTML += `</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;visitor&quot;</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;skeleton&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width: 48px; height: 48px; border-radius: 50%;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;skeleton&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width: 80%; height: 16px; margin-top: 8px; border-radius: 4px;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;skeleton&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width: 60%; height: 12px; margin-top: 4px; border-radius: 4px;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      `;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    visitorsElement.innerHTML = skeletonHTML;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  // 初始显示骨架屏</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  showSkeleton();</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">  fetch(`/comments.json?v=$&#123;Date.now()&#125;`) // 添加时间戳防止缓存</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    .then(res =&gt; &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      if (!res.ok) throw new Error(`HTTP错误，状态码: $&#123;res.status&#125;`);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      return res.json();</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    &#125;)</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    .then(comments =&gt; &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      if (!Array.isArray(comments) || comments.length === 0) &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        throw new Error(&#x27;评论数据为空&#x27;);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      const visitors = &#123;&#125;;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars"></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      comments.forEach(comment =&gt; &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        const key = comment.mail || comment.nick;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        if (!visitors[key]) &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          visitors[key] = &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            nick: comment.nick || &#x27;匿名用户&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            avatar: comment.avatar || &#x27;https://picsum.photos/48/48&#x27;,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            count: 0,</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            link: comment.link || &#x27;#&#x27;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          &#125;;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        visitors[key].count++;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      &#125;);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars"></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      const sorted = Object.values(visitors).sort((a, b) =&gt; b.count - a.count);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      if (sorted.length === 0) &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        throw new Error(&#x27;没有找到评论用户&#x27;);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      &#125;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      const html = sorted.map(v =&gt; `</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;visitor&quot;</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;$&#123;v.link&#125;&quot;</span> <span class="attr">target</span>=<span class="string">&quot;_blank&quot;</span> <span class="attr">rel</span>=<span class="string">&quot;noopener noreferrer&quot;</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            <span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;$&#123;v.avatar&#125;&quot;</span> <span class="attr">alt</span>=<span class="string">&quot;$&#123;v.nick&#125;&quot;</span> <span class="attr">onerror</span>=<span class="string">&quot;this.src=&#x27;https://picsum.photos/48/48?random=$&#123;Math.random()&#125;&#x27;&quot;</span> /&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;/<span class="name">a</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;visitor-name&quot;</span>&gt;</span>$&#123;v.nick&#125;<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;visitor-count&quot;</span>&gt;</span>$&#123;v.count&#125; 评论<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      `).join(&#x27;&#x27;);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      </span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      visitorsElement.innerHTML = html;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    &#125;)</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    .catch(error =&gt; &#123;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      console.error(&#x27;加载访客评论失败:&#x27;, error);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      visitorsElement.innerHTML = `</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">style</span>=<span class="string">&quot;width:100%;text-align:center;padding:20px;color:var(--text-secondary-color);&quot;</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">svg</span> <span class="attr">xmlns</span>=<span class="string">&quot;http://www.w3.org/2000/svg&quot;</span> <span class="attr">width</span>=<span class="string">&quot;24&quot;</span> <span class="attr">height</span>=<span class="string">&quot;24&quot;</span> <span class="attr">viewBox</span>=<span class="string">&quot;0 0 24 24&quot;</span> <span class="attr">fill</span>=<span class="string">&quot;none&quot;</span> <span class="attr">stroke</span>=<span class="string">&quot;currentColor&quot;</span> <span class="attr">stroke-width</span>=<span class="string">&quot;2&quot;</span> <span class="attr">stroke-linecap</span>=<span class="string">&quot;round&quot;</span> <span class="attr">stroke-linejoin</span>=<span class="string">&quot;round&quot;</span> <span class="attr">class</span>=<span class="string">&quot;feather feather-alert-circle&quot;</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            <span class="tag">&lt;<span class="name">circle</span> <span class="attr">cx</span>=<span class="string">&quot;12&quot;</span> <span class="attr">cy</span>=<span class="string">&quot;12&quot;</span> <span class="attr">r</span>=<span class="string">&quot;10&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">circle</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            <span class="tag">&lt;<span class="name">line</span> <span class="attr">x1</span>=<span class="string">&quot;12&quot;</span> <span class="attr">y1</span>=<span class="string">&quot;8&quot;</span> <span class="attr">x2</span>=<span class="string">&quot;12&quot;</span> <span class="attr">y2</span>=<span class="string">&quot;12&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">line</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">            <span class="tag">&lt;<span class="name">line</span> <span class="attr">x1</span>=<span class="string">&quot;12&quot;</span> <span class="attr">y1</span>=<span class="string">&quot;16&quot;</span> <span class="attr">x2</span>=<span class="string">&quot;12.01&quot;</span> <span class="attr">y2</span>=<span class="string">&quot;16&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">line</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;/<span class="name">svg</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">p</span> <span class="attr">style</span>=<span class="string">&quot;margin-top:10px;&quot;</span>&gt;</span>加载评论数据失败，请稍后再试<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">          <span class="tag">&lt;<span class="name">p</span> <span class="attr">style</span>=<span class="string">&quot;font-size:12px;margin-top:5px;&quot;</span>&gt;</span>错误: $&#123;error.message&#125;<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">      `;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars">    &#125;);</span></span></span><br><span class="line"><span class="language-xml"><span class="language-handlebars"></span></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><h1 id="设置github-action-定时自动抓取"><a href="#设置github-action-定时自动抓取" class="headerlink" title="设置github action 定时自动抓取"></a>设置github action 定时自动抓取</h1><p>因为这个需要手动执行fetch.js才能拉取每个页面的评论，所以最好添加到githuba ction的workflow里面，让它定期获取。</p><p>我的github action现在每小时都会获取一遍notion上的文章，就直接把获取评论数据的命令也加进去，每个小时也会顺便拉取一次评论数据。</p><p>我唯一需要担心的就是随着时间越来越长，抓取的时间会增加。。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;在使用 Waline 官方组件时，通过增加&lt;code&gt;count&lt;/code&gt;参数改变评论显示数量，具体操作因使用场景（如博客框架类型）而异，以下为常见场景下的教程：&lt;/p&gt;
&lt;h3 id=&quot;基于-Hexo-框架（以集成-Next-主题为例）&quot;&gt;&lt;a href=&quot;#基于-Hexo-框架（以集成-Next-主题为例）&quot; class=&quot;headerlink&quot; title=&quot;基于 Hexo 框架（以集成 Next 主题为例）&quot;&gt;&lt;/a&gt;&lt;strong&gt;基于 Hexo 框架（以集成 Next 主题为例）&lt;/strong&gt;&lt;/h3&gt;</summary>
    
    
    
    <category term="BLOG" scheme="https://www.kulafan.com/categories/BLOG/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>mac开机出现问号文件夹 support.apple/mac/startup</title>
    <link href="https://www.kulafan.com/b478845c/"/>
    <id>https://www.kulafan.com/b478845c/</id>
    <published>2025-07-13T00:00:00.000Z</published>
    <updated>2026-07-13T11:53:07.007Z</updated>
    
    <content type="html"><![CDATA[<img src="/b478845c/img2025-07-13-001.png" alt="img2025-07-13-001.png" style="width: 40%; height: auto; display: block; margin: 1rem auto;"><p>刚刚用的还好好的，突然间就这样了。</p><p>通过按住option键启动，看不到硬盘，我就猜可能是硬盘出了问题。</p><p>但是官方建议是使用cmd+r进入恢复模式。。等了十几分钟还是进不去。</p><p>因为我之前就尝试拆开后盖更换硬盘了<a href="https://www.kulafan.com/8105b1ad/">https://www.kulafan.com/8105b1ad/</a> 所以对这个流程比较熟悉，所以直接对硬件动手吧。</p><p>干脆直接把后盖拆开，把ssd重新插拔一下，我清理金手指的时候摸到好像确实有灰尘粘在上面，把ssd插回去之后果然启动成功了。</p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/b478845c/img2025-07-13-001.png&quot; alt=&quot;img2025-07-13-001.png&quot; style=&quot;width: 40%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;刚刚用的还好好的，突然间就这样了。&lt;/p&gt;</summary>
    
    
    
    <category term="mac" scheme="https://www.kulafan.com/categories/mac/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="mac" scheme="https://www.kulafan.com/tags/mac/"/>
    
  </entry>
  
  <entry>
    <title>在工作日中午顺道拜访友人</title>
    <link href="https://www.kulafan.com/589d646b/"/>
    <id>https://www.kulafan.com/589d646b/</id>
    <published>2025-06-09T16:00:00.000Z</published>
    <updated>2026-07-13T11:53:07.753Z</updated>
    
    <content type="html"><![CDATA[<p>每个人对住所的概念不一样..有的人喜欢新鲜感，喜欢换地方租.上一个地方租约一到 就会立刻找下一个地方了.每到一个新的地方 生活方式也会随之改变.我也觉得这样挺好的,好像可以给日复一日的工作增添一些新鲜感，好像灵魂可以得到一些喘息的机会一样.等到习惯了这种生活后 又会重新投入到重复的生活之中.</p><p>虽然我羡慕这样的生活，可是我比较懒，一想到搬家就要把大包小包的搬来搬去就觉得麻烦..我的上一次搬家就经历了十天.我不能习惯一下子把环境切换过来，我喜欢循序渐进，先把一些不重要的东西搬过去，到后面逐渐把自己的东西转移，最后很不舍地从旧住所抹掉自己生活过的痕迹.</p><p>我这位朋友不一样，两天前还在打听附近的房子，过了两天已经完成搬家了.今天中午刚刚好去参观他的新住所，顺便去喝个茶.</p><img src="/589d646b/img2025-06-10-001.jpeg" alt="img2025-06-10-001.jpeg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>在深圳租房子真的是很令人纠结的..房租是在是太高了，然后想要稍微好一点点的话需要的花费几乎是翻倍的.然而平时也经常是在公司里，根本没什么时间呆在自己住所..周末的话我宁愿开车回东莞 也不会想呆在深圳，因为我想要把自己生活空间和工作空间分割</p><img src="/589d646b/img2025-06-10-002.jpeg" alt="img2025-06-10-002.jpeg" style="width: 40%; height: auto; display: block; margin: 1rem auto;"><p>不过这个布局还是挺好的..有个大阳台，然后采光也不错 窗户外面是一片树林，而不是压抑的楼房，午休的时候在这里泡泡茶也是挺惬意的，这样子的话 房租好歹也不算是浪费了.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;每个人对住所的概念不一样..有的人喜欢新鲜感，喜欢换地方租.上一个地方租约一到 就会立刻找下一个地方了.每到一个新的地方 生活方式也会随之改变.我也觉得这样挺好的,好像可以给日复一日的工作增添一些新鲜感，好像灵魂可以得到一些喘息的机会一样.等到习惯了这种生活后 又会重新投入到重复的生活之中.&lt;/p&gt;
&lt;p&gt;虽然我羡慕这样的生活，可是我比较懒，一想到搬家就要把大包小包的搬来搬去就觉得麻烦..我的上一次搬家就经历了十天.我不能习惯一下子把环境切换过来，我喜欢循序渐进，先把一些不重要的东西搬过去，到后面逐渐把自己的东西转移，最后很不舍地从旧住所抹掉自己生活过的痕迹.&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://www.kulafan.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="日常" scheme="https://www.kulafan.com/tags/%E6%97%A5%E5%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>Hexo博客在页脚添加统计、备案</title>
    <link href="https://www.kulafan.com/68c44c0b/"/>
    <id>https://www.kulafan.com/68c44c0b/</id>
    <published>2025-06-06T00:00:00.000Z</published>
    <updated>2026-07-13T11:53:10.793Z</updated>
    
    <content type="html"><![CDATA[<p>我申请了✮萌ICP备20251199号✮。。。需要在页脚添加</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;https://icp.gov.moe/?keyword=20251199&quot;</span> <span class="attr">target</span>=<span class="string">&quot;_blank&quot;</span>&gt;</span>萌ICP备20251199号<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><p>但是我找不到地方呀。。</p><p>还好 <span class="exturl" data-url="aHR0cHM6Ly9maW5pY291bnRlci5ldS5vcmcv">https://finicounter.eu.org/</span> 这个项目提供了一个hexo next主题在页脚添加信息的方法可以作为参考:</p><p>在Hexo根目录的 <code>scripts/</code> 中添加新文件 <code>totalpageview.js</code> 即可:</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo.<span class="property">extend</span>.<span class="property">filter</span>.<span class="title function_">register</span>(<span class="string">&#x27;theme_inject&#x27;</span>, <span class="keyword">function</span>(<span class="params">injects</span>) &#123;</span><br><span class="line">  injects.<span class="property">footer</span>.<span class="title function_">raw</span>(<span class="string">&#x27;totalpageview&#x27;</span>, <span class="string">&#x27;&lt;div&gt;&lt;span&gt;&lt;a href=&quot;https://finicounter.eu.org/&quot; target=&quot;_blank&quot;&gt;Total Pageview:&lt;/a&gt;&lt;/span&gt;&lt;span id=&quot;finicount_views&quot; style=&quot;display:inline;padding-left:5px;&quot;&gt;&lt;/span&gt;&lt;div&gt; &lt;script async src=&quot;//finicounter.eu.org/finicounter.js&quot;&gt;&lt;/script&gt;&#x27;</span>, &#123;&#125;, &#123;<span class="attr">cache</span>: <span class="literal">false</span>&#125;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>所以 只需要在<code>scripts/</code>里面把萌备案和<code>totalpageview.js</code>整合在一起，就能并排出现在页脚了。</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">hexo.<span class="property">extend</span>.<span class="property">filter</span>.<span class="title function_">register</span>(<span class="string">&#x27;theme_inject&#x27;</span>, <span class="keyword">function</span>(<span class="params">injects</span>) &#123;</span><br><span class="line">  injects.<span class="property">footer</span>.<span class="title function_">raw</span>(<span class="string">&#x27;footer_combined&#x27;</span>, <span class="string">`</span></span><br><span class="line"><span class="string">    &lt;div style=&quot;text-align:center; font-size: 14px;&quot;&gt;</span></span><br><span class="line"><span class="string">    </span></span><br><span class="line"><span class="string">      &lt;span&gt;</span></span><br><span class="line"><span class="string">        &lt;a href=&quot;https://finicounter.eu.org/&quot; target=&quot;_blank&quot;&gt;Total Pageview:&lt;/a&gt;</span></span><br><span class="line"><span class="string">        &lt;span id=&quot;finicount_views&quot; style=&quot;display:inline;padding-left:5px;&quot;&gt;&lt;/span&gt;</span></span><br><span class="line"><span class="string">      &lt;/span&gt;</span></span><br><span class="line"><span class="string">      </span></span><br><span class="line"><span class="string">      &lt;span style=&quot;margin-left: 20px;&quot;&gt;</span></span><br><span class="line"><span class="string">        &lt;a href=&quot;https://icp.gov.moe/?keyword=20251199&quot; target=&quot;_blank&quot;&gt;萌ICP备20251199号&lt;/a&gt;</span></span><br><span class="line"><span class="string">      &lt;/span&gt;</span></span><br><span class="line"><span class="string">      &lt;script async src=&quot;//finicounter.eu.org/finicounter.js&quot;&gt;&lt;/script&gt;</span></span><br><span class="line"><span class="string">      </span></span><br><span class="line"><span class="string">    &lt;/div&gt;</span></span><br><span class="line"><span class="string">  `</span>, &#123;&#125;, &#123; <span class="attr">cache</span>: <span class="literal">false</span> &#125;);</span><br><span class="line">&#125;);</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">&lt;p&gt;我申请了✮萌ICP备20251199号✮。。。需要在页脚添加&lt;/p&gt;
&lt;figure class=&quot;highlight html&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;href&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;https://icp.gov.moe/?keyword=20251199&amp;quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;target&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;_blank&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;萌ICP备20251199号&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;span class=&quot;name&quot;&gt;a&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/hexo/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>仙湖植物园记录</title>
    <link href="https://www.kulafan.com/33a1d7f1/"/>
    <id>https://www.kulafan.com/33a1d7f1/</id>
    <published>2025-06-05T13:00:00.000Z</published>
    <updated>2026-07-13T11:53:10.208Z</updated>
    
    <content type="html"><![CDATA[<img src="/33a1d7f1/img2025-06-05-001.jpg" alt="img2025-06-05-001.jpg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>来到这个地方的时候已经是下午四点了，今天几乎没什么太阳，整个环境都是昏昏沉沉的。。其实很不适合拍摄，但是没有办法呀，都是在各种非理想状态下进行的</p><p>来到一个新的地方拍摄，记录一下</p><img src="/33a1d7f1/img2025-06-05-002.jpeg" alt="img2025-06-05-002.jpeg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>这个地方还行 比较空旷 但是也没什么出彩的景</p><img src="/33a1d7f1/img2025-06-05-003.jpg" alt="img2025-06-05-003.jpg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><img src="/33a1d7f1/img2025-06-05-004.jpg" alt="img2025-06-05-004.jpg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><img src="/33a1d7f1/img2025-06-05-005.jpg" alt="img2025-06-05-005.jpg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>这些花倒是挺好看的，不知道是什么花。</p><img src="/33a1d7f1/img2025-06-05-006.jpeg" alt="img2025-06-05-006.jpeg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>很喜欢这种小溪在下面流动的感觉 很像小时候在山里面玩的场景</p><img src="/33a1d7f1/img2025-06-05-007.jpeg" alt="img2025-06-05-007.jpeg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>就是大夏天在这种环境下拍摄。。都是热的满头大汗，然后还要和蚊子斗智斗勇。</p><p>拍到了七点多，下山的公交车已经没了，硬是走了半小时走下去。</p><img src="/33a1d7f1/img2025-06-05-008.jpeg" alt="img2025-06-05-008.jpeg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>很久没试过这样在晚上坐车，躺在车子里睡觉了。。虽然是加班之后。疲惫不堪的情况下。。</p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/33a1d7f1/img2025-06-05-001.jpg&quot; alt=&quot;img2025-06-05-001.jpg&quot; style=&quot;width: 50%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;来到这个地方的时候已经是下午四点了，今天几乎没什么太阳，整个环境都是昏昏沉沉的。。其实很不适合拍摄，但是没有办法呀，都是在各种非理想状态下进行的&lt;/p&gt;</summary>
    
    
    
    <category term="摄影" scheme="https://www.kulafan.com/categories/%E6%91%84%E5%BD%B1/"/>
    
    
    <category term="摄影" scheme="https://www.kulafan.com/tags/%E6%91%84%E5%BD%B1/"/>
    
  </entry>
  
  <entry>
    <title>端午假期没想到是在折腾博客中度过的</title>
    <link href="https://www.kulafan.com/b25e603a/"/>
    <id>https://www.kulafan.com/b25e603a/</id>
    <published>2025-06-02T07:00:00.000Z</published>
    <updated>2026-07-13T11:53:12.035Z</updated>
    
    <content type="html"><![CDATA[<img src="/b25e603a/img2025-06-02-001.jpeg" alt="img2025-06-02-001.jpeg" style="width: 50%; height: auto; display: block; margin: 1rem auto;"><p>在家旁边的咖啡店，盘盘核桃 点杯茶 看看书，提前过上了老年生活.</p><h1 id="吐槽一下这个版本的瓦尔登湖"><a href="#吐槽一下这个版本的瓦尔登湖" class="headerlink" title="吐槽一下这个版本的瓦尔登湖"></a>吐槽一下这个版本的瓦尔登湖</h1><p>之前看&lt;瓦尔登湖&gt;就是在这家咖啡店里借的实体书.但是呢 这个版本翻译的内容一言难尽.把话翻译得很拗口，和我后面阅读的版本对比之后 还有一些部分漏掉了一些关键的词 导致前后内容天差地别.</p><img src="/b25e603a/img2025-06-02-002.jpeg" alt="img2025-06-02-002.jpeg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>借书的那个下午 三小时看了不到20%..这本书的生成阅读进度是6小时看完..后面实在看不下去了，但是题材还是很吸引我的. </p><p>脱离经济发达的都市 到深山村落里盖自己的房子生活.</p><p>就像我现在经常会在bilibili上看荒野生存类的视频，之前比较沉迷看俄罗斯律师的户外建造视频，现在好像已经看不下动辄半小时节奏缓慢的视频了 相比之下文字的信息密度还比较高.</p><p>后面我到zlibrary上找到了比较早期的翻译版本，才找到了瓦尔登湖的正确打开方式.</p><p>中午吃完饭之后就开始在咖啡厅里折腾notion把内容自动同步到hexo上..</p><h1 id="用手机在notion写博客"><a href="#用手机在notion写博客" class="headerlink" title="用手机在notion写博客"></a>用手机在notion写博客</h1><p>群里有位仁兄提到 用手机写博客是伪需求.我觉得对于严肃的博客而言 确实不适合用手机写，看着巴掌大的屏幕，只能把思路局现在一个窗口 一个画面 难以把信息串联起来.加上手机交互始终不如键盘鼠标，手机写博客的局限性是一定存在的.</p><p>可是如果我就是拿手机在闲暇的时候 把自己脑子里想到的话记下来呢，手机的局限性反而成了个优点，就像我现在这样，和朋友出来打桌球，他们在打而我就坐在旁边休息，这时候写写东西也挺好.</p><img src="/b25e603a/img2025-06-02-003.jpeg" alt="img2025-06-02-003.jpeg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><h1 id="喝早茶"><a href="#喝早茶" class="headerlink" title="喝早茶"></a>喝早茶</h1><img src="/b25e603a/img2025-06-02-004.jpeg" alt="img2025-06-02-004.jpeg" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>感觉现在大多数早茶都趋近相同的味道..没有之前那么有欲望去喝了 而且价格还贵.无非就是找个地方大家一起坐着聊聊天而已</p><p>东莞这边的早茶真的一般般..没有特别好吃的，佛山和广州的就不一样了.至少味道还有些许差别，有自家的特色，而且价格和东莞的比起来真的太实惠了.我们几个朋友都会在节假日高速免费的时候开车七十多公里去顺德喝早茶</p><p>也是今天才意识到 原来端午节不减免高速费呀</p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/b25e603a/img2025-06-02-001.jpeg&quot; alt=&quot;img2025-06-02-001.jpeg&quot; style=&quot;width: 50%; height: auto; display: block; margin: 1rem auto;&quot;&gt;

&lt;p&gt;在家旁边的咖啡店，盘盘核桃 点杯茶 看看书，提前过上了老年生活.&lt;/p&gt;</summary>
    
    
    
    <category term="日常" scheme="https://www.kulafan.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>notion写文章通过Github Action自动同步到hexo博客上</title>
    <link href="https://www.kulafan.com/d9af86de/"/>
    <id>https://www.kulafan.com/d9af86de/</id>
    <published>2025-06-02T00:00:00.000Z</published>
    <updated>2026-07-13T11:53:14.706Z</updated>
    
    <content type="html"><![CDATA[<p>端午节,没有出去玩，在家也无聊，就去外面找个咖啡厅坐着，折腾一下之前纠结了很久的事情，就是用文档软件作为hexo的后端，实现在软件上发文同步到博客。</p><p>我不太懂代码，网上好多教程，但是我都看不懂，所幸现在的ai功能强大，所以大部分代码都是ai来写的。（你遇到问题之后可以把代码丢给ai，让ai帮你修改成你能使用的版本）</p><p>这篇文章就是我第一篇正式用notion来写的，感觉还可以，确实挺不错的。</p><h1 id="一、Notion上的设置"><a href="#一、Notion上的设置" class="headerlink" title="一、Notion上的设置"></a>一、Notion上的设置</h1><h2 id="1-注册notion的-integrations"><a href="#1-注册notion的-integrations" class="headerlink" title="1.注册notion的 integrations"></a>1.注册notion的 integrations</h2><p>我把名字设置成hexo 注册完之后进入设置 把 ntn_开头的复制下来 这是NOTION_TOKEN</p><h2 id="2-设置notion的数据库"><a href="#2-设置notion的数据库" class="headerlink" title="2.设置notion的数据库"></a>2.设置notion的数据库</h2><p>数据库的表上设置以下项目 左边是名称 右边是类型</p><table><thead><tr><th>title</th><th>text</th></tr></thead><tbody><tr><td>date</td><td>date</td></tr><tr><td>tags</td><td>multi select</td></tr><tr><td>categories</td><td>select</td></tr><tr><td>publised</td><td></td></tr></tbody></table><img src="/d9af86de/img2025-06-02-001.png" alt="img2025-06-02-001.png" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>设置完之后就是上面这样。</p><p>接下来 进入到这个表格（数据库）里点击右上角三个点 connect到刚刚设置的hexo integrations</p><p>在右上角share里确保页面都是公开的，然后把链接复制下来</p><p><span class="exturl" data-url="aHR0cHM6Ly9zaGVsbGVkLWx5Y3JhLTQwMi5ub3Rpb24uc2l0ZS8yMDVkZWMwYTUzMDc4MGNlYjgxNmY0OWVhOTkzZjYyOD92PTIwNWRlYzBhNTMwNzgwNWJiYTYwMDAwYzM1NTk4MjY4">https://shelled-lycra-402.notion.site/205dec0a530780ceb816f49ea993f628?v=205dec0a5307805bba60000c35598268&source=copy_link</span></p><p>第一个就是数据库id 把数据库ID复制下来（这里很容易搞错）是32位的</p><p><span class="exturl" data-url="aHR0cHM6Ly9zaGVsbGVkLWx5Y3JhLTQwMi5ub3Rpb24uc2l0ZS8yMDVkZWMwYTUzMDc4MGNlYjgxNmY0OWVhOTkzZjYyOD92PTIwNWRlYzBhNTMwNzgwNWJiYTYwMDAwYzM1NTk4MjY4">205dec0</span>xxxxxxx</p><p>到这里我们获取到两个东西 </p><p>1.NOTION_TOKEN: ntn_xxxxxxx</p><p>2.DATABASE_ID:<span class="exturl" data-url="aHR0cHM6Ly9zaGVsbGVkLWx5Y3JhLTQwMi5ub3Rpb24uc2l0ZS8yMDVkZWMwYTUzMDc4MGNlYjgxNmY0OWVhOTkzZjYyOD92PTIwNWRlYzBhNTMwNzgwNWJiYTYwMDAwYzM1NTk4MjY4">205dec</span>xxxxxx</p><h2 id="3-写文章"><a href="#3-写文章" class="headerlink" title="3.写文章"></a>3.写文章</h2><p>在这个数据库下面新建一列 按照对应的输入文章标题、日期、分类等等。然后title下面文章的名字点进去，就可以编辑里面的内容了，编辑完之后点publised下面的复选框，变成勾之后就可以被抓取了。</p><img src="/d9af86de/img2025-06-02-002.png" alt="img2025-06-02-002.png" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><h1 id="二、接下来就是hexo目录下的的设置"><a href="#二、接下来就是hexo目录下的的设置" class="headerlink" title="二、接下来就是hexo目录下的的设置"></a>二、接下来就是hexo目录下的的设置</h1><h2 id="1-新建sync-js文件夹到hexo根目录下"><a href="#1-新建sync-js文件夹到hexo根目录下" class="headerlink" title="1.新建sync.js文件夹到hexo根目录下"></a>1.新建sync.js文件夹到hexo根目录下</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> &#123; <span class="title class_">Client</span> &#125; = <span class="built_in">require</span>(<span class="string">&#x27;@notionhq/client&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> fs = <span class="built_in">require</span>(<span class="string">&#x27;fs&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&#x27;path&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> https = <span class="built_in">require</span>(<span class="string">&#x27;https&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> &#123; mkdirp &#125; = <span class="built_in">require</span>(<span class="string">&#x27;mkdirp&#x27;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 用于生成安全文件名的辅助函数</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">generateSafeFileName</span>(<span class="params">name</span>) &#123;</span><br><span class="line">  <span class="keyword">return</span> name.<span class="title function_">replace</span>(<span class="regexp">/[^a-zA-Z0-9\u4e00-\u9fa5._-]/g</span>, <span class="string">&#x27;-&#x27;</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 格式化日期为 YYYY-MM-DD 格式</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">formatDate</span>(<span class="params">date</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> year = date.<span class="title function_">getFullYear</span>();</span><br><span class="line">  <span class="keyword">const</span> month = <span class="title class_">String</span>(date.<span class="title function_">getMonth</span>() + <span class="number">1</span>).<span class="title function_">padStart</span>(<span class="number">2</span>, <span class="string">&#x27;0&#x27;</span>);</span><br><span class="line">  <span class="keyword">const</span> day = <span class="title class_">String</span>(date.<span class="title function_">getDate</span>()).<span class="title function_">padStart</span>(<span class="number">2</span>, <span class="string">&#x27;0&#x27;</span>);</span><br><span class="line">  <span class="keyword">return</span> <span class="string">`<span class="subst">$&#123;year&#125;</span>-<span class="subst">$&#123;month&#125;</span>-<span class="subst">$&#123;day&#125;</span>`</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> notion = <span class="keyword">new</span> <span class="title class_">Client</span>(&#123;</span><br><span class="line">  <span class="attr">auth</span>: process.<span class="property">env</span>.<span class="property">NOTION_TOKEN</span>,</span><br><span class="line">  <span class="attr">notionVersion</span>: <span class="string">&#x27;2022-06-28&#x27;</span></span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 记录每篇文章的图片序号</span></span><br><span class="line"><span class="keyword">const</span> imageCounter = <span class="keyword">new</span> <span class="title class_">Map</span>();</span><br><span class="line"></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">syncNotionToHexo</span>(<span class="params"></span>) &#123;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="comment">// 1. 获取文章列表</span></span><br><span class="line">    <span class="keyword">const</span> response = <span class="keyword">await</span> notion.<span class="property">databases</span>.<span class="title function_">query</span>(&#123;</span><br><span class="line">      <span class="attr">database_id</span>: process.<span class="property">env</span>.<span class="property">NOTION_DATABASE_ID</span>,</span><br><span class="line">      <span class="attr">filter</span>: &#123;</span><br><span class="line">        <span class="attr">property</span>: <span class="string">&#x27;Published&#x27;</span>,</span><br><span class="line">        <span class="attr">checkbox</span>: &#123;</span><br><span class="line">          <span class="attr">equals</span>: <span class="literal">true</span></span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (!response.<span class="property">results</span> || response.<span class="property">results</span>.<span class="property">length</span> === <span class="number">0</span>) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;没有找到已发布的文章&#x27;</span>);</span><br><span class="line">      <span class="keyword">return</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 2. 处理每篇文章</span></span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">const</span> post <span class="keyword">of</span> response.<span class="property">results</span>) &#123;</span><br><span class="line">      <span class="keyword">try</span> &#123;</span><br><span class="line">        <span class="keyword">const</span> title = post.<span class="property">properties</span>.<span class="property">Title</span>?.<span class="property">title</span>[<span class="number">0</span>]?.<span class="property">plain_text</span> || <span class="string">&#x27;Untitled&#x27;</span>;</span><br><span class="line">        <span class="keyword">const</span> dateObj = post.<span class="property">properties</span>.<span class="property">Date</span>?.<span class="property">date</span>?.<span class="property">start</span> </span><br><span class="line">          ? <span class="keyword">new</span> <span class="title class_">Date</span>(post.<span class="property">properties</span>.<span class="property">Date</span>.<span class="property">date</span>.<span class="property">start</span>) </span><br><span class="line">          : <span class="keyword">new</span> <span class="title class_">Date</span>();</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">const</span> formattedDate = <span class="title function_">formatDate</span>(dateObj);</span><br><span class="line">        <span class="keyword">const</span> dateString = dateObj.<span class="title function_">toLocaleString</span>(<span class="string">&#x27;sv-SE&#x27;</span>, &#123; <span class="attr">timeZone</span>: <span class="string">&#x27;Asia/Shanghai&#x27;</span> &#125;).<span class="title function_">replace</span>(<span class="string">&#x27; &#x27;</span>, <span class="string">&#x27;T&#x27;</span>);</span><br><span class="line"></span><br><span class="line">        </span><br><span class="line">        <span class="comment">// 提取Tags和Categories</span></span><br><span class="line">        <span class="keyword">const</span> tags = <span class="title function_">extractTags</span>(post);</span><br><span class="line">        <span class="keyword">const</span> categories = <span class="title function_">extractCategories</span>(post);</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">const</span> safeTitle = <span class="title function_">generateSafeFileName</span>(title);</span><br><span class="line">        <span class="keyword">const</span> fileName = <span class="string">`<span class="subst">$&#123;formattedDate&#125;</span>-<span class="subst">$&#123;safeTitle&#125;</span>.md`</span>;</span><br><span class="line">        <span class="keyword">const</span> postDirName = <span class="string">`<span class="subst">$&#123;formattedDate&#125;</span>-<span class="subst">$&#123;safeTitle&#125;</span>`</span>;</span><br><span class="line">        <span class="keyword">const</span> postDir = path.<span class="title function_">join</span>(<span class="string">&#x27;source/_posts&#x27;</span>, postDirName);</span><br><span class="line">        <span class="keyword">const</span> filePath = path.<span class="title function_">join</span>(<span class="string">&#x27;source/_posts&#x27;</span>, fileName);</span><br><span class="line">        </span><br><span class="line">        imageCounter.<span class="title function_">set</span>(post.<span class="property">id</span>, <span class="number">1</span>);</span><br><span class="line">        <span class="keyword">await</span> <span class="title function_">mkdirp</span>(postDir);</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 获取文章内容块</span></span><br><span class="line">        <span class="keyword">const</span> blocks = <span class="keyword">await</span> notion.<span class="property">blocks</span>.<span class="property">children</span>.<span class="title function_">list</span>(&#123;</span><br><span class="line">          <span class="attr">block_id</span>: post.<span class="property">id</span></span><br><span class="line">        &#125;);</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 生成Markdown头部</span></span><br><span class="line">        <span class="keyword">let</span> content = <span class="string">`---</span></span><br><span class="line"><span class="string">title: &quot;<span class="subst">$&#123;title&#125;</span>&quot;</span></span><br><span class="line"><span class="string">date: <span class="subst">$&#123;dateString&#125;</span></span></span><br><span class="line"><span class="string">tags: <span class="subst">$&#123;formatTagsOrCategories(tags)&#125;</span></span></span><br><span class="line"><span class="string">categories: <span class="subst">$&#123;formatTagsOrCategories(categories)&#125;</span></span></span><br><span class="line"><span class="string">---\n\n`</span>;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 处理所有块</span></span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">const</span> block <span class="keyword">of</span> blocks.<span class="property">results</span>) &#123;</span><br><span class="line">          <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;paragraph&#x27;</span>) &#123;</span><br><span class="line">            content += block.<span class="property">paragraph</span>.<span class="property">rich_text</span>.<span class="title function_">map</span>(<span class="function"><span class="params">t</span> =&gt;</span> t.<span class="property">plain_text</span>).<span class="title function_">join</span>(<span class="string">&#x27;&#x27;</span>) + <span class="string">&#x27;\n\n&#x27;</span>;</span><br><span class="line">          &#125; <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;heading_1&#x27;</span>) &#123;</span><br><span class="line">            content += <span class="string">`# <span class="subst">$&#123;block.heading_1.rich_text.map(t =&gt; t.plain_text).join(<span class="string">&#x27;&#x27;</span>)&#125;</span>\n\n`</span>;</span><br><span class="line">          &#125; <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;heading_2&#x27;</span>) &#123;</span><br><span class="line">            content += <span class="string">`## <span class="subst">$&#123;block.heading_2.rich_text.map(t =&gt; t.plain_text).join(<span class="string">&#x27;&#x27;</span>)&#125;</span>\n\n`</span>;</span><br><span class="line">          &#125; <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;heading_3&#x27;</span>) &#123;</span><br><span class="line">            content += <span class="string">`### <span class="subst">$&#123;block.heading_3.rich_text.map(t =&gt; t.plain_text).join(<span class="string">&#x27;&#x27;</span>)&#125;</span>\n\n`</span>;</span><br><span class="line">          &#125; <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;bulleted_list_item&#x27;</span>) &#123;</span><br><span class="line">            content += <span class="string">`- <span class="subst">$&#123;block.bulleted_list_item.rich_text.map(t =&gt; t.plain_text).join(<span class="string">&#x27;&#x27;</span>)&#125;</span>\n`</span>;</span><br><span class="line">          &#125; <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;numbered_list_item&#x27;</span>) &#123;</span><br><span class="line">            content += <span class="string">`1. <span class="subst">$&#123;block.numbered_list_item.rich_text.map(t =&gt; t.plain_text).join(<span class="string">&#x27;&#x27;</span>)&#125;</span>\n`</span>;</span><br><span class="line">          &#125; <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;image&#x27;</span>) &#123;</span><br><span class="line">            <span class="comment">// 处理图片</span></span><br><span class="line">  <span class="keyword">const</span> imageUrl = <span class="title function_">getImageUrl</span>(block);</span><br><span class="line">  <span class="keyword">if</span> (imageUrl) &#123;</span><br><span class="line">    <span class="keyword">const</span> imageNum = imageCounter.<span class="title function_">get</span>(post.<span class="property">id</span>);</span><br><span class="line">    imageCounter.<span class="title function_">set</span>(post.<span class="property">id</span>, imageNum + <span class="number">1</span>);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">const</span> ext = path.<span class="title function_">extname</span>(imageUrl.<span class="title function_">split</span>(<span class="string">&#x27;?&#x27;</span>)[<span class="number">0</span>]) || <span class="string">&#x27;.jpg&#x27;</span>;</span><br><span class="line">    <span class="keyword">const</span> imageName = <span class="string">`img<span class="subst">$&#123;formattedDate&#125;</span>-<span class="subst">$&#123;imageNum.toString().padStart(<span class="number">3</span>, <span class="string">&#x27;0&#x27;</span>)&#125;</span><span class="subst">$&#123;ext&#125;</span>`</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">await</span> <span class="title function_">downloadImage</span>(imageUrl, postDir, imageName);</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 合并所有 caption 文本</span></span><br><span class="line">    <span class="keyword">const</span> captionText = (block.<span class="property">image</span>.<span class="property">caption</span> || [])</span><br><span class="line">      .<span class="title function_">map</span>(<span class="function"><span class="params">t</span> =&gt;</span> t.<span class="property">plain_text</span>)</span><br><span class="line">      .<span class="title function_">join</span>(<span class="string">&#x27;&#x27;</span>);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">let</span> customStyle = <span class="string">&#x27;&#x27;</span>;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">const</span> sizeMatch = captionText.<span class="title function_">match</span>(<span class="regexp">/size\s*=\s*(\d+)%/i</span>);</span><br><span class="line">    <span class="keyword">if</span> (sizeMatch) &#123;</span><br><span class="line">      customStyle += <span class="string">`width: <span class="subst">$&#123;sizeMatch[<span class="number">1</span>]&#125;</span>%; height: auto;`</span>;</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">      customStyle += <span class="string">`max-width: 100%; height: auto;`</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (<span class="regexp">/center/i</span>.<span class="title function_">test</span>(captionText)) &#123;</span><br><span class="line">      customStyle += <span class="string">` display: block; margin: 1rem auto;`</span>;</span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (<span class="regexp">/left/i</span>.<span class="title function_">test</span>(captionText)) &#123;</span><br><span class="line">      customStyle += <span class="string">` display: block; margin: 1rem 0 1rem 0;`</span>;</span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (<span class="regexp">/right/i</span>.<span class="title function_">test</span>(captionText)) &#123;</span><br><span class="line">      customStyle += <span class="string">` display: block; margin: 1rem 0 1rem auto;`</span>;</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">      customStyle += <span class="string">` display: block; margin: 1rem auto;`</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    content += <span class="string">`&lt;img src=&quot;<span class="subst">$&#123;postDirName&#125;</span>/<span class="subst">$&#123;imageName&#125;</span>&quot; alt=&quot;<span class="subst">$&#123;imageName&#125;</span>&quot; style=&quot;<span class="subst">$&#123;customStyle&#125;</span>&quot; /&gt;\n\n`</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">          <span class="comment">// 代码块处理</span></span><br><span class="line">          <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">type</span> === <span class="string">&#x27;code&#x27;</span>) &#123;</span><br><span class="line">            <span class="keyword">const</span> codeBlock = block.<span class="property">code</span>;</span><br><span class="line">            <span class="keyword">const</span> language = codeBlock.<span class="property">language</span> || <span class="string">&#x27;&#x27;</span>;</span><br><span class="line">            <span class="keyword">const</span> codeContent = codeBlock.<span class="property">rich_text</span>.<span class="title function_">map</span>(<span class="function"><span class="params">t</span> =&gt;</span> t.<span class="property">plain_text</span>).<span class="title function_">join</span>(<span class="string">&#x27;&#x27;</span>);</span><br><span class="line">            content += <span class="string">`\`\`\`<span class="subst">$&#123;language&#125;</span>\n<span class="subst">$&#123;codeContent&#125;</span>\n\`\`\`\n\n`</span>;</span><br><span class="line">          &#125;</span><br><span class="line">          <span class="comment">// 可继续添加更多块类型的处理</span></span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// 写入Markdown文件</span></span><br><span class="line">        fs.<span class="title function_">writeFileSync</span>(filePath, content, <span class="string">&#x27;utf8&#x27;</span>);</span><br><span class="line">        <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`成功生成: <span class="subst">$&#123;fileName&#125;</span> (目录: <span class="subst">$&#123;postDirName&#125;</span>)`</span>);</span><br><span class="line">        </span><br><span class="line">      &#125; <span class="keyword">catch</span> (error) &#123;</span><br><span class="line">        <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`处理文章时出错: <span class="subst">$&#123;error.message&#125;</span>`</span>);</span><br><span class="line">      &#125;</span><br><span class="line">    &#125;</span><br><span class="line">  &#125; <span class="keyword">catch</span> (error) &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`同步失败: <span class="subst">$&#123;error.message&#125;</span>`</span>);</span><br><span class="line">    process.<span class="title function_">exit</span>(<span class="number">1</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 获取图片URL</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">getImageUrl</span>(<span class="params">block</span>) &#123;</span><br><span class="line">  <span class="keyword">if</span> (!block.<span class="property">image</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">if</span> (block.<span class="property">image</span>.<span class="property">type</span> === <span class="string">&#x27;external&#x27;</span>) &#123;</span><br><span class="line">    <span class="keyword">return</span> block.<span class="property">image</span>.<span class="property">external</span>.<span class="property">url</span>;</span><br><span class="line">  &#125; <span class="keyword">else</span> <span class="keyword">if</span> (block.<span class="property">image</span>.<span class="property">type</span> === <span class="string">&#x27;file&#x27;</span>) &#123;</span><br><span class="line">    <span class="keyword">return</span> block.<span class="property">image</span>.<span class="property">file</span>.<span class="property">url</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 下载图片到指定目录</span></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">downloadImage</span>(<span class="params">url, dir, fileName</span>) &#123;</span><br><span class="line">  <span class="keyword">return</span> <span class="keyword">new</span> <span class="title class_">Promise</span>(<span class="function">(<span class="params">resolve, reject</span>) =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> filePath = path.<span class="title function_">join</span>(dir, fileName);</span><br><span class="line">    <span class="keyword">const</span> file = fs.<span class="title function_">createWriteStream</span>(filePath);</span><br><span class="line">    </span><br><span class="line">    https.<span class="title function_">get</span>(url, <span class="function"><span class="params">response</span> =&gt;</span> &#123;</span><br><span class="line">      <span class="keyword">if</span> (response.<span class="property">statusCode</span> !== <span class="number">200</span>) &#123;</span><br><span class="line">        <span class="title function_">reject</span>(<span class="keyword">new</span> <span class="title class_">Error</span>(<span class="string">`下载图片失败，状态码: <span class="subst">$&#123;response.statusCode&#125;</span>`</span>));</span><br><span class="line">        <span class="keyword">return</span>;</span><br><span class="line">      &#125;</span><br><span class="line">      </span><br><span class="line">      response.<span class="title function_">pipe</span>(file);</span><br><span class="line">      </span><br><span class="line">      file.<span class="title function_">on</span>(<span class="string">&#x27;finish&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">        file.<span class="title function_">close</span>();</span><br><span class="line">        <span class="title function_">resolve</span>(fileName);</span><br><span class="line">      &#125;);</span><br><span class="line">    &#125;).<span class="title function_">on</span>(<span class="string">&#x27;error&#x27;</span>, <span class="function"><span class="params">error</span> =&gt;</span> &#123;</span><br><span class="line">      fs.<span class="title function_">unlink</span>(filePath, <span class="function">() =&gt;</span> &#123;&#125;);</span><br><span class="line">      <span class="title function_">reject</span>(error);</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 提取Tags的辅助函数</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">extractTags</span>(<span class="params">post</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> tagProperty = post.<span class="property">properties</span>.<span class="property">Tags</span>;</span><br><span class="line">  <span class="keyword">if</span> (!tagProperty || tagProperty.<span class="property">type</span> !== <span class="string">&#x27;multi_select&#x27;</span>) &#123;</span><br><span class="line">    <span class="keyword">return</span> [];</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> tagProperty.<span class="property">multi_select</span>.<span class="title function_">map</span>(<span class="function"><span class="params">option</span> =&gt;</span> option.<span class="property">name</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 提取Categories的辅助函数</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">extractCategories</span>(<span class="params">post</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> categoryProperty = post.<span class="property">properties</span>.<span class="property">Categories</span>;</span><br><span class="line">  <span class="keyword">if</span> (!categoryProperty || categoryProperty.<span class="property">type</span> !== <span class="string">&#x27;select&#x27;</span>) &#123;</span><br><span class="line">    <span class="keyword">return</span> [];</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> categoryProperty.<span class="property">select</span> ? [categoryProperty.<span class="property">select</span>.<span class="property">name</span>] : [];</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 格式化Tags或Categories为YAML数组格式</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">formatTagsOrCategories</span>(<span class="params">items</span>) &#123;</span><br><span class="line">  <span class="keyword">if</span> (!items || items.<span class="property">length</span> === <span class="number">0</span>) &#123;</span><br><span class="line">    <span class="keyword">return</span> <span class="string">&#x27;[]&#x27;</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">if</span> (items.<span class="property">length</span> === <span class="number">1</span>) &#123;</span><br><span class="line">    <span class="keyword">return</span> <span class="string">`[<span class="subst">$&#123;items[<span class="number">0</span>]&#125;</span>]`</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="keyword">return</span> <span class="string">&#x27;[&#x27;</span> + items.<span class="title function_">map</span>(<span class="function"><span class="params">item</span> =&gt;</span> <span class="string">`&quot;<span class="subst">$&#123;item&#125;</span>&quot;`</span>).<span class="title function_">join</span>(<span class="string">&#x27;, &#x27;</span>) + <span class="string">&#x27;]&#x27;</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 获取图片在Notion中的显示尺寸（基于block_width属性）</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">getImageDisplaySize</span>(<span class="params">block</span>) &#123;</span><br><span class="line">  <span class="keyword">if</span> (!block.<span class="property">image</span> || !block.<span class="property">format</span>) <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// block.format.block_width 表示图片容器宽度占页面宽度的比例</span></span><br><span class="line">  <span class="comment">// 常见值：1（全宽）、0.6（中等）、0.3（小）</span></span><br><span class="line">  <span class="keyword">const</span> widthRatio = block.<span class="property">format</span>?.<span class="property">block_width</span>;</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">if</span> (widthRatio) &#123;</span><br><span class="line">    <span class="comment">// 根据你的Hexo主题页面宽度调整这个值</span></span><br><span class="line">    <span class="keyword">const</span> baseWidth = <span class="number">800</span>; </span><br><span class="line">    <span class="keyword">return</span> &#123;</span><br><span class="line">      <span class="attr">width</span>: <span class="title class_">Math</span>.<span class="title function_">round</span>(baseWidth * widthRatio),</span><br><span class="line">      <span class="comment">// 不设置高度，让浏览器自动按比例缩放</span></span><br><span class="line">    &#125;;</span><br><span class="line">  &#125;</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 执行同步</span></span><br><span class="line"><span class="title function_">syncNotionToHexo</span>();</span><br></pre></td></tr></table></figure><p>把这个方到博客的目录下。</p><h2 id="2-然后新建一个-env文件"><a href="#2-然后新建一个-env文件" class="headerlink" title="2.然后新建一个.env文件"></a>2.然后新建一个.env文件</h2><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">NOTION_TOKEN=ntn_xxxx 替换成你的TOKEN</span><br><span class="line">NOTION_DATABASE_ID=205dxxxxxxxx 替换成你的数据库ID</span><br><span class="line">POST_PATH=source/_posts</span><br></pre></td></tr></table></figure><p>然后在目录下执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 设置 Token 和数据库 ID</span></span><br><span class="line"><span class="built_in">export</span> NOTION_TOKEN=ntn_xxxx</span><br><span class="line"><span class="built_in">export</span> NOTION_DATABASE_ID=xxxxx</span><br><span class="line"></span><br><span class="line"><span class="comment"># 运行脚本</span></span><br><span class="line">node sync.js</span><br></pre></td></tr></table></figure><p>就能看到从ntoion拉取的文章了，到这里.js就配置完成了</p><p>我这个.js的逻辑是 把文章拉取下来之后 会把文章的图片放到同名文件夹下。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">/hello_world.md</span><br><span class="line">/hello_world/img1.jpg</span><br></pre></td></tr></table></figure><h1 id="三、Github-action设置"><a href="#三、Github-action设置" class="headerlink" title="三、Github action设置"></a>三、Github action设置</h1><h2 id="1-在-github-worlkflows-新建文件-sync-yml"><a href="#1-在-github-worlkflows-新建文件-sync-yml" class="headerlink" title="1.在.github&#x2F;worlkflows&#x2F;新建文件.sync.yml"></a>1.在.github&#x2F;worlkflows&#x2F;新建文件.sync.yml</h2><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">name</span>: <span class="string">&quot;Notion to Hexo Sync&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on</span>:</span><br><span class="line">  <span class="attr">schedule</span>:</span><br><span class="line">    - <span class="attr">cron</span>: <span class="string">&quot;0 * * * *&quot;</span>  # 每小时运行</span><br><span class="line">  <span class="attr">workflow_dispatch</span>:     # 允许手动触发</span><br><span class="line"></span><br><span class="line"><span class="attr">jobs</span>:</span><br><span class="line">  <span class="attr">deploy</span>:</span><br><span class="line">    runs-<span class="attr">on</span>: ubuntu-latest</span><br><span class="line">    <span class="attr">steps</span>:</span><br><span class="line">      # 步骤<span class="number">1</span>：检出代码</span><br><span class="line">      - <span class="attr">name</span>: <span class="title class_">Checkout</span></span><br><span class="line">        <span class="attr">uses</span>: actions/checkout@v3</span><br><span class="line">        <span class="attr">with</span>:</span><br><span class="line">          <span class="attr">ref</span>: <span class="string">&quot;main&quot;</span>  # 你的源码分支</span><br><span class="line"></span><br><span class="line">      # 步骤<span class="number">2</span>：设置<span class="title class_">Node</span>.<span class="property">js</span></span><br><span class="line">      - <span class="attr">name</span>: <span class="title class_">Setup</span> <span class="title class_">Node</span></span><br><span class="line">        <span class="attr">uses</span>: actions/setup-node@v3</span><br><span class="line">        <span class="attr">with</span>:</span><br><span class="line">          node-<span class="attr">version</span>: <span class="string">&quot;18&quot;</span></span><br><span class="line"></span><br><span class="line">      # 步骤<span class="number">3</span>：安装依赖</span><br><span class="line">      - <span class="attr">name</span>: <span class="title class_">Install</span> <span class="title class_">Dependencies</span></span><br><span class="line">        <span class="attr">run</span>: |</span><br><span class="line">          npm install -g hexo-cli</span><br><span class="line">          npm install</span><br><span class="line">          npm install @notionhq/client</span><br><span class="line">          npm install mkdirp</span><br><span class="line"></span><br><span class="line">      # 步骤<span class="number">4</span>：同步<span class="title class_">Notion</span></span><br><span class="line">      - <span class="attr">name</span>: <span class="title class_">Sync</span> <span class="keyword">from</span> <span class="title class_">Notion</span></span><br><span class="line">        <span class="attr">run</span>: node sync.<span class="property">js</span></span><br><span class="line">        <span class="attr">env</span>:</span><br><span class="line">          <span class="attr">NOTION_TOKEN</span>: $&#123;&#123; secrets.<span class="property">NOTION_TOKEN</span> &#125;&#125;</span><br><span class="line">          <span class="attr">NOTION_DATABASE_ID</span>: $&#123;&#123; secrets.<span class="property">NOTION_DATABASE_ID</span> &#125;&#125;</span><br><span class="line"></span><br><span class="line">      # 步骤<span class="number">5</span>：生成静态文件</span><br><span class="line">      - <span class="attr">name</span>: <span class="title class_">Generate</span> <span class="title class_">Site</span></span><br><span class="line">        <span class="attr">run</span>: |</span><br><span class="line">          hexo clean</span><br><span class="line">          hexo generate</span><br><span class="line"></span><br><span class="line">          </span><br><span class="line">      # 步骤<span class="number">6</span>：部署到<span class="title class_">GitHub</span> <span class="title class_">Pages</span></span><br><span class="line">      - <span class="attr">name</span>: <span class="title class_">Deploy</span> to <span class="title class_">Pages</span></span><br><span class="line">        <span class="attr">uses</span>: peaceiris/actions-gh-pages@v3</span><br><span class="line">        <span class="attr">with</span>:</span><br><span class="line">          <span class="attr">github_token</span>: $&#123;&#123; secrets.<span class="property">GITHUB_TOKEN</span> &#125;&#125;</span><br><span class="line">          <span class="attr">publish_dir</span>: ./public</span><br><span class="line">          <span class="attr">publish_branch</span>: pages  # 你的发布分支</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>这里你需要确认<strong>仓库的分支</strong>，和<strong>发布的分支</strong>名字。</p><p>如果运行不成功的话 你可以直接从github网页端新建这个文件，把代码复制进去避免编码错误。</p><h2 id="2-depoly设置"><a href="#2-depoly设置" class="headerlink" title="2.depoly设置"></a>2.depoly设置</h2><h3 id="1-depoly涉及很多情况"><a href="#1-depoly涉及很多情况" class="headerlink" title="1.depoly涉及很多情况"></a>1.depoly涉及很多情况</h3><ol><li>在同一个仓库的不同分支，例如main分支用来存放源码，pages分支用来发布页面，这样的话就是用原来代码 配合GITHUB_TOKEN来发布。</li><li>源码和页面在两个不同的仓库，在hexo仓库存放源码，然后在另外一个仓库 xxx.github.io上发布我的页面，这样就适合直接用ssh来发布。</li></ol><p>无论什么情况 你只需要把action的配置代码 sync.yml 复制给ai 把你的情况描述，跟着做就会成功的。</p><h3 id="2-配置新的sshkey"><a href="#2-配置新的sshkey" class="headerlink" title="2.配置新的sshkey"></a>2.配置新的sshkey</h3><p>ssh的配置hexo博客的时候都已经使用过了，而且涉及我自己的key所以就不放出来了，我遇到的坑就是ssh是已经使用过的 所以需要重新配置一个ssh</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t ed25519 -C <span class="string">&quot;your_email@example.com&quot;</span> -f github-deploy-key-new</span><br></pre></td></tr></table></figure><ol><li><strong>将新公钥添加到目标仓库</strong>：</li><li><strong>将新私钥添加到源仓库的 Secrets</strong>：<br>3.根据你生成 SSH 密钥时的输出，公钥和私钥已分别保存到以下文件中：</li></ol><ul><li><strong>私钥</strong>：<code>github-deploy-key-new</code>（此文件包含你的私人密钥，<strong>请勿分享</strong>）</li><li><strong>公钥</strong>：<code>github-deploy-key-new.pub</code>（此文件包含你的公共密钥，可以安全地分享）</li></ul><h3 id="4-如何找到这些文件"><a href="#4-如何找到这些文件" class="headerlink" title="4.如何找到这些文件"></a><strong>4.如何找到这些文件</strong></h3><p>** 在命令行中查看**</p><p>如果你是在 Linux、macOS 或 Windows 的 WSL 环境中生成的密钥，可以使用以下命令查看：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 查看私钥（注意：不要将此内容分享给他人）</span></span><br><span class="line"><span class="built_in">cat</span> github-deploy-key-new</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看公钥（可以安全分享</span></span><br><span class="line"><span class="built_in">cat</span> github-deploy-key-new.pub</span><br></pre></td></tr></table></figure><p><strong>在文件资源管理器中查看</strong></p><ul><li><strong>Windows</strong>：通常位于你的用户目录（例如 <code>C:\Users\你的用户名\github-deploy-key-new.pub</code>）</li><li><strong>Linux&#x2F;macOS</strong>：通常位于你的主目录（例如 <code>/home/你的用户名/github-deploy-key-new.pub</code>）<br>如果不会的话设置完以后在github action上手动拉取一次  之后报错的内容复制给ai让ai帮你。</li></ul><h2 id="3-启动github-action"><a href="#3-启动github-action" class="headerlink" title="3.启动github action"></a>3.启动github action</h2><p>进入仓库之后点击actions</p><img src="/d9af86de/img2025-06-02-003.png" alt="img2025-06-02-003.png" style="max-width: 100%; height: auto; display: block; margin: 1rem auto;"><p>部署完之后应该就OK了我设置的代码是一小时抓去一次</p><p>我自己也不太懂代码 完全是跟着ai的提示完成的</p><h1 id="四、我配置的时候遇到的坑"><a href="#四、我配置的时候遇到的坑" class="headerlink" title="四、我配置的时候遇到的坑"></a>四、我配置的时候遇到的坑</h1><p>1.不会设置数据库的格式，问了ai好多次才明白</p><p>2.抓取的时候可以在本地测试sync.js的代码 成功了再上传到githubaction，可以省很多时间</p><p>3.deploy的时候用的ssh已经被使用了，但是我不知道，浪费了很多时间。</p><p>4.这个方式并不会把notion的文件保存到仓库里，而是每次都会重新抓取一次，我一开始以为是ai没把代码写好，后面才意识到，这样子更方便对文件进行管理，因为你想取消发布的文章可以把published的勾取消，而且每次对文章内容的修改都能同步到网页上，这样更加像后台。</p><h1 id="五、内容更新"><a href="#五、内容更新" class="headerlink" title="五、内容更新"></a>五、内容更新</h1><p>2025.07.13 修复了图片无法缩放的问题，添加了代码，可以抓取notion图片下caption的信息，例如在图片caption中输入”size&#x3D;70% center”就能抓取文件的缩放信息，在文章里缩小到70%</p><p>2025.07.14 修复了时间显示的问题</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;端午节,没有出去玩，在家也无聊，就去外面找个咖啡厅坐着，折腾一下之前纠结了很久的事情，就是用文档软件作为hexo的后端，实现在软件上发文同步到博客。&lt;/p&gt;
&lt;p&gt;我不太懂代码，网上好多教程，但是我都看不懂，所幸现在的ai功能强大，所以大部分代码都是ai来写的。（你遇到问题之后可以把代码丢给ai，让ai帮你修改成你能使用的版本）&lt;/p&gt;</summary>
    
    
    
    <category term="BLOG" scheme="https://www.kulafan.com/categories/BLOG/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>Waline设置邮件提醒功能</title>
    <link href="https://www.kulafan.com/48ea28a1/"/>
    <id>https://www.kulafan.com/48ea28a1/</id>
    <published>2025-05-27T17:49:08.000Z</published>
    <updated>2026-07-13T11:52:27.260Z</updated>
    
    <content type="html"><![CDATA[<h2 id="一、进入Vercel项目设置"><a href="#一、进入Vercel项目设置" class="headerlink" title="一、进入Vercel项目设置"></a>一、进入Vercel项目设置</h2><ol><li>登录 <span class="exturl" data-url="aHR0cHM6Ly92ZXJjZWwuY29tLw==">Vercel 官网</span></li><li>进入你的Waline服务端项目</li><li>点击顶部导航栏的 <strong>Settings</strong> (设置)</li></ol><h2 id="二、配置环境变量"><a href="#二、配置环境变量" class="headerlink" title="二、配置环境变量"></a>二、配置环境变量</h2><h3 id="方法1：通过网页界面添加"><a href="#方法1：通过网页界面添加" class="headerlink" title="方法1：通过网页界面添加"></a>方法1：通过网页界面添加</h3><ol><li>在左侧菜单选择 <strong>Environment Variables</strong> (环境变量)</li><li>你会看到两个选项卡：</li></ol><ul><li><strong>Production</strong> (生产环境)</li><li><strong>Preview</strong> (预览环境，可选)</li></ul><ol><li>点击 <strong>Add New</strong> (添加新变量) 按钮</li><li>逐个添加以下变量：</li></ol><table><thead><tr><th><strong>变量名</strong></th><th><strong>值示例</strong></th><th><strong>说明</strong></th></tr></thead><tbody><tr><td>SMTP_SERVICE</td><td>QQ</td><td>邮箱服务商(QQ&#x2F;163&#x2F;Gmail等)</td></tr><tr><td>SMTP_HOST</td><td>&#96;<strong>smtp.qq.com</strong></td><td>SMTP服务器地址</td></tr><tr><td>SMTP_PORT</td><td>465</td><td>SSL端口号</td></tr><tr><td>SMTP_USER</td><td><span class="exturl" data-url="bWFpbHRvOiYjMTIxOyYjMTExOyYjMTE3OyYjMTE0OyYjOTU7JiMxMDE7JiMxMDk7JiN4NjE7JiMxMDU7JiN4NmM7JiN4NDA7JiN4NzE7JiN4NzE7JiM0NjsmI3g2MzsmI3g2ZjsmI3g2ZDs=">&#121;&#111;&#117;&#114;&#95;&#101;&#109;&#x61;&#105;&#x6c;&#x40;&#x71;&#x71;&#46;&#x63;&#x6f;&#x6d;</span></td><td>发件邮箱地址</td></tr><tr><td>SMTP_PASS</td><td>abcdefghijk</td><td>邮箱授权码(不是密码)</td></tr><tr><td>SMTP_SECURE</td><td>true</td><td>启用SSL加密</td></tr><tr><td>SITE_NAME</td><td>我的技术博客</td><td>你的网站名称</td></tr><tr><td>SITE_URL</td><td><span class="exturl" data-url="aHR0cHM6Ly95b3VyYmxvZy5jb20v">https://yourblog.com</span></td><td>你的网站URL</td></tr><tr><td>NOTIFICATION_FOR_ADMIN</td><td>true</td><td>新评论通知管理员</td></tr><tr><td>NOTIFICATION_FOR_REPLY</td><td>true</td><td>回复时通知用户</td></tr></tbody></table><ol><li>对于每个变量：</li></ol><ul><li>在 <strong>Name</strong> 字段输入变量名</li><li>在 <strong>Value</strong> 字段输入变量值</li><li>确保 <strong>Environment</strong> 选择 <strong>Production</strong> (生产环境)</li><li>点击 <strong>Save</strong></li></ul>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;一、进入Vercel项目设置&quot;&gt;&lt;a href=&quot;#一、进入Vercel项目设置&quot; class=&quot;headerlink&quot; title=&quot;一、进入Vercel项目设置&quot;&gt;&lt;/a&gt;一、进入Vercel项目设置&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;登录 &lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly92ZXJjZWwuY29tLw==&quot;&gt;Vercel 官网&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;进入你的Waline服务端项目&lt;/li&gt;
&lt;li&gt;点击顶部导航栏的 &lt;strong&gt;Settings&lt;/strong&gt; (设置)&lt;/li&gt;
&lt;/ol&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="waline" scheme="https://www.kulafan.com/tags/waline/"/>
    
    <category term="评论" scheme="https://www.kulafan.com/tags/%E8%AF%84%E8%AE%BA/"/>
    
  </entry>
  
  <entry>
    <title>消失的童年零食</title>
    <link href="https://www.kulafan.com/b47e2ade/"/>
    <id>https://www.kulafan.com/b47e2ade/</id>
    <published>2025-05-27T12:02:57.000Z</published>
    <updated>2026-07-13T11:52:27.259Z</updated>
    
    <content type="html"><![CDATA[<p>列举一些曾经十分喜欢，如今已经下架、改配方的零食（不断更新….）</p><p>这些熟悉的产品悄无声息地从这个世界上消失，好像存在过的痕迹被抹去了一样，就像我们的童年。。有研究表明味道比其他感官更能激起人类的记忆。在这个工业化的社会，我们的记忆都是需要资本运作才能维持的，如果无利可图，再美好的回忆也会悄无声息地被遗忘。就连声称能永远保存的游戏都难逃一劫，何况是作为消耗品的零食呢。</p><p>1.ritz 芝士饼干mini版</p><p>在某个周末，突然想吃一个零食 ，然后找遍了淘宝拼多多都没找到</p><img src="/b47e2ade/1748337801815-ffffc42c-1ef1-4a23-9a16-576ebf4459cb.jpeg" alt="芝士饼干.jpg" style="zoom:50%;"><p>这个是mini版本的，芝士味特别浓，然后又不像原版的那么腻。一口一个味道非常平衡。</p><p>最后一次买它是2017年 20块钱一盒，其实前几年国产版本也有但是只有小袋装，整体算下来如果要买298g这个分量需要40块钱，而且芝士味特别淡，国产的现在也停产了，要买的话只能买美国进口版，1260g一箱 105块钱吧。</p><p>2.纯果乐</p><img src="/b47e2ade/1748339921853-d43ccf29-37ea-4a7b-8281-5534a00a2db4.jpeg" alt="201411050631221231_x.jpg" style="zoom:50%;"><p>这才是真的果粒呀，果粒橙在它面前只能算“果渣橙”，这个果粒橙手榴弹的外形就已经吸引了无数小朋友的青睐，3.5的价格虽然有点令人望而却步，但是里面饱满的果粒，浓郁的橙汁绝对值回票价。你去买一个最新鲜的橙子 掰开，里面的果粒是啥样，鲜果粒里面就是啥样。当年果粒橙也卖3块钱，在它面前简直是工业垃圾。</p><p>3.雀巢冰爽茶</p><p>最最最意难平的一个饮料，真的回味无穷，有茶味也有很清爽的薄荷味，除此之外它的甜味像是蜂蜜带来的而不是糖精，冰镇喝起来简直是国窖，而常温喝也能喝到很香浓的茶味跟蜂蜜味，虽然现在雀巢复产了，但是味道·远不如从前。在2.5元的售价之下，所有柠檬风味饮料都要甘拜下风。。</p><p>虽然劲凉冰红茶和它很像，但还是差的很远，劲凉的薄荷度太过了，像是要刻意掩盖那劣质的茶味和糖精，喝几口就会腻了，而且热了之后喝 就不是劲凉，而是一坨油腻无比的糖 黏在喉咙里。</p><img src="/b47e2ade/1748339888690-1b04ca45-2746-4908-bed8-8a8ff71ab305.webp" alt="冰爽茶.webp" style="zoom:50%;"><p>4.杨协成的柠檬茶</p><p>这个倒是没有停产，但是从2022年之后，它的配方似乎发生了改变。。之前喝起来的糖味是愉悦的，自然的接近蔗糖的感觉。现在好像用了类似代糖或者木糖醇这种用在低卡饮料里的糖一样。。不自然。那股甜味已经无法带来愉悦。。之前的味道浓郁到什么程度呢，我喝的时候需要像品尝威士忌一样用水去稀释它，激发它更多的风味。当然这并不意味着它齁甜，而是说它用料够足，支持我们去加水来调整甜度，即使纯饮也不会太过腻。如今换了配方的味道，甚至不如之前的版本拿来兑一半水。。</p><img src="https://www.kulafan.com/8ba6dc9/tumblr_nwxcfzSOa21us4j0fo1_1280.png" alt="img" style="zoom:50%;">]]></content>
    
    
    <summary type="html">&lt;p&gt;列举一些曾经十分喜欢，如今已经下架、改配方的零食（不断更新….）&lt;/p&gt;
&lt;p&gt;这些熟悉的产品悄无声息地从这个世界上消失，好像存在过的痕迹被抹去了一样，就像我们的童年。。有研究表明味道比其他感官更能激起人类的记忆。在这个工业化的社会，我们的记忆都是需要资本运作才能维持的，如果无利可图，再美好的回忆也会悄无声息地被遗忘。就连声称能永远保存的游戏都难逃一劫，何况是作为消耗品的零食呢。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>git之后nothing to commit,working tree clean 博客页面无法显示</title>
    <link href="https://www.kulafan.com/7919da9e/"/>
    <id>https://www.kulafan.com/7919da9e/</id>
    <published>2025-05-25T06:21:55.000Z</published>
    <updated>2026-07-13T11:52:27.258Z</updated>
    
    <content type="html"><![CDATA[<p>我在家里的电脑更新了一篇博客之后，博客主页无法显示</p><p>控制台提示：nothing to commit,working tree clean</p><p>然后我进github上面查看 我的博客已经不是正常的网页结构了，</p><p>一番折腾之后发现</p><img src="/7919da9e/gitproblem.png" alt="git problem" style="zoom:50%;"><p>只要把这个文件删除掉 </p><p>然后重新执行</p><p>hexo c</p><p>hexo g</p><p>hexo d</p><p>就解决问题了</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;我在家里的电脑更新了一篇博客之后，博客主页无法显示&lt;/p&gt;
&lt;p&gt;控制台提示：nothing to commit,working tree clean&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>GitHubPages Cloudflare搭建博客 百度抓取失败问题修复</title>
    <link href="https://www.kulafan.com/920523b2/"/>
    <id>https://www.kulafan.com/920523b2/</id>
    <published>2025-05-22T14:36:39.000Z</published>
    <updated>2026-07-13T11:52:27.258Z</updated>
    
    <content type="html"><![CDATA[<img src="/920523b2/wechat_2025-05-23_003105_039.png" alt="wechat_2025-05-23_003105_039" style="zoom: 67%;"><h4 id="一、架构概述"><a href="#一、架构概述" class="headerlink" title="一、架构概述"></a><strong>一、架构概述</strong></h4><ul><li><strong>部署平台</strong>：GitHub Pages（静态托管）</li><li><strong>域名解析</strong>：Cloudflare（DNS 管理、CDN、SSL 证书）</li><li><strong>目标</strong>：确保百度蜘蛛（Baiduspider）正常抓取网站内容。</li></ul><hr><h3 id="二、常见问题与解决方案"><a href="#二、常见问题与解决方案" class="headerlink" title="二、常见问题与解决方案"></a><strong>二、常见问题与解决方案</strong></h3><h4 id="1-抓取失败：Socket-读写错误"><a href="#1-抓取失败：Socket-读写错误" class="headerlink" title="1. 抓取失败：Socket 读写错误"></a><strong>1. 抓取失败：Socket 读写错误</strong></h4><ul><li><p><strong>现象</strong>：百度抓取诊断提示“socket 读写错误”。</p></li><li><p><strong>原因</strong>：</p></li><li><p>Cloudflare 防火墙拦截百度蜘蛛 IP。</p></li><li><p>DNS 解析不稳定或 GitHub Pages 服务器不可用。</p></li><li><p><strong>解决步骤</strong>：</p></li></ul><ol><li><strong>检查 Cloudflare 防火墙日志</strong>：</li></ol><ul><li>进入 Cloudflare 控制台 → <strong>Security → Events</strong>，筛选百度蜘蛛 IP（<span class="exturl" data-url="aHR0cHM6Ly96aXl1YW4uYmFpZHUuY29tL2NvbGxlZ2UvY291cnNlaW5mbz9pZD0yNjcmcGFnZT0y">官方 IP 列表</span>）。</li></ul><ol><li><strong>将百度蜘蛛 IP 加入白名单</strong>：</li></ol><ul><li>Cloudflare 控制台 → <strong>Security → WAF → IP Access Rules</strong> → 添加 IP 段，选择 <code>**Allow**</code>。</li></ul><p><strong>验证 GitHub Pages 可用性</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -I https://&lt;username&gt;.github.io # 替换为你的 GitHub Pages 地址</span><br></pre></td></tr></table></figure><hr><h4 id="2-HTTPS-重定向异常"><a href="#2-HTTPS-重定向异常" class="headerlink" title="2. HTTPS 重定向异常"></a><strong>2. HTTPS 重定向异常</strong></h4><ul><li><strong>现象</strong>：<code>**https://kulafan.github.io**</code> 重定向到 <code>**http://www.kulafan.com**</code>（不安全）。</li><li><strong>原因</strong>：GitHub Pages 或 Cloudflare 未正确强制 HTTPS。</li><li><strong>解决步骤</strong>：</li></ul><ol><li><strong>GitHub Pages 配置</strong>：</li></ol><ul><li>仓库 → <strong>Settings → Pages</strong> → 勾选 <strong>Enforce HTTPS</strong>。</li></ul><ol><li><strong>Cloudflare 强制 HTTPS</strong>：</li></ol><ul><li>Cloudflare 控制台 → <strong>SSL&#x2F;TLS → Edge Certificates</strong> → 开启 <strong>Always Use HTTPS</strong>。</li></ul><p><strong>验证重定向链路</strong>：</p><ol><li><p>bash</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -L -I https://kulafan.github.io</span><br></pre></td></tr></table></figure><h1 id="检查最终落地页是否为-HTTPS"><a href="#检查最终落地页是否为-HTTPS" class="headerlink" title="检查最终落地页是否为 HTTPS"></a>检查最终落地页是否为 HTTPS</h1></li></ol><hr><h4 id="3-SSL-证书域名不匹配"><a href="#3-SSL-证书域名不匹配" class="headerlink" title="3. SSL 证书域名不匹配"></a><strong>3. SSL 证书域名不匹配</strong></h4><ul><li><strong>现象</strong>：<code>**curl: (60) SSL: no alternative certificate subject name matches target hostname**</code>。</li><li><strong>原因</strong>：证书未绑定正确域名或 DNS 解析错误。</li><li><strong>解决步骤</strong>：</li></ul><ol><li><strong>检查 DNS 记录</strong>：</li></ol><ul><li>Cloudflare 控制台 → <strong>DNS → Records</strong>，确认 <code>**CNAME**</code> 指向 <code>**username.github.io**</code>。</li></ul><ol><li><strong>调整 SSL 模式</strong>：</li></ol><ul><li>Cloudflare 控制台 → <strong>SSL&#x2F;TLS → Overview</strong> → 选择 **Full (Strict)**。</li></ul><p><strong>验证证书</strong>：</p><p>1. </p>   <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openssl s_client -connect www.kulafan.com:443 -servername www.kulafan.com | openssl x509 -noout -text</span><br></pre></td></tr></table></figure><hr><h4 id="4-抓取内容与浏览器不一致"><a href="#4-抓取内容与浏览器不一致" class="headerlink" title="4. 抓取内容与浏览器不一致"></a><strong>4. 抓取内容与浏览器不一致</strong></h4><ul><li><strong>现象</strong>：百度蜘蛛抓取内容缺失或乱码。</li><li><strong>原因</strong>：缓存未更新或动态内容依赖 JavaScript。</li><li><strong>解决步骤</strong>：</li></ul><ol><li><strong>清除 Cloudflare 缓存</strong>：</li></ol><ul><li>Cloudflare 控制台 → <strong>Caching → Purge Cache</strong> → <strong>Purge Everything</strong>。</li></ul><p><strong>对比内容一致性</strong>：</p><ol><li>bash复制下载</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">curl -A &quot;Baiduspider&quot; https://www.kulafan.com &gt; baidu.html</span><br><span class="line">curl https://www.kulafan.com &gt; browser.html</span><br><span class="line">diff baidu.html browser.html</span><br></pre></td></tr></table></figure><ol><li><strong>优化页面加载</strong>：</li></ol><ul><li>对关键内容做服务端渲染（SSR），减少 JS 依赖。</li></ul><hr><h3 id="三、维护与监控建议"><a href="#三、维护与监控建议" class="headerlink" title="三、维护与监控建议"></a><strong>三、维护与监控建议</strong></h3><h4 id="1-定期检查项"><a href="#1-定期检查项" class="headerlink" title="1. 定期检查项"></a><strong>1. 定期检查项</strong></h4><ul><li><strong>SSL 证书有效期</strong>：Cloudflare 控制台 → <strong>SSL&#x2F;TLS → Edge Certificates</strong>。</li><li><strong>GitHub Pages 构建状态</strong>：仓库 → <strong>Actions</strong> 或 <strong>Settings → Pages</strong>。</li><li><strong>百度索引量</strong>：百度站长平台 → <strong>数据监控 → 索引量</strong>。</li></ul><h4 id="2-自动化工具"><a href="#2-自动化工具" class="headerlink" title="2. 自动化工具"></a><strong>2. 自动化工具</strong></h4><ul><li><strong>百度主动推送</strong>：在网站代码中添加自动提交脚本（<span class="exturl" data-url="aHR0cHM6Ly96aXl1YW4uYmFpZHUuY29tL2xpbmtzdWJtaXQvaW5kZXg=">示例代码</span>）。</li><li><strong>Cloudflare 报警规则</strong>：设置流量异常或安全事件通知。</li></ul><hr><h3 id="四、附录：常用命令与工具"><a href="#四、附录：常用命令与工具" class="headerlink" title="四、附录：常用命令与工具"></a><strong>四、附录：常用命令与工具</strong></h3><h4 id="1-模拟百度蜘蛛抓取"><a href="#1-模拟百度蜘蛛抓取" class="headerlink" title="1. 模拟百度蜘蛛抓取"></a><strong>1. 模拟百度蜘蛛抓取</strong></h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">curl -A &quot;Baiduspider&quot; -L -I https://www.kulafan.com  # 查看重定向链路</span><br><span class="line">curl -A &quot;Baiduspider&quot; https://www.kulafan.com &gt; baidu_content.html  # 保存抓取内容</span><br></pre></td></tr></table></figure><h4 id="2-网络链路诊断"><a href="#2-网络链路诊断" class="headerlink" title="2. 网络链路诊断"></a><strong>2. 网络链路诊断</strong></h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">mtr -rw www.kulafan.com  # 检查网络延迟与丢包</span><br><span class="line">dig www.kulafan.com +trace  # 追踪 DNS 解析路径</span><br></pre></td></tr></table></figure><h4 id="3-工具链接"><a href="#3-工具链接" class="headerlink" title="3. 工具链接"></a><strong>3. 工具链接</strong></h4><ul><li><span class="exturl" data-url="aHR0cHM6Ly96aXl1YW4uYmFpZHUuY29tLw==">百度站长平台</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9kYXNoLmNsb3VkZmxhcmUuY29tLw==">Cloudflare IP 防火墙配置</span></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuZ2l0aHVic3RhdHVzLmNvbS8=">GitHub Pages 状态监控</span></li></ul>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/920523b2/wechat_2025-05-23_003105_039.png&quot; alt=&quot;wechat_2025-05-23_003105_039&quot; style=&quot;zoom: 67%;&quot;&gt;

&lt;h4 id=&quot;一、架构概述&quot;&gt;&lt;a href=&quot;#一、架构概述&quot; class=&quot;headerlink&quot; title=&quot;一、架构概述&quot;&gt;&lt;/a&gt;&lt;strong&gt;一、架构概述&lt;/strong&gt;&lt;/h4&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
    <category term="seo" scheme="https://www.kulafan.com/tags/seo/"/>
    
  </entry>
  
  <entry>
    <title>为hexo博客添加代码块复制功能</title>
    <link href="https://www.kulafan.com/834d5b63/"/>
    <id>https://www.kulafan.com/834d5b63/</id>
    <published>2025-05-20T12:14:03.000Z</published>
    <updated>2026-07-13T11:52:27.258Z</updated>
    
    <content type="html"><![CDATA[<p>在网上找了好多方法..都没找到..后面在翻主题配置文件的时候发现，原来已经内置了这个功能…</p><p>只需要在</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">\themes\next\_config.yml</span><br></pre></td></tr></table></figure><p>里面把copy button 改成enable：true就可以了</p><p><img src="/834d5b63/copybutton.png" alt="copybutton"></p><p>下面的style可以更改样式 我的这是用mac的</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;在网上找了好多方法..都没找到..后面在翻主题配置文件的时候发现，原来已经内置了这个功能…&lt;/p&gt;
&lt;p&gt;只需要在&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>2015款macbookpro换硬盘后升级系统</title>
    <link href="https://www.kulafan.com/8105b1ad/"/>
    <id>https://www.kulafan.com/8105b1ad/</id>
    <published>2025-05-19T17:17:05.000Z</published>
    <updated>2026-07-13T11:52:27.246Z</updated>
    
    <content type="html"><![CDATA[<p>之前有一天想在家里那台2015款MacBookpro上弄点东西,但是发现好多东西已经不支持10.4.6Mojave系统了,于是我就点升级,结果报错了,“未能安装在您的电脑上，验证固件时发生错误”..</p><p>搜索过后知道这是因为我之前更换过硬盘，而新的系统会验证硬件，硬件不通过就不会更新bios.新的系统需要用新的bios去安装。</p><p>所以：只要这台电脑更新过11以上的系统，就会把主板bios更新。先把原装的硬盘插上去，把系统更新，这样主板上面的bios就是最新的，然后我们再把新硬盘插上去，就可以正常更新了。</p><img src="/8105b1ad/e5c569d7ca649d5835056aeb0055242e.jpg" alt="e5c569d7ca649d5835056aeb0055242e" style="zoom:50%;"><p>拧开螺丝一共十颗，上下八颗是长螺丝 中间两颗是短螺丝</p><img src="/8105b1ad/1110e424a70db67f6d56692f60859ed6.jpg" alt="1110e424a70db67f6d56692f60859ed6" style="zoom:50%;"><p>开盖之后记得要断电操作！！！把这里的螺丝拧开，这是一个盖子</p><img src="/8105b1ad/8cea735da4e92a440c0f7c15b3a3d54f.jpg" alt="8cea735da4e92a440c0f7c15b3a3d54f" style="zoom:50%;"><p>然后把电池的排线断开</p><img src="/8105b1ad/changessd.jpg" alt="changessd" style="zoom:50%;"><p>之后就可以把ssd拆下来 更换了<img src="/8105b1ad/387778476e8f8e10bb44b91437c62af6.jpg" style="zoom:50%;"></p><p>我这里用的是M.2转苹果接口的转接卡 还是挺稳定的，2019年换了之后用到现在还在使用</p><p>把旧的硬盘插上去之后正常更新系统，然后再把新的硬盘装上去更新系统就大功告成了！</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;之前有一天想在家里那台2015款MacBookpro上弄点东西,但是发现好多东西已经不支持10.4.6Mojave系统了,于是我就点升级,结果报错了,“未能安装在您的电脑上，验证固件时发生错误”..&lt;/p&gt;
&lt;p&gt;搜索过后知道这是因为我之前更换过硬盘，而新的系统会验证硬件，硬件不通过就不会更新bios.新的系统需要用新的bios去安装。&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="电子产品" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/%E7%94%B5%E5%AD%90%E4%BA%A7%E5%93%81/"/>
    
    
    <category term="Macbook" scheme="https://www.kulafan.com/tags/Macbook/"/>
    
  </entry>
  
  <entry>
    <title>使用kindle美版服务器与zlib推送服务</title>
    <link href="https://www.kulafan.com/a9f7a166/"/>
    <id>https://www.kulafan.com/a9f7a166/</id>
    <published>2025-05-16T15:35:57.000Z</published>
    <updated>2026-07-13T11:52:27.237Z</updated>
    
    <content type="html"><![CDATA[<p>kindle的国服关闭了 不代表kindle就变砖头了.我们可以继续使用kindle的美国服务器 搭配Zlib的丰富资源拥有非常好的使用体验。</p><p>其实用什么服务器真的没太大关系吧，在我们的互联网环境下，在平台上买正版电子书应该是少数用户的习惯，随着kindle关闭中国服务器 这批人也成为了正版用户的受害者。</p><h1 id="1-前言"><a href="#1-前言" class="headerlink" title="1.前言"></a>1.前言</h1><p>说实话，kindle真的是一个牛逼的产品，因为他能让很多不看书的人去购买，也能让很多人以为买了kindle就会看书，真的是当代的“电子赎罪券”之一。不过即使如此，非重度用户拿kindle发挥一些作用也是可以的。</p><h1 id="2-kindle服务"><a href="#2-kindle服务" class="headerlink" title="2.kindle服务"></a>2.kindle服务</h1><h2 id="2-1注册美服kindle账户"><a href="#2-1注册美服kindle账户" class="headerlink" title="2.1注册美服kindle账户"></a>2.1注册美服kindle账户</h2><p>这个步骤非常简单 进入<span class="exturl" data-url="aHR0cDovL3d3dy5hbWF6b24uY29t5Lqa6ams6YCK55qE576O5Zu95Z+f5ZCN5rOo5YaM5Y+v5Lul5L2/55So5Zu95YaF6YKu566xLw==">www.amazon.com亚马逊的美国域名注册可以使用国内邮箱</span></p><p>2.2 设置kindle推送邮箱</p><p>进入 <span class="exturl" data-url="aHR0cDovL3d3dy5hbWF6b24uY29tL215ay8=">www.amazon.com/myk/</span> 设置kindle的推送服务</p><img src="/a9f7a166/kindlesetting1.png" alt="kindlesetting1"><p>进入偏好 然后拉到最下面 设置@kindle的邮箱 （这里以<span class="exturl" data-url="bWFpbHRvOiYjeDczOyYjeDYxOyYjMTA5OyYjMTEyOyYjeDZjOyYjeDY1OyYjNjQ7JiMxMDc7JiMxMDU7JiMxMTA7JiN4NjQ7JiN4NmM7JiMxMDE7JiN4MmU7JiM5OTsmI3g2ZjsmI3g2ZDs=">&#x73;&#x61;&#109;&#112;&#x6c;&#x65;&#64;&#107;&#105;&#110;&#x64;&#x6c;&#101;&#x2e;&#99;&#x6f;&#x6d;</span>为例）</p><img src="/a9f7a166/kindlesetting2.png" alt="kindlesetting2"><p>设置完kindle的接受邮箱之后 要往下拉 设置用来发送书的邮箱，这里我是设置成注册zlib的邮箱，这样就可以直接用zlib的邮箱接收书，直接转发到kindle邮箱上</p><img src="/a9f7a166/kindlesetting3.png" alt="kindlesetting3"><h1 id="3-Z-library"><a href="#3-Z-library" class="headerlink" title="3.Z-library"></a>3.Z-library</h1><p>进入zlib的官网<span class="exturl" data-url="aHR0cHM6Ly8xbGliLnNrLz90cz0xOTA0">https://1lib.sk/?ts=1904</span></p><p>因为zlib经常更换域名，所以我都是在手机上下载zlib的应用，如果官网出现无法访问的情况 我就可以通过app进入最新的官网。</p><p>通过这个网站找到最新的地址 <strong><span class="exturl" data-url="aHR0cHM6Ly96aC5nby10by1saWJyYXJ5LnNrLw==">https://zh.go-to-library.sk/</span></strong></p><p><strong>zlib很多盗版网站，一定要注意!!!!!</strong></p><h2 id="3-1注册Z-lib账户"><a href="#3-1注册Z-lib账户" class="headerlink" title="3.1注册Z-lib账户"></a>3.1注册Z-lib账户</h2><img src="/a9f7a166/zhuce.jpg" alt="zhuce" style="zoom:50%;"><p>点开官网的右上角</p><img src="/a9f7a166/zhuce2.jpg" alt="zhuce2" style="zoom:50%;"><p>点create就能创建账户了</p><p>然后就可以用注册的账户来登录</p><h2 id="3-2搜索和下载书籍"><a href="#3-2搜索和下载书籍" class="headerlink" title="3.2搜索和下载书籍"></a>3.2搜索和下载书籍</h2><img src="/a9f7a166/zlib3.png" alt="zlib3" style="zoom: 50%;"><p>直接在搜索框里输入书的名字 然后点击进去</p><img src="/a9f7a166/sendto.png" alt="sendto" style="zoom: 50%;"><p>点击右下角的send to mail 或者 下载图标 对应不同的方法</p><h2 id="3-3-通过邮箱发送（推荐）"><a href="#3-3-通过邮箱发送（推荐）" class="headerlink" title="3.3 通过邮箱发送（推荐）"></a>3.3 通过邮箱发送（推荐）</h2><img src="/a9f7a166/thumbnail_D600612B@DE9C3A48.4763276800000000.jpg" alt="thumbnail_D600612B@DE9C3A48.4763276800000000" style="zoom: 25%;"><p>在邮箱里收到之后我就可以直接转发到我的kindle邮箱里了，过一阵子就能在kindle里或者<a href>amazon.com&#x2F;myk</a>的管理页面看到这本书被加了进来。</p><p>为什么选择通过邮箱发送呢，因为这样的话就可以把书通过邮箱保存起来，这样哪一天连美服kindle都关闭了的话至少还有一个记录在，我十年前通过这样方式发送过的书也保留在邮箱里了。</p><h2 id="3-4-通过手机app发送"><a href="#3-4-通过手机app发送" class="headerlink" title="3.4 通过手机app发送"></a>3.4 通过手机app发送</h2><p>如果通过手机发送就需要在zlib上点击下载 而不是发送到邮箱</p><img src="/a9f7a166/7c63621774acf852cdcc13525d64aced.jpg" alt="7c63621774acf852cdcc13525d64aced" style="zoom:25%;"><img src="/a9f7a166/9503d3b5662175fb3922ded11eccda57.jpg" alt="9503d3b5662175fb3922ded11eccda57" style="zoom: 33%;"><p>通过手机的分享功能 把书分享到kindle的app里 </p><img src="/a9f7a166/b7eb718fa0565c6280ae8abc27209a21.jpg" alt="b7eb718fa0565c6280ae8abc27209a21" style="zoom:33%;"><p>点击发送 然后稍等片刻这样的话书就会推送到kindle的账户里面了</p><p>我不太喜欢用这种方法，因为会占用手机的空间，而且以后找书的话会没那么方便，发到邮箱里的话 就可以直接通过邮件的搜索功能功能来找到自己之前发送过的书</p><p>3.4通过电脑发送（不够优雅）</p><p>先右击电子书-共享-更多-把发送到kindle添加到菜单里，然后再发送就OK了，虽然这个操作的逻辑比较简便，但是我觉得不够优雅。。，本质上就是电脑版里最新的kindle是移植了手机版的，我认为在观看体验上并不如旧版。</p><img src="/a9f7a166/1747894335640-91447577-ec76-4286-9a87-6e4b65b471e7.jpeg" alt="20250522140014.jpg" style="zoom:50%;"><img src="/a9f7a166/1747894335401-394c7225-e567-4961-a483-f65bafa1fccb.jpeg" alt="20250522135943.jpg" style="zoom:50%;"><img src="/a9f7a166/1747894335351-24059523-5499-4faf-95a6-ab38d5e3b2fa.png" alt="截屏2025-05-22 下午2.00.39.png" style="zoom:50%;"><img src="/a9f7a166/1747894335466-511a35cb-eb5e-462e-b52d-e359f7a38956.png" alt="截屏2025-05-22 下午2.00.51.png" style="zoom:50%;">]]></content>
    
    
    <summary type="html">&lt;p&gt;kindle的国服关闭了 不代表kindle就变砖头了.我们可以继续使用kindle的美国服务器 搭配Zlib的丰富资源拥有非常好的使用体验。&lt;/p&gt;
&lt;p&gt;其实用什么服务器真的没太大关系吧，在我们的互联网环境下，在平台上买正版电子书应该是少数用户的习惯，随着kindle关闭中国服务器 这批人也成为了正版用户的受害者。&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="电子产品" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/%E7%94%B5%E5%AD%90%E4%BA%A7%E5%93%81/"/>
    
    
    <category term="电子产品" scheme="https://www.kulafan.com/tags/%E7%94%B5%E5%AD%90%E4%BA%A7%E5%93%81/"/>
    
    <category term="kindle" scheme="https://www.kulafan.com/tags/kindle/"/>
    
  </entry>
  
  <entry>
    <title>用windows的电脑发布hexo博客图片会无法显示</title>
    <link href="https://www.kulafan.com/fc54a/"/>
    <id>https://www.kulafan.com/fc54a/</id>
    <published>2025-05-15T18:09:51.000Z</published>
    <updated>2026-07-13T11:52:27.245Z</updated>
    
    <content type="html"><![CDATA[<img src="/fc54a/发布图片教程.jpg" alt="发布图片教程"><p>用这样的路径发布居然就没问题了..</p><p>所以需要在软件里设置一下</p><p><img src="/fc54a/20250520202128.jpg" alt="20250520202128"></p>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/fc54a/发布图片教程.jpg&quot; alt=&quot;发布图片教程&quot;&gt;

&lt;p&gt;用这样的路径发布居然就没问题了..&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>为博客添加评论区功能</title>
    <link href="https://www.kulafan.com/ab9a2788/"/>
    <id>https://www.kulafan.com/ab9a2788/</id>
    <published>2025-05-15T17:45:58.000Z</published>
    <updated>2026-07-13T11:52:27.236Z</updated>
    
    <content type="html"><![CDATA[<p><strong>前言</strong></p><p>逛博客的时候看到了skk.moe的hexo博客里有评论区功能，我才意识到大佬们的能力有多强大 能够在静态博客里面像动态博客一样设置评论区，于是我就在网上找到了<span class="exturl" data-url="aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vNDQyMTQzMDA1P3NwbV9pZF9mcm9tPTMzMy4xMzY5Lm9wdXMubW9kdWxlX2F1dGhvcl9uYW1lLmNsaWNr">幽篁忆憬</span>大佬在bilibili的教程</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://www.bilibili.com/opus/803994109467426834?spm_id_from=333.1391.0.0`</span><br></pre></td></tr></table></figure><p><strong>一、为什么要使用Waline？</strong></p><p> 很多网上给出的教程都是基于valine，gittalk搭建评论系统。gittalk不必说，利用GitHub的优势，便捷管理，缺点是评论需要登录等；而Valine的教程是最多的，但是Valine国际版自2022年8月左右就停止了国际版对大陆的服务，国内如需使用Valine进行评论，则需选择国内版（所以还需要备案）。而waline也有众多优点，不再赘述</p><p><strong>二、为什么要写这篇教程？</strong></p><p>因为互联网的变数太大了，加上个人博客搭建这方面的确不够大众化，这导致许多搭建过程十分零散，因版本而异，问题层出不穷，因此本人结合经验，综合诸位大佬的方案，完整走一遍流程，尽力把自己踩过的坑都说到</p><p><img src="https://i0.hdslb.com/bfs/article/71bf2cd56882a2e97f8b3477c9256f8b09f361d3.png" alt="cut-off"></p><p><strong>具体步骤</strong></p><p> <strong>1.数据库搭建</strong></p><p> 该步骤主要参照Waline官方文档： <span class="exturl" data-url="aHR0cHM6Ly93YWxpbmUuanMub3JnL2d1aWRlL2dldC1zdGFydGVkLw==">https://waline.js.org/guide/get-started/</span></p><p> 进行对Leancloud<strong>国际版</strong>的配置以及Vercel的配置</p><p> 需要注意，waline所需要的next版本是8.x版本，若是小于8.x版本而使用了，则可能会出现无法加载评论区的情况。因此请检查自己的next版本，若是小于8请进行升级</p><p><strong>那么问题来了，很多人在使用next的时候，会发现GitHub有好几个next仓库，而且哪个看着都像是官方的，咋回事？这里引用一下团队成员的解释：</strong></p><blockquote><p>简单来说，问题就是 theme-next 团队的 owner 始终拒绝向其它任何团队成员提供足够的权限，且 owner 本人自 2019 年 10 月起已连续半年不在线，导致其它活跃的团队成员无法管理仓库，也无法邀请新的成员。 由于对 theme-next 团队的未来不抱有期望，我作为 theme-next 的主要贡献者，自 2020 年 4 月起停止为旧的仓库贡献代码，并创建了新的组织，以确保维护工作正常进行。 只要能够收到足够多的 Bugfix &#x2F; Feature Request，每月更新肯定不是问题。 目前已经发布的版本在这里： <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL25leHQtdGhlbWUvaGV4by10aGVtZS1uZXh0L3JlbGVhc2Vz">https://github.com/next-theme/hexo-theme-next/releases</span> v8.0.0 版本计划在 Hexo 5.0 版本后发布。</p></blockquote><p> 明白这些东西之后，进入gitbash，执行</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install @waline/hexo-next</span><br></pre></td></tr></table></figure><p>返回NexT主题文件夹，添加如下内容</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">waline:</span><br><span class="line">  enable: true #是否开启</span><br><span class="line">  serverURL: xxxxxx # Waline #服务端地址，就是部署的 Vercel 地址</span><br><span class="line">  locale:</span><br><span class="line">    placeholder: 无需登录·请留下邮箱以接收回复·来说两句吧~  #评论框的默认文字</span><br><span class="line">  avatar: mm # 头像风格</span><br><span class="line">  meta: [nick,mail,link] # 自定义评论框上面的三个输入框的内容</span><br><span class="line">  pageSize: 10 # 评论数量多少时显示分页</span><br><span class="line">  lang: zh-cn # 语言, 可选值: en, zh-cn</span><br><span class="line">  visitor: true # 文章阅读统计</span><br><span class="line">  comment_count: true # 如果为 false , 评论数量只会在当前评论页面显示, 主页则不显示</span><br><span class="line">  requiredFields: [nick] # 设置用户评论时必填的信息，[nick,mail]: [nick] | [nick, mail]</span><br><span class="line">  libUrl:  # Set custom library cdn url</span><br><span class="line">  login: enable</span><br></pre></td></tr></table></figure><img src="/ab9a2788/1.jpg" alt="1"><p>vercel链接即为如上</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;逛博客的时候看到了skk.moe的hexo博客里有评论区功能，我才意识到大佬们的能力有多强大 能够在静态博客里面像动态博客一样设置评论区，于是我就在网上找到了&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vNDQyMTQzMDA1P3NwbV9pZF9mcm9tPTMzMy4xMzY5Lm9wdXMubW9kdWxlX2F1dGhvcl9uYW1lLmNsaWNr&quot;&gt;幽篁忆憬&lt;/span&gt;大佬在bilibili的教程&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="Blog" scheme="https://www.kulafan.com/tags/Blog/"/>
    
  </entry>
  
  <entry>
    <title>HEXO系列教程|发布文章</title>
    <link href="https://www.kulafan.com/c13e8aa9/"/>
    <id>https://www.kulafan.com/c13e8aa9/</id>
    <published>2025-03-04T06:58:24.000Z</published>
    <updated>2026-07-13T11:52:27.236Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1-前言"><a href="#1-前言" class="headerlink" title="1. 前言"></a>1. 前言</h2><p>HEXO安装：<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82ODgzNDkxNDI=">HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程</span></p><p>夜梦TECH同步更新地址：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS9oZXhvJUU3JUIzJUJCJUU1JTg4JTk3JUU2JTk1JTk5JUU3JUE4JThCLSVFNSU4RiU5MSVFNSVCOCU4MyVFNiU5NiU4NyVFNyVBQiVBMC0lRTglQTclQTMlRTUlODYlQjMlRTklOUQlOTklRTYlODAlODElRTUlOUIlQkUlRTclODklODclRTglQjclQUYlRTUlQkUlODQlRTklOTQlOTklRTglQUYlQUYlRTklOTclQUUlRTklQTIlOTgv">HEXO系列教程 | 发布文章 | 解决静态图片路径错误问题 | 小白向教程</span></p><p>使用<span class="exturl" data-url="aHR0cHM6Ly96aGlkYS56aGlodS5jb20vc2VhcmNoP2NvbnRlbnRfaWQ9MjQxMTgxNDc2JmNvbnRlbnRfdHlwZT1BcnRpY2xlJm1hdGNoX29yZGVyPTEmcT1ZVU4lRTQlQjglQkIlRTklQTIlOTgmemRfdG9rZW49ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKNmFHbGtZVjl6WlhKMlpYSWlMQ0psZUhBaU9qRTNOREV5TkRReU5UZ3NJbkVpT2lKWlZVN2t1THZwb3BnaUxDSjZhR2xrWVY5emIzVnlZMlVpT2lKbGJuUnBkSGtpTENKamIyNTBaVzUwWDJsa0lqb3lOREV4T0RFME56WXNJbU52Ym5SbGJuUmZkSGx3WlNJNklrRnlkR2xqYkdVaUxDSnRZWFJqYUY5dmNtUmxjaUk2TVN3aWVtUmZkRzlyWlc0aU9tNTFiR3g5LlNmM05FVEU1Z0RqLTVWeUNZSmo0MkZhaWEtc1Q1OUxmTTlzSjJtdGhSMFUmemhpZGFfc291cmNlPWVudGl0eQ==">YUN主题</span>：</p><ul><li><span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS9oZXhvJUU3JUIzJUJCJUU1JTg4JTk3JUU2JTk1JTk5JUU3JUE4JThCLSVFOSU4NSU4RCVFNyVCRCVBRSVFNCVCQSU5MSVFNiVCOCVCOCVFNSU5MCU5Qnl1biVFNCVCOCVCQiVFOSVBMiU5OHBhcnQxLSVFNCVCQyU5OCVFOSU5QiU4NSVFNyVCRSU4RSVFOCVBNyU4Mi8=">HEXO系列教程 | 配置云游君Yun主题PART1 | 优雅美观</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS9oZXhvJUU3JUIzJUJCJUU1JTg4JTk3JUU2JTk1JTk5JUU3JUE4JThCLSVFOSU4NSU4RCVFNyVCRCVBRSVFNCVCQSU5MSVFNiVCOCVCOCVFNSU5MCU5Qnl1biVFNCVCOCVCQiVFOSVBMiU5OHBhcnQyLSVFNCVCQyU5OCVFOSU5QiU4NSVFNyVCRSU4RSVFOCVBNyU4Mi8=">HEXO系列教程 | 配置云游君Yun主题PART2 | 优雅美观</span></li></ul><p>夜梦就在这篇文章中介绍一下如何在HEXO上写文章并发布。你可以直接看官方提供的教程：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vaGV4by5pby96aC1jbi9kb2NzL3dyaXRpbmc=">写作 | Hexo</span></p><h2 id="2-发写文章"><a href="#2-发写文章" class="headerlink" title="2. 发写文章"></a>2. 发写文章</h2><h3 id="2-1-文件名称"><a href="#2-1-文件名称" class="headerlink" title="2.1 文件名称"></a>2.1 文件名称</h3><p>Hexo 默认以<strong>标题</strong>做为文件名称，但你可编辑 <code>new_post_name</code>参数来改变默认的文件名称。你只需要在<code>_config.yml</code>中修改：</p><p><img src="https://pic4.zhimg.com/v2-f8313f9de72aba98a4ad04feddef1e81_1440w.jpg" alt="img"></p><p>可以使用的占位符：</p><table><thead><tr><th>变量</th><th>描述</th><th>例子</th></tr></thead><tbody><tr><td>:title</td><td>标题（小写，空格将会被替换为短杠）</td><td></td></tr><tr><td>:year</td><td>建立的年份</td><td>2024</td></tr><tr><td>:month</td><td>建立的月份（有前导零）</td><td>04</td></tr><tr><td>:i_month</td><td>建立的月份（无前导零）</td><td>4</td></tr><tr><td>:day</td><td>建立的日期（有前导零）</td><td>07</td></tr><tr><td>:i_day</td><td>建立的日期（无前导零）</td><td>7</td></tr></tbody></table><p>夜梦这里举个例子，夜梦将默认存储名称修改为 <code>:year-:month-:day-:title.md</code> ，然后就可以很方便地通过日期来管理文章！</p><h3 id="2-2-插入图片相关问题"><a href="#2-2-插入图片相关问题" class="headerlink" title="2.2. 插入图片相关问题"></a>2.2. 插入图片相关问题</h3><h3 id="2-2-1-问题再现"><a href="#2-2-1-问题再现" class="headerlink" title="2.2.1 问题再现"></a>2.2.1 问题再现</h3><p>为了避免后续写文章、发布文章的时候遇到图片无法加载的问题，夜梦决定把这一部分写在创建文章之前。如果不进行此部分，你可能在本地预览图片无任何问题，但是上传到Github Pages的时候无法显示，就像下面一样：</p><p><img src="https://pic4.zhimg.com/v2-d8a705246df13b6d2f535f3fa4c94365_1440w.jpg" alt="img"></p><p>夜梦这里提供两个办法来进行图片的插入。</p><h3 id="2-2-2-使用图床（推荐）"><a href="#2-2-2-使用图床（推荐）" class="headerlink" title="2.2.2 使用图床（推荐）"></a>2.2.2 使用图床（推荐）</h3><p>最推荐的方法其实就是使用图床，这样图片可以正常显示并且不会因为本地资源的调整而出现问题。因为GitHub网络问题，如果上传过多的图片到GitHub中，加载hexo可能会很慢。使用图床就可以很好地解决这个问题。</p><p>你可以使用<span class="exturl" data-url="aHR0cHM6Ly96aGlkYS56aGlodS5jb20vc2VhcmNoP2NvbnRlbnRfaWQ9MjQxMTgxNDc2JmNvbnRlbnRfdHlwZT1BcnRpY2xlJm1hdGNoX29yZGVyPTEmcT0lRTglODUlQkUlRTglQUUlQUYlRTQlQkElOTEmemRfdG9rZW49ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKNmFHbGtZVjl6WlhKMlpYSWlMQ0psZUhBaU9qRTNOREV5TkRReU5UZ3NJbkVpT2lMb2hiN29ycV9rdXBFaUxDSjZhR2xrWVY5emIzVnlZMlVpT2lKbGJuUnBkSGtpTENKamIyNTBaVzUwWDJsa0lqb3lOREV4T0RFME56WXNJbU52Ym5SbGJuUmZkSGx3WlNJNklrRnlkR2xqYkdVaUxDSnRZWFJqYUY5dmNtUmxjaUk2TVN3aWVtUmZkRzlyWlc0aU9tNTFiR3g5LnhKSVBRQ1M1cVhWZ1dFWG9VUmI2b3FPUjA1OWpWeVJheWYxSFAyblZDZ0kmemhpZGFfc291cmNlPWVudGl0eQ==">腾讯云</span>、阿里云的对象存储服务存储图片，然后在文章中加入图片的链接。除了腾讯云、阿里云等，夜梦还推荐使用**<span class="exturl" data-url="aHR0cHM6Ly96aGlkYS56aGlodS5jb20vc2VhcmNoP2NvbnRlbnRfaWQ9MjQxMTgxNDc2JmNvbnRlbnRfdHlwZT1BcnRpY2xlJm1hdGNoX29yZGVyPTEmcT0lRTklOUIlQTglRTQlQkElOTEmemRfdG9rZW49ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKNmFHbGtZVjl6WlhKMlpYSWlMQ0psZUhBaU9qRTNOREV5TkRReU5UZ3NJbkVpT2lMcG02amt1cEVpTENKNmFHbGtZVjl6YjNWeVkyVWlPaUpsYm5ScGRIa2lMQ0pqYjI1MFpXNTBYMmxrSWpveU5ERXhPREUwTnpZc0ltTnZiblJsYm5SZmRIbHdaU0k2SWtGeWRHbGpiR1VpTENKdFlYUmphRjl2Y21SbGNpSTZNU3dpZW1SZmRHOXJaVzRpT201MWJHeDkubERUU1BxdkZLX3NmejNpUk1yR2hBNVRYejlFbkxwMWdkUUk1WjBNMGc0cyZ6aGlkYV9zb3VyY2U9ZW50aXR5">雨云</span>**的对象存储服务，价格如下：</p><ul><li>流量：套餐内每GB <strong>0.2</strong> 元，套餐外每GB <strong>0.5</strong> 元。</li><li>存储：套餐内每GB <strong>0.05</strong> 元，套餐外每GB <strong>0.12</strong> 元。</li></ul><p>最低13元&#x2F;月即可获得100G存储+25G流量或者是5G存储+50G流量套餐。如果关闭弹性计费，就不会产生额外费用，不用担心被攻击以后产生的天价账单。</p><p>雨云优惠注册链接（长期九折+首月五折优惠）：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vd3d3LnJhaW55dW4uY29tL1llTWVuZ18=">https://www.rainyun.com/</span></p><h3 id="2-2-3-修改配置与安装插件"><a href="#2-2-3-修改配置与安装插件" class="headerlink" title="2.2.3 修改配置与安装插件"></a>2.2.3 修改配置与安装插件</h3><p>你也可以通过修改配置并安装插件的方法完成图片的插入。你需要<strong>修改站点配置</strong><code>_config.yml</code>，将<code>post_asset_folder</code>设置为<code>true</code>，如下图：</p><p><img src="https://pic1.zhimg.com/v2-9bde02bec11c062e9c76d4bd30568c7c_1440w.jpg" alt="img"></p><p>然后安装插件：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-asset-image -- save</span><br></pre></td></tr></table></figure><h3 id="2-2-4-修复静态图片路径"><a href="#2-2-4-修复静态图片路径" class="headerlink" title="2.2.4 修复静态图片路径"></a>2.2.4 修复静态图片路径</h3><p>如果你使用的是插件，当生成预览的时候，可能依旧无法正常查看图片。</p><p><img src="https://pic4.zhimg.com/v2-cd76c448f3ddf2b3724d1d05a2130e3d_1440w.jpg" alt="img"></p><p>通过直接查看HTML文件，我们可以看到是因为多了&#x2F;.com&#x2F;，所以在加载图片的时候无法获得正确的路径。</p><p><img src="https://picx.zhimg.com/v2-9b57545f3960b351425f049af102dd73_1440w.jpg" alt="img"></p><p>具体的修改也很简单，我们只需要到<code>node_modules</code>中找到<code>hexo-asset-image</code>，并将58、89行的</p><p><img src="https://pica.zhimg.com/v2-1f23ed0500e4fc9cda9fd40bb5df2faa_1440w.jpg" alt="img"></p><p>修改为：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$(this).attr(&#x27;src&#x27;, src);</span><br><span class="line">console.info &amp;&amp; console.info(&quot;update link as:--&gt;&quot; + src);</span><br></pre></td></tr></table></figure><p>如下图：</p><p><img src="https://pic4.zhimg.com/v2-ae60210573e09d824016f9e0413a4673_1440w.jpg" alt="img"></p><p>不出意外的话，就可以看到正常显示的图片了：</p><p><img src="https://pic2.zhimg.com/v2-0cdb3f73d7f3e2e55ae486b0e9473e13_1440w.jpg" alt="img"></p><h3 id="2-3-创建文章"><a href="#2-3-创建文章" class="headerlink" title="2.3 创建文章"></a>2.3 创建文章</h3><p>在HEXO目录下，打开GIT BASH HERE，你可以直接使用下面的命令创建新的文章：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># 标准格式如下</span><br><span class="line"># hexo new post &lt;title&gt;</span><br><span class="line"># 夜梦这里举例</span><br><span class="line">hexo new post HEXO博客的初步使用</span><br></pre></td></tr></table></figure><p>创建完成，可以在终端里面看到提示：</p><p><img src="https://pic1.zhimg.com/v2-41780e3b241686c43e37966d0379dd82_1440w.jpg" alt="img"></p><p>文章post的存储路径：<code>source/_posts</code>。因为我们安装了插件，所以在同一目录下，会生成一个和文章名字一样的文件夹。</p><p><img src="https://pic1.zhimg.com/v2-15aa8c555a892eaaa89840c148031236_1440w.jpg" alt="img"></p><h3 id="2-4-写作"><a href="#2-4-写作" class="headerlink" title="2.4 写作"></a>2.4 写作</h3><p>写作就很简单了，在.md文件里面直接用markdown语法写就可以了。</p><p>如果需要引用本地图片地话，需要把图片放到我们只需要把图片放到与文章同名的文件夹中，然后直接引用~</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">![yourDescription](yourPostTitle/yourImage.png) # 假如你的文章名是yourPostTitle，图片名字是yourImage.png</span><br></pre></td></tr></table></figure><h2 id="3-发布"><a href="#3-发布" class="headerlink" title="3. 发布"></a>3. 发布</h2><p>写完以后保存.md文件，然后运行</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo clean &amp;&amp; hexo g &amp;&amp; hexo s</span><br></pre></td></tr></table></figure><p>本地预览。无误后，你可以执行</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo d</span><br></pre></td></tr></table></figure><p>发布到github pages上。夜梦演示的效果如下图：</p>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;HEXO安装：&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82ODgzNDkxNDI=&quot;&gt;HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程&lt;/span&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>FinalCutPro插件路径</title>
    <link href="https://www.kulafan.com/3bc9b874/"/>
    <id>https://www.kulafan.com/3bc9b874/</id>
    <published>2025-03-04T06:44:12.000Z</published>
    <updated>2026-07-13T11:52:27.235Z</updated>
    
    <content type="html"><![CDATA[<p>资源库&#x2F;application support&#x2F;finalcut pro&#x2F;templates</p><p>影片&#x2F;Motion Templates</p><img src="/3bc9b874/finalcut pro.jpg" alt="finalcut pro">]]></content>
    
    
    <summary type="html">&lt;p&gt;资源库&amp;#x2F;application support&amp;#x2F;finalcut pro&amp;#x2F;templates&lt;/p&gt;
&lt;p&gt;影片&amp;#x2F;Motion Templates&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="Mac" scheme="https://www.kulafan.com/tags/Mac/"/>
    
    <category term="媒体" scheme="https://www.kulafan.com/tags/%E5%AA%92%E4%BD%93/"/>
    
    <category term="视频" scheme="https://www.kulafan.com/tags/%E8%A7%86%E9%A2%91/"/>
    
  </entry>
  
  <entry>
    <title>LUX 在mac下载bilibili视频的方法</title>
    <link href="https://www.kulafan.com/de375956/"/>
    <id>https://www.kulafan.com/de375956/</id>
    <published>2024-08-09T11:34:29.000Z</published>
    <updated>2026-07-13T11:52:27.232Z</updated>
    
    <content type="html"><![CDATA[<p>方法来源于：<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eA==">https://github.com/iawia002/lux</span></p><h1 id="Lux"><a href="#Lux" class="headerlink" title="Lux"></a>Lux</h1><p><em>Let there be Lux!</em></p><p><a href="https://codecov.io/gh/iawia002/lux"><img src="https://camo.githubusercontent.com/78a4fa10247f678eb291145bc53ffe48e290eea0faf32f364e44071d4c4bb225/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f69617769613030322f6c75782e7376673f7374796c653d666c61742d737175617265" alt="Codecov"> </a><a href="https://github.com/iawia002/lux/actions"><img src="https://camo.githubusercontent.com/33e6b3d746fa4acb064906ca94bbd91feb7d938859c5cf3ce4c0bbf87920fb81/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f69617769613030322f6c75782f63692e796d6c3f7374796c653d666c61742d737175617265" alt="GitHub Workflow Status"> </a><a href="https://goreportcard.com/report/github.com/iawia002/lux"><img src="https://camo.githubusercontent.com/3a7da29d4ad5d1b7a566828e453e6c71084da8eb69827ed453e6bc21eb403e66/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f69617769613030322f6c75783f7374796c653d666c61742d737175617265" alt="Go Report Card"> </a><a href="https://github.com/iawia002/lux/releases"><img src="https://camo.githubusercontent.com/ef82aa4e1f8861c74f0c15a23fb774548b4b860be47ae9193d39d1ee7663f794/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f69617769613030322f6c75782e7376673f7374796c653d666c61742d737175617265" alt="GitHub release"> </a><a href="https://formulae.brew.sh/formula/lux"><img src="https://camo.githubusercontent.com/727ba5de2520019687823e23cddd97bcb50f46e05e69a7e620b821c858225f3a/68747470733a2f2f696d672e736869656c64732e696f2f686f6d65627265772f762f6c75782e7376673f7374796c653d666c61742d737175617265" alt="Homebrew"></a></p><p>👾 Lux is a fast and simple video downloader built with Go.</p><ul><li>Installation<ul><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjcHJlcmVxdWlzaXRlcw==">Prerequisites</span></li><li><a href="https://github.com/iawia002/lux/blob/master/README.md#install-via-go-install">Install via <code>go install</code></a></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjaG9tZWJyZXctbWFjb3Mtb25seQ==">Homebrew (macOS only)</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjYXJjaC1saW51eA==">Arch Linux</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjdm9pZC1saW51eA==">Void Linux</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjc2Nvb3Atb24td2luZG93cw==">Scoop on Windows</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjY2hvY29sYXRleS1vbi13aW5kb3dz">Chocolatey on Windows</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjY2Fzay1vbi13aW5kb3dzbWFjb3NsaW51eA==">Cask on Windows&#x2F;macOS&#x2F;Linux</span></li></ul></li><li>Getting Started<ul><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjZG93bmxvYWQtYS12aWRlbw==">Download a video</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjZG93bmxvYWQtYW55dGhpbmctZWxzZQ==">Download anything else</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjZG93bmxvYWQtcGxheWxpc3Q=">Download playlist</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXVsdGlwbGUtaW5wdXRz">Multiple inputs</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjcmVzdW1lLWEtZG93bmxvYWQ=">Resume a download</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjYXV0by1yZXRyeQ==">Auto retry</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjY29va2llcw==">Cookies</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjcHJveHk=">Proxy</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXVsdGktdGhyZWFk">Multi-Thread</span></li><li>Short link<ul><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjYmlsaWJpbGk=">bilibili</span></li></ul></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjdXNlLXNwZWNpZmllZC1yZWZlcnJlcg==">Use specified Referrer</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjc3BlY2lmeS10aGUtb3V0cHV0LXBhdGgtYW5kLW5hbWU=">Specify the output path and name</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjZGVidWctbW9kZQ==">Debug Mode</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjcmV1c2UtZXh0cmFjdGVkLWRhdGE=">Reuse extracted data</span></li><li>Options<ul><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjZG93bmxvYWQ=">Download:</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjbmV0d29yaw==">Network:</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjcGxheWxpc3Q=">Playlist:</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjZmlsZXN5c3RlbQ==">Filesystem:</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjc3VidGl0bGU=">Subtitle:</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjeW91a3U=">Youku:</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjYXJpYTI=">aria2:</span></li></ul></li></ul></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjc3VwcG9ydGVkLXNpdGVz">Supported Sites</span></li><li>Known issues<ul><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjJUU0JUJDJTk4JUU5JTg1JUI3">优酷</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjJUU4JUE1JUJGJUU3JTkzJTlDJUU1JUE0JUI0JUU2JTlEJUExJUU4JUE3JTg2JUU5JUEyJTkx">西瓜&#x2F;头条视频</span></li></ul></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjY29udHJpYnV0aW5n">Contributing</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjYXV0aG9ycw==">Authors</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjc2ltaWxhci1wcm9qZWN0cw==">Similar projects</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9SRUFETUUubWQjbGljZW5zZQ==">License</span></li></ul><h2 id="Installation"><a href="#Installation" class="headerlink" title="Installation"></a>Installation</h2><h3 id="Prerequisites"><a href="#Prerequisites" class="headerlink" title="Prerequisites"></a>Prerequisites</h3><p>The following dependencies are required and must be installed separately.</p><ul><li><strong><span class="exturl" data-url="aHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8=">FFmpeg</span></strong></li></ul><blockquote><p><strong>Note</strong>: FFmpeg does not affect the download, only affects the final file merge.</p></blockquote><h3 id="Install-via-go-install"><a href="#Install-via-go-install" class="headerlink" title="Install via go install"></a>Install via <code>go install</code></h3><p>To install Lux, use <code>go install</code>, or download the binary file from <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9yZWxlYXNlcw==">Releases</span> page.</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ go install github.com/iawia002/lux@latest</span><br></pre></td></tr></table></figure><h3 id="Homebrew-macOS-only"><a href="#Homebrew-macOS-only" class="headerlink" title="Homebrew (macOS only)"></a>Homebrew (macOS only)</h3><p>For macOS users, you can install <code>lux</code> via:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ brew install lux</span><br></pre></td></tr></table></figure><h3 id="Arch-Linux"><a href="#Arch-Linux" class="headerlink" title="Arch Linux"></a>Arch Linux</h3><p>For Arch Users <span class="exturl" data-url="aHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9wYWNrYWdlcy9sdXgtZGwv">AUR</span> package is available.</p><h3 id="Void-Linux"><a href="#Void-Linux" class="headerlink" title="Void Linux"></a>Void Linux</h3><p>For Void linux users, you can install <code>lux</code> via:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ xbps-install -S lux</span><br></pre></td></tr></table></figure><h3 id="Scoop-on-Windows"><a href="#Scoop-on-Windows" class="headerlink" title="Scoop on Windows"></a><span class="exturl" data-url="aHR0cHM6Ly9zY29vcC5zaC8=">Scoop</span> on Windows</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ scoop install lux</span><br></pre></td></tr></table></figure><h3 id="Chocolatey-on-Windows"><a href="#Chocolatey-on-Windows" class="headerlink" title="Chocolatey on Windows"></a><span class="exturl" data-url="aHR0cHM6Ly9jaG9jb2xhdGV5Lm9yZy8=">Chocolatey</span> on Windows</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ choco install lux</span><br></pre></td></tr></table></figure><h3 id="Cask-on-Windows-macOS-Linux"><a href="#Cask-on-Windows-macOS-Linux" class="headerlink" title="Cask on Windows&#x2F;macOS&#x2F;Linux"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2F4ZXRyb3kvY2Fzay5ycw==">Cask</span> on Windows&#x2F;macOS&#x2F;Linux</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ cask install github.com/iawia002/lux</span><br></pre></td></tr></table></figure><h2 id="Getting-Started"><a href="#Getting-Started" class="headerlink" title="Getting Started"></a>Getting Started</h2><p>Usage:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lux [OPTIONS] URL [URL...]</span><br></pre></td></tr></table></figure><h3 id="Download-a-video"><a href="#Download-a-video" class="headerlink" title="Download a video"></a>Download a video</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">$ lux &quot;https://www.youtube.com/watch?v=dQw4w9WgXcQ&quot;</span><br><span class="line"></span><br><span class="line"> Site:      YouTube youtube.com</span><br><span class="line"> Title:     Rick Astley - Never Gonna Give You Up (Video)</span><br><span class="line"> Type:      video</span><br><span class="line"> Stream:</span><br><span class="line">     [248]  -------------------</span><br><span class="line">     Quality:         1080p video/webm; codecs=&quot;vp9&quot;</span><br><span class="line">     Size:            63.93 MiB (67038963 Bytes)</span><br><span class="line">     # download with: lux -f 248 ...</span><br><span class="line"></span><br><span class="line"> 41.88 MiB / 63.93 MiB [=================&gt;-------------]  65.51% 4.22 MiB/s 00m05s</span><br></pre></td></tr></table></figure><p>The <code>-i</code> option displays all available quality of video without downloading.</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line">$ lux -i &quot;https://www.youtube.com/watch?v=dQw4w9WgXcQ&quot;</span><br><span class="line"></span><br><span class="line"> Site:      YouTube youtube.com</span><br><span class="line"> Title:     Rick Astley - Never Gonna Give You Up (Video)</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [248]  -------------------</span><br><span class="line">     Quality:         1080p video/webm; codecs=&quot;vp9&quot;</span><br><span class="line">     Size:            49.29 MiB (51687554 Bytes)</span><br><span class="line">     # download with: lux -f 248 ...</span><br><span class="line"></span><br><span class="line">     [137]  -------------------</span><br><span class="line">     Quality:         1080p video/mp4; codecs=&quot;avc1.640028&quot;</span><br><span class="line">     Size:            43.45 MiB (45564306 Bytes)</span><br><span class="line">     # download with: lux -f 137 ...</span><br><span class="line"></span><br><span class="line">     [398]  -------------------</span><br><span class="line">     Quality:         720p video/mp4; codecs=&quot;av01.0.05M.08&quot;</span><br><span class="line">     Size:            37.12 MiB (38926432 Bytes)</span><br><span class="line">     # download with: lux -f 398 ...</span><br><span class="line"></span><br><span class="line">     [136]  -------------------</span><br><span class="line">     Quality:         720p video/mp4; codecs=&quot;avc1.4d401f&quot;</span><br><span class="line">     Size:            31.34 MiB (32867324 Bytes)</span><br><span class="line">     # download with: lux -f 136 ...</span><br><span class="line"></span><br><span class="line">     [247]  -------------------</span><br><span class="line">     Quality:         720p video/webm; codecs=&quot;vp9&quot;</span><br><span class="line">     Size:            31.03 MiB (32536181 Bytes)</span><br><span class="line">     # download with: lux -f 247 ...</span><br></pre></td></tr></table></figure><p>Use <code>lux -f stream &quot;URL&quot;</code> to download a specific stream listed in the output of <code>-i</code> option.</p><h3 id="Download-anything-else"><a href="#Download-anything-else" class="headerlink" title="Download anything else"></a>Download anything else</h3><p>If Lux is provided the URL of a specific resource, then it will be downloaded directly:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">$ lux &quot;https://img9.bcyimg.com/drawer/15294/post/1799t/1f5a87801a0711e898b12b640777720f.jpg&quot;</span><br><span class="line"></span><br><span class="line">lux doesn&#x27;t support this URL right now, but it will try to download it directly</span><br><span class="line"></span><br><span class="line"> Site:      Universal</span><br><span class="line"> Title:     1f5a87801a0711e898b12b640777720f</span><br><span class="line"> Type:      image/jpeg</span><br><span class="line"> Stream:</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Size:            1.00 MiB (1051042 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br><span class="line"></span><br><span class="line"> 1.00 MiB / 1.00 MiB [===================================] 100.00% 1.21 MiB/s 0s</span><br></pre></td></tr></table></figure><h3 id="Download-playlist"><a href="#Download-playlist" class="headerlink" title="Download playlist"></a>Download playlist</h3><p>The <code>-p</code> option downloads an entire playlist instead of a single video.</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">$ lux -i -p &quot;https://www.bilibili.com/bangumi/play/ep198061&quot;</span><br><span class="line"></span><br><span class="line"> Site:      哔哩哔哩 bilibili.com</span><br><span class="line"> Title:     Doctor X 第四季：第一集</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Quality:         高清 1080P</span><br><span class="line">     Size:            845.66 MiB (886738354 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Site:      哔哩哔哩 bilibili.com</span><br><span class="line"> Title:     Doctor X 第四季：第二集</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Quality:         高清 1080P</span><br><span class="line">     Size:            930.71 MiB (975919195 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br><span class="line"></span><br><span class="line">......</span><br></pre></td></tr></table></figure><p>You can use the <code>-start</code>, <code>-end</code> or <code>-items</code> option to specify the download range of the list:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">-start</span><br><span class="line">    Playlist video to start at (default 1)</span><br><span class="line">-end</span><br><span class="line">    Playlist video to end at</span><br><span class="line">-items</span><br><span class="line">    Playlist video items to download. Separated by commas like: 1,5,6,8-10</span><br></pre></td></tr></table></figure><p>For bilibili playlists only:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">-eto</span><br><span class="line">  File name of each bilibili episode doesn&#x27;t include the playlist title</span><br></pre></td></tr></table></figure><h3 id="Multiple-inputs"><a href="#Multiple-inputs" class="headerlink" title="Multiple inputs"></a>Multiple inputs</h3><p>You can also download multiple URLs at once:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">$ lux -i &quot;https://www.bilibili.com/video/av21877586&quot; &quot;https://www.bilibili.com/video/av21990740&quot;</span><br><span class="line"></span><br><span class="line"> Site:      哔哩哔哩 bilibili.com</span><br><span class="line"> Title:     【莓机会了】甜到虐哭的13集单集MAD「我现在什么都不想干,更不想看14集」</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Quality:         高清 1080P</span><br><span class="line">     Size:            51.88 MiB (54403767 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Site:      哔哩哔哩 bilibili.com</span><br><span class="line"> Title:     【莓救了】甜到虐哭！！！国家队单集MAD-当熟悉的bgm响起，眼泪从脸颊滑下</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Quality:         高清 1080P</span><br><span class="line">     Size:            77.63 MiB (81404093 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br></pre></td></tr></table></figure><p>These URLs will be downloaded one by one.</p><p>You can also use the <code>-F</code> option to read URLs from file:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">$ lux -F ~/Desktop/u.txt</span><br><span class="line"></span><br><span class="line"> Site:      微博 weibo.com</span><br><span class="line"> Title:     在Google，我们设计什么？ via@阑夕</span><br><span class="line"> Type:      video</span><br><span class="line"> Stream:</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Size:            19.19 MiB (20118196 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br><span class="line"></span><br><span class="line"> 19.19 MiB / 19.19 MiB [=================================] 100.00% 9.69 MiB/s 1s</span><br><span class="line"></span><br><span class="line">......</span><br></pre></td></tr></table></figure><p>You can use the <code>-start</code>, <code>-end</code> or <code>-items</code> option to specify the download range of the list:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">-start</span><br><span class="line">    File line to start at (default 1)</span><br><span class="line">-end</span><br><span class="line">    File line to end at</span><br><span class="line">-items</span><br><span class="line">    File lines to download. Separated by commas like: 1,5,6,8-10</span><br></pre></td></tr></table></figure><h3 id="Resume-a-download"><a href="#Resume-a-download" class="headerlink" title="Resume a download"></a>Resume a download</h3><p>Ctrl+C interrupts a download.</p><p>A temporary <code>.download</code> file is kept in the output directory. If <code>lux</code> is ran with the same arguments, then the download progress will resume from the last session.</p><h3 id="Auto-retry"><a href="#Auto-retry" class="headerlink" title="Auto retry"></a>Auto retry</h3><p>lux will auto retry when the download failed, you can specify the retry times by <code>-retry</code> option (default is 100).</p><h3 id="Cookies"><a href="#Cookies" class="headerlink" title="Cookies"></a>Cookies</h3><p>Cookies can be provided to <code>lux</code> with the <code>-c</code> option if they are required for accessing the video.</p><p>Cookies can be the following format or <span class="exturl" data-url="aHR0cHM6Ly9jdXJsLmhheHguc2UvcmZjL2Nvb2tpZV9zcGVjLmh0bWw=">Netscape Cookie</span> format:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">name=value; name2=value2; ...</span><br></pre></td></tr></table></figure><p>Cookies can be a string or a text file, supply cookies in one of the two following ways.</p><p>As a string:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ lux -c &quot;name=value; name2=value2&quot; &quot;https://www.bilibili.com/video/av20203945&quot;</span><br></pre></td></tr></table></figure><p>As a text file:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ lux -c cookies.txt &quot;https://www.bilibili.com/video/av20203945&quot;</span><br></pre></td></tr></table></figure><h3 id="Proxy"><a href="#Proxy" class="headerlink" title="Proxy"></a>Proxy</h3><p>You can set the HTTP&#x2F;SOCKS5 proxy using environment variables:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ HTTP_PROXY=&quot;http://127.0.0.1:1087/&quot; lux -i &quot;https://www.youtube.com/watch?v=Gnbch2osEeo&quot;</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ HTTP_PROXY=&quot;socks5://127.0.0.1:1080/&quot; lux -i &quot;https://www.youtube.com/watch?v=Gnbch2osEeo&quot;</span><br></pre></td></tr></table></figure><h3 id="Multi-Thread"><a href="#Multi-Thread" class="headerlink" title="Multi-Thread"></a>Multi-Thread</h3><p>Use <code>--multi-thread</code> or <code>-m</code> multiple threads to download single video.</p><p>Use <code>--thread</code> or <code>-n</code> option to set the number of download threads(default is 10).</p><blockquote><p>Note: If the video has multi fragment, the number of actual download threads will increase.</p><p>For example:</p><ul><li>If <code>-n</code> is set to 10, and the video has 2 fragments, then 20 threads will actually be used.</li><li>If the video has 20 fragments, only 10 fragments are downloaded in the same time, the actual threads count is 100.</li></ul></blockquote><blockquote><p><strong>Special Tips:</strong> Use too many threads in <strong>mgtv</strong> download will cause HTTP 403 error, we recommend setting the number of threads to <strong>1</strong>.</p></blockquote><h3 id="Short-link"><a href="#Short-link" class="headerlink" title="Short link"></a>Short link</h3><h4 id="bilibili"><a href="#bilibili" class="headerlink" title="bilibili"></a>bilibili</h4><p>You can just use <code>av</code> or <code>ep</code> number to download bilibili’s video:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">$ lux -i ep198381 av21877586</span><br><span class="line"></span><br><span class="line"> Site:      哔哩哔哩 bilibili.com</span><br><span class="line"> Title:     狐妖小红娘：第79话 南国公主的吃货本色</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Quality:         高清 1080P</span><br><span class="line">     Size:            485.23 MiB (508798478 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Site:      哔哩哔哩 bilibili.com</span><br><span class="line"> Title:     【莓机会了】甜到虐哭的13集单集MAD「我现在什么都不想干,更不想看14集」</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Quality:         高清 1080P</span><br><span class="line">     Size:            51.88 MiB (54403767 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br></pre></td></tr></table></figure><h3 id="Use-specified-Referrer"><a href="#Use-specified-Referrer" class="headerlink" title="Use specified Referrer"></a>Use specified Referrer</h3><p>A Referrer can be used for the request with the <code>-r</code> option:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ lux -r &quot;https://www.bilibili.com/video/av20383055/&quot; &quot;http://cn-scnc1-dx.acgvideo.com/&quot;</span><br></pre></td></tr></table></figure><h3 id="Specify-the-output-path-and-name"><a href="#Specify-the-output-path-and-name" class="headerlink" title="Specify the output path and name"></a>Specify the output path and name</h3><p>The <code>-o</code> option sets the path, and <code>-O</code> option sets the name of the downloaded file:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ lux -o ../ -O &quot;hello&quot; &quot;https://example.com&quot;</span><br></pre></td></tr></table></figure><h3 id="Debug-Mode"><a href="#Debug-Mode" class="headerlink" title="Debug Mode"></a>Debug Mode</h3><p>The <code>-d</code> option outputs network request messages:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">$ lux -i -d &quot;http://www.bilibili.com/video/av20088587&quot;</span><br><span class="line"></span><br><span class="line">URL:         http://www.bilibili.com/video/av20088587</span><br><span class="line">Method:      GET</span><br><span class="line">Headers:     http.Header&#123;</span><br><span class="line">    &quot;Referer&quot;:         &#123;&quot;http://www.bilibili.com/video/av20088587&quot;&#125;,</span><br><span class="line">    &quot;Accept&quot;:          &#123;&quot;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&quot;&#125;,</span><br><span class="line">    &quot;Accept-Charset&quot;:  &#123;&quot;UTF-8,*;q=0.5&quot;&#125;,</span><br><span class="line">    &quot;Accept-Encoding&quot;: &#123;&quot;gzip,deflate,sdch&quot;&#125;,</span><br><span class="line">    &quot;Accept-Language&quot;: &#123;&quot;en-US,en;q=0.8&quot;&#125;,</span><br><span class="line">    &quot;User-Agent&quot;:      &#123;&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36&quot;&#125;,</span><br><span class="line">&#125;</span><br><span class="line">Status Code: 200</span><br><span class="line"></span><br><span class="line">URL:         https://interface.bilibili.com/v2/playurl?appkey=84956560bc028eb7&amp;cid=32782944&amp;otype=json&amp;qn=116&amp;quality=116&amp;type=&amp;sign=fb2e3f261fec398652f96d358517e535</span><br><span class="line">Method:      GET</span><br><span class="line">Headers:     http.Header&#123;</span><br><span class="line">    &quot;Accept-Charset&quot;:  &#123;&quot;UTF-8,*;q=0.5&quot;&#125;,</span><br><span class="line">    &quot;Accept-Encoding&quot;: &#123;&quot;gzip,deflate,sdch&quot;&#125;,</span><br><span class="line">    &quot;Accept-Language&quot;: &#123;&quot;en-US,en;q=0.8&quot;&#125;,</span><br><span class="line">    &quot;User-Agent&quot;:      &#123;&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36&quot;&#125;,</span><br><span class="line">    &quot;Referer&quot;:         &#123;&quot;https://interface.bilibili.com/v2/playurl?appkey=84956560bc028eb7&amp;cid=32782944&amp;otype=json&amp;qn=116&amp;quality=116&amp;type=&amp;sign=fb2e3f261fec398652f96d358517e535&quot;&#125;,</span><br><span class="line">    &quot;Accept&quot;:          &#123;&quot;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&quot;&#125;,</span><br><span class="line">&#125;</span><br><span class="line">Status Code: 200</span><br><span class="line"></span><br><span class="line"> Site:      哔哩哔哩 bilibili.com</span><br><span class="line"> Title:     燃油动力的遥控奥迪R8跑赛道</span><br><span class="line"> Type:      video</span><br><span class="line"> Streams:   # All available quality</span><br><span class="line">     [default]  -------------------</span><br><span class="line">     Quality:         高清 1080P</span><br><span class="line">     Size:            64.38 MiB (67504795 Bytes)</span><br><span class="line">     # download with: lux -f default &quot;URL&quot;</span><br></pre></td></tr></table></figure><h3 id="Reuse-extracted-data"><a href="#Reuse-extracted-data" class="headerlink" title="Reuse extracted data"></a>Reuse extracted data</h3><p>The <code>-j</code> option will print the extracted data in JSON format.</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><span class="line">$ lux -j &quot;https://www.bilibili.com/video/av20203945&quot;</span><br><span class="line"></span><br><span class="line">&#123;</span><br><span class="line">    &quot;site&quot;: &quot;哔哩哔哩 bilibili.com&quot;,</span><br><span class="line">    &quot;title&quot;: &quot;【2018拜年祭单品】相遇day by day&quot;,</span><br><span class="line">    &quot;type&quot;: &quot;video&quot;,</span><br><span class="line">    &quot;streams&quot;: &#123;</span><br><span class="line">        &quot;15&quot;: &#123;</span><br><span class="line">            &quot;urls&quot;: [</span><br><span class="line">                &#123;</span><br><span class="line">                    &quot;url&quot;: &quot;...&quot;,</span><br><span class="line">                    &quot;size&quot;: 18355205,</span><br><span class="line">                    &quot;ext&quot;: &quot;flv&quot;</span><br><span class="line">                &#125;</span><br><span class="line">            ],</span><br><span class="line">            &quot;quality&quot;: &quot;流畅 360P&quot;,</span><br><span class="line">            &quot;size&quot;: 18355205</span><br><span class="line">        &#125;,</span><br><span class="line">        &quot;32&quot;: &#123;</span><br><span class="line">            &quot;urls&quot;: [</span><br><span class="line">                &#123;</span><br><span class="line">                    &quot;url&quot;: &quot;...&quot;,</span><br><span class="line">                    &quot;size&quot;: 40058632,</span><br><span class="line">                    &quot;ext&quot;: &quot;flv&quot;</span><br><span class="line">                &#125;</span><br><span class="line">            ],</span><br><span class="line">            &quot;quality&quot;: &quot;清晰 480P&quot;,</span><br><span class="line">            &quot;size&quot;: 40058632</span><br><span class="line">        &#125;,</span><br><span class="line">        &quot;64&quot;: &#123;</span><br><span class="line">            &quot;urls&quot;: [</span><br><span class="line">                &#123;</span><br><span class="line">                    &quot;url&quot;: &quot;...&quot;,</span><br><span class="line">                    &quot;size&quot;: 82691087,</span><br><span class="line">                    &quot;ext&quot;: &quot;flv&quot;</span><br><span class="line">                &#125;</span><br><span class="line">            ],</span><br><span class="line">            &quot;quality&quot;: &quot;高清 720P&quot;,</span><br><span class="line">            &quot;size&quot;: 82691087</span><br><span class="line">        &#125;,</span><br><span class="line">        &quot;80&quot;: &#123;</span><br><span class="line">            &quot;urls&quot;: [</span><br><span class="line">                &#123;</span><br><span class="line">                    &quot;url&quot;: &quot;...&quot;,</span><br><span class="line">                    &quot;size&quot;: 121735559,</span><br><span class="line">                    &quot;ext&quot;: &quot;flv&quot;</span><br><span class="line">                &#125;</span><br><span class="line">            ],</span><br><span class="line">            &quot;quality&quot;: &quot;高清 1080P&quot;,</span><br><span class="line">            &quot;size&quot;: 121735559</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="Options"><a href="#Options" class="headerlink" title="Options"></a>Options</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">-iInformation only</span><br><span class="line">-F string</span><br><span class="line">  URLs file path</span><br><span class="line">-dDebug mode</span><br><span class="line">-jPrint extracted data</span><br><span class="line">-sMinimum outputs</span><br><span class="line">-vShow version</span><br></pre></td></tr></table></figure><h4 id="Download"><a href="#Download" class="headerlink" title="Download:"></a>Download:</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">-f string</span><br><span class="line">  Select specific stream to download</span><br><span class="line">-pDownload playlist</span><br><span class="line">-n int</span><br><span class="line">  The number of download thread (only works for multiple-parts video) (default 10)</span><br><span class="line">-c string</span><br><span class="line">  Cookie</span><br><span class="line">-r string</span><br><span class="line">  Use specified Referrer</span><br><span class="line">-cs int</span><br><span class="line">  HTTP chunk size for downloading (in MB) (default 1)</span><br></pre></td></tr></table></figure><h4 id="Network"><a href="#Network" class="headerlink" title="Network:"></a>Network:</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">-retry int</span><br><span class="line">  How many times to retry when the download failed (default 10)</span><br></pre></td></tr></table></figure><h4 id="Playlist"><a href="#Playlist" class="headerlink" title="Playlist:"></a>Playlist:</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">-start int</span><br><span class="line">  Playlist video to start at (default 1)</span><br><span class="line">-end int</span><br><span class="line">  Playlist video to end at</span><br><span class="line">-items string</span><br><span class="line">  Playlist video items to download. Separated by commas like: 1,5,6,8-10</span><br></pre></td></tr></table></figure><h4 id="Filesystem"><a href="#Filesystem" class="headerlink" title="Filesystem:"></a>Filesystem:</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">-o string</span><br><span class="line">  Specify the output path</span><br><span class="line">-O string</span><br><span class="line">  Specify the output file name</span><br></pre></td></tr></table></figure><h4 id="Subtitle"><a href="#Subtitle" class="headerlink" title="Subtitle:"></a>Subtitle:</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-CDownload captions</span><br></pre></td></tr></table></figure><h4 id="Youku"><a href="#Youku" class="headerlink" title="Youku:"></a>Youku:</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">-ccode string</span><br><span class="line">  Youku ccode (default &quot;0502&quot;)</span><br><span class="line">-ckey string</span><br><span class="line">  Youku ckey (default &quot;7B19C0AB12633B22E7FE81271162026020570708D6CC189E4924503C49D243A0DE6CD84A766832C2C99898FC5ED31F3709BB3CDD82C96492E721BDD381735026&quot;)</span><br><span class="line">-password string</span><br><span class="line">  Youku password</span><br></pre></td></tr></table></figure><h4 id="aria2"><a href="#aria2" class="headerlink" title="aria2:"></a>aria2:</h4><blockquote><p>Note: If you use aria2 to download, you need to merge the multi-part videos yourself.</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">-aria2</span><br><span class="line">  Use Aria2 RPC to download</span><br><span class="line">-aria2addr string</span><br><span class="line">  Aria2 Address (default &quot;localhost:6800&quot;)</span><br><span class="line">-aria2method string</span><br><span class="line">  Aria2 Method (default &quot;http&quot;)</span><br><span class="line">-aria2token string</span><br><span class="line">  Aria2 RPC Token</span><br></pre></td></tr></table></figure><h2 id="Supported-Sites"><a href="#Supported-Sites" class="headerlink" title="Supported Sites"></a>Supported Sites</h2><table><thead><tr><th>Site</th><th>URL</th><th>🎬 Videos</th><th>🌁 Images</th><th>🔊 Audio</th><th>📚 Playlist</th><th>🍪 VIP adaptation</th><th>Build Status</th></tr></thead><tbody><tr><td>抖音</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cuZG91eWluLmNvbS8=">https://www.douyin.com</span></td><td>✓</td><td>✓</td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_douyin.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_douyin.yml/badge.svg" alt="douyin"></a></td></tr><tr><td>哔哩哔哩</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLw==">https://www.bilibili.com</span></td><td>✓</td><td></td><td></td><td>✓</td><td>✓</td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_bilibili.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_bilibili.yml/badge.svg" alt="bilibili"></a></td></tr><tr><td>半次元</td><td><span class="exturl" data-url="aHR0cHM6Ly9iY3kubmV0Lw==">https://bcy.net</span></td><td></td><td>✓</td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_bcy.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_bcy.yml/badge.svg" alt="bcy"></a></td></tr><tr><td>pixivision</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cucGl4aXZpc2lvbi5uZXQv">https://www.pixivision.net</span></td><td></td><td>✓</td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_pixivision.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_pixivision.yml/badge.svg" alt="pixivision"></a></td></tr><tr><td>优酷</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cueW91a3UuY29tLw==">https://www.youku.com</span></td><td>✓</td><td></td><td></td><td></td><td>✓</td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_youku.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_youku.yml/badge.svg" alt="youku"></a></td></tr><tr><td>YouTube</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cueW91dHViZS5jb20v">https://www.youtube.com</span></td><td>✓</td><td></td><td></td><td>✓</td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_youtube.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_youtube.yml/badge.svg" alt="youtube"></a></td></tr><tr><td>西瓜视频（头条）</td><td><span class="exturl" data-url="aHR0cHM6Ly9tLnRvdXRpYW8uY29tLw==">https://m.toutiao.com</span>, <span class="exturl" data-url="aHR0cHM6Ly92Lml4aWd1YS5jb20v">https://v.ixigua.com</span>, <span class="exturl" data-url="aHR0cHM6Ly93d3cuaXhpZ3VhLmNvbS8=">https://www.ixigua.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_ixigua.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_ixigua.yml/badge.svg" alt="ixigua"></a></td></tr><tr><td>爱奇艺</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cuaXFpeWkuY29tLw==">https://www.iqiyi.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_iqiyi.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_iqiyi.yml/badge.svg" alt="iqiyi"></a></td></tr><tr><td>新片场</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbS8=">https://www.xinpianchang.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_xinpianchang.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_xinpianchang.yml/badge.svg" alt="xinpianchang"></a></td></tr><tr><td>芒果 TV</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cubWd0di5jb20v">https://www.mgtv.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_mgtv.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_mgtv.yml/badge.svg" alt="mgtv"></a></td></tr><tr><td>糖豆广场舞</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cudGFuZ2RvdS5jb20v">https://www.tangdou.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_tangdou.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_tangdou.yml/badge.svg" alt="tangdou"></a></td></tr><tr><td>Tumblr</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cudHVtYmxyLmNvbS8=">https://www.tumblr.com</span></td><td>✓</td><td>✓</td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_tumblr.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_tumblr.yml/badge.svg" alt="tumblr"></a></td></tr><tr><td>Vimeo</td><td><span class="exturl" data-url="aHR0cHM6Ly92aW1lby5jb20v">https://vimeo.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_vimeo.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_vimeo.yml/badge.svg" alt="vimeo"></a></td></tr><tr><td>Facebook</td><td><span class="exturl" data-url="aHR0cHM6Ly9mYWNlYm9vay5jb20v">https://facebook.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_facebook.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_facebook.yml/badge.svg" alt="facebook"></a></td></tr><tr><td>斗鱼视频</td><td><span class="exturl" data-url="aHR0cHM6Ly92LmRvdXl1LmNvbS8=">https://v.douyu.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_douyu.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_douyu.yml/badge.svg" alt="douyu"></a></td></tr><tr><td>秒拍</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cubWlhb3BhaS5jb20v">https://www.miaopai.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_miaopai.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_miaopai.yml/badge.svg" alt="miaopai"></a></td></tr><tr><td>微博</td><td><span class="exturl" data-url="aHR0cHM6Ly93ZWliby5jb20v">https://weibo.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_weibo.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_weibo.yml/badge.svg" alt="weibo"></a></td></tr><tr><td>Instagram</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS8=">https://www.instagram.com</span></td><td>✓</td><td>✓</td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_instagram.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_instagram.yml/badge.svg" alt="instagram"></a></td></tr><tr><td>Threads</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cudGhyZWFkcy5uZXQv">https://www.threads.net</span></td><td>✓</td><td>✓</td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_threads.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_threads.yml/badge.svg" alt="threads"></a></td></tr><tr><td>Twitter</td><td><span class="exturl" data-url="aHR0cHM6Ly90d2l0dGVyLmNvbS8=">https://twitter.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_twitter.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_twitter.yml/badge.svg" alt="twitter"></a></td></tr><tr><td>腾讯视频</td><td><span class="exturl" data-url="aHR0cHM6Ly92LnFxLmNvbS8=">https://v.qq.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_qq.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_qq.yml/badge.svg" alt="qq"></a></td></tr><tr><td>网易云音乐</td><td><span class="exturl" data-url="aHR0cHM6Ly9tdXNpYy4xNjMuY29tLw==">https://music.163.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_netease.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_netease.yml/badge.svg" alt="netease"></a></td></tr><tr><td>音悦台</td><td><span class="exturl" data-url="aHR0cHM6Ly95aW55dWV0YWkuY29tLw==">https://yinyuetai.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_yinyuetai.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_yinyuetai.yml/badge.svg" alt="yinyuetai"></a></td></tr><tr><td>极客时间</td><td><span class="exturl" data-url="aHR0cHM6Ly90aW1lLmdlZWtiYW5nLm9yZy8=">https://time.geekbang.org</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_geekbang.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_geekbang.yml/badge.svg" alt="geekbang"></a></td></tr><tr><td>Pornhub</td><td><span class="exturl" data-url="aHR0cHM6Ly9wb3JuaHViLmNvbS8=">https://pornhub.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_pornhub.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_pornhub.yml/badge.svg" alt="pornhub"></a></td></tr><tr><td>XVIDEOS</td><td><span class="exturl" data-url="aHR0cHM6Ly94dmlkZW9zLmNvbS8=">https://xvideos.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_xvideos.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_xvideos.yml/badge.svg" alt="xvideos"></a></td></tr><tr><td>聯合新聞網</td><td><span class="exturl" data-url="aHR0cHM6Ly91ZG4uY29tLw==">https://udn.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_udn.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_udn.yml/badge.svg" alt="udn"></a></td></tr><tr><td>TikTok</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cudGlrdG9rLmNvbS8=">https://www.tiktok.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_tiktok.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_tiktok.yml/badge.svg" alt="tiktok"></a></td></tr><tr><td>Pinterest</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cucGludGVyZXN0LmNvbS8=">https://www.pinterest.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_pinterest.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_pinterest.yml/badge.svg" alt="pinterest"></a></td></tr><tr><td>好看视频</td><td><span class="exturl" data-url="aHR0cHM6Ly9oYW9rYW4uYmFpZHUuY29tLw==">https://haokan.baidu.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_haokan.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_haokan.yml/badge.svg" alt="haokan"></a></td></tr><tr><td>AcFun</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cuYWNmdW4uY24v">https://www.acfun.cn</span></td><td>✓</td><td></td><td></td><td>✓</td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_acfun.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_acfun.yml/badge.svg" alt="acfun"></a></td></tr><tr><td>Eporner</td><td><span class="exturl" data-url="aHR0cHM6Ly9lcG9ybmVyLmNvbS8=">https://eporner.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_eporner.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_eporner.yml/badge.svg" alt="eporner"></a></td></tr><tr><td>StreamTape</td><td><span class="exturl" data-url="aHR0cHM6Ly9zdHJlYW10YXBlLmNvbS8=">https://streamtape.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_streamtape.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_streamtape.yml/badge.svg" alt="streamtape"></a></td></tr><tr><td>虎扑</td><td><span class="exturl" data-url="aHR0cHM6Ly9odXB1LmNvbS8=">https://hupu.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_hupu.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_hupu.yml/badge.svg" alt="hupu"></a></td></tr><tr><td>虎牙视频</td><td><span class="exturl" data-url="aHR0cHM6Ly92Lmh1eWEuY29tLw==">https://v.huya.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_huya.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_huya.yml/badge.svg" alt="huya"></a></td></tr><tr><td>喜马拉雅</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cueGltYWxheWEuY29tLw==">https://www.ximalaya.com</span></td><td></td><td></td><td>✓</td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_ximalaya.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_ximalaya.yml/badge.svg" alt="ximalaya"></a></td></tr><tr><td>快手</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cua3VhaXNob3UuY29tLw==">https://www.kuaishou.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_kuaishou.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_kuaishou.yml/badge.svg" alt="kuaishou"></a></td></tr><tr><td>Reddit</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cucmVkZGl0LmNvbS8=">https://www.reddit.com</span></td><td>✓</td><td>✓</td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_reddit.yml"><img src="https://github.com/iawia002/lux/actions/workflows/stream_reddit.yml/badge.svg" alt="reddit"></a></td></tr><tr><td>VKontakte</td><td><span class="exturl" data-url="aHR0cHM6Ly92ay5jb20v">https://vk.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_vk.yml/"><img src="https://github.com/iawia002/lux/actions/workflows/stream_vk.yml/badge.svg" alt="vk"></a></td></tr><tr><td>知乎</td><td><span class="exturl" data-url="aHR0cHM6Ly96aGlodS5jb20v">https://zhihu.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_zhihu.yml/"><img src="https://github.com/iawia002/lux/actions/workflows/stream_zhihu.yml/badge.svg" alt="zhihu"></a></td></tr><tr><td>Rumble</td><td><span class="exturl" data-url="aHR0cHM6Ly9ydW1ibGUuY29tLw==">https://rumble.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_rumble.yml/"><img src="https://github.com/iawia002/lux/actions/workflows/stream_rumble.yml/badge.svg" alt="rumble"></a></td></tr><tr><td>小红书</td><td><span class="exturl" data-url="aHR0cHM6Ly94aWFvaG9uZ3NodS5jb20v">https://xiaohongshu.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_xiaohongshu.yml/"><img src="https://github.com/iawia002/lux/actions/workflows/stream_xiaohongshu.yml/badge.svg" alt="xiaohongshu"></a></td></tr><tr><td>Zing MP3</td><td><span class="exturl" data-url="aHR0cHM6Ly96aW5nbXAzLnZuLw==">https://zingmp3.vn</span></td><td>✓</td><td></td><td>✓</td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_zingmp3.yml/"><img src="https://github.com/iawia002/lux/actions/workflows/stream_zingmp3.yml/badge.svg" alt="zingmp3"></a></td></tr><tr><td>Bitchute</td><td><span class="exturl" data-url="aHR0cHM6Ly93d3cuYml0Y2h1dGUuY29tLw==">https://www.bitchute.com</span></td><td>✓</td><td></td><td></td><td></td><td></td><td><a href="https://github.com/iawia002/lux/actions/workflows/stream_bitchute.yml/"><img src="https://github.com/iawia002/lux/actions/workflows/stream_bitchute.yml/badge.svg" alt="bitchute"></a></td></tr></tbody></table><h2 id="Known-issues"><a href="#Known-issues" class="headerlink" title="Known issues"></a>Known issues</h2><h3 id="优酷"><a href="#优酷" class="headerlink" title="优酷"></a>优酷</h3><p>优酷的 <code>ccode</code> 经常变化导致 lux 不可用，如果你知道有新的可用的 <code>ccode</code>，可以直接使用 <code>lux -ccode ...</code> 而不用等待 lux 更新（当然，也欢迎你给我们提一个 Pull request 来更新默认的 <code>ccode</code>）</p><p>最好是每次下载都附带登录过的 Cookie 以避免部分 <code>ccode</code> 的问题</p><h3 id="西瓜-头条视频"><a href="#西瓜-头条视频" class="headerlink" title="西瓜&#x2F;头条视频"></a>西瓜&#x2F;头条视频</h3><p>西瓜&#x2F;头条视频必须带 Cookie 才能下载成功，西瓜和头条可共用西瓜视频的 Cookie，Cookie 的有效期可能较短，下载失败就更新 Cookie 尝试：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ lux -c &quot;msToken=yoEh0-qLUq4obZ8Sfxsem_CxCo9R3NM6ViTrWaRcM1...; ttwid=1%7C...&quot; &quot;https://m.toutiao.com/is/iYbTfJ79/&quot;</span><br></pre></td></tr></table></figure><h2 id="Contributing"><a href="#Contributing" class="headerlink" title="Contributing"></a>Contributing</h2><p>Lux is an open source project and built on the top of open-source projects. Check out the <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQ=">Contributing Guide</span> to get started.</p><h2 id="Authors"><a href="#Authors" class="headerlink" title="Authors"></a>Authors</h2><p>Code with ❤️ by <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAy">iawia002</span> and lovely <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eC9ncmFwaHMvY29udHJpYnV0b3Jz">contributors</span></p><h2 id="Similar-projects"><a href="#Similar-projects" class="headerlink" title="Similar projects"></a>Similar projects</h2><ul><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2trZGFpL3lvdXR1YmU=">youtube</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3JnMy95b3V0dWJlLWRs">youtube-dl</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3NvaW1vcnQveW91LWdldA==">you-get</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3J5bGlvL3l0ZGw=">ytdl</span></li></ul><h2 id="License"><a href="#License" class="headerlink" title="License"></a>License</h2><p>MIT</p><p>Copyright (c) 2018-present, iawia002</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;方法来源于：&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9naXRodWIuY29tL2lhd2lhMDAyL2x1eA==&quot;&gt;https://github.com/iawia002/lux&lt;/span&gt;&lt;/p&gt;
&lt;h1 id=&quot;Lux&quot;&gt;&lt;a href=&quot;#Lux&quot; class=&quot;headerlink&quot; title=&quot;Lux&quot;&gt;&lt;/a&gt;Lux&lt;/h1&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="Mac" scheme="https://www.kulafan.com/tags/Mac/"/>
    
    <category term="媒体" scheme="https://www.kulafan.com/tags/%E5%AA%92%E4%BD%93/"/>
    
    <category term="视频" scheme="https://www.kulafan.com/tags/%E8%A7%86%E9%A2%91/"/>
    
  </entry>
  
  <entry>
    <title>Cloudflare加速GitHub部署hexo博客后无法访问</title>
    <link href="https://www.kulafan.com/94edb7d2/"/>
    <id>https://www.kulafan.com/94edb7d2/</id>
    <published>2024-08-04T12:05:29.000Z</published>
    <updated>2026-07-13T11:52:27.231Z</updated>
    
    <content type="html"><![CDATA[<p>在cloudflare启用proxy加速之后主博客无法访问后来才发现 原来只要在cloud flare上把github的ip添加a记录解析就好了。之前我的@解析和www都是解析到cname上。</p><p><img src="/94edb7d2/1.jpg" alt="1"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;在cloudflare启用proxy加速之后主博客无法访问后来才发现 原来只要在cloud flare上把github的ip添加a记录解析就好了。之前我的@解析和www都是解析到cname上。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/94edb7d2/1.jpg&quot; alt=&quot;1&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>怎么改善GTA5的NAT类型</title>
    <link href="https://www.kulafan.com/95600d04/"/>
    <id>https://www.kulafan.com/95600d04/</id>
    <published>2024-08-01T11:54:07.000Z</published>
    <updated>2026-07-13T11:52:27.170Z</updated>
    
    <content type="html"><![CDATA[<p>转载自：<a href>rsg.ms&#x2F;nattype</a></p><p><strong>Question</strong>: An error message appears saying that my NAT type is Strict. What does this mean and how can I change my NAT type?</p><p><strong>Answer</strong>: NAT stands for Network Address Translation. It is a function of your router or internet gateway device that translates your PC’s private IP and port to a public IP and port. Your NAT type describes which method your NAT device uses to perform this translation, and how the device filters incoming packets.</p><p><strong>Essentially, your NAT type determines how easily the game can connect to other players over the internet.</strong></p><p>There are three general classifications of NAT types:</p><p>OPEN: Can play games with any other NAT type.<br>MODERATE: Can play games with open or moderate NAT types.<br>STRICT: Can only play against open NAT types.</p><p>If your NAT type is Strict, you will be unable to make a direct connection with most players. This will cause problems such as higher latency (lag), smaller session sizes, longer wait times, and more frequent disconnections. When connection conflicts occur, the game may choose to drop the player with the strictest NAT type.</p><p>How can I change my NAT type?</p><p>Some routers have a ‘Gaming Mode’. Enabling this mode can often give you a better NAT type. Read your router’s manual or search online to see if your router supports it.</p><p>If your NAT type is Strict, it may be blocking ports used by the game, or it may translate your private port to a non-deterministic public port when sending packets to each different player in your session. Other players will be unable to determine which port to use to make a connection. You can fix this by enabling uPnP, or setting up a port-forwarding rule on your router. Most routers support some form of port forwarding. When this is properly configured, it instructs the router to forward incoming traffic from certain ports to a specific device within your network. You may also need to give your PC a static IP for this to work (note that you don’t need a static IP from your internet service provider, just a static private IP for your PC on your internal network). Once your PC has a static IP, forward UDP port 6672 to that IP.</p><p>Additional Ports to Forward for GTA Online:</p><p>TCP Ports: 80, 443<br>UDP Ports: 6672, 61455, 61456, 61457, and 61458</p><p>Other things you can try to improve your connectivity:</p><ol><li>Make sure your router’s firmware is upgraded to the latest version (very important).</li><li>Unplug your router for 10 minutes and plug it back in. Some older routers degrade in performance over time until it is rebooted, similar to a PC.</li><li>Disable any firewall or other network filtering for the game, or open the ports mentioned above.</li><li>Enable or disable uPnP (universal plug and play) on your router.</li><li>Bypass the router entirely and connect your PC directly to the modem using a wired Ethernet cable (not wi-fi).</li><li>If your router is connected to a gateway (a gateway is a modem and router all in one box), both devices may be performing NAT. To resolve this issue, put your gateway into ‘Bridge Mode’ so that only your router performs NAT. Consult your gateway’s manual or contact your ISP to get instructions on how to put the gateway into bridge mode or obtain your PPPoE information if you have ADSL.</li><li>If you use an ADSL connection, see if dialing a PPPoE connection from the PC improves the NAT Type. Read your device’s manual or contact your ISP for instructions.</li></ol>]]></content>
    
    
    <summary type="html">&lt;p&gt;转载自：&lt;a href&gt;rsg.ms&amp;#x2F;nattype&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Question&lt;/strong&gt;: An error message appears saying that my NAT type is Strict. What does this mean and how can I change my NAT type?&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="游戏" scheme="https://www.kulafan.com/tags/%E6%B8%B8%E6%88%8F/"/>
    
    <category term="GTA" scheme="https://www.kulafan.com/tags/GTA/"/>
    
  </entry>
  
  <entry>
    <title>2024-08-01hexo显示用户头像</title>
    <link href="https://www.kulafan.com/9717a88b/"/>
    <id>https://www.kulafan.com/9717a88b/</id>
    <published>2024-08-01T11:40:22.000Z</published>
    <updated>2026-07-13T11:52:27.231Z</updated>
    
    <content type="html"><![CDATA[<p>1.找到主题文件夹</p><p>2.将要显示的头像保存在source下的images文件夹中</p><p>3.打开主题配置文件_config.yml</p><p> 找到avatar，将url取消注释，将图片路径修改为要上传头像的路径</p><p>rounded值为true则图片以圆形显示，false以方形显示</p><p>rotated值为true，鼠标放上去的时候，图片会有旋转动画效果<br>————————————————</p><pre><code>                        版权声明：本文为博主原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接和本声明。</code></pre><p>原文链接：<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RyYV9UYW1tZXIvYXJ0aWNsZS9kZXRhaWxzLzEyNjI2MDQ5OQ==">https://blog.csdn.net/Dra_Tammer/article/details/126260499</span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;1.找到主题文件夹&lt;/p&gt;
&lt;p&gt;2.将要显示的头像保存在source下的images文件夹中&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>域名转出至cloudflare</title>
    <link href="https://www.kulafan.com/35ffbacd/"/>
    <id>https://www.kulafan.com/35ffbacd/</id>
    <published>2024-08-01T11:01:40.000Z</published>
    <updated>2026-07-13T11:52:27.233Z</updated>
    
    <content type="html"><![CDATA[<p>这个域名是从我2017年开始注册博客的时候就在godaddy上面买的，那个时候啥也不知道，就知道godaddy是全世界最大的域名注册商，而且价格还可以接受，那时候rmb注册和续费都是100多，如果切换成印度用卢比去计算的话只需要80多就可以了，这个是完全可以接受的价格。</p><p>但是后来慢慢涨价到120,我没有那么多精力去理这个事情，而且除godaddy之外我确实不知道还有没有其他更好的选择，120我勉强可以忍一忍。虽然那时候国内的价格普遍都是60一年</p><p><img src="/35ffbacd/xufei.jpg" alt="xufei" style="zoom: 25%;"><img src="/35ffbacd/IMG_3155.jpg" alt="IMG_3155" style="zoom:25%;"></p><p>但是今年我看到域名的续费价格已经涨到了150人民币了…这个价格真的接受不了 于是就上网找有没有更好的方法，然后发现其实不止godaddy，其实国外的很多域名注册商都已经涨价了 都是差不多100，后来看到了cloudflare其实也有域名的注册服务，而且价格好像是这些里面比较能接受的了10美元换算下来70+</p><p>而且我之前一直都是用cloudflare加速来托管域名顺便加速访问，因为之前用的是美国的域名，但是之前的主机确实不太给力，所以我才把博客托ß管到GitHub了，开始用wp，后来嫌弃空间速度慢 而且不舍得给钱就转移到blogger上，再后来因为买了香港空间所以又转移到了wp，后面就是这次转移到了github。中途也丢失过一些数据，现在开始就好好经营托管到github尽量保留数据一直写下去。</p><p><img src="/35ffbacd/transfer.jpg" alt="transfer"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;这个域名是从我2017年开始注册博客的时候就在godaddy上面买的，那个时候啥也不知道，就知道godaddy是全世界最大的域名注册商，而且价格还可以接受，那时候rmb注册和续费都是100多，如果切换成印度用卢比去计算的话只需要80多就可以了，这个是完全可以接受的价格。&lt;/p&gt;
&lt;p&gt;但是后来慢慢涨价到120,我没有那么多精力去理这个事情，而且除godaddy之外我确实不知道还有没有其他更好的选择，120我勉强可以忍一忍。虽然那时候国内的价格普遍都是60一年&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="godaddy" scheme="https://www.kulafan.com/tags/godaddy/"/>
    
    <category term="域名" scheme="https://www.kulafan.com/tags/%E5%9F%9F%E5%90%8D/"/>
    
  </entry>
  
  <entry>
    <title>Hexo侧边栏添加图标</title>
    <link href="https://www.kulafan.com/df568c0b/"/>
    <id>https://www.kulafan.com/df568c0b/</id>
    <published>2024-07-31T11:20:13.000Z</published>
    <updated>2026-07-13T11:52:27.232Z</updated>
    
    <content type="html"><![CDATA[<p>Next 自己的页面布局并不能满足要求的时候，就要自己自定义布局页面</p><p>1.新建一个工具栏的侧边栏</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new page tools</span><br></pre></td></tr></table></figure><p>1<br>2.Next 主题配置_config.yml文件menu选项增加tools的链接和icon</p><p><img src="/df568c0b/191a619403e2822a6b95f6f6a7ab60db.png" alt="在这里插入图片描述"></p><p>3.languages文件夹中增加tools文字显示</p><p><img src="/df568c0b/889f31ba31df9ae61fba71ee555c63a1.png" alt="在这里插入图片描述"></p><p>4.显示工具的图标gears。这里的图标全部取之于 Font-Awesome <span class="exturl" data-url="aHR0cHM6Ly9mb250YXdlc29tZS5kYXNoZ2FtZS5jb20v">https://fontawesome.dashgame.com</span> </p><p><img src="/df568c0b/8bf67150a1a8e5225f84534f5c9c5923.png" alt="img"></p><p>5.效果</p><p><img src="/df568c0b/18f5e46bfdf393892749b6c3e8617a2a.png" alt="在这里插入图片描述"></p><p>————————————————</p><pre><code>                        版权声明：本文为博主原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接和本声明。</code></pre><p>原文链接：<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI3MzM1MDEvYXJ0aWNsZS9kZXRhaWxzLzEwNDg5NjcyNQ==">https://blog.csdn.net/u012733501/article/details/104896725</span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Next 自己的页面布局并不能满足要求的时候，就要自己自定义布局页面&lt;/p&gt;
&lt;p&gt;1.新建一个工具栏的侧边栏&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>hexo中next主题7.8版本设置阅读全文</title>
    <link href="https://www.kulafan.com/9267574d/"/>
    <id>https://www.kulafan.com/9267574d/</id>
    <published>2024-07-31T05:26:51.000Z</published>
    <updated>2026-07-13T11:52:27.230Z</updated>
    
    <content type="html"><![CDATA[<h4 id="next主题7-8版本设置阅读全文"><a href="#next主题7-8版本设置阅读全文" class="headerlink" title="next主题7.8版本设置阅读全文"></a>next主题7.8版本设置阅读全文</h4><p><strong>问题描述：</strong>next主题7.8版本设置阅读全文，需要下载插件，然后在主题配置文件_config.yml配置就好了。</p><p><strong>解决办法：</strong></p><ul><li>在博客目录下执行</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-excerpt --save</span><br></pre></td></tr></table></figure><ul><li>在站点配置文件(不是主题的配置文件)_config.yml添加</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">excerpt:# 一定要顶格写，注意格式</span><br><span class="line">  depth: 5# 他的大小就是全文阅读预览长度设置</span><br><span class="line">  excerpt_excludes: []</span><br><span class="line">  more_excludes: []</span><br><span class="line">  hideWholePostExcerpts: true</span><br></pre></td></tr></table></figure><ul><li>在主题配置文件中_config.yml里 excerpt_description 改为true</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># Automatically excerpt description in homepage as preamble text.</span><br><span class="line"></span><br><span class="line">excerpt_description: true# 一般默认为true</span><br></pre></td></tr></table></figure><p>转载自：<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NvZGVKb2tlcl83L2FydGljbGUvZGV0YWlscy8xMjMyMzU2ODc=">https://blog.csdn.net/CodeJoker_7/article/details/123235687</span></p>]]></content>
    
    
    <summary type="html">&lt;h4 id=&quot;next主题7-8版本设置阅读全文&quot;&gt;&lt;a href=&quot;#next主题7-8版本设置阅读全文&quot; class=&quot;headerlink&quot; title=&quot;next主题7.8版本设置阅读全文&quot;&gt;&lt;/a&gt;next主题7.8版本设置阅读全文&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;问题描述：&lt;/strong&gt;next主题7.8版本设置阅读全文，需要下载插件，然后在主题配置文件_config.yml配置就好了。&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>Hexo | 给Hexo Next设置阅读全文[旧版]</title>
    <link href="https://www.kulafan.com/bb71aae1/"/>
    <id>https://www.kulafan.com/bb71aae1/</id>
    <published>2024-07-31T05:13:37.000Z</published>
    <updated>2026-07-13T11:52:27.230Z</updated>
    
    <content type="html"><![CDATA[<p>Hexo 的 Next 主题默认是首页显示你每篇文章的全文内容，但这会使你的首页篇幅过于冗长，针对这个问题我们可以这么做：</p><p>用编辑器打开themes&#x2F;next 目录下的_config.yml文件</p><p>找到代码：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">auto_excerpt:</span><br><span class="line">    <span class="built_in">enable</span>: <span class="literal">false</span></span><br><span class="line">    length: 150</span><br></pre></td></tr></table></figure><p>将enable的 false改成true，length可以设定文章预览的文本长度。</p><p>修改后重启即可。</p><p>最后编辑于 ：2020.07.27 09:50:32</p><p>©著作权归作者所有,转载或内容合作请联系作者</p><p>作者：LuckyJin<br>链接：<span class="exturl" data-url="aHR0cHM6Ly93d3cuamlhbnNodS5jb20vcC9kMzM1NTY5YTYyMzg=">https://www.jianshu.com/p/d335569a6238</span><br>来源：简书<br>著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Hexo 的 Next 主题默认是首页显示你每篇文章的全文内容，但这会使你的首页篇幅过于冗长，针对这个问题我们可以这么做：&lt;/p&gt;
&lt;p&gt;用编辑器打开themes&amp;#x2F;next 目录下的_config.yml文件&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>解决Hexo博客图片无法显示</title>
    <link href="https://www.kulafan.com/cf27d388/"/>
    <id>https://www.kulafan.com/cf27d388/</id>
    <published>2024-07-31T04:39:45.000Z</published>
    <updated>2026-07-13T11:52:27.230Z</updated>
    
    <content type="html"><![CDATA[<img src="/cf27d388/pictest_2.jpg" alt="pictest_2" style="zoom:33%;"><p>方法：</p><p>解決hexo部落格圖片無法載入問題（圖片地址重定向錯誤的問題）<br>改用以下外掛</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install https://github.com/CodeFalling/hexo-asset-image</span><br></pre></td></tr></table></figure><p>原先直接使用</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-asset-image --save</span><br></pre></td></tr></table></figure><p>在执行hexo g之后图片的相对地址会被重定向到–&gt;.com&#x2F; </p><img src="/cf27d388/IMG_3123.JPG" alt="IMG_3123" style="zoom: 50%;"><p>使用新的地址之后就能正常重定向了</p><img src="/cf27d388/chongdingxiang.jpg" alt="chongdingxiang" style="zoom: 50%;"><blockquote><p>【解决Hexo博客图片无法显示-哔哩哔哩】 <span class="exturl" data-url="aHR0cHM6Ly9iMjMudHYvMHA2VWI1dA==">https://b23.tv/0p6Ub5t</span></p></blockquote>]]></content>
    
    
    <summary type="html">&lt;img src=&quot;/cf27d388/pictest_2.jpg&quot; alt=&quot;pictest_2&quot; style=&quot;zoom:33%;&quot;&gt;

&lt;p&gt;方法：&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/hexo/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="blog" scheme="https://www.kulafan.com/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>苹果打开picgo显示损坏解决方案</title>
    <link href="https://www.kulafan.com/4f622c8d/"/>
    <id>https://www.kulafan.com/4f622c8d/</id>
    <published>2024-07-30T11:04:44.000Z</published>
    <updated>2026-07-13T11:52:27.230Z</updated>
    
    <content type="html"><![CDATA[<p>Mac(M2) 安装 picgo 问题</p><h2 id="安装方式"><a href="#安装方式" class="headerlink" title="安装方式"></a>安装方式</h2><figure class="highlight mipsasm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">brew </span><span class="keyword">install </span>picgo --cask </span><br></pre></td></tr></table></figure><p>安装版本为 2.3.1</p><h2 id="问题1-安装后打开-picgo-报错：xxx-已损坏，无法打开。-您应该将它移到废纸篓"><a href="#问题1-安装后打开-picgo-报错：xxx-已损坏，无法打开。-您应该将它移到废纸篓" class="headerlink" title="问题1: 安装后打开 picgo 报错：xxx 已损坏，无法打开。 您应该将它移到废纸篓"></a>问题1: 安装后打开 picgo 报错：xxx 已损坏，无法打开。 您应该将它移到废纸篓</h2><p>解决方法：</p><p>终端输入：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo xattr -r -d com.apple.quarantine 你的APP路径</span><br></pre></td></tr></table></figure><p>APP 路径的获取方法：</p><ul><li>打开 “访达”（Finder）进入 “应用程序” 目录，找到该软件图标，将图标拖到终端窗口，最终的命令类似 <code>sudo xattr -r -d com.apple.quarantine &#39;/Applications/PicGo.app&#39;</code></li></ul><h2 id="问题2-无法从剪贴板上传"><a href="#问题2-无法从剪贴板上传" class="headerlink" title="问题2: 无法从剪贴板上传"></a>问题2: 无法从剪贴板上传</h2><p>现象： 配置好 cos 之后，可以正常从本地推动到主窗口上传，但在剪贴板上的“等待上传” 则点击无效。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/202306272143857.png" alt="等待上传"></p><p>排查方式： 打开picgo 的日志文件， 在 “主窗口–PicGo设置–设置日志文件（点击设置） – 日志文件（点击打开）， 如果其中的报错是如下格式，可以检查一下对应目录 picgo-clipboard-images 是否存在，不存在手动创建一个</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Error: ENOENT: no such file or directory, open &#x27;/Users/coreylin/Library/Application Support/picgo/picgo-clipboard-images/202306272131465.png.3840258425&#x27;</span><br></pre></td></tr></table></figure><p>参考：<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL01vbHVuZXJmaW5uL1BpY0dvL2lzc3Vlcy8xMDM5I2lzc3VlY29tbWVudC0xMzY4MjQ0MDk5">https://github.com/Molunerfinn/PicGo/issues/1039#issuecomment-1368244099</span></p><p>转载：<span class="exturl" data-url="aHR0cHM6Ly93d3cuY25ibG9ncy5jb20vY29yZXlsaW4vcC8xNzUxMDAyMy5odG1s">https://www.cnblogs.com/coreylin/p/17510023.html</span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Mac(M2) 安装 picgo 问题&lt;/p&gt;
&lt;h2 id=&quot;安装方式&quot;&gt;&lt;a href=&quot;#安装方式&quot; class=&quot;headerlink&quot; title=&quot;安装方式&quot;&gt;&lt;/a&gt;安装方式&lt;/h2&gt;</summary>
    
    
    
    
  </entry>
  
  <entry>
    <title>用github设置picgo图床</title>
    <link href="https://www.kulafan.com/30182913/"/>
    <id>https://www.kulafan.com/30182913/</id>
    <published>2024-07-30T11:00:55.000Z</published>
    <updated>2026-07-13T11:52:27.230Z</updated>
    
    <content type="html"><![CDATA[<p>本方法来自：<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82MzgyMjQyMTE=">https://zhuanlan.zhihu.com/p/638224211</span></p><h3 id="github创建仓库"><a href="#github创建仓库" class="headerlink" title="github创建仓库"></a>github创建仓库</h3><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-00e94f6eb8a93783b898fbb8e7bfffd5_1440w.webp" alt="img"></p><p>github创建仓库管理图片</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-aeb09ef8052aa72c78b2f8df9c79e013_1440w.webp" alt="img"></p><p>github仓库创建完成</p><p><strong>如果不想使用main分支，可以新建分支</strong></p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-674ae3a13e13d17ad3284d995be795c7_1440w.png" alt="img"></p><p>github仓库切换分支</p><h3 id="github获取个人token"><a href="#github获取个人token" class="headerlink" title="github获取个人token"></a>github获取个人token</h3><p>生成一个token用于PicGo访问图床仓库。</p><blockquote><p>访问：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vZ2l0aHViLmNvbS9zZXR0aW5ncy90b2tlbnM=">https://github.com/settings/tokens</span> 然后点击<strong>Generate new token</strong>。</p></blockquote><p>注意</p><blockquote><p>这个token生成后只会显示一次！你要把这个token复制一下存到其他地方以备以后要用。</p></blockquote><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-e34d517e923c3dead0ea82c0c933b688_1440w.png" alt="img"></p><p>创建个人token</p><p><img src="https://raw.githubusercontent.com/kulafan/myPic/master/uoload/v2-1d41f4c4e844ee31a1b2881a23258755_1440w-20240730190259371.webp" alt="img"></p><p>创建个人token成功</p><h2 id="配置PicGo"><a href="#配置PicGo" class="headerlink" title="配置PicGo"></a>配置PicGo</h2><p>下载地址：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vZ2l0aHViLmNvbS9Nb2x1bmVyZmlubi9QaWNHbw==">https://github.com/Molunerfinn/PicGo</span></p><p>官方文档：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vcGljZ28uZ2l0aHViLmlvL1BpY0dvLURvYy96aC9ndWlkZQ==">https://picgo.github.io/PicGo-Doc/zh/guide</span></p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-80c35f4302e2bda387b4917473665056_1440w.webp" alt="img"></p><p>下载</p><h3 id="PicGo配置github图床"><a href="#PicGo配置github图床" class="headerlink" title="PicGo配置github图床"></a>PicGo配置github图床</h3><blockquote><p>仓库名的格式是用户名&#x2F;仓库，比如创建一个叫做cdn_img的仓库，在PicGo里要设定的仓库名就是Sbwillbealier&#x2F;cdn_img。一般选择main分支(如若选择其他分支，注意文件链接多了一级 <em>&#x2F;blob</em>)。</p></blockquote><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-783cab87ea32f34c3ec56b44f97554c6_1440w.webp" alt="img"></p><p>PicGo设置github图床选择main分支</p><p>如果需要上传到其他分支，需如下配置，此处使用了 <strong>jsdelivr</strong> 的CDN加速，使用见下一节</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-dfbe11b2e28b28e794a83b6836a228bc_1440w.png" alt="img"></p><p>PicGo设置github图床选择其他分支</p><h3 id="PicGo设置"><a href="#PicGo设置" class="headerlink" title="PicGo设置"></a>PicGo设置</h3><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-31d0058e3169fb4fd18a11e308cec2a9_1440w.webp" alt="img"></p><p>PicGo设置</p><h3 id="PicGo上传测试"><a href="#PicGo上传测试" class="headerlink" title="PicGo上传测试"></a>PicGo上传测试</h3><p><img src="https://raw.githubusercontent.com/kulafan/myPic/master/uoload/v2-9946e93bc2e43f2a8e979b0737c3027a_1440w.webp" alt="img"></p><p>PicGo上传测试</p><h3 id="PicGo相册"><a href="#PicGo相册" class="headerlink" title="PicGo相册"></a>PicGo相册</h3><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-d1021e4146566c0746eb4e94eb82709a_1440w.webp" alt="img"></p><p>PicGo相册</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;本方法来自：&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82MzgyMjQyMTE=&quot;&gt;https://zhuanlan.zhihu.com/p/638224211&lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;github创建仓库&quot;&gt;&lt;a href=&quot;#github创建仓库&quot; class=&quot;headerlink&quot; title=&quot;github创建仓库&quot;&gt;&lt;/a&gt;github创建仓库&lt;/h3&gt;</summary>
    
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
  </entry>
  
  <entry>
    <title>在github部署hexo</title>
    <link href="https://www.kulafan.com/ff05b5bf/"/>
    <id>https://www.kulafan.com/ff05b5bf/</id>
    <published>2024-07-30T10:27:52.000Z</published>
    <updated>2026-07-13T11:52:27.230Z</updated>
    
    <content type="html"><![CDATA[<p>终于搭建好了 github上面的博客，其实之前也搭建过 但是理解不了静态页面的原理。。所以没用了。</p><p>昨天真的因为被虚拟主机气死了。网络一直不稳定Wordpress的后台都进不去。。而且我的博客去年也没怎么更新，感觉买个主机有点浪费，于是就想把博客搬到GitHub吧</p><p>用的是这位大神的方法：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://zhuanlan.zhihu.com/p/688349142</span><br></pre></td></tr></table></figure><h2 id="1-前言"><a href="#1-前言" class="headerlink" title="1. 前言"></a>1. 前言</h2><h3 id="1-1-本文讲什么？"><a href="#1-1-本文讲什么？" class="headerlink" title="1.1 本文讲什么？"></a>1.1 本文讲什么？</h3><p>这篇文章讲的内容是利用GitHub Pages部署属于自己的免费的hexo博客。</p><h3 id="1-2-GitHub-Pages是什么？"><a href="#1-2-GitHub-Pages是什么？" class="headerlink" title="1.2 GitHub Pages是什么？"></a>1.2 GitHub Pages是什么？</h3><p>GitHub Pages是一个<strong>静态站点托管服务</strong>，它直接从GitHub上的存储库中获取HTML, CSS和JavaScript文件，可选地通过构建过程运行这些文件，并<strong>发布网站</strong>。</p><h3 id="1-3-Hexo-是什么？"><a href="#1-3-Hexo-是什么？" class="headerlink" title="1.3 Hexo 是什么？"></a><strong>1.3 Hexo</strong> 是什么？</h3><p>Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用Markdown（或其他标记语言）解析文章，在几秒内，即可利用靓丽的主题生成静态网页。</p><p>官网：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHA6Ly9oZXhvLmlvLw==">hexo.io</span></p><p>详细部署方式参考：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vaGV4by5pby96aC1jbi9kb2NzLyUyMyVFNSVBRSU4OSVFOCVBMyU4NS1IZXhv">文档 | Hexo</span></p><p>夜梦星尘TECH同步更新地址：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS8lRTQlQkQlQkYlRTclOTQlQThnaXRodWIlRTklODMlQTglRTclQkQlQjIlRTglQkQlQkIlRTklODclOEYlRTclQkElQTclRTUlOEQlOUElRTUlQUUlQTJoZXhvLSVFNSU4NSU4RCVFOCVCNCVCOSVFNSVCRiVBQiVFNiU4RCVCNyVFNSVCQyU4MCVFNyVBRSVCMSVFNSU4RCVCMyVFNyU5NCVBOC0lRTQlQkYlOUQlRTUlQTclODYlRTclQkElQTcv">使用GitHub部署轻量级博客HEXO | 免费快捷开箱即用 | 保姆级小白向教程</span></p><h2 id="2-准备"><a href="#2-准备" class="headerlink" title="2. 准备"></a>2. 准备</h2><h3 id="2-1-本地环境"><a href="#2-1-本地环境" class="headerlink" title="2.1 本地环境"></a>2.1 本地环境</h3><p>你需要在本地电脑上面安装：</p><ul><li>nodejs（&gt;16版本，最新的应该有20版本）：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vbm9kZWpzLm9yZy9lbg==">Node.js — Run JavaScript Everywhere</span></li><li>git（2.44.0）：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vZ2l0aHViLmNvbS9naXQtZm9yLXdpbmRvd3MvZ2l0L3JlbGVhc2VzL2Rvd25sb2FkL3YyLjQ0LjAud2luZG93cy4xL0dpdC0yLjQ0LjAtNjQtYml0LmV4ZQ==">Git - Downloads</span></li></ul><p>安装的时候无脑next即可。安装完毕以后，可以在cmd里面通过：<code>node -v</code>、<code>npm -v</code> 和 <code>git --version</code>查看安装的版本。正常情况应该有如下输出：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-3b9db6648392891ddf499c2c3e8dc2d8_1440w.webp" alt="img"></p><h3 id="2-2-准备GitHub"><a href="#2-2-准备GitHub" class="headerlink" title="2.2 准备GitHub"></a>2.2 准备GitHub</h3><p>我们在<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vZ2l0aHViLmNvbS9zaWdudXA/cmVmX2N0YT1TaWduK3VwJnJlZl9sb2M9aGVhZGVyK2xvZ2dlZCtvdXQmcmVmX3BhZ2U9LyZzb3VyY2U9aGVhZGVyLWhvbWU=">GitHub</span>上面注册一个free账号，夜梦这里以夜梦自己的邮箱（<span class="exturl" data-url="bWFpbHRvOiYjeDYxOyYjeDY0OyYjeDZkOyYjMTA1OyYjMTEwOyYjNjQ7JiN4Nzk7JiN4NjU7JiMxMDk7JiMxMDE7JiN4NmU7JiN4Njc7JiN4NzM7JiN4NzQ7JiN4NjE7JiN4NzI7JiM0NjsmI3g2MzsmIzExMTsmI3g2ZDs=">&#x61;&#x64;&#x6d;&#105;&#110;&#64;&#x79;&#x65;&#109;&#101;&#x6e;&#x67;&#x73;&#x74;&#x61;&#x72;&#46;&#x63;&#111;&#x6d;</span>）为例子演示（幸好以前没有注册过）：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-5588cbe62308c37a25ef4ae7b7572024_1440w.webp" alt="img"></p><p>密码自己设置即可，一定设置强密码。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-18dc543988bc9b85afe3b51d9d92b1ad_1440w.webp" alt="img"></p><p>用户名自己设置即可。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-7d393e7bec28b6a37d19b323e9f25c81_1440w.webp" alt="img"></p><p>后面完成验证码就可以注册成功了。去自己的邮箱接一下验证码，填写进去就可以。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-685ccfa283de8c637889f8c1d4e06abc_1440w.webp" alt="img"></p><p>按照自己的情况选择：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-6098486ea287a79e4df432ce39fb05bc_1440w.webp" alt="img"></p><p>我们选择免费free类型的账户：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-8db51e61836e13825b32ee327f31a808_1440w.webp" alt="img"></p><p>注册成功~</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-5387424ab705d77775b4816830a69516_1440w.webp" alt="img"></p><h2 id="3-本地连接GitHub"><a href="#3-本地连接GitHub" class="headerlink" title="3. 本地连接GitHub"></a>3. 本地连接GitHub</h2><h3 id="3-1-配置用户名与邮箱"><a href="#3-1-配置用户名与邮箱" class="headerlink" title="3.1 配置用户名与邮箱"></a>3.1 配置用户名与邮箱</h3><p>在某一个盘里面创建一个文件夹，名字叫hexo（好记），然后右键选择Open Git Bash Here：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-e34edf618431d73ef6da90bda1c09891_1440w.webp" alt="img"></p><p>不出意外的话应该会弹出一个命令行界面</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-f29cdc0ef334e413b882bb03e181ea2a_1440w.webp" alt="img"></p><p>我们在里面输入</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name &quot;你的 GitHub 用户名&quot;</span><br><span class="line">git config --global user.email &quot;你的 GitHub 邮箱&quot;</span><br></pre></td></tr></table></figure><h3 id="3-2-创建-SSH-密匙"><a href="#3-2-创建-SSH-密匙" class="headerlink" title="3.2 创建 SSH 密匙"></a>3.2 <strong>创建 SSH 密匙</strong></h3><p>我们在命令行窗口中输入</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;你的 GitHub 邮箱&quot;</span><br></pre></td></tr></table></figure><p>什么都不用管，一路回车就行。然后我们进入<code>C:\Users\ 用户名 \.ssh</code>目录（勾选显示 “隐藏的项目”）</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-b829b0f80d055f46032f1da61f78a036_1440w.webp" alt="img"></p><p>我们<strong>用记事本</strong>打开<code>id_rsa.pub</code>并<strong>复制里面的内容</strong>。</p><h3 id="3-3-在GitHub中添加SSH密钥"><a href="#3-3-在GitHub中添加SSH密钥" class="headerlink" title="3.3 在GitHub中添加SSH密钥"></a>3.3 在GitHub中添加SSH密钥</h3><p>这个时候我们回到GitHub，进入<strong>Settings</strong>：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-a91a4390e2600f0e835734916b7c35b7_1440w.webp" alt="img"></p><p>选择左边栏的 SSH and GPG keys，点击 New SSH key：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-abfaa421ae499f9c8b67f9c15e26c1e0_1440w.webp" alt="img"></p><p>Title随便取，然后把id_rsa.pub里面的内容到复制到Key中，点击Add SSH key：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-192eb78440d4c048f1daa22a075e5ded_1440w.webp" alt="img"></p><p>保存完毕以后，我们可以在本地验证一下连接。</p><h3 id="3-4-验证连接"><a href="#3-4-验证连接" class="headerlink" title="3.4 验证连接"></a>3.4 验证连接</h3><p>依旧在Git Bash Here界面中输入</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@github.com</span><br></pre></td></tr></table></figure><p>出现 “Are you sure……”，输入 yes 回车确认。</p><p><img src="https://raw.githubusercontent.com/kulafan/myPic/master/uoload/v2-93c98564accdd0ee2bcb8b6fd4455365_1440w.webp" alt="img"></p><p>若出现下图的提示即连接成功：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-8074dc164fc7536ada5cb9c896ace329_1440w.webp" alt="img"></p><h2 id="4-创建GitHub仓库"><a href="#4-创建GitHub仓库" class="headerlink" title="4. 创建GitHub仓库"></a>4. 创建GitHub仓库</h2><p>我们在自己GitHub的主页repository中点击右上角的New：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-b92ff35bb201aff1295fd0a93e3b4ade_1440w.webp" alt="img"></p><p>填写基本信息</p><ul><li>Repository name中输入<code>用户名.github.io</code>，一定要是这个名字！</li><li>勾选Add a README file</li></ul><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-e5739c55a1ec7d3741a7eca30aa64798_1440w.webp" alt="img"></p><p>填好后点击Create repository创建仓库。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-b10224a41a1e8a1a1a5e891f3e4a8ad8_1440w.webp" alt="img"></p><p>现在我们访问<code>https://用户名.github.io</code>（夜梦的就是yemenghexo.github.io）可以看到默认界面：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-145558a487c1a47dc729da213f208965_1440w.webp" alt="img"></p><h2 id="5-本地安装hexo"><a href="#5-本地安装hexo" class="headerlink" title="5. 本地安装hexo"></a>5. 本地安装hexo</h2><h3 id="5-1-安装hexo"><a href="#5-1-安装hexo" class="headerlink" title="5.1 安装hexo"></a>5.1 安装hexo</h3><p>我们在已经创建好的文件夹（<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS8/cD05MzE3JnByZXZpZXc9dHJ1ZSUyM2hlYWRlci1pZC05">3.1</span>）内，同样右键点击Open Git Bash Here，然后使用npm安装Hexo。在命令行中输入：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g hexo-cli</span><br></pre></td></tr></table></figure><p>由于网络问题，安装时间可能会有点久。这段时间里面界面不会有任何反应，请<strong>耐心等待</strong>，安装完成后会提示：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-b01855b71da1d964c54ba5f712bb311b_1440w.webp" alt="img"></p><p>安装成功后，可以通过</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo -version</span><br></pre></td></tr></table></figure><p>查看hexo的版本。成功安装的话看到</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-9966ba802e05b2b084452a19c251b49e_1440w.webp" alt="img"></p><h3 id="5-2-初始化hexo"><a href="#5-2-初始化hexo" class="headerlink" title="5.2 初始化hexo"></a>5.2 初始化hexo</h3><p>我们在创建好的hexo文件夹内，<strong>再</strong>新建一个文件夹用来存放hexo博客程序。比如夜梦这样</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-52b25c93b3d493255143e03cada13867_1440w.webp" alt="img"></p><p>然后在上面的命令行窗口（git）中输入：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">hexo init # 初始化hexo</span><br><span class="line">npm install # 安装组件</span><br></pre></td></tr></table></figure><p>由于网络问题，初始化的时间可能会有点久，耐心等待即可。当出现下图提示的时候，说明已经完成了</p><p><img src="https://raw.githubusercontent.com/kulafan/myPic/master/uoload/v2-097f9a3c6ff69ce5c141b57e7abbd219_1440w.webp" alt="img"></p><p>初始化完毕以后，我们可以在hexo程序文件夹中（夜梦这里是yemengblog）看到hexo程序文件。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-d1d7077a42e44d8e1a6af751927d7c73_1440w.webp" alt="img"></p><h3 id="5-3-预览效果"><a href="#5-3-预览效果" class="headerlink" title="5.3 预览效果"></a>5.3 预览效果</h3><p>上面的步骤完成后，我们输入下面命令生成页面：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo g   # 生成页面</span><br></pre></td></tr></table></figure><p>生成页面需要等待一会儿，一般一两秒就完成了。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-28068532e8b745e521e72d50c1f04500_1440w.webp" alt="img"></p><p>现在生成的是默认的hexo博客（主题），我们可以先本地访问一下看看效果。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo s   # 启动预览</span><br></pre></td></tr></table></figure><p>如果提示是否允许专用网络，直接允许就可以。然后我们访问 <code>http://localhost:4000</code>就可以访问hexo了：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-84f0080bd3d11b4dc7a3b9bc3159aab3_1440w.webp" alt="img"></p><p>如果4000端口被占用了（一般不会有这种情况），可以运行<code>hexo server -p 5000</code>更改端口号为5000（或者是其他端口）后重试。</p><h2 id="6-上传hexo程序到GitHub"><a href="#6-上传hexo程序到GitHub" class="headerlink" title="6. 上传hexo程序到GitHub"></a>6. 上传hexo程序到GitHub</h2><p>我们需要先安装<strong>hexo-deployer-git</strong>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure><p>然后修改_config.yml文件末尾的Deployment部分：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-4c005b203247f34993c308df4c8b24c7_1440w.webp" alt="img"></p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-b20815e911a4512b6e6c2dbf5f9574b6_1440w.webp" alt="img"></p><p>修改成如下（修改为你的用户名与仓库名）</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">deploy:</span><br><span class="line">  type: git</span><br><span class="line">  repo: git@github.com:yemenghexo/yemenghexo.github.io.git</span><br><span class="line">  branch: gh-pages</span><br></pre></td></tr></table></figure><p>其实就是通过SSH进行连接，SSH连接地址可以 直接在仓库<code>&lt;&gt;Code</code>里面看到：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-8366b5bd6f2c813dfc24891bcd9bfc83_1440w.webp" alt="img"></p><p><img src="https://raw.githubusercontent.com/kulafan/myPic/master/uoload/v2-80fe3295db7d564781dd0ba9770aa8ac_1440w.webp" alt="img"></p><p>修改完成保存后运行</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">hexo c</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure><p>出现下面的提示说明已经把网站上传到GitHub了：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-ca73846ba0627c389e5aa251414bd853_1440w.webp" alt="img"></p><p>然后我们需要在库设置（Repository Settings）中将默认分支设置为<code>_config.yml</code>配置中的分支名称。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-dfef7b2e3d594ea5e1065b8250c2a655_1440w.webp" alt="img"></p><p>然后在pages页面调整源分支：</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-fdc66b815548ec1688fd96cfda34562c_1440w.webp" alt="img"></p><p>不出意外的话是不会出意外的，<strong>稍等片刻</strong>我们访问<code>用户名.github.io</code>（比如夜梦这里就是<code>yemenghexo.github.io</code>）就可以看到默认hexo了。</p><p><img src="https://cdn.jsdelivr.net/gh/kulafan/myPic/upload/v2-3e36dec6a34f5ff229bbe16700d69032_1440w.webp" alt="img"></p><h2 id="7-配置主题"><a href="#7-配置主题" class="headerlink" title="7. 配置主题"></a>7. 配置主题</h2><p>配置YUN主题：</p><ul><li><span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS9oZXhvLXR1dG9yaWFsLXRoZW1lLXl1bjEtYmVnaW5uZXIv">HEXO系列教程 | 配置云游君Yun主题PART1 | 网站图标、背景图片、头像等基础配置</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS9oZXhvLXR1dG9yaWFsLXRoZW1lLXl1bjItYmVnaW5uZXIv">HEXO系列教程 | 配置云游君Yun主题PART2 | 侧边栏配置</span></li><li><span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vdGVjaC55ZW1lbmdzdGFyLmNvbS9oZXhvLXR1dG9yaWFsLXRoZW1lLXl1bjMtYmVnaW5uZXIv">HEXO系列教程 | 配置云游君Yun主题PART3 | 打赏、文章永久链接、站点页脚配置</span></li></ul><p>你也可以随时访问夜梦的HEXO博客，看看有没有什么变化：<span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8veWVtZW5naGV4by5naXRodWIuaW8v">https://yemenghexo.github.io/</span></p><h2 id="8-使用自定义域名"><a href="#8-使用自定义域名" class="headerlink" title="8. 使用自定义域名"></a>8. 使用自定义域名</h2><p>绑定自己的域名：<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82OTAwNjYxMzM=">HEXO系列教程 | 为HEXO绑定自己的域名 | 小白向教程</span></p><h2 id="9-HEXO基本使用"><a href="#9-HEXO基本使用" class="headerlink" title="9. HEXO基本使用"></a>9. HEXO基本使用</h2><p>写文章与发布：<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82ODg3MjkyOTE=">夜梦星尘：HEXO系列教程 | 发布文章 | 解决静态图片路径错误问题 | 小白向教程</span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;终于搭建好了 github上面的博客，其实之前也搭建过 但是理解不了静态页面的原理。。所以没用了。&lt;/p&gt;
&lt;p&gt;昨天真的因为被虚拟主机气死了。网络一直不稳定Wordpress的后台都进不去。。而且我的博客去年也没怎么更新，感觉买个主机有点浪费，于是就想把博客搬到GitHub吧&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="hexo" scheme="https://www.kulafan.com/tags/hexo/"/>
    
  </entry>
  
  <entry>
    <title>文明6终于治好了我的电子阳痿</title>
    <link href="https://www.kulafan.com/8b7c7d0/"/>
    <id>https://www.kulafan.com/8b7c7d0/</id>
    <published>2023-08-18T08:05:28.000Z</published>
    <updated>2026-07-13T11:52:27.228Z</updated>
    
    <content type="html"><![CDATA[<p>回想起最后一次痛快的玩游戏应该就是初三的那个暑假、那时候玩的是rust腐蚀</p><p><img src="/8b7c7d0/rust.png" alt="img"></p><p><img src="/8b7c7d0/288807964.png" alt="img"></p><p>自那以后就上高中 然后就是断断续续地进行游戏。。。。。很久都没有持续一段时间地享受游戏带来的快乐。。玩rust认识了很多网友 大脸猫 00 数字 fk yuwen 神秘人。。那时候是2013 到现在也有10年了 我弟弟现在还跟他们在一起玩 只是换了别的游戏 但是这种关系真的很神奇。不过大脸猫在2014年就没有跟我们一起玩了 据说他是为了工作没时间再一起玩了。。那时候我还是不理解为什么工作了之后就会跟游戏冲突呢。。。。工作了应该也有时间玩游戏吧。。。</p><p>直到我上了高中之后才意识到曾经的我太理想化了，而且小时候的精力好像怎么都花不完，后来的精力真的不足以支撑我一直玩游戏了。。有时间只想跟朋友唠嗑唠嗑，游戏也只是成了辅助的社交工具，那段时间唯一能够玩的就是王者荣耀了，因为不需要一大段时间去玩。</p><p>直到2023-7-24 在大爷的鼓动下买了文明6….然后一发不可收拾</p><p>第一天晚上玩得还挺顺利的。。就是延迟稍微有点高。不过也是勉强开始了游戏 第一天直接从九点打到凌晨三点。。。。</p><p>不过第二次的游戏体验就没那么好了，因为网络问题 我们三个人里面总有一个人掉线。。连续三天因为这个问题本来兴致勃勃地开始游戏 结果搞网络搞了三小时 最后游戏时间就两个小时。。。第二天又要去上班了</p><p>然后连续好几次都是 明明两个人能正常玩 但是一加入第三个人 总是很卡。。。</p><p>后面买了个网易uu。。加速 用线程模式 加速 就ok了 如果直接用路由模式的话 文明6是国区会导致无法在中国的ip下启动文明6。所以必须开启线程模式。开了网易uu之后的那两天游戏体验都还可以。。还是有一点点卡 但是也没有非常流畅。。。</p><p>其中我们还尝试了 easyN2N、乔尔文明6加速器、游侠对战平台。。</p><p>游侠的体验是最好的，毕竟是基于局域网。。但是价格太贵了。一个人20 三个人买套餐的话54一个月。。。</p><p>最后迫于无奈，在贫穷的限制下，终于找到了一个长久稳定的方法。就是修改NAT类型。。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;回想起最后一次痛快的玩游戏应该就是初三的那个暑假、那时候玩的是rust腐蚀&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/8b7c7d0/rust.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="游戏" scheme="https://www.kulafan.com/categories/%E6%B8%B8%E6%88%8F/"/>
    
    
    <category term="游戏" scheme="https://www.kulafan.com/tags/%E6%B8%B8%E6%88%8F/"/>
    
    <category term="文明6" scheme="https://www.kulafan.com/tags/%E6%96%87%E6%98%8E6/"/>
    
  </entry>
  
  <entry>
    <title>filco 67键 App键更改</title>
    <link href="https://www.kulafan.com/801f8c1c/"/>
    <id>https://www.kulafan.com/801f8c1c/</id>
    <published>2023-07-31T08:04:08.000Z</published>
    <updated>2026-07-13T11:52:27.226Z</updated>
    
    <content type="html"><![CDATA[<p>我刚下的2017Karabiner按键选项里面，keys in pc keyboard，选择application 就是app键，然后就正常替换就可以了</p><p><img src="/801f8c1c/filco-67%E9%94%AE-App%E9%94%AE%E6%9B%B4%E6%94%B9-1024x685.png" alt="img"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;我刚下的2017Karabiner按键选项里面，keys in pc keyboard，选择application 就是app键，然后就正常替换就可以了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/801f8c1c/filco-67%E9%94%AE-App%E9%94%AE%E6%9B%B4%E6%94%B9-1024x685.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="键盘" scheme="https://www.kulafan.com/tags/%E9%94%AE%E7%9B%98/"/>
    
    <category term="Mac" scheme="https://www.kulafan.com/tags/Mac/"/>
    
  </entry>
  
  <entry>
    <title>如何在mac中测试nat类型</title>
    <link href="https://www.kulafan.com/7e793c45/"/>
    <id>https://www.kulafan.com/7e793c45/</id>
    <published>2023-07-31T08:01:18.000Z</published>
    <updated>2026-07-13T11:52:27.228Z</updated>
    
    <content type="html"><![CDATA[<h2 id="测试方法"><a href="#测试方法" class="headerlink" title="测试方法"></a>测试方法</h2><p>首先用terminal安装python</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3</span><br></pre></td></tr></table></figure><p>如果返回没有安装就输入</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install python3</span><br></pre></td></tr></table></figure><p>安装python之后 安装pip</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python -m ensurepip 或 python3 -m ensurepip</span><br></pre></td></tr></table></figure><p>用pip安装pystun</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python -m pip install pystun3</span><br></pre></td></tr></table></figure><p>然后使用pystun3获取nat类型</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">python3</span><br><span class="line">import stun</span><br><span class="line">stun.get_ip_info()</span><br></pre></td></tr></table></figure><p><img src="/7e793c45/pystun.png" alt="img"></p><p>输入后过一会就返回nat类型 ip 还有端口 等待的时间比较久。</p><h2 id="关于nat类型："><a href="#关于nat类型：" class="headerlink" title="关于nat类型："></a>关于nat类型：</h2><p>NAT1：Full Cone NAT（全锥形NAT）；</p><p>NAT2：Address Restricted Cone NAT（受限锥型NAT）；</p><p>NAT3：Port Restricted Cone NAT（端口受限锥型NAT）；</p><p>NAT4：Symmetric NAT（对称型NAT）；</p><p>从nat1到nat4 限制增加 对于联机游戏而言 full cone 是最好的 nat2和nat3 也可以接受 但是nat4是受限的，可能甚至无法联机。。</p><blockquote><p>linux和windows的nat类型检测可以查看这篇文章：<span class="exturl" data-url="aHR0cHM6Ly9wb3N0LnNtemRtLmNvbS9wL2FrazVtbjByLw==">https://post.smzdm.com/p/akk5mn0r/</span></p></blockquote>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;测试方法&quot;&gt;&lt;a href=&quot;#测试方法&quot; class=&quot;headerlink&quot; title=&quot;测试方法&quot;&gt;&lt;/a&gt;测试方法&lt;/h2&gt;&lt;p&gt;首先用terminal安装python&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="mac" scheme="https://www.kulafan.com/tags/mac/"/>
    
  </entry>
  
  <entry>
    <title>一个更快捷地使用V4A的方法 ViPER4ANDROID</title>
    <link href="https://www.kulafan.com/8ba8546f/"/>
    <id>https://www.kulafan.com/8ba8546f/</id>
    <published>2022-11-24T12:05:29.000Z</published>
    <updated>2026-07-13T11:52:27.168Z</updated>
    
    <content type="html"><![CDATA[<p><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==">![image host](.&#x2F;2018-1-18一个更快捷地使用V4A的方法 ViPER4ANDROID&#x2F;8oqHQxB8_o.png)</span></p><p>請準備<br>1.一台ROOT過的手機<br>2.下載 <span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==">V4A</span> <span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==">蝰蛇音效驱动挂载器</span> 各種音效文件<span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw=="></span>3.一個腦子</p><p>首先安裝 任意版本的V4A(ViPER4ANDROID)</p><p><strong>1.打開掛載器裏 進 “選項”</strong><br><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==">![image host](.&#x2F;2018-1-18一个更快捷地使用V4A的方法 ViPER4ANDROID&#x2F;0u7KTKUN_o.png)</span></p><p>勾好之後反回第一屏</p><p><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==">![image host](.&#x2F;2018-1-18一个更快捷地使用V4A的方法 ViPER4ANDROID&#x2F;FtDt1tSm_o.png)</span><br>如果顯示這個就說明好了。</p><p><strong>2.進V4A</strong></p><p>左上角，驅動信息，如果顯示下面這樣就說明掛載成功了</p><p><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==">![image host](.&#x2F;2018-1-18一个更快捷地使用V4A的方法 ViPER4ANDROID&#x2F;7UIpSMq6_o.png)</span></p><p><strong>3.去百度或者個種論壇找 “音效文件(.prf後綴)” 和 “脈衝文件(.irs)”</strong> </p><p>音效放到路徑 “:\ViPERAndriod\Profile\”裏</p><p>脈衝文件放到”:\ViPERAndriod\Kernel\”</p><p>在軟件右上角，加載音效(加載完之後不要忘了開啟)</p><p><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==">![image host](.&#x2F;2018-1-18一个更快捷地使用V4A的方法 ViPER4ANDROID&#x2F;WnDMz2VP_o.png)</span></p><p>脈衝文件同理</p><p>以上</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==&quot;&gt;![image host](.&amp;#x2F;2018-1-18一个更快捷地使用V4A的方法 ViPER4ANDROID&amp;#x2F;8oqHQxB8_o.png)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;請準備&lt;br&gt;1.一台ROOT過的手機&lt;br&gt;2.下載 &lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==&quot;&gt;V4A&lt;/span&gt; &lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==&quot;&gt;蝰蛇音效驱动挂载器&lt;/span&gt; 各種音效文件&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84MDM2MjM0NDM2ODcyOTQ5MTQ2Iw==&quot;&gt;
&lt;/span&gt;3.一個腦子&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="手机" scheme="https://www.kulafan.com/tags/%E6%89%8B%E6%9C%BA/"/>
    
    <category term="音频" scheme="https://www.kulafan.com/tags/%E9%9F%B3%E9%A2%91/"/>
    
  </entry>
  
  <entry>
    <title>或许再也回不去的生活</title>
    <link href="https://www.kulafan.com/6d0da52d/"/>
    <id>https://www.kulafan.com/6d0da52d/</id>
    <published>2022-11-24T12:05:29.000Z</published>
    <updated>2026-07-13T11:52:27.193Z</updated>
    
    <content type="html"><![CDATA[<p><a href="https://www.blogger.com/blog/post/edit/2972384503992174876/5311133356829383293#"><img src="/6d0da52d/1669225602515795-0.png" alt="img"></a></p><p>之前好像也没意识到 原来下午的时间是这么宝贵的。虽然之前也享受过惬意的午后 但是我享受的是这段时间的流逝…</p><p><a href="https://www.blogger.com/blog/post/edit/2972384503992174876/5311133356829383293#"><img src="/6d0da52d/1669225594429624-1.png" alt="img"></a></p><p><a href="https://www.blogger.com/blog/post/edit/2972384503992174876/5311133356829383293#"><img src="/6d0da52d/1669225587862929-2.png" alt="img"></a></p><p><a href="https://www.blogger.com/blog/post/edit/2972384503992174876/5311133356829383293#"><img src="/6d0da52d/1669225580098484-3.png" alt="img"></a></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;a href=&quot;https://www.blogger.com/blog/post/edit/2972384503992174876/5311133356829383293#&quot;&gt;&lt;img src=&quot;/6d0da52d/1669225602515795-0.png&quot; alt=&quot;img&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;之前好像也没意识到 原来下午的时间是这么宝贵的。虽然之前也享受过惬意的午后 但是我享受的是这段时间的流逝…&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="记录" scheme="https://www.kulafan.com/tags/%E8%AE%B0%E5%BD%95/"/>
    
  </entry>
  
  <entry>
    <title>2021-4-11内存卡事故</title>
    <link href="https://www.kulafan.com/c28f5e86/"/>
    <id>https://www.kulafan.com/c28f5e86/</id>
    <published>2021-04-11T03:44:08.000Z</published>
    <updated>2026-07-13T11:52:27.193Z</updated>
    
    <content type="html"><![CDATA[<p>内存卡事故、住酒店遇到了不干净的东西,水逆开始……<br>Scroll<br>年后第一单接亲单。。</p><p>为了不打断叙事，先说一下内存卡。另外一个摄影师拍完之后把他的内存卡给了我，双机位，我负责剪辑。回到酒店，我原本的习惯是睡到第二天再起来开始剪，但是从进入酒店房间那一刻起，就觉得浑身不对劲…我决定不睡了,还是把片子剪完先。</p><p>然后我发现。。。那个摄影师的内存卡我读不出来。。重新插拔了好几次，还是不行，插在相机上显示没有媒体文件….直觉告诉我是内存卡的lock卡扣坏掉了。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;内存卡事故、住酒店遇到了不干净的东西,水逆开始……&lt;br&gt;Scroll&lt;br&gt;年后第一单接亲单。。&lt;/p&gt;
&lt;p&gt;为了不打断叙事，先说一下内存卡。另外一个摄影师拍完之后把他的内存卡给了我，双机位，我负责剪辑。回到酒店，我原本的习惯是睡到第二天再起来开始剪，但是从进入酒店房间那一刻起，就觉得浑身不对劲…我决定不睡了,还是把片子剪完先。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="记录" scheme="https://www.kulafan.com/tags/%E8%AE%B0%E5%BD%95/"/>
    
  </entry>
  
  <entry>
    <title>后疫情时代下的NG</title>
    <link href="https://www.kulafan.com/4a8ca038/"/>
    <id>https://www.kulafan.com/4a8ca038/</id>
    <published>2020-04-25T17:48:56.000Z</published>
    <updated>2026-07-13T11:52:27.193Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/4a8ca038/640.png" alt="图片"></p><p>我不否认我是个杠精</p><p>清明假期后就经历了太多破事，想记录下来又不知道从何说起，又无意中看到一篇周记，就想跟风写写周记，可是一匹布那么长。</p><p><strong>#后疫情时期NG第一次聚会</strong></p><p><strong>清明假期</strong></p><p>2020.4.4</p><p>疫情稍微好转之后的第一次聚会，出乎意料的齐人。久违地打了一次篮球，然后又匆匆忙忙走了。人多的聚会到最后必定是各回各家，最后只留下我们几个人在2101夜谈。可能就不应该开这个头，这样也就没有后面的事情。一直聊到四点才舍得睡。</p><p>五点多 外面的闪电透过窗帘照进窗户，整个房间都被打亮了，Con醒了，刚刚的光好像宿管拿手电筒查房，条件反射就醒了。我过去拉窗帘，外面全是雾气。</p><p>走之前喝了个早茶，然后无可奈何地回家了。</p><p><img src="/4a8ca038/2.png" alt="图片"></p><p><strong>#后疫情时期NG第二次聚会</strong></p><p>**2101厨房全面升级</p><p>**</p><p>2020.4.18</p><p><img src="/4a8ca038/hotpot.png" alt="图片"></p><p><img src="/4a8ca038/hotpot2.png" alt="图片"></p><p>CON买了一口空气炸锅，我买了一口煎炸蒸煮都可以用的电锅，于是2101迎来了一次厨房的大升级。集合前我们再三确认，CON又说：“全部菜都带起了。”我们也没多问，就出发了。</p><p>到了之后，CON只拿出了鸡柳 鸡扒 鸡米花？原来CON说的菜是下酒菜。。我们群里的意图是想做正菜啊，只能去超市买了。其实我挺喜欢逛超市的（反正能走路的都挺喜欢的）</p><p>我、con、foafa去买菜了，剩下几条佬在2101打麻将和三国杀，等我们买完回来他们已经把炸好的鸡米花鸡排都吃完了？？还把我买的可乐喝剩1&#x2F;3？</p><p>妈的一群死佬，吃个饭还拍拍拍，都饿死了还要拍，拍个啥？？？我雕的两个菇又不给个CLOSESHOT🤮</p><p>接下来的谈话，填充了很多由于在必要情况下不在场而造成的记忆缺席。</p><p>CON在1月份买的煮酒器终于发挥了装饰性作用，煮酒论英雄总算达成了。</p><p><strong>#3</strong></p><p>**<em>*只有我们仨*</em></p><p>**</p><p>2020.4.25</p><p><img src="/4a8ca038/poker.png" alt="图片"></p><p>今天早上刚刚到的BEE..</p><p>想出来聚一聚真的不是为了玩什么，就是为了聚一聚而已。</p><p>把早茶、刷锅水（咖啡）、啤酒、冰水 古今中外的饮料都喝了一遍</p><p>把骰子、麻将、斗地主、SHOWHAND、德州扑克，也玩了一遍</p><p>BEE的手感真的好，玩了一遍之后就回不去了。</p><p>走之前还是一如既往想找借口多增加一两项活动，不过实在是没办法了。。</p><p>可能其他NGer生活太充实了，但少闲人如吾两人者耳。</p><p><em><strong>*#没了吧*</strong></em></p><p><img src="/4a8ca038/end.png" alt="图片"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/4a8ca038/640.png&quot; alt=&quot;图片&quot;&gt;&lt;/p&gt;
&lt;p&gt;我不否认我是个杠精&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="记录" scheme="https://www.kulafan.com/tags/%E8%AE%B0%E5%BD%95/"/>
    
  </entry>
  
  <entry>
    <title>screen命令用法</title>
    <link href="https://www.kulafan.com/1861ca79/"/>
    <id>https://www.kulafan.com/1861ca79/</id>
    <published>2019-12-20T12:05:29.000Z</published>
    <updated>2026-07-13T11:52:27.192Z</updated>
    
    <content type="html"><![CDATA[<h1 id="转载-screen命令用法"><a href="#转载-screen命令用法" class="headerlink" title="转载 screen命令用法"></a>转载 screen命令用法</h1><p>Scroll</p><p><strong>GNU Screen</strong>是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话，并在其间自由切换。</p><p>GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。</p><ul><li><p><strong>会话恢复</strong></p></li><li><p><strong>多窗口</strong></p></li><li><p><strong>会话共享</strong></p></li></ul><p>GNU’s Screen 官方站点：<span class="exturl" data-url="aHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjIwNTI1MTAzOTE2L2h0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLw==">http://www.gnu.org/software/screen/</span></p><h3 id="三、语法"><a href="#三、语法" class="headerlink" title="三、语法"></a><strong>三、语法</strong></h3><p># screen [-AmRvx -ls -wipe][-d &lt;作业名称&gt;][-h &lt;行数&gt;][-r &lt;作业名称&gt;][-s ][-S &lt;作业名称&gt;]</p><p><strong>参数说明</strong></p><p>-A 　将所有的视窗都调整为目前终端机的大小。<br>-d &lt;作业名称&gt; 　将指定的screen作业离线。<br>-h &lt;行数&gt; 　指定视窗的缓冲区行数。<br>-m 　即使目前已在作业中的screen作业，仍强制建立新的screen作业。<br>-r &lt;作业名称&gt; 　恢复离线的screen作业。<br>-R 　先试图恢复离线的作业。若找不到离线的作业，即建立新的screen作业。<br>-s 　指定建立新视窗时，所要执行的shell。<br>-S &lt;作业名称&gt; 　指定screen作业的名称。<br>-v 　显示版本信息。<br>-x 　恢复之前离线的screen作业。<br>-ls或–list 　显示目前所有的screen作业。<br>-wipe 　检查目前所有的screen作业，并删除已经无法使用的screen作业。</p><h3 id="四、常用screen参数"><a href="#四、常用screen参数" class="headerlink" title="四、常用screen参数"></a><strong>四、常用screen参数</strong></h3><p>screen -S yourname -&gt; 新建一个叫yourname的session<br>screen -ls（或者screen -list） -&gt; 列出当前所有的session<br>screen -r yourname -&gt; 回到yourname这个session<br>screen -d yourname -&gt; 远程detach某个session<br>screen -d -r yourname -&gt; 结束当前session并回到yourname这个session</p><p><strong>在每个screen session 下，所有命令都以 ctrl+a(C-a) 开始。</strong><br>C-a ? -&gt; 显示所有键绑定信息<br>C-a c -&gt; 创建一个新的运行shell的窗口并切换到该窗口<br>C-a n -&gt; Next，切换到下一个 window<br>C-a p -&gt; Previous，切换到前一个 window<br>C-a 0..9 -&gt; 切换到第 0..9 个 window<br>Ctrl+a [Space] -&gt; 由视窗0循序切换到视窗9<br>C-a C-a -&gt; 在两个最近使用的 window 间切换<br>C-a x -&gt; 锁住当前的 window，需用用户密码解锁<br>C-a d -&gt; detach，暂时离开当前session，将目前的 screen session (可能含有多个 windows) 丢到后台执行，并会回到还没进 screen 时的状态，此时在 screen session 里，每个 window 内运行的 process (无论是前台&#x2F;后台)都在继续执行，即使 logout 也不影响。<br>C-a z -&gt; 把当前session放到后台执行，用 shell 的 fg 命令则可回去。<br>C-a w -&gt; 显示所有窗口列表<br>C-a t -&gt; Time，显示当前时间，和系统的 load<br>C-a k -&gt; kill window，强行关闭当前的 window<br>C-a [ -&gt; 进入 copy mode，在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样<br>C-b Backward，PageUp<br>C-f Forward，PageDown<br>H(大写) High，将光标移至左上角<br>L Low，将光标移至左下角<br>0 移到行首<br>$ 行末<br>w forward one word，以字为单位往前移<br>b backward one word，以字为单位往后移<br>Space 第一次按为标记区起点，第二次按为终点<br>Esc 结束 copy mode<br>C-a ] -&gt; Paste，把刚刚在 copy mode 选定的内容贴上</p><h3 id="五、使用-screen"><a href="#五、使用-screen" class="headerlink" title="五、使用 screen"></a><strong>五、使用 screen</strong></h3><p><strong>5.1 安装screen</strong></p><p>流行的Linux发行版（例如Red Hat Enterprise Linux）通常会自带screen实用程序，如果没有的话，可以从GNU screen的官方网站下载。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# yum install screen</span><br><span class="line">[[email protected] ~]# rpm -qa|grep screen</span><br><span class="line">screen-4.0.3-4.el5</span><br><span class="line">[[email protected] ~]#</span><br></pre></td></tr></table></figure><p><strong>5.2 创建一个新的窗口</strong></p><p>安装完成后，直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字，实践上推荐为每个screen会话取一个名字，方便分辨：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# screen -S david</span><br></pre></td></tr></table></figure><p>screen启动后，会创建第一个窗口，也就是窗口No. 0，并在其中打开一个系统默认的shell，一般都会是bash。所以你敲入命令screen之后，会立刻又返回到命令提示符，仿佛什么也没有发生似的，其实你已经进入Screen的世界了。当然，也可以在screen命令之后加入你喜欢的参数，使之直接打开你指定的程序，例如：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# screen vi david.txt</span><br></pre></td></tr></table></figure><p>screen创建一个执行vi david.txt的单窗口会话，退出vi 将退出该窗口&#x2F;会话。</p><p>查看自己的会话，可以使用命令：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">screen -ls  # or: screen -list</span><br></pre></td></tr></table></figure><p>显示如下：</p><p><img src="/1861ca79/29144759-7cea9fc3f5f4481ab21df8bd017c88ef.png" alt="img"></p><p>其中：12865是ID，即进程的ID，如果为session命名的话，紧跟ID后’.’的后面应该是session的名字，以后连接可以使用ID或者自己命名的名字。</p><p><strong>5.3 查看窗口和窗口名称</strong></p><p>打开多个窗口后，可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端，这个列表会列在屏幕左下角，如果使用X环境下的终端模拟器，这个列表会列在标题栏里。窗口列表的样子一般是这样：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">0$ bash  1-$ bash  2*$ bash</span><br></pre></td></tr></table></figure><p>这个例子中我开启了三个窗口，其中*号表示当前位于窗口2，-号表示上一次切换窗口时位于窗口1。</p><p>Screen默认会为窗口命名为编号和窗口中运行程序名的组合，上面的例子中窗口都是默认名字。练习了上面查看窗口的方法，你可能就希望各个窗口可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名，按下快捷键后，Screen会允许你为当前窗口输入新的名字，回车确认。</p><p><strong>5.4 会话分离与恢复</strong></p><p>你可以不中断screen窗口中程序的运行而暂时断开（detach）screen会话，并在随后时间重新连接（attach）该会话，重新控制各窗口中运行的程序。例如，我们打开一个screen窗口编辑&#x2F;tmp&#x2F;david.txt文件：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# screen vi /tmp/david.txt</span><br></pre></td></tr></table></figure><p>之后我们想暂时退出做点别的事情，比如出去散散步，那么在screen窗口键入<code>C-a d</code>，Screen会给出detached提示：</p><p>或者使用</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">screen -d  &lt;session ID 或者 名字&gt;</span><br></pre></td></tr></table></figure><p>如果本地用的Shell出现“卡顿”，自己关闭了这个窗口，但是重新连接时，发现状态为“Attached”，不能连接。这时，你也可以使用上面的命令，先中断会话，再重新连接。</p><p><strong>暂时中断会话</strong></p><p><img src="/1861ca79/29144351-ff7e78c079a44f51ae44d48b6942b87f.png" alt="img"></p><p>半个小时之后回来了，找到该screen会话：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# screen -ls</span><br></pre></td></tr></table></figure><p><img src="https://web.archive.org/web/20220525103916im_/https://images0.cnblogs.com/blog/370046/201301/29144759-7cea9fc3f5f4481ab21df8bd017c88ef.jpg" alt="img"></p><p>重新连接会话：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# screen -r 12865</span><br></pre></td></tr></table></figure><p>一切都在。</p><p>当然，如果你在另一台机器上没有分离一个Screen会话，就无从恢复会话了。</p><p>这时可以使用下面命令强制将这个会话从它所在的终端分离，转移到新的终端上来：</p><p><img src="/1861ca79/29215655-6d2f0c7e7f294756a4b40a40e1e76a84.png" alt="img"></p><p><strong>5.5 清除dead 会话</strong></p><p>如果由于某种原因其中一个会话死掉了（例如人为杀掉该会话），这时screen -list会显示该会话为dead状态。使用<strong>screen -wipe命令清除该会话</strong>：</p><p><img src="/1861ca79/29154746-51185199905542c68d3c3b46dddef648.png" alt="img"></p><p><strong>5.6 关闭或杀死窗口</strong></p><p>正常情况下，当你退出一个窗口中最后一个程序（通常是bash）后，这个窗口就关闭了。另一个关闭窗口的方法是使用C-a k，这个快捷键杀死当前的窗口，同时也将杀死这个窗口中正在运行的进程。</p><p>如果一个Screen会话中最后一个窗口被关闭了，那么整个Screen会话也就退出了，screen进程会被终止。</p><p>除了依次退出&#x2F;杀死当前Screen会话中所有窗口这种方法之外，还可以使用快捷键C-a :，然后输入quit命令退出Screen会话。需要注意的是，这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多，包括分屏可以输入split等，这也是实现Screen功能的一个途径，不过个人认为还是快捷键比较方便些。</p><h3 id="六、screen-高级应用"><a href="#六、screen-高级应用" class="headerlink" title="六、screen 高级应用"></a><strong>六、screen 高级应用</strong></h3><p><strong>6.1 会话共享</strong></p><p>还有一种比较好玩的会话恢复，可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器，然后你创建一个screen会话，你朋友可以在他的终端上命令：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# screen -x</span><br></pre></td></tr></table></figure><p>这个命令会将你朋友的终端Attach到你的Screen会话上，并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了，如果你们当前又处于同一个窗口，那就相当于坐在同一个显示器前面，你的操作会同步演示给你朋友，你朋友的操作也会同步演示给你。当然，如果你们切换到这个会话的不同窗口中去，那还是可以分别进行不同的操作的。</p><p><strong>6.2 会话锁定与解锁</strong></p><p>Screen允许使用快捷键C-a s锁定会话。锁定以后，再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应，但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。</p><p>也可以使用C-a x锁定会话，不同的是这样锁定之后，会话会被Screen所属用户的密码保护，需要输入密码才能继续访问这个会话。</p><p><strong>6.3 发送命令到screen会话</strong></p><p>在Screen会话之外，可以通过screen命令操作一个Screen会话，这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围，这里只看一个例子，体会一下在会话之外对Screen的操作：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[email protected] ~]# screen -S sandy -X screen ping www.baidu.com</span><br></pre></td></tr></table></figure><p>这个命令在一个叫做sandy的screen会话中创建一个新窗口，并在其中运行ping命令。</p><p><strong>6.4 屏幕分割</strong></p><p>现在显示器那么大，将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割，Screen 4.00.03版本以后，也支持垂直分屏，快捷键是C-a |。分屏以后，可以使用C-a <tab>在各个区块间切换，每一区块上都可以创建窗口并在其中运行进程。</tab></p><p>可以用C-a X快捷键关闭当前焦点所在的屏幕区块，也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭，还可以通过窗口切换找到它。</p><p><img src="https://web.archive.org/web/20220525103916im_/https://images0.cnblogs.com/blog/370046/201301/29205553-38cdde403beb45f4814ca9a180987a9e.jpg" alt="img"></p><p><strong>6.5 C&#x2F;P模式和操作</strong></p><p>screen的另一个很强大的功能就是可以在不同窗口之间进行复制粘贴了。使用快捷键C-a <Esc>或者C-a [可以进入copy&#x2F;paste模式，这个模式下可以像在vi中一样移动光标，并可以使用空格键设置标记。其实在这个模式下有很多类似vi的操作，譬如使用&#x2F;进行搜索，使用y快速标记一行，使用w快速标记一个单词等。关于C&#x2F;P模式下的高级操作，其文档的这一部分有比较详细的说明。</Esc></p><p>一般情况下，可以移动光标到指定位置，按下空格设置一个开头标记，然后移动光标到结尾位置，按下空格设置第二个标记，同时会将两个标记之间的部分储存在copy&#x2F;paste buffer中，并退出copy&#x2F;paste模式。在正常模式下，可以使用快捷键C-a ]将储存在buffer中的内容粘贴到当前窗口。</p><p><img src="/1861ca79/29210355-9026652834d446d2bbafa18fd7bca276.png" alt="img"></p><p><strong>6.6 更多screen功能</strong></p><p>同大多数UNIX程序一样，GNU Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件&#x2F;etc&#x2F;screenrc和$HOME&#x2F;.screenrc中指定更多，例如设定screen选项，定制绑定键，设定screen会话自启动窗口，启用多用户模式，定制用户访问权限控制等等。如果你愿意的话，也可以自己指定screen配置文件。</p><p>以多用户功能为例，screen默认是以单用户模式运行的，你需要在配置文件中指定multiuser on 来打开多用户模式，通过acl*（acladd,acldel,aclchg…）命令，你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。</p>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;转载-screen命令用法&quot;&gt;&lt;a href=&quot;#转载-screen命令用法&quot; class=&quot;headerlink&quot; title=&quot;转载 screen命令用法&quot;&gt;&lt;/a&gt;转载 screen命令用法&lt;/h1&gt;&lt;p&gt;Scroll&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
  </entry>
  
  <entry>
    <title>下载任意网站的媒体素材</title>
    <link href="https://www.kulafan.com/6974e756/"/>
    <id>https://www.kulafan.com/6974e756/</id>
    <published>2019-10-30T13:15:29.000Z</published>
    <updated>2026-07-13T11:52:27.173Z</updated>
    
    <content type="html"><![CDATA[<p>这个方法可以下载任意媒体文件,视频音频都可以</p><p>1.下载chrome浏览器</p><ol start="2"><li>打开网址按 “F12”打开console,</li></ol><p><img src="/6974e756/81eqzVtI_o.png" alt="81eqzvti o"></p><p>或者 “右键”-“检查”</p><p><img src="/6974e756/i5wew9F1_o.png" alt="I5wew9f1 o"></p><p>3.在console上打开 network 一栏</p><p><img src="/6974e756/62HGjFvr_o.png" alt="62hgjfvr o"></p><p>有的网页可以通过media过滤,但是网易云不支持,所以只能在“all”一栏找.</p><p><img src="/6974e756/LJTfbZZM_o.png" alt="Ljtfbzzm o"></p><p>4.播放你要获取的媒体</p><p><img src="/6974e756/ucRyW7ES_o.png" alt="Ucryw7es o"></p><p>5.在下面找到媒体文件的后缀</p><p>音乐一般为mp3 aac m4a…….</p><p>视频一般为mp4. Flv …..</p><p>每个网站的格式都不同,靠自己发现</p><p><img src="/6974e756/ufYkspDw_o.png" alt="Ufykspdw o"></p><p>网易云音乐的格式为m4a</p><p>6.右键 copy - copy link </p><p>复制好链接之后可以到下载软件 粘贴 下载</p><p><img src="/6974e756/myWH9zYt_o.png" alt="Mywh9zyt o"></p><p>或者可以在新窗口打开 </p><p><img src="/6974e756/tPqRKhXY_o.png" alt="Tpqrkhxy o"></p><p><img src="/6974e756/anl3zwnT_o.png" alt="Anl3zwnt o"></p><p>在浏览器打开这个文件试听,确认了之后按三个点通过chrome进行下载</p><p>-——————————————–</p><p>可能遇到的问题</p><p>1.播放之后没有文件,按WIN&#x2F;Command+R刷新页面</p><p>2.blob的视频用这个方法不能下载,需要用更复杂的方法.<br>3.这个方法下载到qq 网易等国内播放器的音频只有128k,想听音质的找其他方法,这个只是扒素材用的而已.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;这个方法可以下载任意媒体文件,视频音频都可以&lt;/p&gt;
&lt;p&gt;1.下载chrome浏览器&lt;/p&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="手机" scheme="https://www.kulafan.com/tags/%E6%89%8B%E6%9C%BA/"/>
    
  </entry>
  
  <entry>
    <title>我的客户2</title>
    <link href="https://www.kulafan.com/25a60cef/"/>
    <id>https://www.kulafan.com/25a60cef/</id>
    <published>2019-08-23T07:25:49.000Z</published>
    <updated>2026-07-13T11:52:27.173Z</updated>
    
    <content type="html"><![CDATA[<p><strong>树多必有枯枝</strong></p><p><strong>人多必有白痴</strong></p><p>有些甲方就像一朵十分罕见又娇艳夺目的奇葩,我的花园里栽满了花,散布在大大小小的花坛.而这一朵朵奇葩的存在,让我的日子充满了挑战….</p><p>原本的名字太粗暴,所以改成Kulafan’s Garden.我自己喜欢就好了</p><p><img src="/25a60cef/640.png" alt="图片"></p><p><em>2019&#x2F;8&#x2F;11</em></p><p>这一单的客户,不断地挑战我的极限.</p><p>拍摄内容是8.11 早上6:00到新郎家拍.然后去接新娘,再去午宴.原定8.11上午<strong>4:00AM</strong>从**道滘出发到惠州.**但是甲方担心时间不够所以在8:10号晚上安排我们去惠州的酒店.我们到达酒店已经23:00了</p><p>但是酒店距离新郎家有13公里,半小时车程.,惠州这个穷乡僻壤,打车非常不方便,(瞬间觉得东莞太好了).只能和张生(甲方)沟通,让他早上五点派车过来接我,保证我6:00能到新郎家开始拍摄.</p><p>这个张生脾气非常暴躁,直接开喷:“明天这么忙,我哪有那么多时间,明天五点钟没有人能去接你,今晚我在附近找个地方给你住,明天五点四十打电话给我,我去接你.”我除了接受还有什么办法?耽误拍摄的话我要负责的.</p><p>所以他一点钟就来酒店把我接去他家附近的地方住.</p><p><img src="/25a60cef/2.png" alt="图片"></p><p>¥68</p><p>仅售¥50&#x2F;晚</p><p>张生对房东说:“68这么贵?他住到五点就走了,都呆不了多久”(那时候2:00)</p><p>其实环境我还能忍,忍不了的是空调不凉…吹出来的都是热风,除了噪音大以外,完全感受不到空调的存在.所以我就从两点玩手机到天亮.</p><p>给我的房间是401,走廊最角落,晚上能听到有哭声,我五点钟走人的时候,在楼梯口听到女人的哭声,非常明显,但是不敢作死,就当作没听到走开了.</p><p>너무너무remarkable的经历</p><p>感觉人生又解锁了一个成就</p><p>毕竟一般人 对待摄影师都十分尊重</p><p>怕你休息不好、怕你口渴、没吃饱影响拍摄的发挥</p><p>但是这家人真的是婚庆市场客户中的一朵奇葩.</p><p>这些事情我都可以不跟你计较,毕竟从ssl出来的,多热的房间没睡过?而且我本身接触灵异事件比较多,对这些东西也不是多害怕.我不怕鬼,但是我怕穷.</p><p>这家人从头到尾一封红包都没给我们拍摄团队.</p><p>一般的接亲流程里,给伴郎发完红包之后,是要给摄影团队的,毕竟讨好摄影师,才能拍好啊.</p><p>第一次没有给到,可能他们忘了?所以我第一次提示:“伴郎们,想快点接到新娘的话,我教你们一个方法,你们给摄影师一个大红包贿赂一下,让摄影师给你们通水,就能快点接到了.”貌似没有啥效果.</p><p>第二次,有小孩讨红包,叫他舅舅,他就给了.这时候我们拍摄团队再次行动,把摄像机怼在他面前,在红包面前晃来晃去,他还是不会做人..</p><p>总共提示了七八次吧.到最后我们一分钱的红包都没讨到,应该是故意不给我们的.既然这次结婚没给,那我只好祝他下次结婚的时候记得给了.</p><p>总感觉新郎很不愿意结婚,虽然新郎长得一般般,但是新娘更加一般般.新郎全程板着脸,一点笑容也没有.一般来讲,一对新人在一起,肯定会又激动又兴奋,忍不住地偷笑.但是我完全感觉不到.</p><p>拍午宴地时候啊,甲方连饭也没给我们吃,2:00我们走之前出于礼貌跟他说:“你好,这边地拍摄差不多结束了”</p><p>他说:“<strong>这样啊,那你们走吧走吧走吧”</strong>…..</p><p>正常人不应该关心我们吃了没有?</p><p>到最后还是要按照正常的流程剪片 出片 还要忍气吞声</p><p><img src="/25a60cef/4.png" alt="图片"></p><p>你给尾款 跟你在哪里有关系吗????信息时代了啊</p><p>他最后还扣了1000块钱,<strong>原因:对拍摄团队不满意</strong></p><p>张生原话:“**你要还是不要??**明天早上,要是没搞定一切,直接摊牌”</p><p>我们有什么办法?????</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;strong&gt;树多必有枯枝&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;人多必有白痴&lt;/strong&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="我的客户" scheme="https://www.kulafan.com/tags/%E6%88%91%E7%9A%84%E5%AE%A2%E6%88%B7/"/>
    
  </entry>
  
  <entry>
    <title>我的客户1</title>
    <link href="https://www.kulafan.com/bcaf5d55/"/>
    <id>https://www.kulafan.com/bcaf5d55/</id>
    <published>2019-08-22T07:20:06.000Z</published>
    <updated>2026-07-13T11:52:27.172Z</updated>
    
    <content type="html"><![CDATA[<p>先说说我做的是啥,外行人口中的摄影师.但很可惜,并不是电影或者电视剧里那种拿着相机记录美好生活的摄影师,也没有渠道在国家地理杂志、报社里批判现实.甚至只能偷偷摸摸地开一个公众号,在一个没有加任何客户的小号里发泄自己的情绪.</p><p><img src="/bcaf5d55/640.png" alt="图片"></p><p>以前在学校,学习上、社团里 遇到不爽的 直接骂.</p><p>啥也不懂、啥也不会、啥也做不好,该不该骂?</p><p>哪用计较什么后果?大不了不干了,反正我走了肯定天下大乱.</p><p>现在呢?为了搞点💰..容易吗???</p><p>客户也是..啥也不明白,凭什么指挥我做事?</p><p>这个客户说来话长,但是我打算从今天开始讲起,之前的罪行慢慢补充.</p><p>2019-8-22</p><p>   拍摄东莞某私立教育机构的军训开营仪式,酬劳就那么几百.甲方不是这家私立教育机构,而是“向日葵教育”的一个人.拍摄要求是拍教官、拍领导、拍学生.表面上也没多过分.过分的是我去到拍摄现场之后</p><p>   我去到了东华的5号门,..不小心说出来了,算了懒得改.门卫说一定要里面的人领我进去.我就打电话给他了.他直接说:“你看到篮球场没有?你进去之后直接往前走就能看到xxxxx”讲的很快很不清楚,我还没反应过来,那边就把电话给挂了.</p><p>我跟门卫说,门卫坚持要人领进去,我只能再打电话,让门卫跟他沟通,在门卫的交涉之下他终于肯出来带我进去了(感谢东华的门卫大哥)</p><p>   然后,活动开始之前,</p><p>她跟我说:“活动开始之后你拍个精彩点的小视频给我,我发朋友圈做宣传”</p><p>拜托啊大姐,说好来拍照的,现在突然间叫我帮你拍视频?</p><p>我肯定不愿意啊</p><p>我就说:“不用拍很好,你拿手机拍个十秒给我就行了”</p><p>既然这样我也没办法了,拍片佬说到底也是服务业,尽量满足客户的需求</p><p>   一个活动拍照的话,一般只会负责拍照,很少情况会一边拍照一边拍视频,自己有玩过相机的都知道,拍照片和拍视频两个用的档都不一样,而且活动重要的是抓拍,干活要求是给照片,肯定在保证照片质量的前提下,再完成额外的要求.一些东西错过就没有了,我的注意力当然是拍照片为主</p><p>   我按照她所说,拍了几个视频,她又说“没拍好哦”,附赠的你还想怎样?难道我的手机还会帮我把素材自己剪好?她又补充:“你要把舞台上精彩的表演拍下来,还要把台下孩子的气势拍出来,我才好宣传”</p><p><img src="/bcaf5d55/1.png" alt="图片"></p><p><img src="/bcaf5d55/3.png" alt="图片"></p><p><strong>1.校方自己有全程录影,不给上舞台拍</strong></p><p><strong>2.他的舞台高1.5米(至少)</strong></p><p><strong>3.一条10s的一镜到底要如何把舞台上的表演和台下的气势同时拍到呢?</strong></p><p><strong>4.如何把根本不精彩的表演和台下死气沉沉的学生拍得有气势呢?</strong></p><p>这并不是最过分的,最过分的是事后..</p><p>拍摄地点是松山湖的园区,我家在东莞一个偏僻的破镇</p><p>原定拍摄时间19:00-20:00</p><p>结果他们20:30才搞定一切</p><p>他们不报销车费,给的钱又少,我坐公交回家不过分吧,至少两个半钟</p><p>我20:30跟她说走,她要我先发她照片?大姐,可以是可以,但没必要.说白了,你给的钱太少了.难道我要耗费半小时用手机wifi把照片挑出来在回家?错过末班车我不就白给了?</p><p><img src="/bcaf5d55/4.png" alt="图片"></p><p>一般人,工作完之后都会问的问题是:你开车回去吗?这么晚了,用不用送你回去?路上小心,注意安全…等等.保证我最基本的东西,再谈工作.我起码得到了作为摄影师的尊重,但是我从她身上没有感觉到自己被尊重.我只是帮她拍照的工具而已.上来就要我发照片?要是多关心我一点,我还能硬撑着从相机里传几张出来.但是你?算了吧.</p><p>无论做什么行业,只要你是真心希望帮助对方,对方也会全心全意为你付出,如果对方只是达成你某种意图的工具,合作肯定不会太顺利.</p><p>干过活才知道,一句“<strong>谢谢,辛苦了</strong>.”有多大的鼓舞</p><p>并不是花钱买的一切都是理所当然的</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;先说说我做的是啥,外行人口中的摄影师.但很可惜,并不是电影或者电视剧里那种拿着相机记录美好生活的摄影师,也没有渠道在国家地理杂志、报社里批判现实.甚至只能偷偷摸摸地开一个公众号,在一个没有加任何客户的小号里发泄自己的情绪.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/bcaf5d55/640.png&quot; alt=&quot;图片&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="我的客户" scheme="https://www.kulafan.com/tags/%E6%88%91%E7%9A%84%E5%AE%A2%E6%88%B7/"/>
    
  </entry>
  
  <entry>
    <title>瓶颈期</title>
    <link href="https://www.kulafan.com/599ecebd/"/>
    <id>https://www.kulafan.com/599ecebd/</id>
    <published>2019-07-26T07:17:59.000Z</published>
    <updated>2026-07-13T11:52:27.170Z</updated>
    
    <content type="html"><![CDATA[<p>*可能最近又进入了所谓的瓶颈期<br>*</p><p><em>脾气比较暴躁</em></p><p><em>想做很多事情 但是都不能让自已满意。</em></p><p><em>不能赖别人 只能抱怨自己</em></p><p><img src="/599ecebd/640.png" alt="图片"></p><p><em>然后会想着改变，无论是怎样的改变，都是好的</em></p><p><em>指望着通过改变外界而达到改变自己的目的</em></p><p><em>只要有改变就有希望。</em></p><p><em>所以就有了一次很仓促，距离不是太远的出行</em></p><p>2019.7.23</p><p><em>地点在广东省内</em></p><p><em>离东莞很近，可能在广州，可能在增城</em></p><p><em>去哪里其实没有所谓</em></p><p><em>重要的是我好像已经在东莞呆了太久</em></p><p><em>身边太多人在无病呻吟</em></p><p><em>更嘲讽的是 一些连正道都没走上的人 甚至还有资格评判别人</em></p><p><em>想摆脱这一切，但是并没有提升自己的捷径。我想证明自己但是在这个群体里很难得到认可，而凭我自己的能力又够不到我所追求的群体。</em></p><p><img src="/599ecebd/1.png" alt="图片"></p><p><em>在中国的countryside拍照，很难。</em></p><p><em>一来缺乏美学上的思考，其次很难挖掘有故事性的内容</em></p><p><em>故事性并不是把社会底层最艰辛的一面拿出来赚眼泪</em></p><p><em>把底层社会脆弱的一面拿出来消费，还借着‘记录人文’的名号，真的很可耻</em></p><p><img src="/599ecebd/2.png" alt="图片"></p><p>*在拍摄农耕中的农民时，一部路虎开了过来，我在想，他们这么勤勤恳恳劳作，这辈子有没有可能开上这样的车呢？<br>*</p><p><em>我们在感叹乡村自然的美，但是这种美的背后是他们必须在这种落后的地区煎熬。在自然、原始的环境下，我们或许可以生活一两天，一个礼拜。但是如果要长期生活，并不会选择这种地方。</em></p><p><em>耕地的农民，在我们眼里，跟动物园的动物没什么两样，都是满足我们眼球的事物而已。他们跟这些山山水水没什么两样。</em></p><p><img src="/599ecebd/3.png" alt="图片"></p><p><img src="/599ecebd/4.png" alt="图片"></p><p>*回到酒店（民宿？），好像下了点雨。看到有一群鸭子，趁着兴致拿起相机开始拍，然后听到有人说看到了彩虹？看了看，在天上挂着一丁点，还好没有完全消失。<br>*</p><p><em>可是这一丁点有什么用呢？我走下去，在河的旁边，用低一点点的角度去拍，正好遇到一直鸭子在喝水，有一部车在桥上经过，我立刻按下快门。</em></p><p><img src="/599ecebd/5.png" alt="图片"></p><p><em>跟我同行的朋友，他也带了相机，他拍完彩虹之后跟我讲：“每次拍同样的东西，我们选的角度都不太一样”现在想了想，我好像是有意的。</em></p><p><em>平时拍照，如果有人已经在拍，那么我一定不会再拍。就像之前在ssl的语文老师教我们一样，写作文要先想三个角度，然后放弃这三个角度，从第四个开始写。因为前三个一定被用烂。很多时候我都会刻意避免相同。</em></p><p><img src="/599ecebd/6.png" alt="图片"></p><p><img src="/599ecebd/7.png" alt="图片"></p><p><em>一直想把片子拍得更加有内涵，但是我发现真的办不到。内涵并非随随便便就能改变.</em></p><p><em>先让自己从底层的观念开始转变</em></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;*可能最近又进入了所谓的瓶颈期&lt;br&gt;*&lt;/p&gt;
&lt;p&gt;&lt;em&gt;脾气比较暴躁&lt;/em&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="摄影" scheme="https://www.kulafan.com/tags/%E6%91%84%E5%BD%B1/"/>
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="记录" scheme="https://www.kulafan.com/tags/%E8%AE%B0%E5%BD%95/"/>
    
  </entry>
  
  <entry>
    <title>这样的价值观出来的是怎样的学生</title>
    <link href="https://www.kulafan.com/12898afa/"/>
    <id>https://www.kulafan.com/12898afa/</id>
    <published>2019-04-19T10:27:52.000Z</published>
    <updated>2026-07-13T11:52:27.193Z</updated>
    
    <content type="html"><![CDATA[<p>昨天11.09是我的母校 东莞中学松山湖学校13年校庆的日子 可是不巧 课表原本就经凑的星期五还添了一节讲座 李培培和李缨都是非常好的老师 她们的课我非听不可。。下午吴寒柳老师的课也不错 但是在母校校庆面前 我已经没有太多顾虑了。</p><p>本着 为学以真 立身以诚 的价值观 我还是觉得要尊重学校的规矩 走程序请假。我十分有仪式感地写好假条 拿去给老师签字。</p><p>事实上 只要你说生病 或者亲戚婚礼 老师是没有理由拒绝你的 并且老师不会去核实 也就是说 我可以通过撒谎去请假。但是这样一来 不就违背了我信仰多年的高中校训了吗？这种原则上的问题不能违背，所以我不为别的理由就是为了校庆请假。</p><p>但是学校的回应太伤我心了</p><p>“请假理由不充分”</p><p>这能阻止我去校庆吗？显然不能 我请假只是为了通知你我要去而已，为了程序正当而走这条路已经不通了，只有翘课一路可走。</p><p>从这件事上我想了好多，如此堂堂正正的理由都不能请到假，但是装病100%可以成功，并不是人人心中都像我一样有一条不可打破的理念，所以大学生请病假翘课屡试不爽。堂堂正正的人通过正当程序屡次碰壁，有的人通过手段轻易达到目的，而且堂堂正正的人有可能因为翘课取消考试资格 挂科，装病的人逍遥在外。同样的一件事 两种手段 你会选哪种？</p><p>依照上述情况进行发展，久而久之，正直的学生大多数都遭到损失甚至挂科，大部分人会因为难以忍受，转而去撒谎，坚持道德底线的人继续遭殃。所以最后剩下的应该是为达到目的而不择手段的人。</p><hr><p>“学生的首要任务是学习 为了校庆而不学习是不务正业”</p><p>这个问题真的值得思考，考试的时候，你家里人病危最多活一个小时 医生打电话让你过去见最后一面 你怎么选择？</p><p>学习固然重要，但是还有很多比学习更重要的事情，眼里只有学习的学生必定是缺乏精神信仰的。</p><p>在大学里 你可以为之翘课的事情太多了</p><p>看自己爱豆的演唱会、你非常要好的朋友急需你的帮助、你母校校庆、赚钱，必须是赚大钱。</p><p>如果你想不到一件能够为之翘课的事，说明你没有找到精神上的寄托</p><p>我的母校对我一生的影响是巨大的，可以说在我14岁那年，她彻彻底底改变了我的人生轨迹，虽然17岁那年最后还是脱了轨，去了一间数不清是几流的大学。</p><p>或许根本不入流</p><hr><p>事实上我挺喜欢我们班主任的，和我们相处的很好，但是很无奈，学校的规定就是这样。老师夹在学校和学生之间处境非常尴尬。同时我佩服他的就是，居然回复我了！！！实在是荣幸，现在能心平气和跟学生讲道理的老师有几个？哪个不是用老师的身份压着你？其他老师看到这种complain也就一笑而过，心里笑道：“这学生怎么这么傻？”。至少我们班主任还瞧得起我这个学生，给了我回复。也引出了另外一个角度：<strong>感恩</strong></p><p>**问:**如果一个学生可以因为参加高中的校庆而请假，那每个学生都可以用同样的理由请假。这样一来，可能每个礼拜都会有用这个理由来请假的学生，而那些外省来的学生，可能需要请数天的假。</p><p>**K:**把校庆换成生病的话 这条推理也成立的 而且我认为一年为校庆请一天假没什么不合理的 如果高中培养了他三年 他不懂得感恩 大学培养了他四年也是如此 他以后就不会感恩这个社会了</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;昨天11.09是我的母校 东莞中学松山湖学校13年校庆的日子 可是不巧 课表原本就经凑的星期五还添了一节讲座 李培培和李缨都是非常好的老师 她们的课我非听不可。。下午吴寒柳老师的课也不错 但是在母校校庆面前 我已经没有太多顾虑了。&lt;/p&gt;
&lt;p&gt;本着 为学以真 立身以诚 的价值观 我还是觉得要尊重学校的规矩 走程序请假。我十分有仪式感地写好假条 拿去给老师签字。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>2018-12-11关于校区问题</title>
    <link href="https://www.kulafan.com/c1746fc4/"/>
    <id>https://www.kulafan.com/c1746fc4/</id>
    <published>2018-12-11T03:38:58.000Z</published>
    <updated>2026-07-13T11:52:27.170Z</updated>
    
    <content type="html"><![CDATA[<p>孙志超博士</p><p>各位：<br>今天的事情满城风雨。明天不要闹了，也不要难为一线的老师。今天你们捡个便宜，是周日，不扰乱教学秩序。如果明天还静坐&#x2F;抗议，那就扰乱教学秩序了。不妥，明白我的意思吗？扰乱教学秩序的后果是什么……<br>不要纠结眼前，不要难为最关心你的人，好事与坏事之后，都要总结一下：学到了什么。对你们的问题，我作一个回应：<br>第一，这肯定不是刑事问题，这如何也不是诈骗；<br>第二，这也不是行政问题，学校不是行政机关；<br>第三，这不是合同问题，因为这里不是蓝翔和新东方，普通高校统一招生行为不是商业行为，无从谈到违约；<br>最后，所谓证据，开宗明义即说：具体政策还没出来。今年的情况是莞城就读一年搬到松山湖。退一步说，这种表达没有问题。<br>无论你喜欢还是不喜欢，爱或者不爱，就像姓氏一样，理工的标签跟随你一生，他好，你才受益。<br>有些事情需要冷静后思考，如果你未来有别的选择机会，如何判断；如果未来再制定政策，他应该怎样衡量正义与否，且应该如何预案。<br>维权代表觉醒，当每人开始关注私权，注重承诺的时候，社会才有了互通与信任的基础。<br>方式显示聪明，当每人都能恰当行权，同时尊重他人权利的时候，你的权利才可能被顾及和愿意被感受。<br>你的诉求已经表达，令所有老师，甚至很多教育机构都在反思。两年之后，希望所有人都可以认可你推动了什么，而不是毁掉了什么。多年之后，谈及母校，你说：<br>A. 理工的名声就是被老子一手毁掉的。<br>B. 理工目前所以在管理的进步是当年我们谏言的结果<br>明天你必须在A和B中选择其一。<br>作为法律工作者，契约精神当捍卫。作为教育工作者，当然知道哪些是短视，哪些对你们是长远。<br>我曾经也是个学生，如果我是你，我绝对也会是其中一员。<br>但我现在是个过来人，发现：无论怎样被牵绊，最后还是要赶路。决定你未来永远不是当前的这一步，而是你规划中的下一步。<br>如果你还说，你的下一步就在松山湖，我尊重你，但是，孩子，你看短了，因为我不希望未来你的标签是【理工 处分】。<br>这才是雪上加霜啊，明白吗？<br>其实很多一线教师也不愿意两地上课，但是还有两年。<br>你们负责沉默，我们负责奔波。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;孙志超博士&lt;/p&gt;
&lt;p&gt;各位：&lt;br&gt;今天的事情满城风雨。明天不要闹了，也不要难为一线的老师。今天你们捡个便宜，是周日，不扰乱教学秩序。如果明天还静坐&amp;#x2F;抗议，那就扰乱教学秩序了。不妥，明白我的意思吗？扰乱教学秩序的后果是什么……&lt;br&gt;不要纠结眼前，不要难为最关心你的人，好事与坏事之后，都要总结一下：学到了什么。对你们的问题，我作一个回应：&lt;br&gt;第一，这肯定不是刑事问题，这如何也不是诈骗；&lt;br&gt;第二，这也不是行政问题，学校不是行政机关；&lt;br&gt;第三，这不是合同问题，因为这里不是蓝翔和新东方，普通高校统一招生行为不是商业行为，无从谈到违约；&lt;br&gt;最后，所谓证据，开宗明义即说：具体政策还没出来。今年的情况是莞城就读一年搬到松山湖。退一步说，这种表达没有问题。&lt;br&gt;无论你喜欢还是不喜欢，爱或者不爱，就像姓氏一样，理工的标签跟随你一生，他好，你才受益。&lt;br&gt;有些事情需要冷静后思考，如果你未来有别的选择机会，如何判断；如果未来再制定政策，他应该怎样衡量正义与否，且应该如何预案。&lt;br&gt;维权代表觉醒，当每人开始关注私权，注重承诺的时候，社会才有了互通与信任的基础。&lt;br&gt;方式显示聪明，当每人都能恰当行权，同时尊重他人权利的时候，你的权利才可能被顾及和愿意被感受。&lt;br&gt;你的诉求已经表达，令所有老师，甚至很多教育机构都在反思。两年之后，希望所有人都可以认可你推动了什么，而不是毁掉了什么。多年之后，谈及母校，你说：&lt;br&gt;A. 理工的名声就是被老子一手毁掉的。&lt;br&gt;B. 理工目前所以在管理的进步是当年我们谏言的结果&lt;br&gt;明天你必须在A和B中选择其一。&lt;br&gt;作为法律工作者，契约精神当捍卫。作为教育工作者，当然知道哪些是短视，哪些对你们是长远。&lt;br&gt;我曾经也是个学生，如果我是你，我绝对也会是其中一员。&lt;br&gt;但我现在是个过来人，发现：无论怎样被牵绊，最后还是要赶路。决定你未来永远不是当前的这一步，而是你规划中的下一步。&lt;br&gt;如果你还说，你的下一步就在松山湖，我尊重你，但是，孩子，你看短了，因为我不希望未来你的标签是【理工 处分】。&lt;br&gt;这才是雪上加霜啊，明白吗？&lt;br&gt;其实很多一线教师也不愿意两地上课，但是还有两年。&lt;br&gt;你们负责沉默，我们负责奔波。&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>Don&#39;t try to stand out of the crowd avoid the crowd altogether</title>
    <link href="https://www.kulafan.com/d5ca4138/"/>
    <id>https://www.kulafan.com/d5ca4138/</id>
    <published>2018-11-05T07:15:32.000Z</published>
    <updated>2026-07-13T11:52:27.170Z</updated>
    
    <content type="html"><![CDATA[<p>2018.11.05</p><blockquote><p>現在想來，毛豆腐攤子給我更多的感觸就是這種樸素的人文情懷</p></blockquote><p><em>張(我的大學老師)：<strong>我認為這是文章中的一個敗筆，因為前面描述的畫面已經超過了“樸素的人文情懷”，它失去了之前鋪墊的意境（大概是這個意思，我沒有打引號！</strong>）</em></p><p>我認為文字的昇華要基於文字表達的內容，在原有事物程度之內的昇華可以提升文字的表達，如果昇華的運用遠遠超出了其意義，就是無病呻吟。也就是在講鬼話。</p><p>寫文章有兩種，一種是寫鬼話，一種是寫人話，我提倡大家平時寫作時寫人話，因為鬼話好噁心。但是在考場上，為了大家的分數考慮，我建議你們寫鬼話，因為我是一名語文老師。</p><p>——買生</p><p>買生的這句話影響了我整個高中寫作的思路…</p><p>通過幾張日落的照片如何得出“<em>越是長久的蟄伏，約會帶來意想不到的光彩，台風前的天空都可以這麼美，你還有什麼理由不在風暴來臨前奮力一拼呢？</em>”這般感慨？</p><p><em>“後記，即使是一隻小小的紫灰蝶，也能用自己的能力去傳播花粉，它讓我明白每一個小生物都有它存在的價值，我們無法通過它的大小來判斷它的價值</em></p><p><em>正如人生，每個人都有自己存在的意義，他人無法通過一個人的職位權力金錢來衡量一個人的價值”</em></p><ul><li></li><li></li></ul><p>這種寫作的思路，首先描述一段平平無奇的自然現象，毫無徵兆地發出了一段感慨，為了攀升文字的水準強行附加一段感悟。。這絕對不能夠成為一篇好文章的標準。*<br>*</p><p>描述有深度的內容，讀者自然能夠領會，要提高文采，必須尋求更高的立意，但是大多數人不改變角度，描述的事物還是沒有生命力，強行將“立意”附加在其中。</p><p>目前，為了追求立意上的創新去故弄玄虛，始終不能擺脫創作客體主觀認知對表達能力的約束。</p><p>文字的排版更加是一言難盡啊</p><p>Don’t try to stand out of the crowd<br>avoid the crowd altogether.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;2018.11.05&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;現在想來，毛豆腐攤子給我更多的感觸就是這種樸素的人文情懷&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
  </entry>
  
  <entry>
    <title>XiaoMi A1 How to Root Twrp and Xposed</title>
    <link href="https://www.kulafan.com/141b7980/"/>
    <id>https://www.kulafan.com/141b7980/</id>
    <published>2018-01-26T13:15:29.000Z</published>
    <updated>2026-07-13T11:52:27.170Z</updated>
    
    <content type="html"><![CDATA[<p>You need to Download</p><h2 id="Official-ROM-for-A1-Android-7-1-2-Download-derictly-Or-Enter-the-page"><a href="#Official-ROM-for-A1-Android-7-1-2-Download-derictly-Or-Enter-the-page" class="headerlink" title="-- Official ROM for A1 Android 7.1.2: Download derictly  Or Enter the page"></a>-<br>- Official ROM for A1 Android 7.1.2: <span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84NjI4MzE1MTcwOTMxMDQ2MDk5Iw==">Download derictly </span> Or <span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84NjI4MzE1MTcwOTMxMDQ2MDk5Iw==">Enter the page</span></h2><ul><li>Tools packaged by <strong>Kulafan</strong> <span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84NjI4MzE1MTcwOTMxMDQ2MDk5Iw==">click here to download </span>(BaiduYun)</li><li></li></ul><p>##########1. If you fail,you can flash official ROM to your XiaoMiA1##################</p><p>If you just root your phone and Xposed just move to ###Root and Xposed### And skip this part</p><p>Unzip this package<br>you will get these</p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20180126123432-300x106.png" alt="img"></p><p>turn on XiaomiA1to Fastboot mode<br>connect the phone to your Pc use typeC</p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20180126124156-300x300.jpg" alt="img"></p><p>install ADBDriverinstaller.exe</p><p>unzip The Official ROM<br>enter “:\XiaoMiA1\XiaoMiFlash.exe”</p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20180126124619-300x140.png" alt="img"></p><p>(Do remember UNZIP the *.tgz Rom,then copy this Path “:\tissot_images_7.12.19_20171219.0000.00_7.1_d39fa89aaf\tissot_images_7.12.19_7.1”)</p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20180126124533-300x102.png" alt="img"></p><p>############################################################</p><p>#####################Root 、Twrp and Xposed #######################</p><p>trun your phone to “fastboot mode” and connect to PC</p><p>move all flie in adb to “C:&quot;</p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/explorer_2018-01-26_12-57-02-300x227.png" alt="img"></p><p>use “Win+R” type “Cmd” and enter</p><p>and type</p><p><em><strong>cd c:<br>fastboot devices</strong></em></p><p>to make sure your devices is connected</p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/cmd_2018-01-26_13-02-13.png" alt="img"></p><p>type</p><p>*<strong>fastboot oem unlock*</strong>   # unlock your phone<br><em><strong>fastboot boot recovery-3.1.1-1.img</strong></em>      #flash twrp to your phone</p><p>wait for your devices ,you will enter Twrp</p><p>put “SR5-SuperSU-v2.82-SR5-20171001224502.zip” to phone</p><p>and Install via Twrp</p><p>Root is done</p><p>#############TWRP###########</p><p>Move twrp-3.1.1-1-installer-tissot.zip to your phone</p><p>install via recovery</p><p>##############Xposed##############</p><p>download Xposed.apk <span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84NjI4MzE1MTcwOTMxMDQ2MDk5Iw==">click here</span></p><p>OR</p><p><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84NjI4MzE1MTcwOTMxMDQ2MDk5Iw==">https://forum.xda-developers.com/showthread.php?t=3034811</span></p><p>install apk (or *<strong>adb install x.apk*</strong>)</p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20180126131207-300x35.png" alt="img"></p><p><img src="http://www.kulafan.com/wp-content/uploads/2018/01/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20180126131204-300x160.png" alt="img"></p><p>by this way you can install Xposed without recovery</p><p>##########################################</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;You need to Download&lt;/p&gt;
&lt;h2 id=&quot;Official-ROM-for-A1-Android-7-1-2-Download-derictly-Or-Enter-the-page&quot;&gt;&lt;a href=&quot;#Official-ROM-for-A1-Android-7-1-2-Download-derictly-Or-Enter-the-page&quot; class=&quot;headerlink&quot; title=&quot;-- Official ROM for A1 Android 7.1.2: Download derictly  Or Enter the page&quot;&gt;&lt;/a&gt;-&lt;br&gt;- Official ROM for A1 Android 7.1.2: &lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84NjI4MzE1MTcwOTMxMDQ2MDk5Iw==&quot;&gt;Download derictly &lt;/span&gt; Or &lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy9wb3N0L2VkaXQvMjk3MjM4NDUwMzk5MjE3NDg3Ni84NjI4MzE1MTcwOTMxMDQ2MDk5Iw==&quot;&gt;Enter the page&lt;/span&gt;&lt;/h2&gt;</summary>
    
    
    
    <category term="折腾" scheme="https://www.kulafan.com/categories/%E6%8A%98%E8%85%BE/"/>
    
    
    <category term="折腾" scheme="https://www.kulafan.com/tags/%E6%8A%98%E8%85%BE/"/>
    
    <category term="手机" scheme="https://www.kulafan.com/tags/%E6%89%8B%E6%9C%BA/"/>
    
  </entry>
  
  <entry>
    <title>第一次枪战11.13，但一切都会随风逝去。。。</title>
    <link href="https://www.kulafan.com/4a7413ab/"/>
    <id>https://www.kulafan.com/4a7413ab/</id>
    <published>2016-11-13T08:38:52.000Z</published>
    <updated>2026-07-13T11:52:27.158Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo1_1280.png" alt="img"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo2_1280.png" alt="img"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo3_1280.png" alt="img"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo4_1280.png" alt="img"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo5_1280.jpg" alt="tumblr_ogl7b1NqOS1us4j0fo5_1280"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo6_1280.jpg" alt="tumblr_ogl7b1NqOS1us4j0fo6_1280"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo7_1280.jpg" alt="tumblr_ogl7b1NqOS1us4j0fo7_1280"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo8_1280.jpg" alt="tumblr_ogl7b1NqOS1us4j0fo8_1280"></p><p><img src="/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo9_1280.jpg" alt="tumblr_ogl7b1NqOS1us4j0fo9_1280"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/4a7413ab/tumblr_ogl7b1NqOS1us4j0fo2_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/%E9%AB%98%E4%B8%89/"/>
    
    
    <category term="摄影" scheme="https://www.kulafan.com/tags/%E6%91%84%E5%BD%B1/"/>
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/tags/%E9%AB%98%E4%B8%89/"/>
    
  </entry>
  
  <entry>
    <title>期中考试</title>
    <link href="https://www.kulafan.com/c1730996/"/>
    <id>https://www.kulafan.com/c1730996/</id>
    <published>2016-10-26T08:37:39.000Z</published>
    <updated>2026-07-13T11:52:27.158Z</updated>
    
    <content type="html"><![CDATA[<p>因为这几天太热了状态不好，考砸了。。<br>造反了好多次，但是并没有什么用，最后惊动了家长，老师貌似有些害怕。今天中午开了空调，但是晚上又没有。好热啊<br>这样下去学习成绩怎么提高？祝我好运吧。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;因为这几天太热了状态不好，考砸了。。&lt;br&gt;造反了好多次，但是并没有什么用，最后惊动了家长，老师貌似有些害怕。今天中午开了空调，但是晚上又没有。好热啊&lt;br&gt;这样下去学习成绩怎么提高？祝我好运吧。&lt;/p&gt;
</summary>
      
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/%E9%AB%98%E4%B8%89/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/tags/%E9%AB%98%E4%B8%89/"/>
    
  </entry>
  
  <entry>
    <title>高三第二次造反</title>
    <link href="https://www.kulafan.com/a74e3ec1/"/>
    <id>https://www.kulafan.com/a74e3ec1/</id>
    <published>2016-10-19T08:33:34.000Z</published>
    <updated>2026-07-13T11:52:27.158Z</updated>
    
    <content type="html"><![CDATA[<p>第一次是9月5日，以后补充<br>这次是10月18日，因为室内太热了，晚上睡不着，我们热的蛋疼就要求宿管开空调。<br>可是宿管表示领导不让开，造反开始了。<br>先是我们几个宿舍轮流喊 开空调！ 然后逐渐越来越多人走出宿舍霸占走道，宿管叫来老师，开骂了，老师表示 我在家一个月也没开空调。 我去。。你家的大？住几个人？我们六个人挤在一个小房间，而且不通风。老师不爽叫来了级长，级长一上来就强硬地要求我们回宿舍，我们正气头上，你说回就回？我们搬来床板，“威胁”他们不开空调我们今晚就打地铺了。看看身后 一班的兄弟们也来了，可就是不见民主斗士的出现。<br>很级长谈判无果，级长说这是规定，10月之后从来都不开空调。可是现在全球变暖，而且温度确实上升了。级长要求我们拿出证据证明全球变暖。。。<br>没办法了，我们要求在过道打地铺，级长也只好妥协，但是要求别讲话。<br>后来大概十二点左右，气温降低了，其实我们都有点撑不住了，级长过来对我们说“其实我也想给你们开啊，可是我没那么大权利，这是学校规定的，我也帮不了你们。。。”我们见他态度好转，便收拾东西回去了，为了不让一班以为我们“背叛革命”我们派人去通知，然后级长又跟他们重复了一遍，他们也回去了，这次造反才平息了。<br>其实理性地想想，我们确实有点不理智，但12点之前我发誓真的很热，只是后半夜温度降低了。我们的造反不完全是无理取闹的，只是没考虑那么多，我们当时就是很热。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;第一次是9月5日，以后补充&lt;br&gt;这次是10月18日，因为室内太热了，晚上睡不着，我们热的蛋疼就要求宿管开空调。&lt;br&gt;可是宿管表示领导不让开，造反开始了。&lt;br&gt;先是我们几个宿舍轮流喊 开空调！ 然后逐渐越来越多人走出宿舍霸占走道，宿管叫来老师，开骂了，老师表示 我在家一</summary>
      
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/%E9%AB%98%E4%B8%89/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/tags/%E9%AB%98%E4%B8%89/"/>
    
  </entry>
  
  <entry>
    <title>2016-10-19下了三天雨</title>
    <link href="https://www.kulafan.com/d5bf04db/"/>
    <id>https://www.kulafan.com/d5bf04db/</id>
    <published>2016-10-19T08:32:34.000Z</published>
    <updated>2026-07-13T11:52:27.158Z</updated>
    
    <content type="html"><![CDATA[<p>下了三天雨，明天终于晴天了，衣服终于能干了。<br>最近天气特别不好，老下雨，可以之前那件帅帅的松湖十年雨衣丢了，只能打伞。<br>每天都要跟积水斗智斗勇，希望明天不要让我失望! 😞</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;下了三天雨，明天终于晴天了，衣服终于能干了。&lt;br&gt;最近天气特别不好，老下雨，可以之前那件帅帅的松湖十年雨衣丢了，只能打伞。&lt;br&gt;每天都要跟积水斗智斗勇，希望明天不要让我失望! 😞&lt;/p&gt;
</summary>
      
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/%E9%AB%98%E4%B8%89/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/tags/%E9%AB%98%E4%B8%89/"/>
    
  </entry>
  
  <entry>
    <title>很高兴的一天</title>
    <link href="https://www.kulafan.com/55dfa475/"/>
    <id>https://www.kulafan.com/55dfa475/</id>
    <published>2016-07-31T08:34:41.000Z</published>
    <updated>2026-07-13T11:52:27.157Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/55dfa475/tumblr_ofdwpaVKyj1us4j0fo1_1280.png" alt="img"></p><p><img src="/55dfa475/tumblr_ofdwpaVKyj1us4j0fo2_640.png" alt="img"></p><p><img src="/55dfa475/tumblr_ofdwpaVKyj1us4j0fo3_640.png" alt="img"></p><p>很高兴的一天，下午第一节课前收到了台风放假的通知，兴奋了两节课。第三节课是文综测验我已经没心情做下去了，只有压抑不住的兴奋。可是下课后，跑步的哨子响了，是不是意味着不放假了？？？？<br>我们下去时得知，黄色预警才放假，可现在蓝色，我们按耐不住了，再来次造反？放假造反？？这肯定被学校干死。<br>后来级长不知说了些什么，全部人都在欢呼，但一定是好事。级长说跑完步就放假，心里一颗石头总算沉了下来，因为放这次假对我来说很重要，因为我充电宝没电了。<br>回到宿舍我妈说她不知道放假，才刚刚在路上，我就跟鸡超 Con 添哥打球了。每次跟鸡超打都是各种手感好，怎么投怎么中，六点多在室内脱掉眼镜，几乎什么都看不见了，还是很准，我也很无奈。。。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/55dfa475/tumblr_ofdwpaVKyj1us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/55dfa475/tumblr_ofdwpaVKyj1us4j0fo2_640.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/%E9%AB%98%E4%B8%89/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/tags/%E9%AB%98%E4%B8%89/"/>
    
  </entry>
  
  <entry>
    <title>一些照片</title>
    <link href="https://www.kulafan.com/69e396b1/"/>
    <id>https://www.kulafan.com/69e396b1/</id>
    <published>2016-07-20T08:31:03.000Z</published>
    <updated>2026-07-13T11:52:27.166Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/69e396b1/tumblr_oameudhd3r1us4j0fo1_1280.png" alt="img"></p><p><img src="/69e396b1/tumblr_oatdlcUuqQ1us4j0fo1_1280-1.png" alt="img"></p><p><img src="/69e396b1/tumblr_oauvp9mNqH1us4j0fo1_1280-1.png" alt="img"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/69e396b1/tumblr_oameudhd3r1us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/69e396b1/tumblr_oatdlcUuqQ1us4j0fo1_1280-1.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    
  </entry>
  
  <entry>
    <title>初中聚会</title>
    <link href="https://www.kulafan.com/440c28d0/"/>
    <id>https://www.kulafan.com/440c28d0/</id>
    <published>2016-07-20T08:29:57.000Z</published>
    <updated>2026-07-13T11:52:27.167Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/440c28d0/tumblr_oalgsuUsJd1us4j0fo1_1280.jpg" alt="img"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/440c28d0/tumblr_oalgsuUsJd1us4j0fo1_1280.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>三十里意志行</title>
    <link href="https://www.kulafan.com/2006845b/"/>
    <id>https://www.kulafan.com/2006845b/</id>
    <published>2016-05-12T08:26:30.000Z</published>
    <updated>2026-07-13T11:52:27.154Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/2006845b/tumblr_o71rs7bf2n1us4j0fo1_1280.png" alt="img"></p><p><img src="/2006845b/tumblr_o71rs7bf2n1us4j0fo2_1280.png" alt="img"></p><p><img src="/2006845b/tumblr_o71rs7bf2n1us4j0fo3_1280.png" alt="img"></p><p><img src="/2006845b/tumblr_o7cxfrP0gv1us4j0fo1_1280.png" alt="img"></p><p><img src="/2006845b/tumblr_o7cxfrP0gv1us4j0fo2_1280.png" alt="img"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/2006845b/tumblr_o71rs7bf2n1us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/2006845b/tumblr_o71rs7bf2n1us4j0fo2_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="摄影" scheme="https://www.kulafan.com/categories/%E6%91%84%E5%BD%B1/"/>
    
    
    <category term="摄影" scheme="https://www.kulafan.com/tags/%E6%91%84%E5%BD%B1/"/>
    
  </entry>
  
  <entry>
    <title>2016-04-19的</title>
    <link href="https://www.kulafan.com/3da82af0/"/>
    <id>https://www.kulafan.com/3da82af0/</id>
    <published>2016-04-19T08:19:28.000Z</published>
    <updated>2026-07-13T11:52:27.149Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/3da82af0/tumblr_o4z9v6I0sR1us4j0fo1_1280.png" alt="img"></p><p><img src="/3da82af0/tumblr_o5h9actL0p1us4j0fo1_1280.png" alt="img"></p><p><img src="/3da82af0/tumblr_o5h9actL0p1us4j0fo2_1280.png" alt="img"></p><p><img src="/3da82af0/tumblr_o5h9jvjArN1us4j0fo1_1280.png" alt="img"></p><p><img src="/3da82af0/tumblr_o5h9xiuo9h1us4j0fo1_1280.png" alt="img"></p><p><img src="/3da82af0/tumblr_o5h9xiuo9h1us4j0fo2_1280.png"></p><p><img src="/3da82af0/tumblr_o5h9xiuo9h1us4j0fo3_1280.png" alt="img"></p><p><img src="/3da82af0/tumblr_o5h9xiuo9h1us4j0fo4_1280.png" alt="img"></p><p><img src="/3da82af0/tumblr_o5h9xiuo9h1us4j0fo5_1280.png" alt="img"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/3da82af0/tumblr_o4z9v6I0sR1us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/3da82af0/tumblr_o5h9actL0p1us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="摄影" scheme="https://www.kulafan.com/categories/%E6%91%84%E5%BD%B1/"/>
    
    
    <category term="摄影" scheme="https://www.kulafan.com/tags/%E6%91%84%E5%BD%B1/"/>
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>受力分析</title>
    <link href="https://www.kulafan.com/8e979f69/"/>
    <id>https://www.kulafan.com/8e979f69/</id>
    <published>2016-03-19T08:17:18.000Z</published>
    <updated>2026-07-13T11:52:27.143Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/8e979f69/tumblr_o49w243HkG1us4j0fo1_1280.jpg" alt="tumblr_o49w243HkG1us4j0fo1_1280"></p><p><img src="/8e979f69/tumblr_o49w243HkG1us4j0fo2_1280.jpg" alt="tumblr_o49w243HkG1us4j0fo2_1280"></p><p><img src="/8e979f69/tumblr_o49w243HkG1us4j0fo3_1280.jpg" alt="tumblr_o49w243HkG1us4j0fo3_1280"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/8e979f69/tumblr_o49w243HkG1us4j0fo1_1280.jpg&quot; alt=&quot;tumblr_o49w243HkG1us4j0fo1_1280&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/8e979f69/tumblr_o49w243HkG1us4j0fo2_1280.jpg&quot; alt=&quot;tumblr_o49w243HkG1us4j0fo2_1280&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/%E9%AB%98%E4%B8%89/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>不喝可乐会死</title>
    <link href="https://www.kulafan.com/290bf0c7/"/>
    <id>https://www.kulafan.com/290bf0c7/</id>
    <published>2016-03-11T08:16:29.000Z</published>
    <updated>2026-07-13T11:52:27.142Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/290bf0c7/tumblr_o3weaevZMs1us4j0fo1_1280.jpg" alt="tumblr_o3weaevZMs1us4j0fo1_1280"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/290bf0c7/tumblr_o3weaevZMs1us4j0fo1_1280.jpg&quot; alt=&quot;tumblr_o3weaevZMs1us4j0fo1_1280&quot;&gt;&lt;/p&gt;
</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>路过济川</title>
    <link href="https://www.kulafan.com/4789c19f/"/>
    <id>https://www.kulafan.com/4789c19f/</id>
    <published>2016-03-05T08:11:47.000Z</published>
    <updated>2026-07-13T11:52:27.145Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo4_1280.jpg" alt="img"></p><p><img src="/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo5_1280.jpg" alt="img"></p><p><img src="/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo1_1280.jpg" alt="img"><img src="/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo3_1280.jpg" alt="img"></p><p><img src="/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo2_1280.jpg" alt="img"></p><p><img src="/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo6_1280.jpg" alt="img"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo4_1280.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/4789c19f/tumblr_o3kv2ygkLZ1us4j0fo5_1280.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    <category term="高三" scheme="https://www.kulafan.com/categories/%E6%9D%82%E8%B0%88/%E9%AB%98%E4%B8%89/"/>
    
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>24个比利</title>
    <link href="https://www.kulafan.com/8ba6dc9/"/>
    <id>https://www.kulafan.com/8ba6dc9/</id>
    <published>2015-10-28T08:09:59.000Z</published>
    <updated>2026-07-13T11:52:27.142Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/8ba6dc9/tumblr_nwxcfzSOa21us4j0fo1_1280.png" alt="img"></p><p>无缘无故冒出几个人名，感觉好像前面发生了什么你错过的事情。看到我人格分裂</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/8ba6dc9/tumblr_nwxcfzSOa21us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;无缘无故冒出几个人名，感觉好像前面发生了什么你错过的事情。看到我人格分裂&lt;/p&gt;</summary>
    
    
    
    <category term="阅读" scheme="https://www.kulafan.com/categories/%E9%98%85%E8%AF%BB/"/>
    
    
    <category term="阅读" scheme="https://www.kulafan.com/tags/%E9%98%85%E8%AF%BB/"/>
    
    <category term="杂谈" scheme="https://www.kulafan.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>节操校运会</title>
    <link href="https://www.kulafan.com/500bafda/"/>
    <id>https://www.kulafan.com/500bafda/</id>
    <published>2015-10-25T08:08:00.000Z</published>
    <updated>2026-07-13T11:52:27.141Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/500bafda/tumblr_nwrjkqTAnN1us4j0fo1_1280.png" alt="img"></p><p><img src="/500bafda/tumblr_nwrjkqTAnN1us4j0fo2_1280.png" alt="img"></p><p><img src="/500bafda/tumblr_nwrjkqTAnN1us4j0fo3_1280.png" alt="img"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/500bafda/tumblr_nwrjkqTAnN1us4j0fo1_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/500bafda/tumblr_nwrjkqTAnN1us4j0fo2_1280.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="摄影" scheme="https://www.kulafan.com/categories/%E6%91%84%E5%BD%B1/"/>
    
    
    <category term="摄影" scheme="https://www.kulafan.com/tags/%E6%91%84%E5%BD%B1/"/>
    
  </entry>
  
</feed>
