自托管VTune Internet广播服务仿真

ycast的Python项目详细描述


ycast

ycast是许多avr使用的"VTune网络广播服务"的自托管替代品。 它模拟VTune后端,为您的AVR提供必要的信息,以便播放自定义分类的Internet广播电台,并收听在社区广播浏览器索引中列出的广播电台

Ycast是为您准备的,如果:

  • 您不想使用专有的流媒体服务
  • 您厌倦了加载"VTune"服务的延迟和/或停机时间
  • 您不确定是否继续使用"VTune"服务

支持的设备

理论上,ycast应该适用于支持vtuner的大多数avr。

继续测试,请将结果报告给我们:)

确认工作

  • 雅马哈RX-VX73系列(RX-V373、RX-V473、RX-V573、RX-V673、RX-V773)
  • 雅马哈R-N500
  • 雅马哈RX-A820
  • 雅马哈RX-A830
  • Onkyo TX-NR414
  • Marantz Melody Media M-CR610

未确认/实验性

  • 雅马哈RX-VX75系列(RX-V375、RX-V475、RX-V575、RX-V675、RX-V775)
  • 雅马哈RX-VX77系列(RX-V377、RX-V477、RX-V577、RX-V677、RX-V777)
  • 雅马哈RX-VX79系列(RX-V379、RX-V479、RX-V579、RX-V679、RX-V779)
  • 雅马哈RX-VX81系列(RX-V381、RX-V481、RX-V581、RX-V681、RX-V781)
  • 雅马哈RX-S600D
  • 雅马哈RX-S601D
  • 雅马哈WX-030
  • 雅马哈RX-A1060
  • 雅马哈RX-V2700
  • 雅马哈RX-V3800
  • 雅马哈CX-A5000

依赖关系:

python版本:3

python包:

  • 请求
  • 烧瓶
  • pyyaml

用法

ycast真的不需要太多的计算能力和带宽。它只是为AVR提供信息。流媒体 它本身直接由avr处理,也就是说,你可以在一个低规格的risc机器上运行它,比如树莓p i。

DNS条目

您需要在您的dns服务器中创建一个手动条目(对于大多数家庭用户,请阅读"路由器")。vtuner.com应该指向ycast正在运行的机器。或者,如果您只想转发特定的供应商,可以配置以下条目:

  • 雅马哈AVRS:radioyamaha.vtuner.com(也可以选择radioyamaha2.vtuner.com
  • onkyo avrs:onkyo.vtuner.com(也可以选择onkyo2.vtuner.com
  • denon/marantz avrs:denon.vtuner.com(也可以选择denon2.vtuner.com

运行服务器

带有内置Web服务器

您可以使用flask的内置开发服务器来运行ycast(不推荐用于生产,但(tm)应该足以供您的私人家庭使用):只需运行包:python-m ycast

虽然您只需使用根权限在端口80上侦听所有接口即可运行ycast,但由于各种原因,这可能不是必需的。

如果已经在目标计算机上运行http服务器,则可以更改侦听地址和端口(分别通过-l-p) 和/或希望代理或限制ycast访问。

如果可以的话,建议在ycast前面使用合适的web服务器(例如nginx)。 然后,您也不需要以根用户身份运行ycast,并且可以将请求代理到只监听localhost

您可以重定向所有发往原始请求url的流量(例如radioyamaha.vtuner.comonkyo.vtuner.com),或者需要将以下url从Web服务器重定向到ycast:

  • /setupapp<
  • /ycast

注意:不要透明地重写请求。ycast需要完整的url(即包括/ycast/setupapp)。它还需要一个完整的hostheader;因此,如果要代理ycast,则需要传递原始header。对于nginx,这可以通过proxy\u set\u header host$host;来实现。

如果您正在使用(或计划使用)nginx代理请求,请查看此示例。 这可以与此Systemd服务示例一起使用,以实现功能全面的部署。

使用wsgi

您还可以设置正确的wsgi服务器。请参阅正式的烧瓶文档

自定义电台

如果要在全局无线电索引之外使用"我的电台"功能,请创建一个stations.yml并使用-c开关运行ycast以指定指向它的路径。配置遵循基本的yaml结构(见下文)。

Category one name:
  First awesome station name: first.awesome/station/URL
  Second awesome station name: second.awesome/station/URL

Category two name:
  Third awesome station name: third.awesome/station/URL
  Fourth awesome station name: fourth.awesome/station/URL

您还可以查看提供的示例以更好地了解配置。

防火墙规则

注意事项

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

推荐PyPI第三方库


热门话题
使用C在任何情况下检索Java安装目录#   javascript ClassNotFoundException在NativeScript中使用。扩展()   如何将Hadoop路径对象转换为Java文件对象   JavaJersey 2.22:我应该在哪里定义REST资源的位置?   java复制数组并使用printall()方法将1添加到其大小,以返回新数组中的所有int   在Java代码中使用JMeter JDBC连接   Java8流。findFirst()仅在排序后才有意义?   用于授权的Java swagger注释   java如何执行未使用execmavenplugin调用的“Premain”方法   java请求错误,状态:0弹出a4j:支持   Java JUnit、接口、类标题   java需要正则表达式来匹配字符串   java Springboot Wildfly 10部署错误jdk。找不到不支持的模块   java notifyDataSetChanged()不起作用   java搜索将对象之间的双向链接转换为JSON格式的正确方法   java在json中使用多个不同的嵌套对象来改进   java JPA:将LocalDateTime属性与生成器进行比较。currentTimestamp()   java在遗留应用程序中查找硬编码字符串