動画からワンクリックで音声を抽出+再生できる機能を先日実装した。
おかげでサーバにmp3がどんどん貯まる。
お気に入りのmp3ばかりなので順番に再生したい。最新のだけを拾って再生するスクリプトにする。長い音声(5MB以上)は音楽以外(英語の会話)だったりするから読み飛ばす。
RaspberryPi3 で実行してテレビで再生させる。
できた。
$ vim mymp3recent.sh
29行目+61行目
ファイル名に半角スペースが含まれていてもブツ切りされないように一時的にIFSを変更している。
コピペ用
1 #!/bin/bash
2
3 shopt -s expand_aliases
4 source ~/.bashrc
5
6 # shopt について
7 # https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
8
9 # 異常時にちゃんと止まるスクリプト
10 # http://fj.hatenablog.jp/entry/2017/05/20/192431
11 #set -eu -o pipefail
12 #trap 'echo "ERROR: line no = $LINENO, exit status = $? > &2; exit 1' ERR
13
14 mydate=`date +"%Y%m%d_%H%M%S"`
15 mypath=`pwd`
16
17 echo $mydate
18
19 # http://d.hatena.ne.jp/nattou_curry_2/20091103/1257262803
20 # Bashを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計
21
22 # 関数
23 # function multi() { echo "数値を入力"; read ans; for i in $(seq 1 10); do ech o "$i"; echo $*1; done; }
24
25 # IFSを一時的に変更
26 # http://min117.hatenablog.com/entry/2020/01/03/104644
27 # ( IFS=$'\n'; for i in $(ls -rt | grep mp3 | tail -n 10 ); do echo "$i"; )
28
29 ( IFS=$'\n'
30 ## ls -rtでファイル名だけ取得
31 # IFSを改行だけにしてるから
32 # 半角入ってても取得できる
33 for i in $(ls -rt | grep .*mp3$ | tail -n 30)
34 do
35 echo "$i"
36 # ファイルサイズを取得
37 # lsに人間読めるhをつけちゃうとファイルサイズ表記が3.1Mのようになり
38 # if文で使えなくなる
39 # mp3SIZE=`ls -shalrt "$i" | awk '{print $1}'`
40 #mp3SIZE=`ls -salt "$i" | awk '{print $1}'`
41 mp3SIZE=`ls -salt "$i" | awk '{print $1}'`
42 mp3TIME=`ls -salt "$i" | awk '{print $7,$8,$9}'`
43 echo $mp3SIZE'KB'
44 echo '----------'
45 echo $*2'MB'
46 echo $mp3TIME
47 echo '----------'
48 # echo `echo $mp3SIZE | awk -FM '{print $1}'`
49 # 5MB以上のmp3なら読み飛ばす
50 if [[ "$mp3SIZE" -gt 5000 ]]
51 then
52 echo '5000 over'
53 else
54 echo 'YEEEEES'
55 omxplayer "$i"
56 fi
57
58 echo '--------------------'
59 done
60
61 )
62