これは私のスクリプトの一部です。
mpv https://www.youtube.com/playlist?list=PLNQL50H--29oy5MOaxEVjcxhX-5Vvskji --shuffle --no-video --input-file=~/.config/mpv/mpv-fifo > data.txt
以下はファイルとして印刷する例です。
Playing: https://www.youtube.com/playlist?list=PLNQL50H--29oy5MOaxEVjcxhX-5Vvskji
Playing: ytdl://a-XXr1H1FeI
(+) Audio --aid=1 --alang=eng (*) (vorbis 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch float
私が望むのは、YouTubeのビデオID ' a-XXr1H1FeI
' - Playing: ytdl://
''の後ろにあるだけです。各IDは何百ものプレイリストの曲で、複数のプレイリストがあります。
現在の曲IDをファイルに保存したいです。これにより、youtube-dlを使用して曲のタイトルを取得し、conkyを使用して表示できます。曲をスキップしてから、YouTubeのプレイリストからスキップした曲を削除して管理し、IDを別のファイルに印刷することもできます。
ここでsedとgrepソリューションを試しました。一致するパターンに続く行部分のみを返します何も印刷しません。
私はプレイリストを使用しているので、このソリューションは次のようになります。オーディオのみを再生するときにmpvにYouTubeリンク名を表示するように設定動作しません。
sedにしたいことは次のとおりです。
結果は出ません。
mpv https://www.youtube.com/playlist?list=PLNQL50H--29oy5MOaxEVjcxhX-5Vvskji --shuffle --no-video --input-file=~/.config/mpv/mpv-fifo | sed -n 's~^Playing: ytdl://\(.*\)~\1~p' > data.txt
これは私が望むIDを提供しますが、スクリプトを停止するまで提供されません。曲が再生されるときに必要です。
mpv https://www.youtube.com/playlist?list=PLNQL50H--29o5FarbAFHBaUNRu2ipp4th --shuffle --no-video --input-file=~/.config/mpv/mpv-fifo > data.txt sed -n 's~^Playing: ytdl://\(.*\)~\1~p' data.txt > out.txt
修正する: 実際には動作しませんが、ほとんど似ていると思います。
mpv $url --shuffle --no-video --input-file=~/.config/mpv/mpv-fifo > ~/data.txt &
until [ "$1" = "q" ]
do
sed -n 's~^Playing: ytdl://\(.*\)~\1~p' ~/data.txt > ~/out.txt
> ~/data.txt
sleep 5
done
修正する:data.txt > out.txt
~/data.txt >> ~/out.txt
単一の現在のIDの代わりに生成されたIDのリストを提供することに変更したときに一種の効果がありました。私はこれを処理できると思います。また、ループは"$1" = "q"
。何が起こっているのかよく分からない。しかし、スクリプトを終了する別の方法が見つかりました。
これは完全なスクリプトです。 そのまま使っても構いませんが、ちょっと混乱しますね。数日間開いたままにして、誰も助けていない場合は解決されたと電話してください。
`#! /bin/bash
myfifo=~/.config/mpv/mpv-fifo
ケース '$1'
####################################コントロールr) echo add volume 10 > $myfifo
;;
q) echo stop > $myfifo ; pkill pymp
;;
p) echo pause > $myfifo
;;
n) echo playlist-next > $myfifo
;;
l) echo add volume -10 > $myfifo
;;
###############################プレイリスト
### Sleep & Meditation ###
S) pkill mpv
url=https://www.youtube.com/playlist?list=PLNQL50H--29pkOIBTq6tsWSqdY8ur7Xms
;;
### Epic Trailer Music ###
E) pkill mpv
url=https://www.youtube.com/playlist?list=PLNQL50H--29oy5MOaxEVjcxhX-5Vvskji
;;
### Virtuoso Instrumental Guitar ###
G) pkill mpv
url=https://www.youtube.com/playlist?list=PLNQL50H--29o5FarbAFHBaUNRu2ipp4th
;;
### Old-time Blues ###
B) pkill mpv
url=https://www.youtube.com/playlist?list=PLNQL50H--29pth2mWWKcBQd7YbVClBvea
;;
### Jazz Noir ###
J) pkill mpv
url=https://www.youtube.com/playlist?list=PLNQL50H--29pagSz1i0BG7-30knwiUNXH
;;
### Classic Rock ###
R) pkill mpv
url=https://www.youtube.com/playlist?list=PLNQL50H--29rjmhFC4SqiTQa4jp-NEUN8
;;
イサク
~/out.txt
mpv $url --shuffle --no-video --input-file=~/.config/mpv/mpv-fifo > ~/data.txt &
until [ "$1" = "q" ]
do
sed -n 's~^Playing: ytdl://\(.*\)~\1~p' ~/data.txt >> ~/out.txt
> ~/data.txt
sleep 5
done
出口
`
答え1
作業がとても簡単です。sed:
sed -n 's~^Playing: ytdl://\(.*\)~\1~p' yourfile
a-XXr1H1FeI