从命令行启动 XBMC 并从时间点播放电影

puf*_*ish 5 windows kodi python

从某个时间点启动 XBMC 并播放电影的最简单方法是什么?

显然没有很多命令行选项(ref),并且 XBMC python 脚本似乎被设计为在 XBMC 内运行,一旦它启动(ref)。此外,我希望能够播放不一定在 XBMC 媒体库中的文件。

Rik*_*Rik 2

我想我要解决这个问题...您要求启动 XBMC 的最简单方法...嗯...这是最简单的方法。我并不是说这一种简单的方法,但它是运行电影(不在您的库中)并可跳转到分钟(或秒)的唯一方法。

首先,您需要设置 XBMC 以在启动时自动执行脚本。为此,我们需要创建一个autoexec.py名为%appdata%\XBMC\userdata.
通常这是C:\Users\<username>\AppData\Roaming\XBMC\userdata.
不用担心。你不需要为此“学习”Python。只需将代码复制到该文件即可。

在那里创建autoexec.py

import xbmc
import xbmcgui
import os

class Main:
  def __init__(self):
    playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO )
    playlist.clear()

    try:
      file = os.getenv('XBMC_PLAY','')
      jump = os.getenv('XBMC_JUMP','0')
    except:pass
    if os.path.isfile(file):

      xbmc.executebuiltin('Notification(Playing '+file+',Jump to '+jump+',5000)')
      playlist.add(file)

      try:
        xbmc.Player().play( playlist)
      except:pass

      try:
        xbmc.Player().seekTime(int(jump))
      except:pass

m = Main()
Run Code Online (Sandbox Code Playgroud)

我从这里调整了脚本(thnx @root)并制作它,以便它可以检查您的环境变量XBMC_PLAYXBMC_JUMP。这样我们就可以从批处理文件调用 XBMC,它将播放该文件。

再次不用担心。如果这些环境变量不存在,XBMC 将正常工作。

接下来我们需要创建批处理文件来设置正确的值并运行 XBMC。
XBMC_PLAY是您的电影文件,XBMC_JUMP是跳转的秒数(可以是0)。

最简单的是:

set XBMC_PLAY=<YOUR_MOVIE>
set XBMC_JUMP=<SECONDS_TO_JUMP>
"C:\Program Files(x86)\XBMC\XBMC.exe"
set XBMC_PLAY=
set XBMC_JUMP=
Run Code Online (Sandbox Code Playgroud)

但因为我是一个完美主义者;)我创建了一个更复杂的批处理,你可以用它来放置文件,它会要求“跳转分钟”。也可以
xbmc_run moviefile.avi 15直接调用这个批处理文件。

您甚至可以创建一个文件关联.avi等...来运行这个批处理文件而不是另一个播放器:)

创造xbmc_run.bat

@echo off
if "%1"=="" goto usage
if not exist %1 goto filenotfound

::-----------------------------------------------
:: set-up temp-variable for Program Files
::-----------------------------------------------
set ProgFiles86=%ProgramFiles(x86)%
if not "%ProgFiles86%"=="" goto win64
set ProgFiles86=%ProgramFiles%
:win64

::-----------------------------------------------
:: get %2 parameter. if not given ask for seconds
::-----------------------------------------------
set jump=%2
if "%jump%"=="" set /p jump="Jump to minute: "
set /a jump*=60

::-----------------------------------------------
:: set user-environment variables and start xbmc
::-----------------------------------------------
:play
set XBMC_PLAY=%1
set XBMC_JUMP=%jump%
echo Starting %XBMC_PLAY% and jump to %XBMC_JUMP% seconds
"%progFiles86%\XBMC\XBMC.exe"
set XBMC_PLAY=
set XBMC_JUMP=
goto :eof

:usage
echo Usage: %0 movie [jump]
exit/b 1

:filenotfound
echo File %1 not found
exit/b 1
Run Code Online (Sandbox Code Playgroud)

它在这里完美地工作。我使用 XBMC v12.2“FRODO”。如果您需要运行它的帮助,请告诉我。

编辑:我刚刚想到要求在几分钟内跳跃可能比在几秒内跳跃更直观(就像我最初所做的那样)。所以我更改了上面的代码来询问跳分并重新计算 XBMC 的秒数。

如果你想以秒为单位跳转,你可以更改以下两行:

if "%jump%"=="" set /p jump="Jump to second: "
set /a jump*=1
Run Code Online (Sandbox Code Playgroud)

只需将一个电影文件拖放到这个批处理文件中,输入跳转分钟(或者如果enter没有的话),然后就可以开始了:)