[태그:] 신과함께

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

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

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

  • 신과 함께 rss

    팟빵이 경제의 신과 함께를 호스팅하여 잘 듣고 있었다. 언젠가부터 rss로 표시되는 파일 경로를 숨겨버려 crontab으로 자동으로 받을 수 없었다. 한동안 듣지 못하다, 꼼수를 찾았다.

    http://pod.ssenhosting.com/rss/geesik02

    여기에 팟빵이 호스팅하는 모든 파일이 있다. 여기에서 해당하는 채널을 잘라 받으면 쉽다. 나중에 주소를 바꿀 수도 있지만, 귀찮아서 굳이 그렇게 하지 않을까 한다.

    #!/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.
    
    echo "TEDTalks Downloader v0.1"
    echo "by Denver Gingerich (http://ossguy.com/)"
    
    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 "신과함께 다운로드"
    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};
    
    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 ..