전에 경제의 신과 함께 rss 다운로더를 만들었다.
여기에 이어서..이렇게 하면 plex가 idtag를 입력하는데, 파일 이름으로 입력한다. 불행히도 업로드 정보가 정확하지 않아 파일 이름만 보고는 도저히 언제 방송했는지 찾을 수 없다. 이 부분을 정리하기로 했다.
ID3를 입력하면 plex가 앨범?을 정보를 업데이트하여 입력한다. pubDate를 입력하면 좋으나, 앨범이 너무 많이 분리된다. 하나 앨범으로 track no를 다르게 입력했다. chmod 0 *.mp3를 몇 번 하다보면 파일 생성 날자를 잃어버려 참조한 파일을 기준으로 역순 정리했다.
- podcastDownload.sh 팟 캐스트 다운로드 스크립트. feed에서 필요한 url을 찾아 파일 정보, 출시 날자를 하나 파일로 만듦.
- makePodv2.sh. 1번에서 만든 파일을 기준으로 mid3v2로 해당 파일에 정보 입력.
- details.txt 디렉토리에 있어, 해당 디렉토리를 어떻게 mid3v2로 입력할지 규칙 설정. makePodv2.sh가 참조하는 파일.
아래는 경제의 신과 함께 다운로드하는 podcastDownload.sh
#!/bin/sh
#
# TEDTalks Downloader
#
# Copyright (C) 2009 Denver Gingerich
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#cron을 위한 cd
cd /mnt/ExtHDD2/PODcast/PODcast
echo "TEDTalks Downloader v0.1"
echo "by Denver Gingerich (http://ossguy.com/)"
echo
which wget
if [ $? -eq 0 ]; then
echo "Using wget..."
GET_CMD="wget --quiet -O"
else
which curl
if [ $? -eq 0 ]; then
echo "Using curl..."
GET_CMD="curl -L -o"
else
echo "Could not find wget or curl"
exit 2
fi
fi
echo
podcast_address=http://minicast.imbc.com/PodCast/pod.aspx?code=1000671100000100000
FEED=feed_podcast.xml
URLS=urls_podcast
echo "신과함께 다운로드"
TITLE=title.txt
INFOFILE=신과함께FileAndTitle.txt
DIRNAME=신과함께
rm -f ${FEED}
podcast_address=http://pod.ssenhosting.com/rss/geesik02
#lynx로 변경..
#wget은 파일을 받을 수 없음.
#${GET_CMD} ${FEED} ${podcast_address}
lynx -source ${podcast_address} > ${FEED}
cat ${FEED} | sed -n '/^<title>\[.*page2.*\]/,/type="audio/p' | grep enclosure | cut -d'"' -f2 > ${URLS};
#target file을 만듦.
cat ${FEED} | tr -d '\n' | sed 's/<item>/\n<item>/g' > ${TITLE}
while read filename;
do
#echo $filename;
#FILE="http://file.ssenhosting.com/data1/geesik02/SSSSS.mp3"
#tmpTitle=$(cat ${TITLE} | grep $filename | awk 'BEGIN{FS="[<>]"}/<title>/{print $5}'| tr -d ' ')
#아래 삭제.
#tmpTitle=$(cat ${TITLE} | grep "$filename" | awk 'BEGIN{FS='<title>'}{print $2}' | awk 'BEGIN{FS='</title>'}{print $1}')
#여기가 맞는 표현
#tmpTitle=$(cat ${TITLE} | grep "$filename" | awk 'BEGIN{FS="<title>"}{print $2}' | awk 'BEGIN{FS="</title>"}{print $1}')
tmpTitle=$(cat ${TITLE} | grep "$filename" | awk 'BEGIN{FS="<title>"}{print $2}' | awk 'BEGIN{FS="</title>"}{print $1}')
#tmpPubdate=$(cat ${TITLE} | grep $filename | awk 'BEGIN{FS="[<>]"}/<title>/{print $33}'| tr -d ' ')
tmpPubdate=$(cat ${TITLE} | grep "$filename" | awk 'BEGIN{FS="<pubDate>"}{print $2}' | awk 'BEGIN{FS="</pubDate>"}{print $1}')
#echo $tmpTitle;
#echo $tmpPubdate;
#printf "$filename""\t""$tmpTitle""\t""$tmpPubdate""\n">> ${INFOFILE}
#printf 사용할 경우, %가 들어가면 문제..아래와 같이 사용.
printf "$filename\t%s\t%s\n" "$tmpTitle" "$tmpPubdate" >> ${INFOFILE}
done < ${URLS}
#detail에 사용할 수 있도록 이동.
rm ${DIRNAME}/${INFOFILE}
mv ${INFOFILE} ${DIRNAME}
mkdir -p ${DIRNAME}
cd ${DIRNAME}
for line in `cat ../${URLS}`; do
#SIZE=`echo ${line} | cut -d: -f1`
#echo "출력분"
#URL=`echo ${line} | cut -d'"' -f2-`
#echo $URL
URL=`echo ${line}|tr -d '\r'`
FILENAME=`basename ${URL}|tr -d '\r'`
#echo ${URL}
#echo ${FILENAME}
if [ ! -f "${FILENAME}" ]; then
# || [ ${SIZE} -ne `ls -l "${FILENAME}" | awk '{print $5}'` ]; then
rm -f "${FILENAME}"
${GET_CMD} "${FILENAME}" "${URL}"
fi
done
cd ..
아래는 makePodv2.sh
#!/bin/bash
#for FILE in *.webm; do
# echo -e "Processing video '\e[32m$FILE\e[0m'";
# ffmpeg -i "${FILE}" -vn -ab 320k -ar 44100 -y "${FILE%.webm}.mp3";
#done;
order=$(mktemp);
#FILE="AlexisFfrench-AMomentInTime-woETd5QW52E.mp3"
#Details.txt 파일에 형식 정의 ^I로 구분됨.
#SONGEXP: 곡 형식
FILEEXP=$(cat ./details.txt | grep -w FILETYPE | cut -d' ' -f2-)
#참조할 파일.
EXTRAINFO=$(cat ./details.txt | grep -w PODCASTFILE | cut -d' ' -f2-)
#기록된 파일에서 reverse order로 정렬.
#앞에 파일이 최근..
#echo $EXTRAINFO
tac $EXTRAINFO > $order;
#head -10 $order;
#detail을 " "로 감쌈
#echo $FILEEXP
eval mfile="$FILEEXP"
#echo $mfile
total=$(ls *."$mfile" | wc -l)
#echo "check"
#echo $total
#처음 시작시.
trackNo=0
#이어서 할 경우
#trackNo=$(expr $total + 1)
#for FILE in *."$mfile"
#for FILE in $(ls *."$mfile" | sort -V)
for FILE in $(ls *."$mfile" | sort -V | head -3)
#for FILE in $(ls -- $mfile | sort -V)
do
#echo "파일이름은" $FILE
#echo $mfile
#기록된 파일에서 reverse order로 정렬.
#앞에 파일이 최근..
trackNo=$(cat -n $order | grep $FILE | cut -d' ' -f1)
echo $trackNo
diskNo=$(expr $trackNo / 100 + 1)
#trackNo=$(expr $trackNo + 1)
#EXTRAFILE에서 file을 찾아 두번째 정보
SONGEXP=$(cat ./details.txt | grep -w SONGEXP | cut -d' ' -f2)
#echo $FILE
#echo "$SONGEXP"
#변수에서 읽은 expression을 실행하여 다시 변수에 할당.
eval song="$SONGEXP"
ARTISTEXP=$(cat ./details.txt | grep -w ARTISTEXP| cut -d' ' -f2)
#echo $ARTISTEXP
eval artist="$ARTISTEXP"
ALBUMEXP=$(cat ./details.txt | grep ALBUMEXP| cut -d' ' -f2)
eval album="$ALBUMEXP"
mYearDateEXPtmp=$(cat ./details.txt | grep -w mYearDateEXP| cut -d' ' -f2)
eval myeardatetmp="$mYearDateEXPtmp"
yeartmp=$(echo $myeardatetmp|cut -d' ' -f3);
monthtmp=$(echo $myeardatetmp|cut -d' ' -f2);
daytmp=$(echo $myeardatetmp|cut -d' ' -f1);
#echo $myeardatetmp
#echo $yeartmp
#echo $monthtmp
#echo $daytmp
#from
#https://www.unix.com/shell-programming-and-scripting/191527-converting-month-into-integer.html
M=1
for X in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
do
[ "$monthtmp" = "$X" ] && break
M=`expr $M + 1`
done
myeardate=$(date --date="$(printf "%s" $yeartmp-$M-$daytmp)" +"%Y-%m-%d")
#$yeartmp-$monthtmp-$daytmp "+%Y-%m-%d")
GENREEXP=$(cat ./details.txt | grep -w GENREEXP| cut -d' ' -f2)
eval genre="$GENREEXP"
ARTISTEXP2=$(cat ./details.txt | grep -w ARTISTEXP2| cut -d' ' -f2)
#echo $ARTISTEXP
eval artist2="$ARTISTEXP2"
echo "SONG" $song
echo "Artist" $artist
echo "Artist2" $artist2
echo "Album" $album
echo "Date" $myeardate
echo "Genre" $genre
echo "TrackNo" $trackNo
echo "Diskno" $diskNo
mid3v2 -t "$song" -A "$album" -a "$artist" -y "$myeardate" -T "$trackNo/$total" --TCON $genre --TPE2 "$artist2" --TPOS "$diskNo" "$FILE"
#track no를 입력하지 않음.
#mid3v2 -t "$song" -A "$album" -a "$artist" -y "$myeardate" --TCON $genre --TPE2 "$artist2" "$FILE"
done
아래는 details.txt
SONGEXP $(cat $EXTRAINFO | grep $FILE | cut -d$'\t' -f2) ARTISTEXP "삼프로" ALBUMEXP "경제의신과함께" mYearDateEXPtmp "2020-1-1" mYearDateEXP $(cat $EXTRAINFO | grep $FILE | cut -d$'\t' -f3 | cut -d',' -f2| cut -d' ' -f1-4) GENREEXP "팟캐스트" FILETYPE "mp3" PODCASTFILE 신과함께FileAndTitle.txt
입력 순서대로 역순 정리하여 track no를 할당한다. 이걸로 끝이다.