전에 경제의 신과 함께 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를 할당한다. 이걸로 끝이다.