경제의 신과 함께 rss 다운로더 v2.

전에 경제의 신과 함께 rss 다운로더를 만들었다.

경제의 신과 함께 rss 다운로더.

여기에 이어서..이렇게 하면 plex가 idtag를 입력하는데, 파일 이름으로 입력한다. 불행히도 업로드 정보가 정확하지 않아 파일 이름만 보고는 도저히 언제 방송했는지 찾을 수 없다. 이 부분을 정리하기로 했다.

ID3를 입력하면 plex가 앨범?을 정보를 업데이트하여 입력한다. pubDate를 입력하면 좋으나, 앨범이 너무 많이 분리된다. 하나 앨범으로 track no를 다르게 입력했다. chmod 0 *.mp3를 몇 번 하다보면 파일 생성 날자를 잃어버려 참조한 파일을 기준으로 역순 정리했다.

  1. podcastDownload.sh 팟 캐스트 다운로드 스크립트. feed에서 필요한 url을 찾아 파일 정보, 출시 날자를 하나 파일로 만듦.
  2. makePodv2.sh. 1번에서 만든 파일을 기준으로 mid3v2로 해당 파일에 정보 입력.
  3. 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를 할당한다. 이걸로 끝이다.

자 이제 인프라는 됐으니, 돈만 벌면 된다!

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.