《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Koel是一个基于 Web 的个人音频流服务,客户端用 Vue 编写,服务器端用 Laravel 编写。
针对 Web 开发人员,Koel 采用了一些更现代的 Web 技术来完成其工作。
Koel 有两个组件,每个组件都有自己的一组要求:
服务器
客户
任何常青浏览器都可以——Koel 已经在 Chrome 47、Firefox 42、Safari 8、Opera 34 和 Edge 上进行了测试。
安装和开始使用 Koel 的方法有以下三种:
使用预编译的存档
从 v5.0.0 开始,Koel 支持从预编译存档安装,无需手动编译前端资产。
首先,转到GitHub 上的Releases 页面.tar.gz,下载“Assets”下的或.zip文件,然后将其解压缩到目标 Web 根目录。从那里,运行以下两个命令:
php artisan koel:init --no-assets # Populate necessary configurations during the processphp artisan serve
从源头构建
在您的控制台中,运行以下命令:
cd git clone https://github.com/koel/koel.git .git checkout latest # Check out the latest version at https://github.com/koel/koel/releasescomposer installphp artisan koel:init # Populate necessary configurations during the processphp artisan serve
在这两种情况下,您现在应该可以在浏览器中访问http://localhost:8000并开始使用 Koel。
如果您想要更多控制权,请编辑.env文件。那里有很多设置可以根据您的需要调整 Koel。
使用 Docker
Koel 有一个官方的 Docker 镜像:koel/docker。还提供社区支持的图像,例如0xcaff/koel和binhex/arch-koel。
音乐发现
Koel 有多种方法可以发现您的媒体文件。您可以手动扫描歌曲、配置观察程序、使用 Amazon S3 托管文件或直接使用 Web 界面上传文件。
使用网络界面扫描
将您的歌曲上传到您服务器上的可读目录中——最好是在您的 web 根目录之外——并通过在管理 ▸ 设置下设置“媒体路径”来配置 Koel 以扫描和同步它。
使用 CLI 扫描
koel:sync您还可以使用 artisan命令从 CLI 进行扫描——速度更快,没有时间限制,并提供有用的反馈:
$ php artisan koel:sync INFO Scanning /Users/an/Personal/koel/media. 1189/1189 [============================] 100% INFO Scanning completed! ⇂ 0 new or updated song(s) ⇂ 1189 unchanged song(s) ⇂ 0 invalid file(s)
使用标志为命令添加后缀以-v获取更多详细信息,例如同步错误。
可以将此命令添加为 cron 作业,例如在每个午夜运行:
0 0 * * * cd /home/user/webapps/koel/ && /usr/local/bin/php artisan koel:sync >/dev/null 2>&1
截至目前,Koel 可以识别以下音频扩展:.mp3、.ogg、.aac、.m4a、.opus、 和.flac(实验性但有一些限制)。将来可能会添加其他内容。
Koel 支持三种流式传输方法,可以通过文件中的STREAMING_METHOD设置进行配置.env:
LoadModule xsendfile_module libexec/apache2/mod_xsendfile.so# These configuration can be put in the VirtualHost directive as well XSendFile on XSendFilePath /mnt/media
使用 Koel 的客户端组件应该很简单。如果您曾经使用过 Spotify,那么您应该有宾至如归的感觉。事实上,Koel 的客户端界面是对 Spotify 的无耻抄袭。您可以搜索,可以排序,可以按艺术家或专辑查看,可以创建播放列表,可以喜欢/不喜欢歌曲,还可以创建其他用户来分享氛围。书呆子也有几个快捷键:
使用支持MediaSession的浏览器,您可以使用硬件媒体密钥控制 Koel,甚至无需关注 Koel或浏览器。
从 v5.0.0 开始,Koel 提供了即时搜索功能,可以对您的歌曲、专辑和艺术家数据库执行全文、模糊搜索。默认情况下,Koel 使用不需要配置的TNTSearch 引擎。您还可以通过将这些详细信息填充到以下内容中来使用Algolia.env:
SCOUT_DRIVER=algoliaALGOLIA_APP_ID=ALGOLIA_SECRET=
同样,您可以通过以下配置使用Meilisearch :
SCOUT_DRIVER=meilisearchMEILISEARCH_HOST=MEILISEARCH_KEY=
如果您从旧版本升级 Koel,您还必须通过运行以下命令手动创建搜索索引:
php artisan koel:search:import
对音乐数据库的所有后续更新都将自动同步。
Koel 支持多种主题。您可以预览并从“个人资料和首选项”屏幕中选择一项。请注意,主题不会跨设备保留,因为它们使用浏览器的本地存储。
上传艺术家和专辑图片
您可以通过将图像拖放到艺术家/专辑卡中的当前图像中来更改艺术家和专辑图像。
用户管理
Koel 支持多个用户。用户可以是具有管理权限(用户和媒体管理)的管理员,也可以是标准管理员。截至目前,所有用户共享同一个库(尽管播放列表、收藏夹和其他统计数据都是私有的)。将来可能会考虑全面的多租户支持。
遥控器
从 v3.7.0 开始,Koel 有一个(移动)遥控器,可让您控制桌面实例——播放/暂停、导航、调高/调低音量以及从收藏夹中添加/删除。
为了使用该功能:
运行本地网络服务器
一次性启动 PHP 服务器和客户端应用程序yarn dev,用于管理vite和 Laravel:start-server-and-test
$ yarn dev vite v2.9.13 dev server running at: > Local: http://localhost:3000/ > Network: use `--host` to expose ready in 761ms. Laravel v9.22.1 > APP_URL: http://localhost
Koel 的开发版本现在应该可以在http://localhost:8000完全支持 HMR 的情况下使用。
测试、代码检查、静态分析和其他东西
# PHP-related code quality tasks# Basically, take a look at the "scripts" section in composer.jsoncomposer test # Run the PHP test suitecomposer cs # Run code style checkercomposer cs:fix # Run code style fixercomposer analyze # Run PHP static analysisyarn build # Build a production version of the client application# Client/E2E code quality tasks# You may want to run `yarn build` first.yarn test:e2e # Run the Cypress test suite interactivelyyarn test:e2e:ci # Run the Cypress test suite non-interactively (CI mode)# These commands need to be run from within the submodule (resources/assets)yarn lint # Lintyarn type-check # TypeScript type checkingyarn test # Unit testing
—END—
开源协议:MIT License
开源地址:https://github.com/koel/koel
留言与评论(共有 0 条评论) “” |