<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[把免费无广告的 NewTube 刷不出新视频这事用一个补丁解决了，安卓基友请享用！]]></title><description><![CDATA[<p dir="auto">不想用官方YouTube会员的朋友应该对电视的SmarTube和 手机的NewTube（SmartTube 的手机分支）有刚需，而这个手机版NewTube有个很闹心的毛病：下拉刷新，出来的还是刚才那几条视频，越刷越烦。</p>
<p dir="auto">查下来原因不在客户端缓存，而在未登录时 InnerTube 给的 browse 接口本身就是几个固定 topic feed 轮播：实测 FEtopics_music 23 张里重复 19 张、FEtopics_news 16 张里重复 11 张、FEtopics_gaming 50 张里重复 47 张，整体重复率 73% 到 94%。所以多刷新、多拉几页是没用的，服务端压根没给你新东西。</p>
<p dir="auto"><img src="https://github.com/halonc/NewTuber/releases/download/v1.17.1-fresh-home/newtube-fresh-home-cover.png" alt="刷新对比" class="img-markdown  img-fluid" /></p>
<p dir="auto">一、思路</p>
<p dir="auto">不改服务端，也不指望接口开恩。逻辑只有一条：今天已经给你看过的，就别再给你看第二遍。</p>
<p dir="auto">二、改了哪些地方</p>
<p dir="auto">基线是上游 1.17.1（commit 6f96a1b），主仓 10 个文件，477 行增、6 行删：</p>
<p dir="auto">RecentHomeCards + HomeFeedData：记住今天首页出现过的视频 id，上限 1500 个，24 小时后自动过期<br />
VideoGroup：只在 Home 和相关推荐这两个位置丢掉看过的，播放页、订阅、搜索完全不受影响<br />
每次刷新最多丢 40 张，避免整屏被丢空<br />
BrowsePresenter：首页缓存从 5 分钟缩到 60 秒；ShelfTail 原来一轮加不够规定张数就直接收工，现在允许再试 3 轮<br />
子模块 MediaServiceCore：匿名判定缓存从 30 分钟缩到 5 分钟，几个 topic 轮换着发</p>
<p dir="auto">核心逻辑就这两行：</p>
<pre><code class="language-java">if (freshHomeCard &amp;&amp; recent.shouldDrop(video.videoId)) return;  // 看过的直接不要
if (freshHomeCard) recent.record(video.videoId);                // 留下来的记下来
</code></pre>
<p dir="auto">三、效果</p>
<p dir="auto">同一个首页连刷四次，看前 12 张里真正新增了几张：原版是 12、2、1、0，打完补丁是 12、12、12、12。四次抓取总共能拿到的不同卡片只有 155 张，也就是说原版从第二次刷新起就在反复嚼同一批。</p>
<p dir="auto">四、开关在哪</p>
<p dir="auto">Settings -&gt; Tabs and feeds -&gt; Show new videos on Home，默认开着，关掉就是原版行为。</p>
<p dir="auto">五、说明</p>
<p dir="auto">未登录才是重灾区。登录状态下首页有多粘我没能复现出来（匿名接口返回首页是 0 张视频加一个引导卡片），所以这套改动对不登录使用的场景收益最大。搜索、订阅、播放页相关推荐的排序都没动，chip 分类那一套也没碰。</p>
<p dir="auto">APK 是 debug 版，包名带 .debug，可以和商店版并存，不用先卸载；架构 arm64-v8a，很老的 32 位机器装不上。SHA-256：c3cdb11ef99021db85a69ec3900528fcba583ade3e79857a43675d7c11e480de</p>
<p dir="auto">个人的 repo，欢迎指教<br />
fork 的原仓库（补丁在 main，一个 commit 9c862ef6）<br />
<a href="https://github.com/halonc/NewTuber" rel="nofollow ugc">https://github.com/halonc/NewTuber</a><br />
APK 下载页<br />
<a href="https://github.com/halonc/NewTuber/releases/tag/v1.17.1-fresh-home" rel="nofollow ugc">https://github.com/halonc/NewTuber/releases/tag/v1.17.1-fresh-home</a><br />
子模块也 fork 了（GitHub 的 fork 不带子模块内容，不 fork 编译不过）<br />
<a href="https://github.com/halonc/MediaServiceCore" rel="nofollow ugc">https://github.com/halonc/MediaServiceCore</a></p>
<pre><code></code></pre>
]]></description><link>https://lcz.me/topic/2886</link><generator>RSS for Node</generator><lastBuildDate>Tue, 10 Nov 2026 02:07:46 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2886.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Nov 2026 06:20:38 GMT</pubDate><ttl>60</ttl></channel></rss>