标签 Kodi 下的文章

Kodi 20 版本增加了多项重要功能。

Kodi 20.0 "Nexus" Update Includes Support for AV1 Video and Steam Deck Controller

Kodi 是 Kodi 基金会开发的跨平台开源媒体播放器,提供了大量功能。

它的上一个主要版本是两年前发布的 Kodi 19 “Matrix”

Kodi “Nexus” 是改进后的主要版本,它提供了几个新功能和改进。

让我们来看看这些。

? Kodi 20 “Nexus” 更新了什么?

这次发布带来了很多新的特性,较为突出的有:

  • AV1 编解码支持
  • 增强的 PVR 支持
  • 更新后的数据抓取器
  • 多个修复和改进

kodi 20 nexus

AV1 编解码支持

Kodi 现在在 Linux 平台上支持开源的免版税的 AV1 编解码

通过 视频加速 API(VA-API)实现了解码 AV1 的硬件加速,并且还为视频输入流增加了 AV1 支持。

增强的 PVR 支持

通过 PVR 观看电视和收听广播也得到了许多改进,其中一些值得注意的改进包括:

  • 重新设计过的频道管理器。
  • 能够显示特定频道或录音的提供方。
  • 能够按提供方对频道和录音进行排序。
  • 支持只读录音。
  • 改进后的 EPG 搜索。
  • 自动清理缓存的 PVR 图像。
  • PVR 客户端插件的多实例支持。
  • Estuary 主题下的 PVR 体验调整。

更新后的数据抓取器

TVDB 电视节目抓取器已更新,以防止其在加载损坏的“视频流”和“信息标记视频”后出现问题。

?️ 建议旧版 Kodi 20 的用户更新到最新版本,避免使用此抓取器时出现问题。

此外,更新后的 Python 电视节目抓取器,解决了一个潜在的问题,即新的抓取器使用的 XML 格式与现有的程序不同的问题。

因此,当你向库中现有的电视节目添加新集时,即便你正在使用 NFO 文件,你也必须刷新节目以下载新集指南。

?️ 多个修复和改进

除此之外,Kodi 20 还提供了一些修复和改进,例如:

  • Steam Deck 控制器的内置支持。
  • 开始支持 NFSv4 的文件系统。
  • 默认支持光盘。
  • 使用通用缓冲区管理 API 时,能够设置使用 HDR 输出。
  • 解决了 DRMPrime 的一个问题。
  • 多个对于图文电视的支持。
  • 修复了单机游戏的黑屏问题。

要了解更多信息,请阅读 官方公告

? 下载 Kodi 20

Kodi 20 “Nexus” 可从 官方网站 及其 GitHub 仓库 获取。

在应用商店和官方软件库也可以获取到。

Kodi v21(代号:Omega)正在开发中。如果你想从这次发布中获得更多内容,请关注下一个版本。


via: https://news.itsfoss.com/kodi-20-nexus-release/

作者:Sourav Rudra 选题:lkxed 译者:natsumm 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

西北大学开发出猴脸识别系统

报道,西北大学的科研团队正依托人工智能等新技术,研发“猴脸识别技术”,用于识别秦岭地区的数千只川金丝猴。目前,猴脸识别技术处于实验推广阶段,可识别约 200 只秦岭金丝猴。科研人员称,每只金丝猴,采集了七八百张图像样本,识别成功率达到 94%。

虽然这是一则严肃的科技新闻,但是我还是忍俊不禁想笑。不过严肃的说,这样的人脸识别技术才是技术不作恶的典范。

Kodi 19 “Matrix” 发布,支持 AV1、HDR 和 tvOS

Kodi 是一个开源的媒体中心,最初是为 XBOX 游戏机设计的,但很快被移植到 Windows 和 Linux 等其他平台上,并最终移植到低成本的 Android 电视盒和树莓皮等单板电脑上。

在 Kodi 18 发布两年多后,开发者刚刚宣布推出 Kodi 19 “Matrix”。这个版本由近 50 名个人开源开发者贡献,约 5000 次提交,增加、更改或删除了约 60 万行代码。

Kodi 是难得的精致的开源软件,用了两年时光开发出来的 Kodi 19,值得试试,更多的变化,这里不一一赘述,大家自行体验吧。

非 systemd 的 Debian 分支 Devuan 3.1 发布

Devuan 是 Debian 的一个分支,旨在提供没有 systemd 的 Debian,专注于初始化系统的独立性,从最初的 pre-alpha 版本到现在已经六年了。

这个版本中新提供了 Runit 初始化系统,现在支持 Runit、SysVinit 和 OpenRC 等方式。在此版本中,还允许在安装过程中排除非自由固件。

要说对自由的热爱,Debian 是个典型代表,而要说对自由和传统的狂热,那 Devuan 当之无愧。

你是否曾经想要创建你自己的家庭影院系统?如果是的话,这里有一个为你准备的指南!在本篇文章中,我们将会介绍如何设置一个由 OpenELEC 以及 Kodi 驱动的家庭娱乐系统。我们将会介绍如何制作安装介质,哪些设备可以运行该软件,如何安装它,以及其他一切需要知道的事情等等。

选择一个设备

在开始设定媒体中心的软件前,你需要选择一个设备。OpenELEC 支持一系列设备。从一般的桌面设备到树莓派 2/3 等等。选择好设备以后,考虑一下你怎么访问 OpenELEC 系统中的媒体并让其就绪。

*注意: *OpenELEC 基于 Kodi,有许多方式加载一个可播放的媒体(比如 Samba 网络分享,外设,等等)。

制作安装磁盘

OpenELEC 安装磁盘需要一个 USB 存储器,且其至少有 1GB 的容量。这是安装该软件的唯一方式,因为开发者没有发布 ISO 文件。取而代之的是需要创建一个 IMG 原始文件。选择与你设备相关的链接并且下载原始磁盘镜像。当磁盘镜像下载完毕,打开一个终端,并且使用命令将数据从压缩包中解压出来。

在Linux/macOS上

cd ~/Downloads
gunzip -d OpenELEC*.img.gz

在Windows上

下载 7zip,安装它,然后解压压缩文件。

当原始的 .IMG 文件被解压后,下载 Etcher USB creation tool,并且依据在界面上的指示来安装它并创建 USB 磁盘。

注意: 对于树莓派用户,Etcher 也支持将文件写入到 SD 卡中。

安装 OpenELEC

OpenELEC 安装进程可能是安装流程最简单的操作系统之一了。将 USB 设备加入,然后配置设备使其以 USB 方式启动。同样,这个过程也可以通过按 DEL 或者 F2 来替代。然而并不是所有的 BIOS 都是一样的,所以最好的方式就是看看手册什么的。

一旦进入 BIOS,修改设置使其从 USB 磁盘中直接加载。这将会允许电脑从 USB 磁盘中启动,这将会使你进入到 Syslinux 引导屏幕。在提示符中,键入 installer,然后按下回车键。

默认情况下,快速安装选项已经是选中的。按回车键来开始安装。这将会使安装器跳转到磁盘选择界面。选择 OpenELEC 要被安装到的地方,然后按下回车键来开始安装过程。

一旦完成安装,重启系统并加载 OpenELEC。

配置 OpenELEC

在第一次启动时,用户必须配置一些东西。如果你的媒体中心拥有一个无线网卡,OpenELEC 将会提示用户将其连接到一个热点上。选择一个列表中的网络并且输入密码。

在下一步“ 欢迎来到 OpenELEC Welcome to OpenELEC ”屏上,用户必须配置不同的分享设置(SSH 以及 Samba)。建议你把这些设置开启,因为可以用命令行访问,这将会使得远程传输媒体文件变得很简单。

增加媒体

在 OpenELEC(Kodi)中增加媒体,首先选择你希望添加的媒体到的部分。以同样的流程,为照片、音乐等添加媒体。在这个指南中,我们将着重讲解添加视频。

点击在主页的“ 视频 Video ”选项来进入视频页面。选择“ 文件 Files ”选项,在下一个页面点击“ 添加视频... Add videos… ”,这将会使得用户进入Kodi 的添加媒体页面。在这个页面,你可以随意的添加媒体源了(包括内部和外部的)。

OpenELEC 会自动挂载外部的设备(像是 USB,DVD 碟片,等等),并且它可以通过浏览文件挂载点来挂载。一般情况下,这些设备都会被放在“/run”下,或者,返回你点击“ 添加视频... Add videos… ”的页面,在那里选择设备。任何外部设备,包括 DVD/CD,将会直接展示在那里,并可以直接访问。这是一个很好的选择——对于那些不懂如何找到挂载点的用户。

现在这个设备在 Kodi 中被选中了,界面将会询问用户去浏览设备上私人文件夹,里面有私人文件——这一切都是在媒体中心文件浏览器工具下执行的。一旦找到了放置文件的文件夹,添加它,给予文件夹一个名字,然后按下 OK 按钮来保存它。

当一个用户浏览“ 视频 Videos ”,他们将会看到可以点击的文件夹,这个文件夹中带有从外部设备添加的媒体。这些文件夹可以很容易地在系统上播放。

使用 OpenELec

当用户登录他们将会看见一个“主界面”,这个主界面有许多部分,用户可以点击它们并且进入,包括:图片,视频,音乐,程序等等。当悬停在这些部分的时候,子部分就会出现。例如,当悬停在“图片”上时,子部分”文件“以及”插件”就会出现。

如果一个用户点击了一个部分中的子部分,例如“插件”,Kodi 插件选择就会出现。这个安装器将会允许用户浏览新的插件内容,来安装到这个子部分(像是图片关联插件,等等)或者启动一个已经存在的图片关联插件,当然,这个插件应该已经安装到系统上了。

此外,点击任何部分的文件子部分(例如视频)将会直接给显示用户该部分可用的文件。

系统设置

Kodi 有丰富的设置区域。为了找到这些设置,使鼠标在右方悬停,目录选择器将会滚动右方并且显示” 系统 System “。点击来打开全局系统设定区。

用户可以修改任何设置,从安装 Kodi 仓库的插件,到激活各种服务,到改变主题,甚至天气。如果想要退出设定区域并且返回主页面,点击右下方角落中的“home”图标。

结论

通过 OpenELEC 的安装和配置,你现在可以随意体验使用你自己的 Linux 支持的家庭影院系统。在所有的家庭影院系统 Linux 发行版中,这个是最用户友好的。请记住,尽管这个系统是以“OpenELEC”为名,但它运行着的是 Kodi ,并兼容任何 Kodi 的插件,工具以及程序。


via: https://www.maketecheasier.com/build-media-center-with-openelec/

作者:Derrik Diener 译者:svtter 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

通过运行在 Android 手机上的自制遥控器来控制你的家庭媒体播放器。

Kodi 是一款很优秀的软件,能够将几乎所有电脑变身成媒体中心。它可以播放音乐和视频,显示图片,甚至还能显示天气预报。为了在配置成家庭影院后方便使用,你可以通过手机 app 访问运行在连接到 Wi-Fi 的 XBMC 机器上的服务来控制它。可以找到很多这种工具,几乎覆盖所有智能手机系统。

XBMC

Kodi 原名叫做 XBMC,在你阅读这篇文章的时候,XBMC 已经成为历史。因为法律原因(因为名字 XBMC 或 X-Box Media Center 里引用了不再支持的过时硬件)项目组决定使用新的名字 Kodi。不过,除了名字,其他的都会保持原样。或者说除开通常新版本中所期待的大量新改进。这一般不会影响到遥控软件,它应该能在已有的 XBMC 系统和新的 Kodi 系统上都能工作。

我们目前已经配置好了一个用于播放音乐的 Kodi 系统,不过我们找到的所有 Kodi 遥控没一个好用的,特别是和媒体中心连接的电视没打开的时候。它们都有点太复杂了,集成了太多功能在手机的小屏幕上。我们希望能有这样的系统,从最开始就是设计成只用于访问音乐库和电台插件,所以我们决定自己实现一个。它不需要用到 Kodi 的所有功能,因为除了音乐以外的任务,我们可以简单地切换使用通用的 Kodi 遥控。我们的测试系统是一个刷了 RaspBMC 发行版的树莓派,但是我们要做的工具并不受限于树莓派或Kodi那个发行版,它应该可以匹配任何安装了相关插件的基于 Linux 的 Kodi 系统。

首先,遥控程序需要一个用户界面。大多数 Kodi 遥控程序都是独立的 app。不过对于我们要做的这个音乐控制程序,我们希望用户可以不用安装任何东西就可以使用。显然我们需要使用网页界面。Kodi 本身自带网页服务器,但是为了获得更多权限,我们还是使用了独立的网页框架。在同一台电脑上跑两个以上网页服务器没有问题,只不过它们不能使用相同的端口。

有几个网页框架可以使用。而我们选用 Bottle 是因为它是一个简单高效的框架,而且我们也确实用不到任何高级功能。Bottle 是一个 Python 模块,所以这也将是我们编写服务器模块的语言。

你应该能在软件包管理器里找到 Bottle。在基于 Debian 的系统(包括 RaspBMC)里,你可以通过下面的命令安装:

sudo apt-get install python-bottle

遥控程序实际上只是连接用户和系统的中间层。Bottle 提供了和用户交互的方式,而我们将通过 JSON API 来和 Kodi 交互。这样可以让我们通过发送 JSON 格式消息的方式去控制媒体播放器。

我们将用到一个叫做 xbmcjson 的简单 XBMC JASON API 封装。足够用来发送控制请求,而不需要关心实际的 JSON 格式以及和服务器通讯的无聊事。它没有包含在 PIP 包管理中,所以你得直接从 GitHub 安装:

git clone https://github.com/jcsaaddupuy/python-xbmc.git
cd python-xbmc
sudo python setup.py install

万事俱备,只欠代码。

先从 Bottle 开始

我们程序的基本结构:

from xbmcjson import XBMC
from bottle import route, run, template, redirect, static_file, request
import os
xbmc = XBMC("http://192.168.0.5/jsonrpc", "xbmc", "xbmc")
@route('/hello/<name>')
def index(name):
return template('<h1>Hello {{name}}!</h1>', name=name)
run(host="0.0.0.0", port=8000)

这样程序将连接到 Kodi(不过实际上用不到);然后 Bottle 会开始提供网站服务。在我们的代码里,它将监听主机 0.0.0.0(意味着允许所有主机连接)的端口 8000。它只设定了一个站点,就是 /hello/XXXX,这里的 XXXX 可以是任何内容。不管 XXXX 是什么都将作为参数名传递给 index()。然后再替换进去 HTML 网页模版。

你可以先试着把上面内容写到一个文件(我们取的名字是 remote.py),然后用下面的命令启动:

python remote.py

然后你可以在浏览器里访问 localhost:8000/hello/world 看看模版生效的效果。

@route() 用来设定网页服务器的路径,而函数 index() 会返回该路径的数据。通常是返回由模版生成的 HTML 页面,但是并不是说只能这样(后面会看到)。

随后,我们将给应用添加更多页面入口,让它变成一个全功能的 Kodi 遥控,但仍将采用相同代码结构。

XBMC JSON API 接口可以从和 Kodi 机器同网段的任意电脑上访问。也就是说你可以在自己的笔记本上开发,然后再布置到媒体中心上,而不需要浪费时间上传每次改动。

模版 - 比如前面例子里的那个简单模版 - 是一种结合 Python 和 HTML 来控制输出的方式。理论上,这俩能做很多很多事,但是会非常混乱。我们将只是用它们来生成正确格式的数据。不过,在开始动手之前,我们先得准备点数据。

Paste

Bottle 自带网页服务器,我们用它来测试遥控程序。不过,我们发现它性能有时不够好。当我们的遥控程序正式上线时,我们希望页面能更快一点显示出来。Bottle 可以和很多不同的网页服务器配合工作,而我们发现 Paste 用起来非常不错。而要使用的话,只要简单地安装(Debian 系统里的 python-paste 包),然后修改一下代码里的 run 调用:

run(host=hostname, port=hostport, server="paste")

你可以在 http://bottlepy.org/docs/dev/deployment.html 找到如何使用其他服务器的相关细节。

从 Kodi 获取数据

XBMC JSON API 分成 14 个命名空间:JSONRPC, Player, Playlist, Files, AudioLibrary, VideoLibrary, Input, Application, System, Favourites, Profiles, Settings, Textures 和 XBMC。每个都可以通过 Python 的 XBMC 对象访问(Favourites 除外,明显是个疏忽)。每个命名空间都包含许多方法用于对程序的控制。例如,Playlist.GetItems() 可以用来获取某个特定播放列表的内容。服务器会返回给我们 JSON 格式的数据,但 xbmcjson 模块会为我们转化成 Python 词典。

我们需要用到 Kodi 里的两个组件来控制播放:播放器和播放列表。播放器处理播放列表并在每首歌结束时从列表里取下一首。为了查看当前正在播放的内容,我们需要获取正在工作的播放器的 ID,然后根据它找到当前播放列表的 ID。这个可以通过下面的代码来实现:

def get_playlistid():
player = xbmc.Player.GetActivePlayers()
if len(player['result']) > 0:
playlist_data = xbmc.Player.GetProperties({"playerid":0, "properties":["playlistid"]})
if len(playlist_data['result']) > 0 and "playlistid" in playlist_data['result'].keys():
return playlist_data['result']['playlistid']
return -1

如果当前没有播放器在工作(就是说,返回数据的结果部分的长度是 0),或者当前播放器没有处理播放列表,这样的话函数会返回 -1。其他时候,它会返回当前播放列表的数字 ID。

当我们拿到当前播放列表的 ID 后,就可以获取该列表的细节内容。按照我们的需求,有两个重要的地方:播放列表里包含的项,以及当前播放所处的位置(已经播放过的项并不会从播放列表移除,只是移动当前播放位置)。

def get_playlist():
playlistid = get_playlistid()
if playlistid >= 0:
data = xbmc.Playlist.GetItems({"playlistid":playlistid, "properties": ["title", "album", "artist", "file"]})
position_data = xbmc.Player.GetProperties({"playerid":0, 'properties':["position"]})
position = int(position_data['result']['position'])
return data['result']['items'][position:], position
return [], -1

这样可以返回正在播放的项开始的列表(因为我们并不关心已经播放过的内容),而且也包含了用来从列表里移除项的位置信息。

Image

API 文档在这里:http://wiki.xbmc.org/?title=JSON-RPC_API/v6。它列出了所有支持的函数,但是关于具体如何使用的描述有点太简单了。

JSON

JSON 是 JavaScript Object Notation 的缩写,最初设计用于 JavaScript 对象的序列化。目前仍然起到这个作用,但是它也是用来编码任意数据的一种很好用的方式。

JSON 对象都是这样的格式:

{property1:value1, property2:value2, property3:value3}

支持任意数目的属性/值配对。对 Python 程序员来说,看上去和字典数据结构很相似,不过这两个确实很像。

在字典数据结构里,值本身可以是另一个 JSON 对象,或者一个列表,所以下面的格式也是正确的:

{"name":"Ben", "jobs":["cook", "bottle-washer"], "appearance": {"height":195, "skin":"fair"}}

JSON 通常在网络服务中用来发送和接收数据,并且大多数编程语言都能很好地支持,所以如果你熟悉 Python 的话,你应该可以使用你熟悉的编程语言调用相同的接口来轻松地控制 Kodi。

整合到一起

把之前的功能连接到 HTML 页面很简单:

@route('/juke')
def index():
current_playlist, position = get_playlist()
return template('list', playlist=current_playlist, offset = position)

只需要抓取播放列表(调用我们之前定义的函数),然后将结果传递给负责显示的模版。

负责显示列表数据的模版的主要部分是:

<h2>Currently Playing:</h2>
% if playlist is not None:
% position = offset
% for song in playlist:
<strong> {{song['title']}} </strong>
% if song['type'] == 'unknown':
Radio
% else:
{{song['artist'][0]}}
% end
% if position != offset:
<a href="/remove/{{position}}">remove</a>
% else:
<a href="/skip/{{position}}">skip</a>
% end
<br>
% position += 1
% end

可以看到,模版大部分是用 HTML 写的,只有一小部分用来控制输出的其他代码。用两个大括号括起来的变量是输出位置(像我们在第一个 'hello world' 例子里看到的)。你也可以嵌入以百分号开头的 Python 代码。因为没有缩进,你需要用一个 % end 来结束当前的代码块(就像循环或 if 语句)。

这个模版首先检查列表是否为空,然后遍历里面的每一项。每一项会用粗体显示歌曲名字,然后是艺术家名字,然后是一个是否跳过(如果是当前正在播的歌曲)或从列表移除的链接。所有歌曲的类型都是 'song',如果类型是 'unknown',那就不是歌曲而是网络电台。

/remove/ 和 /skip/ 路径只是简单地封装了 XBMC 控制功能,在改动生效后重新加载 /juke:

@route('/skip/<position>')
def index(position):
print xbmc.Player.GoTo({'playerid':0, 'to':'next'})
redirect("/juke")
@route('/remove/<position>')
def index(position):
playlistid = get_playlistid()
if playlistid >= 0:
xbmc.Playlist.Remove({'playlistid':int(playlistid), 'position':int(position)})
redirect("/juke")

当然,如果不能往列表里添加歌曲的话那这个列表管理功能也不行。

因为一旦播放列表结束,它就消失了,所以你需要重新创建一个,这会让事情复杂一些。而且有点让人迷惑的是,播放列表是通过调用 Playlist.Clear() 方法来创建的。这个方法也还用来删除包含网络电台(类型是 unknown)的播放列表。另一个麻烦的地方是列表里的网络电台开始播放后就不会停,所以如果当前在播网络电台,也会需要清除播放列表。

这些页面包含了指向 /play/ 的链接来播放歌曲。通过下面的代码处理:

@route('/play/<id>')
def index(id):
playlistid = get_playlistid()
playlist, not_needed= get_playlist()
if playlistid < 0 or playlist[0]['type'] == 'unknown':
xbmc.Playlist.Clear({"playlistid":0})
xbmc.Playlist.Add({"playlistid":0, "item":{"songid":int(id)}})
xbmc.Player.open({"item":{"playlistid":0}})
playlistid = 0
else:
xbmc.Playlist.Add({"playlistid":playlistid, "item":{"songid":int(id)}})
remove_duplicates(playlistid)
redirect("/juke")

最后一件事情是实现 remove\_duplicates 调用。这并不是必须的 - 而且还有人并不喜欢这个 - 不过可以保证同一首歌不会多次出现在播放列表里。

我们也实现了一些页面用来列出收藏歌曲里所有艺术家,以及列出指定艺术家的歌曲和专辑。这些都非常简单,和 /juke 页面基本类似。

Image

还需要处理一下 UI,不过功能已经有了。

日志

通常拿到 XBMC JSON API 并不清楚能用来做什么,而且它的文档也有点模糊。找出如何使用的一种方式是看别的遥控程序是怎么做的。如果打开日志功能,就可以在使用其他遥控程序的时候看到哪个 API 被调用了,然后就可以应用到在自己的代码里。

要打开日志功能,把 Kodi 媒体中心 接到显示器上,再依次进入设置 > 系统 > 调试,打开允许调试日志。在打开日志功能后,还需要登录到 Kodi 机器上(比如通过 SSH),然后就可以查看日志了。日志文件的位置应该显示在 Kodi 界面左上角。在 RaspBMC 系统里,文件位置是 /home/pi/.xbmc/temp/xbmc.log。你可以通过下面的命令实时监视哪个 API 接口被调用了:

cd /home/pi/.xbmc/temp
tail -f xbmc.log | grep "JSON"

增加功能

上面的代码都是用来播放 Kodi 媒体库里的歌曲的,但我们还希望能播放网络电台。每个插件都有自己的独立 URL 可以通过普通的 XBMC JSON 命令来获取信息。举个例子,要从电台插件里获取选中的电台,可以使用;

@route('/radio/')
def index():
my_stations = xbmc.Files.GetDirectory({"directory":"plugin://plugin.audio.radio_de/stations/my/", "properties":
["title","thumbnail","playcount","artist","album","episode","season","showtitle"]})
if 'result' in my_stations.keys():
return template('radio', stations=my_stations['result']['files'])
else:
return template('error', error='radio')

这样可以返回一个可以和歌曲一样能添加到播放列表的文件。不过,这些文件能一直播下去,所以(之前说过)在添加其他歌曲的时候需要重新创建列表。

共享歌曲

除了伺服页面模版,Bottle 还支持静态文件,方便用于那些不会因为用户输入而改变的内容。可以是 CSS 文件,一张图片或是一首 MP3 歌曲。在我们的简单遥控程序里(目前)还没有任何用来美化的 CSS 或图片,不过我们增加了一个下载歌曲的途径。这个可以让媒体中心变成一个存放歌曲的 NAS 盒子。在需要传输大量数据的时候,最好还是用类似 Samba 的功能,但只是下几首歌到手机上的话使用静态文件也是很好的方式。

通过歌曲 ID 来下载的 Bottle 代码:

@route('/download/<id>')
def index(id):
data = xbmc.AudioLibrary.GetSongDetails({"songid":int(id), "properties":["file"]})
full_filename = data['result']['songdetails']['file']
path, filename = os.path.split(full_filename)
return static_file(filename, root=path, download=True)

应用的时候,只需要为 /songsby/ 页面里的相应 ID 加个链接。

我们已经把所有的代码过了一遍,不过还需要一点工作来把它们集合到一起。可以自己去 GitHub 页面 https://github.com/ben-ev/xbmc-remote 看下。

设置
我们的遥控程序已经开发完成,还需要保证让它在媒体中心每次开机的时候都能启动。有几种方式,最简单的是在 /etc/rc.local 里增加一行命令来启动。我们的文件位置在 /opt/xbmc-remote/remote.py,其他文件也和它一起。然后在 /etc/rc.local 最后的 exit 0 之前增加了下面一行。

cd /opt/xbmc-remote && python remote.py &

GitHub
这个项目目前还只是个架子,但是 - 我们运营杂志就意味着没有太多自由时间来编程。不过,我们启动了一个 GitHub 项目,希望能持续完善, 而如果你觉得这个项目有用的话,欢迎做出贡献。

要查看最新的进展,请访问 https://github.com/ben-ev/xbmc-remote 看看所处的状态。你可以从页面里获取最新的代码,或者通过命令行复制。

如果你希望改善它,可以复制项目到你自己的分支开发,然后在功能完成后发起合并请求。关于如何使用 GitHub 的更多信息,请访问 https://github.com/features


via: http://www.linuxvoice.com/xbmc-build-a-remote-control/

作者:Ben Everard 译者:zpl1025 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Kodi,原名就是大名鼎鼎的XBMC,发布了开发代号为Helix的最新版本14。感谢官方XMBC提供的PPA,现在可以很简单地在Ubuntu14.04中安装了。

有些人可能还不了解Kodi,它是一个媒体中心软件,支持所有平台,如Windows、Linux、 Mac, Android等。此软件拥有全屏的媒体中心,可以管理所有音乐和视频,不单支持本地文件还支持网络播放,如Tube、Netflix、 Hulu, Amazon Prime和其他流媒体服务商。

在 Ubuntu 14.04 和 Linux Mint 17 中安装 XBMC 14 Kodi Helix

再次感谢官方的PPA,让我们可以轻松安装Kodi 14。支持Ubuntu 14.04、Ubuntu 12.04、Linux Mint 17、Pinguy OS 14.04、Deepin 2014、LXLE 14.04、Linux Lite 2.0, Elementary OS 以及其他基于 Ubuntu 的 Linux 发行版。

打开终端(Ctrl+Alt+T)然后使用下列命令。

sudo add-apt-repository ppa:team-xbmc/ppa
sudo apt-get update
sudo apt-get install kodi

需要下载大约100MB,在我看来,这不是很大。若需安装解码插件,使用下列命令:

sudo apt-get install kodi-audioencoder-* kodi-pvr-*

从 Ubuntu 中移除 Kodi 14

从系统中移除 Kodi 14,使用下列命令:

sudo apt-get remove kodi

同样也应该移除PPA软件源:

sudo add-apt-repository --remove ppa:team-xbmc/ppa

我希望这篇简单的文章可以帮助到你在Ubuntu、Linux Mint 和其他 Linux 版本中轻松安装 Kodi 14。你是怎么发现 Kodi 14 Helix 的?

你有没有使用其他的媒体中心来作为 XBMC 的替代?可以在下面的评论区分享你的观点。


via: http://itsfoss.com/install-kodi-14-xbmc-in-ubuntu-14-04-linux-mint-17/

作者:Abhishek 译者:Vic020/VicYu 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Beginnings: the project began life as an Xbox video player

早期:项目一开始是运行在Xbox上的视频播放器。

一个在Linux平台(以及其他各种平台)上最受欢迎的开源媒体中心软件将启用新名字。

XBMC将不再使用;在项目的下一个重要发布版(第14版)中,将以‘Kodi’的名字出现。

这个社区项目建立于2002年,用于在Xbox游戏机上播放数字媒体内容。总的来说,在那之后项目一直使用从Xbox衍生出来的名字。早期版本被命名为‘Xbox媒体播放器’,然后改成‘Xbox媒体中心’以展示新增的功能。在移植到微软游戏机之外的平台后,于2008年确定了首字母缩写‘XBMC’的名称。

之前,在这个网站上‘XBMC’出现了一遍又一遍。

为什么要换名字?为什么是现在?‘Kodi’到底有没有什么特殊含义?

‘这个软件仅仅勉强能运行在第一代Xbox上...’

这个软件仅仅勉强能运行在第一代Xbox上,那是因为许多聪明的开发人员仍然在那个平台上开发,它不能在Xbox 360或者Xbox One上运行。”项目负责人Nathan Betzen在XBMC博客上这样解释。

如今这个软件已经拥有远远超过以往的功能,包括针对不同市场的插件,游戏功能以及流媒体支持,这已经不能用‘一个简单的媒体中心’来包含所有的一切了。

因为这个原因,Betzen这样总结,“XB”和“MC”就已经没有有太大意义。

对于XBMC信徒也无可厚非,名字改动也解决了许多长期存在的法律风险。“我们从来都没有真正在法律意义上拥有过项目名字的使用权...”Betzen说,并且补充道,“XBMC基金会成立于2009年,旨在更好地协助和管理软件开发,一直在面临拥有相似商标的‘其他公司的潜在法律威胁’的情况下运作”。

于是乎,Kodi

The (temporary) new logo

新标志(临时)

即将发布的XBMC 14版本中,项目将正式过渡采用新名字‘Kodi’。除了听起来特别酷以外,这个名字貌似没有什么特殊含义。

变更不是一件容易的事情,对于XMBC/Kodi开发人员来说,还有大量的手工活要做:代码必须要整体调整使用新名字,这需要在支持的所有平台进行测试和双重确认。网站,协议以及界面图片也都需要调整,还有email地址,开发者账号,以及更多的细节。

“但是”,Betzen这样总结,“我们相信在你的支持以及整个社区的支持下,Kodi,这个我们都热爱的媒体中心或娱乐平台或是不管你叫做什么,将会比以往更加强大。”

非常正确。关于这次代号变更的更深层意义,你可以去官方网站溜达一下,链接在下边。

想尝试一下这个娱乐中心的最新稳定版的话,你得把官方的项目PPA添加到自己的软件源中。


via: http://www.omgubuntu.co.uk/2014/08/xbmc-renamed-lodi-starting-version-14

作者:Joey-Elijah Sneddon 译者:zpl1025 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出