ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Return YouTube Dislike 开放 API 实战指南:恢复 YouTube 不喜欢计数的数据获取、限流策略与扩展工作原理

Return YouTube Dislike 开放 API 实战指南:恢复 YouTube 不喜欢计数的数据获取、限流策略与扩展工作原理 开发工具【免费下载链接】return-youtube-dislikeChrome extension to return youtube dislikes项目地址https://gitcode.com/gh_mirrors/re/return-youtube-dislike点击查看免费下载本文以仓库根目录的 READMEvi.md项目官方越南语 README内容与英文版 README.md 一致为核心骨架结合 Extensions/combined/src 下的扩展源码与 Docs/FAQ.md 官方问答完整讲解 Return YouTube Dislike 项目的背景、数据推算原理、开放 API 的调用方式与限制以及浏览器扩展在底层如何消费这些 API。读完本文你将掌握如何用/votes端点查询任意 YouTube 视频的不喜欢计数、理解限流与错误状态码的处理策略并看清扩展端从注册、投票到渲染的完整数据链路。项目背景为什么需要恢复不喜欢计数2021 年 11 月 10 日Google 官方宣布移除 YouTube 上公开的不喜欢计数随后在 2021 年 12 月 13 日YouTube API 也正式删除了dislike字段。这意味着第三方开发者与普通用户都失去了在观看视频前评估内容质量的客观依据。Return YouTube Dislike下文简称 RYD正是针对这一变化诞生的开源项目它以浏览器扩展Chrome / Firefox Web Extension为主要形态同时以 JS Userscript 形式支持其他浏览器目标是在 YouTube 界面上重新显示被隐藏的不喜欢数量。项目的扩展源码位于 Extensions/combined内容脚本入口为 ryd.content-script.js后台脚本为 ryd.background.js。工作原理抓取数据 用户数据外推由于 YouTube API 不再提供不喜欢统计RYD 的后端转向了两种数据来源的组合抓取的存量不喜欢数据scraped dislike stats——在 YouTube 移除该数据前归档保存的历史记录从扩展用户数据外推的估计值estimates extrapolated from extension user data——利用安装了扩展的用户主动提交的投票样本推算全局的不喜欢数量。根据 Docs/FAQ.md 的官方说明具体推算逻辑为对于在 API 关闭之后上传的视频RYD 不喜欢数 (RYD 用户不喜欢数 / RYD 用户喜欢数) × 公开喜欢数如果 RYD 数据库恰好保存了真实的喜欢/不喜欢数来自上传者提供或历史归档则最终结果会同时基于用户投票与归档值计算且归档值随时间推移对最终结果的影响力逐渐减弱。数据缓存与更新方面Docs/FAQ.md 明确指出视频的不喜欢数据会被缓存大约每 23 天更新一次不会更频繁当一个视频 ID 第一次被 API 查询时后端会通过 YouTube API 获取数据并存入数据库用于缓存与归档随后直接返回给请求方。如果某视频在归档关闭后仍未被收录后端则会退化为基于观看/喜欢比例的估算。开放 API 使用规范署名与限流RYD 将后端 API 作为开放 API 提供给第三方使用但附带两条明确限制这也是原文档的核心内容必须严格遵守限制项具体要求署名Attribution第三方使用必须清晰标注本项目并附上项目官网 returnyoutubedislike.com 的链接限流Rate Limiting每个客户端每分钟 100 次请求、每天 10,000 次请求超出后返回429Too Many Requests状态码表示客户端应主动退避back offAPI 的基础路径Base URL为https://returnyoutubedislikeapi.com全部可用端点的列表Swagger 文档位于https://returnyoutubedislikeapi.com/swagger/index.html这一 Base URL 在扩展源码中也有对应定义见 config.js 中的PROD_API_URL常量且开发环境与生产环境使用同一地址getApiEndpoint 负责拼接端点路径。查询点赞/点踩数据/votes 端点GET 单个视频使用某个 YouTube 视频 ID 查询其不喜欢计数的调用方式为Base URL/votes?videoIdkxOuG8jMIgI即完整的请求为https://returnyoutubedislikeapi.com/votes?videoIdkxOuG8jMIgI原文档越南语版给出的响应示例{ id: kxOuG8jMIgI, dateCreated: 2021-12-20T12:25:54.418014Z, likes: 27326, dislikes: 498153, rating: 1.212014408444885, viewCount: 3149885, deleted: false }英文版 README.md 中的响应示例字段更完整多出rawDislikes与rawLikes两个原始采样字段{ id: kxOuG8jMIgI, dateCreated: 2022-04-09T21:44:20.5103Z, likes: 31885, rawDislikes: 31946, rawLikes: 457, dislikes: 579721, rating: 1.2085329444119253, viewCount: 3762293, deleted: false }字段语义对照如下字段含义id对应的 YouTube 视频 IDdateCreated该条投票记录的创建时间ISO 8601UTClikes该视频的喜欢数rawDislikes/rawLikes从 RYD 用户群体收集到的原始投票样本数未外推dislikes推算/归档后的不喜欢总数即最终展示给用户的值rating喜欢/不喜欢比例相关的评分值viewCount视频观看次数deleted该视频数据是否已被删除/标记删除错误状态码查询一个不存在的视频 ID时返回404Not Found / Không Tìm thấy。查询一个格式非法的视频 ID时返回400Bad Request / Yêu cầu Không hợp lệ。触发限流时返回429Too Many Requests。源码中的实际调用votes 端点如何被扩展消费扩展内容脚本在 state.js 的setState函数中发起真实请求请求格式为let response await fetch(getApiEndpoint(/votes?videoId${videoId}likeCount${likeCount || }), { method: GET, headers: { Accept: application/json }, })可以看到扩展端实际还额外携带了likeCount查询参数取自页面上原生喜欢按钮的文本解析结果见getLikeCountFromButton用于让后端结合真实的公开喜欢数提高推算精度响应中若出现traceId字段如traceId in response则视为错误响应并被过滤随后调用processResponse完成数字格式化、渲染与比例条绘制。比例条rate bar的完整渲染逻辑见 bar.js它根据likes / (likes dislikes)计算百分比并支持coloredBar、showTooltipPercentage、tooltipPercentageMode等配置项。另外后台脚本 ryd.background.js 中还包含一个POST /votes的批量上报调用当累积的视频 ID 达到 20 个时将数组以 JSON 请求体批量发送用于扩展侧的数据回传与归档。扩展端数据链路的其余关键 API从 ryd.background.js 的源码可以看出除了公开的/votes之外扩展还使用以下端点完成身份注册与投票上报这些属于扩展内部机制未在 README 中对外承诺仅供理解数据链路端点方法用途/puzzle/registration?userId...GET / POST注册匿名用户 ID采用工作量证明PoW谜题防滥用客户端用 SHA-512 哈希求解见solvePuzzle函数/interact/votePOST提交用户对某视频的喜欢/不喜欢投票含userId、videoId、value/interact/confirmVotePOST投票谜题解出后二次确认投票/configs/selectorsGET拉取 YouTube 页面 DOM 选择器的远程配置用于适配 YouTube 界面改版见 state.js上述匿名注册机制配合投票需解谜题的设计构成了防刷与限流的客户端配合部分与 API 侧的 100 次/分钟、10,000 次/天限流互为补充。为什么不喜欢计数如此重要不喜欢计数是用户在观看前判断视频质量、教程有效性、产品口碑的重要信号。RYD 项目的存在价值在于即便官方移除了这一指标通过社区数据归档与统计外推仍然可以恢复接近真实的评价维度。更多背景信息可在项目官网returnyoutubedislike.com查阅。从源码理解扩展的完整展示流程结合 ryd.content-script.js 与 state.js扩展端一次完整的展示流程可以归纳为页面加载后内容脚本通过轮询111ms 间隔等待视频按钮渲染完成同时监听yt-navigate-finish事件处理 SPA 内导航通过setInitialState()读取本地配置initExtConfig会先从远程拉取选择器配置并与内置默认值合并默认选择器见 state.js从 URL 解析视频 ID调用/votes?videoId...likeCount...获取数据将dislikes用numberFormat格式化后写入页面按钮文本setDislikes如启用numberDisplayReformatLikes还会重排喜欢数格式调用createRateBar绘制喜欢/不喜欢比例条与悬浮提示tooltip若用户点击了喜欢/不喜欢通过事件监听与sendVote将投票匿名上报回后端受disableVoteSubmission配置控制关闭后图标会切换为icon_hold128.png。其中步骤 2 拉取到的远程选择器配置与本地DEFAULT_SELECTORS通过mergeConfig深度合并这保证了 YouTube 前端改版时扩展无需发版即可适配。常见问题速览来自官方 FAQ以下要点摘自 Docs/FAQ.md与 README 的工作原理解释互为印证数据来源Google API 与抓取数据的组合所有可用数据会存入数据库以便在官方 API 完全关闭后仍可提供服务。为什么不喜欢计数不更新数据有缓存约每 23 天更新一次并非实时。隐私/安全顾虑详见仓库根目录的 SECURITY-FAQ.md。多语言版本见 Docs 目录含中文 FAQcn.md、SECURITY-FAQcn.md 等。安装方式与更多资源安装指南见 Docs/Guide__Installing.md含越南语版 Guide__Installingvi.md。排障指南见 Docs/Guide__Troubleshooting.md。Userscript 版本可直接使用的脚本位于 Extensions/UserScript/Return Youtube Dislike.user.js。多浏览器 ManifestChrome、Firefox、Safari 分别对应 manifest-chrome.json、manifest-firefox.json、manifest-safari.json。贡献指南见仓库根目录的 CONTRIBUTING.md多语言版本位于根目录。项目许可GPLv3见 LICENSE。小结围绕恢复 YouTube 不喜欢计数这一核心目标RYD 通过开放 API 提供了可查询视频不喜欢数据的/votes端点并明确了署名与限流100 次/分钟、10,000 次/天、429 退避的使用边界其扩展端则在源码层面完整实现了从匿名注册、投票上报、远程选择器配置到比例条渲染的闭环。第三方开发者既可以按本文所述直接消费公开 API也可以阅读 Extensions/combined/src 与 Docs/FAQ.md 深入了解数据推算与缓存策略将这一社区数据能力集成到自己的工具中。赞分享开发工具【免费下载链接】return-youtube-dislikeChrome extension to return youtube dislikes项目地址https://gitcode.com/gh_mirrors/re/return-youtube-dislike点击查看免费下载相关推荐Return YouTube Dislike 开放 API 使用指南基于 RYD 扩展数据恢复 YouTube 点踩计数Return YouTube Dislike 开放 API 使用指南基于 RYD 扩展数据恢复 YouTube 点踩计数 Return YouTube Dis开发工具Return YouTube Dislike 开放 API 实战指南恢复 YouTube 踩数背后的数据接口与实现原理Return YouTube Dislike 开放 API 实战指南恢复 YouTube 踩数背后的数据接口与实现原理 Return YouTube Disl开发工具Return YouTube Dislike 开放 API 接入指南工作原理、投票数据获取与速率限制详解Return YouTube Dislike 开放 API 接入指南工作原理、投票数据获取与速率限制详解 本文以仓库根目录下的 READMEcn.md htt开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表