液体肥皂收音机的配套应用

showergel的Python项目详细描述


沐浴露是用来放在一边的Liquidsoap: 当Liquidsoap脚本创建一个无线流时, 淋浴凝胶提供了补充功能,如日志记录或临时调度, 有一个(极简主义)网络界面。 它是为了运行在一个Linux机器上(带有systemd),专用于您的无线流。在

该项目仍处于初级阶段-我们欢迎这两项贡献 和评论,请随时在“问题”选项卡中开始讨论。在

设计

Showergel是一个轻量级的程序,可以在liquiddisap实例上永久运行。 它通过telnet服务器与LiquidSoap通信, 通过HTTP与外界联系。在

我们假设大部分程序时间应该由Liquidsoap脚本处理, 通常在音乐文件夹上使用random运算符 或者使用switch来安排常规的预录制节目。在

换言之,你仍然需要为自己编写适合你收音机的Liquidsoap脚本。 我们只举几个例子, 介绍Liquidsoap的基础知识和Showgel的集成。在

沐浴露是为社区和慈善电台设计的。 因此,我们将保持它的小而简单:

  • 沐浴露与Liquidsoap在同一台机器上运行。在
  • 它依赖Python3的SimpleHTTPRequestHandler,因为它足够了 为单个流提供接口, 它让我们把所有的事情都放在一个过程中。在
  • 因为有一个支持无线电波流的数据库,所以Showergel的数据存储在SQLite中 通常重几十兆字节。在
  • 调度被委托给APScheduler…他还需要SQLAlchemy来 访问SQLite,所以我们也使用SQLAlchemy。在
  • 沐浴露不会保存您的音乐和节目集。 关于这个问题,我们建议Beets, 您可以在中找到它与Liquidsoap集成的示例 Liquidsoap documentation。在

淋浴凝胶只在Linux下测试过。在

许可证:GPL3。在

安装

通过运行pip install showergel安装程序。在

通过调用showergel_install运行交互式安装程序。 它将在终端上解释发生了什么以及从这里开始做什么。 如果您坚持默认设置,安装程序将:

  • 创建数据库(showergel.db) 以及当前目录中的配置文件(showergel.ini
  • 创建一个名为showergel的systemd用户服务; 换句话说,你可以systemctl --user status|start|stop|restart showergel。在
  • 启用服务和systemd的lingering,这样Showergel将在启动时自动启动。在
  • 安装后,沐浴露将在http://localhost:1234/处提供。在

安装程序的问题允许您:

  • 更改systemd服务的名称和DB/配置文件的名称。 如果您想运行多个ShowGel实例,这很有用,因为 从同一台机器上广播多个节目。 例如,响应radio将创建radio.dbradio.iniradio服务。在
  • 如果您更喜欢自己启动沐浴露,请跳过服务创建。在
  • 为Liquidsoap脚本创建另一个systemd用户服务, 因此systemd将自动启动所有内容(建议这样做)。 注意,在这种情况下,安装程序使用 相同的基名:例如, radio_gel(与radio关联的淋浴凝胶服务) 和radio_soap(为radio提供的Liquidsoap脚本)。在

配置

请参阅安装程序创建的.ini文件中的注释。在

发展

依赖、安装和包装由Poetry完成。 一旦安装了诗歌, 创造一个Python环境, 激活它,然后从这个存储库的克隆运行poetry install。在

开发时,应该手动启动Liquidsoap脚本和Showergel。 运行showergel_install --dev创建一个空数据库(showergel.db) 和一个基本配置文件(showergel.ini) 在当前文件夹中。 阅读(或者编辑)showergel.ini, 启动liquidisoap,然后运行showergel showergel.ini。 你很可能会想要埃娜通过设置^{tt24}启用详细日志$ 在ini文件的logger_root部分。在

^{tt26}的自定义身份验证$

这将被移动到HTTP端点

showergel/harbor_auth.py是一个独立的脚本 它可以支持input.harbor的自定义身份验证函数, 每个用户都有自己的密码。 请参阅脚本docstring中的文档。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven字段#getGenericType()抛出java。lang.TypeNotPresentException   用java绘制三角形的几何图形   java无法下载主题和发件人地址(rediff)   java如何使代码线程安全   java在尝试转换FileInputStream中的文件时,我遇到了一个FileNotFound异常   java Moxy和Jackson如何将Json映射到Pojo   在foreach循环中使用BufferedWriter生成新行的java问题   java为什么我的测试在单次执行中运行时间小于1秒,而在maven构建中运行时间大于20秒?   java如何显示下载附件的进度条   了解java rmi的良好实践   .net可以将Java portlet嵌入ASP。网页?   循环如何多次执行Java方法?   java如何确保用户输入在给定的有效范围内?   java单元测试定理   java如何在IntelliJ上运行外部构建项目?   JAVA:试图编写一个检查字符串是否为数字的方法。总是返回错误   javahadoop将特定键的所有map方法生成的所有值都发送到一个reduce方法,对吗?   在java中读取和使用文件