VLC ネットワークで m3u を自動的にロードするスクリプトを作成する (MojaveOS)

VLC ネットワークで m3u を自動的にロードするスクリプトを作成する (MojaveOS)

そのため、常に VLC / Open Network を開いて、IPTV m3u ネットワーク アドレスをコピーして貼り付けてロードする必要があることにうんざりしています。

常にリンクをコピーして貼り付ける必要がなく、自動的に VLC を開いて m3u をロードするスクリプトを作成するのを手伝ってくれる人はいますか (可能であれば)?

m3u を使用して簡単なプレイリストを作成できることはわかっていますが、問題は、チャンネルが変更されたり、チャンネルが追加/削除されたりすることです。

したがって、常に最新のリストを読み込む自動スクリプトがあると便利です。

答え1

ガイドウェイ

vlc http://link.to/playlist.m3u

または純粋なターミナル

nvlc http://link.to/playlist.m3u

答え2

常にリンクをコピーして貼り付けることなく、VLC を開いて m3u をロードするにはどうすればよいですか?

いずれかの[stream]コマンド ライン オプションを使用します。Windows を使用している場合は、VLC ショートカットを変更して追加のコマンド ライン オプションを含めることができます。

Usage: vlc [options] [stream] ...
You can specify multiple streams on the commandline.
They will be enqueued in the playlist.
The first item specified will be played first.

...

Stream MRL syntax:

  [[access][/demux]://]URL[#[title][:chapter][-[title][:chapter]]]
  [:option=value ...]

  Many of the global --options can also be used as MRL specific :options.
  Multiple :option=value pairs can be specified.

URL syntax:
  file:///path/file              Plain media file
  http://host[:port]/file        HTTP URL
  ftp://host[:port]/file         FTP URL
  mms://host[:port]/file         MMS URL
  screen://                      Screen capture
  dvd://[device]                 DVD device
  vcd://[device]                 VCD device
  cdda://[device]                Audio CD device
  udp://[[<source address>]@[<bind address>][:<bind port>]]
                                 UDP stream sent by a streaming server
  vlc://pause:<seconds>          Pause the playlist for a certain time
  vlc://quit                     Special item to quit VLC

ソースVLC コマンドラインヘルプ - VideoLAN Wiki

シェル スクリプトを使用できる場合は、次のスクリプトを使用して、特定の要件に合わせて変更できます。

if [[ "$1" == "" ]] ; then
    exit 1
fi

DUMMY=""

# location of playlist
PLAYLIST=/tmp/playlist.m3u

### the playlist is only updated from the Freebox if the playlist file does 
### not exist
###   simply remove the playlist file given by the location $PLAYLIST 
###   to force an update the next time the script is called
if [[ ! -f $PLAYLIST ]] ; then
    RAWPLAYLIST=`mktemp`
    echo "recovering Playlist"
    wget -q http://mafreebox.freebox.fr/freeboxtv/playlist.m3u -O $RAWPLAYLIST
### the following trick is found from:
### http://stackoverflow.com/questions/10207354/how-to-remove-all-of-the-diacritics-from-a-file
### and allows to replace accent characters by non-accent characters
    iconv -f utf8 -t ascii//TRANSLIT $RAWPLAYLIST > $PLAYLIST
    \rm $RAWPLAYLIST
fi

COMMAND="grep -v rtsp $PLAYLIST | grep -v EXTM3U "
for i in $@ ; do
    if [[ $i == "-dummy" ]] ; then
        DUMMY=dummy
    else
        COMMAND=$COMMAND" | grep -i "$i
    fi
done

COMMAND=$COMMAND" | head -1"

FLINE=`mktemp`
eval $COMMAND > $FLINE
LINE=`cat $FLINE`

N=`grep -xn -f $FLINE $PLAYLIST | cut -d : -f 1`

\rm $FLINE

N=$((N + 1))
LINK=`head -n $N $PLAYLIST | tail -1`

if [[ "$LINE" == "" ]] ; then
    echo "No matching channel found"
    exit 1
fi

echo "Opening vlc for: $LINE"
echo $LINK

if [[ "$DUMMY" == "" ]] ; then
    vlc "$LINK" --network-caching=1500 --no-loop
fi

これを PATH 内の場所 (おそらくプライベート bin フォルダ内: ~/bin/これが PATH 内にある場合) に、たとえば として保存FB_VIEW.shし、 によって実行可能にしますchmod +x FB_VIEW.sh

簡単な使用法は次のようになります。

FB_VIEW.sh "list of patterns"

これらのパターンを含むプレイリストの最初のチャンネルを開始します (スペースで区切られたサブパターン間の順序は重要ではありません)。パターン リストには「-dummy」という単語が含まれている場合があります。その場合、見つかったチャンネルと rtsp リンクのみが表示されますが、vlc は実際には開始されません。パターン マッチでは大文字と小文字は区別されません。チャンネルのプログラム番号をパターンとして使用することもできますが、Freebox では同じ番号に対して異なるフラックス (Adsl、TNT、HD、標準、bas-debit) がある場合があり、正しい TV フラックスを選択するために HD や TNT などの 2 番目のパターンを追加する必要がある場合があります。

このバージョンでは、スクリプトを初めて起動すると、Freebox からプレイリストがダウンロードされ (wget を使用)、アクセント付き文字がアクセントなし文字に置き換えられ、デフォルトの場所 /tmp/playlist.m3u に保存されます (昨日、このトリックを見つけました)。後でプレイリストを強制的に更新したい場合は、既存のファイルを削除するだけで、スクリプトが次に呼び出されたときに更新が行われます (これには約 1 ~ 2 秒かかります)。Free は、プレイリストに定期的に特定の (通常は控えめな) 変更を適用することに注意してください。

プレイリストの名前/デフォルトの場所を簡単に変更でき、また「更新部分」を削除することもできます (気に入らない場合)。その場合は、適切な場所にプレイリストを手動で提供する必要があります。

ソースm3u プレイリスト内の特定のアイテムを再生する!? - The VideoLAN フォーラム


参考文献

関連情報