{"id":13432211,"url":"https://github.com/cctyl/BiliRecommBehaviorCorrection","last_synced_at":"2025-03-16T23:30:54.496Z","repository":{"id":176657649,"uuid":"656427309","full_name":"cctyl/BiliRecommBehaviorCorrection","owner":"cctyl","description":"基于黑白名单规则实现的bilibili个性化推荐的纠正","archived":false,"fork":false,"pushed_at":"2025-02-07T12:58:48.000Z","size":37405,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T03:24:02.642Z","etag":null,"topics":["bilibili","bilibili-api","java","springboot","vue"],"latest_commit_sha":null,"homepage":"https://www.bilibili.com/video/BV124ASeJEzW/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cctyl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-21T00:08:27.000Z","updated_at":"2025-03-09T01:54:20.000Z","dependencies_parsed_at":"2023-11-06T03:30:53.903Z","dependency_job_id":"d49e3c03-e002-43f3-a206-09854abef483","html_url":"https://github.com/cctyl/BiliRecommBehaviorCorrection","commit_stats":null,"previous_names":["cctyl/bilirecommbehaviorcorrection"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cctyl%2FBiliRecommBehaviorCorrection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cctyl%2FBiliRecommBehaviorCorrection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cctyl%2FBiliRecommBehaviorCorrection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cctyl%2FBiliRecommBehaviorCorrection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cctyl","download_url":"https://codeload.github.com/cctyl/BiliRecommBehaviorCorrection/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243949831,"owners_count":20373653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bilibili","bilibili-api","java","springboot","vue"],"created_at":"2024-07-31T02:01:09.453Z","updated_at":"2025-03-16T23:30:54.489Z","avatar_url":"https://github.com/cctyl.png","language":"Java","funding_links":[],"categories":["其他"],"sub_categories":["直播脚本"],"readme":"\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./assets/img/logo.png\" width=\"480\" height=\"235\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003ebilibili视频推荐纠正\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/cctyl/BiliRecommBehaviorCorrection/issues\" style=\"text-decoration:none\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/issues/cctyl/BiliRecommBehaviorCorrection.svg\" alt=\"GitHub issues\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/cctyl/BiliRecommBehaviorCorrection/stargazers\" style=\"text-decoration:none\" \u003e\n        \u003cimg src=\"https://img.shields.io/github/stars/cctyl/BiliRecommBehaviorCorrection.svg\" alt=\"GitHub stars\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/cctyl/BiliRecommBehaviorCorrection/network\" style=\"text-decoration:none\" \u003e\n        \u003cimg src=\"https://img.shields.io/github/forks/cctyl/BiliRecommBehaviorCorrection.svg\" alt=\"GitHub forks\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n# 目录\n\n- [前言](#前言)\n- [核心原理](#核心原理)\n- [功能及特色](#功能及特色)\n- [界面概览](#界面概览)\n- [下载与运行](#下载与运行)\n- [快速开始](#快速开始)\n- [开发相关](#开发相关)\n- [后续开发计划](#后续开发计划)\n- [致谢](#致谢)\n# 前言\n\n[后端地址项目地址](https://github.com/cctyl/BiliRecommBehaviorCorrection)\n[web端地址项目地址](https://github.com/cctyl/bili-rec-web)\n\n[android端项目地址（暂时废弃，等后续重构）](https://github.com/cctyl/BiliRecommBehaviorCorrectionAndroid)\n\n***~~号养好了？~~* 不要推荐我不喜欢的东西了！**\n\n用bilibili时间一长，就会发现bilibili的用户推荐，就是鱼的记忆。\n稍微隔几天不看这一类视频，它就完全不给你推送了，\n\n例如，我喜欢看猫猫视频，但是我觉得有个视频不好看，点踩了。那么bilibili会减少所有与猫有关的推荐。\n\n又比如，我不喜欢某个视频，这个视频内容是其他分区的，但是下方挂的标签是搞笑分区，那么当我点踩以后\nbilibili就会减少搞笑分区的投稿。\n\n再举一个例子，我喜欢看单机游戏视频，但是有几个游戏的我不喜欢，或者说某个up主的视频我不喜欢，\n于是我就点踩了几次，结果bilibili大幅度减少了单机游戏视频的推荐，这让我难以接受。\n\n如果你想要反馈具体原因，只能去首页的推荐视频里反馈。其他渠道的视频无法详细反馈。\n\n而用户获取新视频的途径大部分来源于首页推荐、热门视频、排行榜等，这就人为的制造了知识盲区，\n在这个范围外的消息你无法收到，你的消息来源是被控制的。\n除非你主动搜索，否则你永远也不知道圈子之外还有什么东西。\n\n所以出现了这个项目，我们直接利用bilibili本身的推荐算法，编写了一个SpringBoot 程序。\n启动后程序会定时 主动对关键词列表进行搜索、点赞、播放。对不喜欢的视频进行点踩\n每天重复一次，相当于提醒bilibili，告诉它我们喜欢什么不喜欢什么。\n如果哔哩哔哩的推荐算法没有问题的情况下，纠正一段时间效果就很明显。\n\n\n**谁说互联网没有记忆**\n把你希望关注的东西加入到搜索关键词当中\n\n# 核心原理\n一句话：抓取视频，根据黑白名单规则进行点赞、点踩，从而纠正bilibili的推荐算法\n流程图如下：\n![流程图.png](design/%E6%B5%81%E7%A8%8B%E5%9B%BE.png)\n\n\n# 功能及特色\n1. 主动搜索设定的关键字，从而告知bilibili喜好\n2. 支持热门排行榜数据抓取\n3. 支持首页推荐视频数据抓取\n4. 多种视频识别方式\n- 标题关键字识别\n- 视频描述识别\n- 视频标签识别\n- 视频分区识别\n- up主id识别\n- 视频封面识别\n5. 支持黑白名单\n6. 训练模式\n   输入一个白名单规则，再输入一串你认为应当符合该规则的视频，会自动补充该规则，直到匹配大部分输入的数据\n7. 逻辑上扩充bilibili黑名单（开发中）\n\n   人为的增加bilibili黑名单，黑名单用户回复我的消息，全部自动删除。\n\n8. android客户端（开发中）\n9. web客户端\n10. docker支持（开发中）\n11. 视频评论保存（查water表、训练等用途）\n\n# 界面概览\n![01-2.png](assets/img/example/01-2.png)\n![01.png](assets/img/example/01.png)\n![02-1.png](assets/img/example/02-1.png)\n![02-2.png](assets/img/example/02-2.png)\n![02-3.png](assets/img/example/02-3.png)\n![02-4.png](assets/img/example/02-4.png)\n![02-5.png](assets/img/example/02-5.png)\n![03.png](assets/img/example/03.png)\n![04.png](assets/img/example/04.png)\n![05.png](assets/img/example/05.png)\n![06-2.png](assets/img/example/06-2.png)\n![06.png](assets/img/example/06.png)\n![07-1.png](assets/img/example/07-1.png)\n![07-2.png](assets/img/example/07-2.png)\n![07-3.png](assets/img/example/07-3.png)\n![08.png](assets/img/example/08.png)\n\n\n\n\n# 下载与运行\n## win用户\n[下载](https://github.com/cctyl/BiliRecommBehaviorCorrection/releases),解压，双击 运行.bat,\n浏览器打开 [http://127.0.0.1:9000](http://127.0.0.1:9000)即可。\n\n注：浏览器是可关闭的，但是黑窗口不要关闭\n\n## linux用户\n安装jdk21，然后执行 `java -jar -Xmx150m BiliRecommBehaviorCorrection-1.0-SNAPSHOT.jar` 即可\n\n# 快速开始\n### 1.登陆\n打开页面后，选择系统配置，在弹出的窗口中进行扫码登陆，手机上确认后，点击我已完成扫码，完成登陆。\n![howtologin.png](assets/img/howtologin.png)\n\n### 2.设置白名单关键词\n若视频匹配白名单规则，则会点赞、播放\n![whiterulesetting.png](assets/img/whiterulesetting.png)\n\n### 3.设置黑名单关键词\n若视频匹配黑名单规则，则会点踩\n![blacksetting.png](assets/img/blacksetting.png)\n\n### 4.设置搜索关键词\n这部分关键词会被主动搜索，也是三个数据来源之一。十分关键\n![searchkeywordsetting.png](assets/img/searchkeywordsetting.png)\n\n### 5.等待任务被定时运行即可\n![taskschdulesee.png](assets/img/taskschdulesee.png)\n\n\n# 开发相关\n### 后端技术栈\n- JDK 21\n- SpringBoot 3.1.2\n- mybatis-plus\n- sqlite\n- flyway\n- grpc\n- 结巴分词\n\n### 前端技术栈\n- vue2\n- echart\n\n# 后续开发计划\n功能    | 功能描述                                             |  开发进度 \n-------- |--------------------------------------------------| -----\n增加web调试接口 | 提供http的方式，用于本地调试时添加关键词黑白名单                       | 完成\n整合protobuf | 添加基于grpc的api 调用                                  | 完成\n关键词同义词分析 | 对标题进行分词，生成同义词，再与关键词匹配，从而减少匹配误差                   | 尚未开始\n 与[vchat](https://github.com/cctyl/v_chat)联动 | 基于vchat进行消息推送、日志记录、指令发送                          | 取消了，创建单独的客户端\n编写[Greasyfork](https://greasyfork.org/zh-CN/users/416601-cctyl  ) 配套脚本| 基于脚本，实现在web端指定视频：关键词添加、up主id添加、点踩与点赞、分区添加、标签添加   | 尚未开始\ntensorflow 进行图像识别  | 使用tensorflow 模型代替百度api 进行本地图像识别调用                | 尚未开始\n与[FakeBili](https://github.com/cctyl/FakeBiliBili)联动 | 在FakeBilibili客户端增加 关键词添加、up主id添加、点踩与点赞、分区添加、标签添加 | 尚未开始，等待FakeBili项目启动\nandroid 客户端 | 提供总览、任务操作、日志查看、视频处理等功能                           | 进行中\nweb 客户端 | 提供总览、任务操作、日志查看、视频处理等功能                           | 尚未开始\nsqlite替换redis | 尽可能减轻过多的依赖，使用嵌入式的sqlite代替                        | 进行中\n黑名单用户回复我消息自动删除 | 逻辑上扩充bilibili黑名单                                 | 准备开始\n\n# 致谢\n- [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect/) 提供了大部分的 Bilibili Api\n- [copilot](https://github.com/copilot) 80%的前端代码由copilot完成\n- [莫高设计](https://mastergo.com/) 前端ui均由莫高ai设计\n- [jetbrains](https://www.jetbrains.com/) jetbrains 公司提供了免费的IDE授权","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcctyl%2FBiliRecommBehaviorCorrection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcctyl%2FBiliRecommBehaviorCorrection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcctyl%2FBiliRecommBehaviorCorrection/lists"}