制作脚本在 VLC 网络(MojaveOS)中自动加载 m3u

制作脚本在 VLC 网络(MojaveOS)中自动加载 m3u

所以我厌倦了总是要打开 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

如果您可以使用 shell 脚本,那么您可以使用以下脚本并根据您的特定要求进行修改:

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),并且您可能需要添加第二个模式(如 HD 或 TNT)来选择正确的电视通量。

在此版本中,首次启动脚本时,它将从 Freebox 下载播放列表(使用 wget),将重音字符替换为非重音字符,并将其存储在默认位置 /tmp/playlist.m3u(我昨天发现了这个技巧)。当您稍后想要强制更新播放列表时,只需删除现有文件,下次调用脚本时就会完成更新(这大约需要 1-2 秒)。请注意,Free 会定期对播放列表应用某些(通常是适度的)更改。

您可以轻松修改播放列表的名称/默认位置,也可以删除“更新部分”(如果您不喜欢它),在这种情况下您必须在适当的位置手动提供播放列表。

来源播放 m3u 播放列表中的特定项目 !? - VideoLAN 论坛


进一步阅读

相关内容