web-dev-qa-db-ja.com

コマンドラインからXBMCを起動し、ある時点からムービーを再生します

XBMCを起動して特定の時点から映画を再生する最も簡単な方法は何ですか?

どうやらコマンドラインオプションは多くなく( ref )、XBMC pythonスクリプトは、起動するとXBMC内から実行するように設計されているようです(- ref )。また、XBMCメディアライブラリにあるとは限らないファイルを再生できるようにしたい。

5
pufferfish

私はこれに取り組むつもりだと思います...あなたは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()

スクリプトを here (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=

しかし、私は完璧主義者なので;)ファイルをドロップするために使用できる、より複雑なバッチを作成しました。これにより、「ジャンプ分」が要求されます。このバッチファイルを次のように呼び出すこともできます
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

ここでは完全に機能します。 XBMCv12.2「FRODO」を使用しました。それを実行するのに助けが必要な場合は、私に知らせてください。

編集にジャンプするように頼むことが私に思い浮かびましたよりも直感的である(私が最初にしたように)。そこで、上記のコードを変更して、ジャンプ分を要求し、XBMCの秒数に再計算しました。

数秒でジャンプしたい場合は、次の2行を変更できます。

if "%jump%"=="" set /p jump="Jump to second: "
set /a jump*=1

このバッチファイルにムービーファイルをドロップし、ジャンプ分を入力するだけです(または単に enter ない場合)そしてあなたは行ってもいいです:)

2
Rik