{"id":13431832,"url":"https://github.com/xfangfang/wiliwili","last_synced_at":"2025-05-13T22:03:47.938Z","repository":{"id":53582774,"uuid":"330355479","full_name":"xfangfang/wiliwili","owner":"xfangfang","description":"第三方B站客户端，目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上","archived":false,"fork":false,"pushed_at":"2025-04-09T06:22:32.000Z","size":27484,"stargazers_count":3873,"open_issues_count":55,"forks_count":171,"subscribers_count":21,"default_branch":"yoga","last_synced_at":"2025-04-10T16:42:04.876Z","etag":null,"topics":["bilibili","mpv","nanovg","nintendo-switch","nintendo-switch-homebrew","opencc","opengl","ps4","psv","xbox"],"latest_commit_sha":null,"homepage":"https://xfangfang.github.io/wiliwili","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xfangfang.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,"zenodo":null}},"created_at":"2021-01-17T09:27:58.000Z","updated_at":"2025-04-10T10:36:35.000Z","dependencies_parsed_at":"2024-02-26T11:51:21.395Z","dependency_job_id":"9b2c3fa5-ebef-4432-a715-871a765d24ea","html_url":"https://github.com/xfangfang/wiliwili","commit_stats":{"total_commits":853,"total_committers":15,"mean_commits":56.86666666666667,"dds":"0.11488862837045721","last_synced_commit":"5388a1035ba256839a7cb4c01686204b148b2cae"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xfangfang%2Fwiliwili","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xfangfang%2Fwiliwili/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xfangfang%2Fwiliwili/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xfangfang%2Fwiliwili/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xfangfang","download_url":"https://codeload.github.com/xfangfang/wiliwili/tar.gz/refs/heads/yoga","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251339454,"owners_count":21573729,"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","mpv","nanovg","nintendo-switch","nintendo-switch-homebrew","opencc","opengl","ps4","psv","xbox"],"created_at":"2024-07-31T02:01:06.321Z","updated_at":"2025-04-28T15:35:53.867Z","avatar_url":"https://github.com/xfangfang.png","language":"C++","funding_links":[],"categories":["第三方客户端","多媒体","C++","🎞️ Media"],"sub_categories":["直播脚本","B站","🎬 Video"],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"resources/svg/cn.xfangfang.wiliwili.svg\" alt=\"logo\" height=\"128\" width=\"128\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  一个专为手柄用户设计的第三方 \u003ca href=\"https://www.bilibili.com\"\u003eB站\u003c/a\u003e 客户端\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cb\u003e\u003ca href=\"#特点\"\u003e特点\u003c/a\u003e\u003c/b\u003e\n|\n\u003cb\u003e\u003ca href=\"#安装\"\u003e安装\u003c/a\u003e\u003c/b\u003e\n|\n\u003cb\u003e\u003ca href=\"#文档\"\u003e文档\u003c/a\u003e\u003c/b\u003e\n|\n\u003cb\u003e\u003ca href=\"#开发\"\u003e开发\u003c/a\u003e\u003c/b\u003e\n\u003c/p\u003e\n\n- - -\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/xfangfang/wiliwili)](https://github.com/xfangfang/wiliwili/releases)\n![GitHub All Releases](https://img.shields.io/github/downloads/xfangfang/wiliwili/total)\n![GitHub stars](https://img.shields.io/github/stars/xfangfang/wiliwili?style=flat)\n![GitHub forks](https://img.shields.io/github/forks/xfangfang/wiliwili)\n[![Crowdin](https://badges.crowdin.net/wiliwili/localized.svg)](https://crowdin.com/project/wiliwili)\n![NS](https://img.shields.io/badge/-Nintendo%20Switch-e4000f?style=flat\u0026logo=Nintendo%20Switch)\n![PSV](https://img.shields.io/badge/-PSVita-003791?style=flat\u0026logo=PlayStation)\n![PS4](https://img.shields.io/badge/-PS4-003791?style=flat\u0026logo=PlayStation)\n![MS](https://img.shields.io/badge/-Windows%207+-357ec7?style=flat\u0026logo=Windows)\n![mac](https://img.shields.io/badge/-macOS%2010.11+-black?style=flat\u0026logo=Apple)\n![Linux](https://img.shields.io/badge/-Linux-lightgrey?style=flat\u0026logo=Linux\u0026logoColor=white)\n[![fedora](https://img.shields.io/badge/fedora-copr-blue?logo=fedora)](https://copr.fedorainfracloud.org/coprs/mochaa/wiliwili/)\n[![Scoop Version (extras bucket)](https://img.shields.io/scoop/v/wiliwili?bucket=extras)](https://scoop.sh/#/apps?q=wiliwili)\n[![aur](https://img.shields.io/aur/version/wiliwili?color=blue\u0026logo=archlinux)](https://aur.archlinux.org/packages/wiliwili/)\n[![Flathub](https://img.shields.io/flathub/v/cn.xfangfang.wiliwili)](https://flathub.org/apps/cn.xfangfang.wiliwili)\n[![nightly.link](https://img.shields.io/badge/nightly.link-%E6%B5%8B%E8%AF%95%E7%89%88-green)](https://nightly.link/xfangfang/wiliwili/workflows/build.yaml/dev)\n[![layout](https://img.shields.io/badge/wiliwili-自定义布局-yellow)](https://github.com/xfangfang/wiliwili_theme)\n\n\u003cbr\u003e\n\n# 特点\n\nwiliwili 拥有非常接近官方PC客户端的B站浏览体验  \n同时支持**触屏**、**鼠标**、**键盘** 与 **手柄**操控  \n无论是电脑还是游戏掌机都能获得全新的使用体验\n\n多语言：简、繁、日、韩、英 ...   \n搜索页：热搜 视频 番剧 影视  \n筛选页：快速找到想看的影视内容  \n动态页：关注的UP主最近视频动态  \n直播页：关注的主播与其他系统推荐  \n播放页：视频 番剧 电影 纪录片 综艺，支持弹幕与评论  \n个人页：扫码登录 历史记录 个人收藏 我的追番 我的追剧  \n主题色：拥有深浅两色主题，跟随系统自动切换\n\n\u003cbr\u003e\n\n# 安装\n\n### Nintendo Switch\n\n1. 下载 `wiliwili-NintendoSwitch.zip`：[wiliwili releases](https://github.com/xfangfang/wiliwili/releases)\n2. 将 wiliwili.nro 放置在**内存卡** `switch` 目录下。\n3. 在主页 `按住` R键打开任意游戏进入 hbmenu，在列表中选择 wiliwili 点击打开即可。\n4. [可选] 在应用内安装桌面图标，入口：设置/实用工具/使用教程\n\n\u003cdetails\u003e\n\n\u003cbr\u003e\n\n桌面图标会优先尝试打开 `switch/wiliwili.nro`，如果其不存在，则尝试打开 `switch/wiliwili/wiliwili.nro`，如果这两个路径都不存在，则打开\nhbmenu 自行选择路径。\n\n默认提供的为 OpenGL 版本，最高只能播放 4k@30，你也可以下载到支持原生图形 api\n的 [deko3d 版本](https://nightly.link/xfangfang/wiliwili/workflows/build.yaml/dev)，可以流畅播放 4k@60，不过可能会偶尔崩溃。\n\n\u003c/details\u003e\n\n### PSVita\n\n下载 `wiliwili-PSVita.vpk` 安装即可：[wiliwili releases](https://github.com/xfangfang/wiliwili/releases)\n\n开启硬解后可以流畅播放 720P 横屏视频，480P 竖屏视频，部分直播 1080P 原画。\n\n### PS4\n\n下载 `wiliwili-PS4.pkg` 安装即可：[wiliwili releases](https://github.com/xfangfang/wiliwili/releases)\n\n只支持软解，如果想播放 4k@60 需要在设置中开启低画质解码。\n\n### PC\n\nPC客户端支持切换硬件解码、秒开流畅适合老电脑、支持鼠标操控（左键点击 右键返回 中键刷新）\n\n下载对应系统的安装包运行即可：[wiliwili releases](https://github.com/xfangfang/wiliwili/releases)\n\n\u003e [!TIP]\n\u003e 现在 Linux \u0026 Steam Deck 用户可以通过系统自带的软件商店（如Discover、GNOME Software）搜索 `wiliwili` 进行下载。  \n\u003e 更多使用技巧请参考 [项目 WIKI](https://github.com/xfangfang/wiliwili/wiki)  \n\n\u003cbr\u003e\n\n# 文档\n\n在各位开发者的帮助下，wiliwili 支持了一系列包管理器，同时 wiliwili 还拥有丰富的自定义选项，包括：使用 Anime4K\n提升观感，自定义字体及图标等等  \n前往 [项目 WIKI](https://github.com/xfangfang/wiliwili/wiki) 查看更多使用技巧\n\n\u003cbr\u003e\n\n# TODO list\n\n如果你有其他改进的想法或创意，欢迎在讨论区交流：[Discussions](https://github.com/xfangfang/wiliwili/discussions/categories/ideas)\n\n\u003cdetails\u003e\n\n- [x] 初步完成底层基础组件、首页各类推荐视频、用户视频播放页\n- [x] 微调页面、解决播放器启动速度慢、解决播放页面退出卡顿\n- [x] 临时解决异步加载导致的空指针问题（图片异步加载某些情况还会出现问题，待修复）\n- [x] 添加番剧/影视播放、添加扫码登录、播放历史、用户收藏夹（收藏夹相关部分工作不稳定）\n- [x] 初步添加搜索\n- [x] 播放页新增分集与UP主最新投稿\n- [x] 完善视频播放页用户评论内容\n- [x] 重构图片异步加载逻辑\n- [x] 解决收藏夹、搜索页某些情况导致闪退的问题\n- [x] 完善搜索页：番剧、影视 转为竖图\n- [x] 完善播放页投稿列表：调整结构、自动加载下一页\n- [x] 播放页展示合集与推荐\n- [x] 添加动态页\n- [x] 添加视频检索页\n- [x] 完善设置页\n- [x] 弹幕相关设置\n- [x] 点赞、投币、收藏\n- [x] 拖拽调节进度\n- [x] 增加单手模式使用一个手柄来控制播放器\n- [x] NSP forwarder自动检查多个位置的nro文件，避免无法打开\n- [x] 增加设置使首页无法通过返回退出，避免误触\n- [x] 使用教程添加未指明的快捷键说明\n- [x] 重压摇杆临时快进\n- [x] 支持切换按键图标\n- [x] 应用内多语言切换\n- [x] 重构搜索页面\n- [x] 评论@显示不同颜色\n- [x] 完善评论图片\n- [x] 评论大表情包所在行增加行高\n- [x] 支持webp图片\n- [ ] 搜索支持搜索用户\n- [ ] 长按一键三连\n- [ ] 支持个人主页\n- [ ] 评论跳转进度\n- [ ] 评论跳转搜索\n- [ ] 评论下方的更多信息 (up主点赞等内容)\n- [ ] 投票评论\n- [ ] 互动视频\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n# 反馈问题前要做的事\n\n1. 网络相关的问题附加 `网络诊断截图`，入口：应用内设置/实用工具/网络诊断\n2. [Switch用户] 要确保 `大气层`和`系统固件` 更新到 **最新** ，`内存卡`为 **FAT32**\n3. [Switch用户] 如果打开应用黑屏时间过长，可以尝试删除内存卡目录 `config/wiliwili` 重新进入\n4. 确保 `系统时间`正确、系统`网络设置`正确（主要是DNS）、如果使用了`网络代理`请在反馈前关闭并重新测试\n5. 查找有没有其他人出现过类似的问题：[Issues](https://github.com/xfangfang/wiliwili/issues?q=is%3Aissue)\n6. **完整且详细地** 描述你的问题，最好附加演示视频、截图。\n7. 尝试复现问题，尽力找到BUG出现的规律\n\n\u003cbr\u003e\n\n# 贡献\n\n### 软件移植\n\n本应用基于 nanovg 绘制界面，nanovg 底层可移植切换到任意图形库，已有 OpenGL/Vulkan/Metal 等支持。   \n视频播放部分则使用 FFMPEG + MPV 绘制，默认使用 OpenGL，有 D3D11/Deko3d/Gxm 或软件渲染支持。  \n触摸/按键/输入法等平台相关功能通过 GLFW 或 SDL 来支持，也可以脱离二者直接实现，比如 Gxm 版 PSV。\n\n如果你要移植的设备支持 OpenGL(ES) 那么一般来说，直接编译就能正常运行。  \n如果你要移植的设备使用其他底层图形库，那么首先需要移植 nanovg，这可以确保应用主要界面正常，\n其次为了更好的性能表现需要 ffmpeg 的硬解和 mpv 的渲染支持。  \n\n如果你有想要移植的设备欢迎发一条 issue 讨论，Android / iOS 不在讨论之内。\n\n### 新功能\n\n如果你有想完成的创意，请在开发前发布一个 issue 讨论，避免和别人的创意撞车浪费了时间\n\n### 多语言支持\n\n如果你想为软件添加多语言的翻译支持，或者发现了某些翻译存在问题需要订正，请查看 [#52](https://github.com/xfangfang/wiliwili/issues/52)\n了解如何贡献翻译\n\n### 代码分支\n\n主分支 yoga 为最新版本的代码  \n开发分支 dev 为正在开发中的代码，任何新的 PR 都需要向 dev 分支提交\n\n\u003cbr\u003e\n\n# 开发\n\n```shell\n# 拉取代码\ngit clone --recursive https://github.com/xfangfang/wiliwili.git\ncd wiliwili\n```\n\n### PC本地运行\n\n目前 wiliwili 支持运行在 Linux macOS 和 Windows上\n\n\u003cdetails\u003e\n\n#### macOS\n\n```shell\n# macOS: install dependencies\nbrew install mpv webp\n\ncmake -B build -DPLATFORM_DESKTOP=ON\nmake -C build wiliwili -j$(sysctl -n hw.ncpu)\n```\n\n#### Linux\n\n不同 Linux 的编译过程或依赖可能不同，这里是一份总结：[#89](https://github.com/xfangfang/wiliwili/discussions/89)\n\n欢迎在上面的链接中写出你所使用系统的编译过程供大家参考。\n\n```shell\n# Ubuntu: install dependencies\nsudo apt install libssl-dev libmpv-dev libwebp-dev\n\ncmake -B build -DPLATFORM_DESKTOP=ON\nmake -C build wiliwili -j$(nproc)\n```\n\n```shell\n# 如果你想安装在系统路径，并生成一个桌面图标，请使用如下内容编译\ncmake -B build -DPLATFORM_DESKTOP=ON -DINSTALL=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr\nmake -C build wiliwili -j$(nproc)\nsudo make -C build install\n\n# uninstall (run after install)\nsudo xargs -a build/install_manifest.txt rm\n```\n\n#### Windows\n\n```shell\n# Windows: install dependencies (MSYS2 MinGW64)\npacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-make \\\n  git mingw-w64-x86_64-mpv mingw-w64-x86_64-libwebp\n\ncmake -B build -G \"MinGW Makefiles\" -DPLATFORM_DESKTOP=ON\nmingw32-make -C build wiliwili -j$(nproc)\n```\n\n\n\u003c/details\u003e\n\n### 交叉编译 Switch 可执行文件 (wiliwili.nro)\n\n推荐使用docker构建，本地构建配置环境略微繁琐不过可用来切换底层的ffmpeg或mpv等其他依赖库更灵活地进行调试。\n\n\u003cdetails\u003e\n\n以下介绍 OpenGL 下的构建方法，deko3d (更好的硬解支持)请参考：`scripts/build_switch_deko3d.sh`\n\n#### Docker\n\n```shell\ndocker run --rm -v $(pwd):/data devkitpro/devkita64:20240202 \\\n  bash -c \"/data/scripts/build_switch.sh\"\n```\n\n#### 本地编译\n\n```shell\n# 1. 安装devkitpro环境: https://github.com/devkitPro/pacman/releases\n\n# 2. 安装依赖\nsudo dkp-pacman -S switch-glfw switch-libwebp switch-cmake switch-curl devkitA64\n\n# 3. 安装自定义依赖\n# devkitpro提供的提供的 ffmpeg/mpv 无法播放网络视频\n# 手动编译方法请参考：scripts/README.md\nbase_url=\"https://github.com/xfangfang/wiliwili/releases/download/v0.1.0\"\nsudo dkp-pacman -U \\\n    $base_url/switch-ffmpeg-7.1-1-any.pkg.tar.zst \\\n    $base_url/switch-libmpv-0.36.0-3-any.pkg.tar.zst\n\n# 4. build\ncmake -B cmake-build-switch -DPLATFORM_SWITCH=ON\nmake -C cmake-build-switch wiliwili.nro -j$(nproc)\n```\n\n\u003c/details\u003e\n\n### 交叉编译 PSV 可执行文件\n\n使用本地环境来编译可以参考：\n - [borealis 编译指南](https://github.com/xfangfang/borealis/wiki/PS-Vita)\n - [wiliwili vita 编译指南](https://gist.github.com/xfangfang/305da139721ad4e96d7a9d9a1a550a9d)\n\n注意: 我们使用自定义的 mbedtls, curl 和 ffmpeg 作为依赖, 在使用本地环境编译时，请先卸载 vitasdk 中的相关库，再安装[指定的](https://github.com/xfangfang/wiliwili/tree/yoga/scripts/psv)依赖.\n\n\u003cdetails\u003e\n\n```shell\n# 构建 OpenGL ES 2.0 版\ndocker run --rm -v $(pwd):/src/ xfangfang/wiliwili_psv_builder:latest \\\n    \"cmake -B cmake-build-psv -G Ninja -DPLATFORM_PSV=ON \\\n        -DMPV_NO_FB=ON -DUSE_SYSTEM_CURL=ON -DUSE_SYSTEM_SDL2=ON \\\n        -DCMAKE_BUILD_TYPE=Release \u0026\u0026 \\\n        cmake --build cmake-build-psv\"\n\n# 构建 Gxm 版 (推荐)\ndocker run --rm -v $(pwd):/src/ xfangfang/wiliwili_psv_builder:latest-gxm \\\n    \"cmake -B cmake-build-psv -G Ninja -DPLATFORM_PSV=ON \\\n        -DUSE_SYSTEM_CURL=ON -DUSE_GXM=ON -DUSE_VITA_SHARK=OFF \\\n        -DCMAKE_BUILD_TYPE=Release \u0026\u0026 \\\n        cmake --build cmake-build-psv\"\n```\n\n\u003c/details\u003e\n\n### 交叉编译 PS4 可执行文件\n\n使用本地环境来编译可以参考: \n - [PacBrew 环境安装](https://github.com/PacBrew/pacbrew-packages)\n - [borealis 编译指南](https://github.com/xfangfang/borealis/wiki/PS4)\n - [编译 wiliwili 依赖的第三方库](https://github.com/xfangfang/wiliwili/blob/dev/scripts/ps4/Dockerfile)\n\n\u003cdetails\u003e\n\n```shell\ndocker run --rm -v $(pwd):/src/ xfangfang/wiliwili_ps4_builder:latest \\\n    \"cmake -B cmake-build-ps4 -DPLATFORM_PS4=ON \\\n        -DMPV_NO_FB=ON \\\n        -DUSE_SYSTEM_CPR=ON \u0026\u0026 \\\n        make -C cmake-build-ps4 -j$(nproc)\"\n```\n\n\u003c/details\u003e\n\n### GLFW or SDL\n\nwiliwili 使用 nanovg 绘制图形和文字，对于创建窗口、按键触摸、输入法等支持是通过 GLFW(默认) 或 SDL 完成的。\n\n因为 GLFW 支持平台有限，在移植到新平台时可以使用 SDL 或者自行实现上述对应接口。\n\n```shell\n# 示例\ncmake -B build -DPLATFORM_DESKTOP=ON -DUSE_SDL2=ON\ncmake --build build\n```\n\n\u003cbr\u003e\n\n# 应用截图\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/images/screenshot-3.jpg\" alt=\"screenshot\"\u003e\n\u003cimg src=\"docs/images/screenshot-4.jpg\" alt=\"screenshot\"\u003e\n\u003c/p\u003e\n\n# Acknowledgement\n\nThe development of wiliwili cannot do without the support of the following organization and open source projects.\n\n- Toolchain: devkitpro, switchbrew, vitasdk OpenOrbis and PacBrew\n    - https://github.com/devkitPro\n    - https://github.com/switchbrew/libnx\n    - https://github.com/vitasdk\n    - https://github.com/OpenOrbis\n    - https://github.com/PacBrew\n- UI Library: natinusala and XITRIX\n    - https://github.com/natinusala/borealis\n    - https://github.com/XITRIX/borealis\n- Video Player: Cpasjuste, proconsule, fish47 and averne\n    - https://github.com/Cpasjuste/pplay\n    - https://github.com/proconsule/nxmp\n    - https://github.com/fish47/FFmpeg-vita\n    - https://github.com/fish47/mpv-vita\n    - http://github.com/averne/FFmpeg\n    - http://github.com/averne/mpv\n- Misc\n    - https://github.com/libcpr/cpr\n    - https://github.com/nlohmann/json\n    - https://github.com/nayuki/QR-Code-generator\n    - https://github.com/BYVoid/OpenCC\n    - https://github.com/imageworks/pystring\n    - https://github.com/sammycage/lunasvg\n    - https://github.com/cesanta/mongoose\n    - https://chromium.googlesource.com/webm/libwebp\n    - https://github.com/fancycode/MemoryModule\n\n# Special thanks\n\n- Thanks to Crowdin for supporting [open-source projects](https://crowdin.com/page/open-source-project-setup-request).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxfangfang%2Fwiliwili","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxfangfang%2Fwiliwili","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxfangfang%2Fwiliwili/lists"}