콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

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

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

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

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

이 글 공유하기:

  • Tweet
발행일 2020-07-08글쓴이 이대원
카테고리 생활코딩 태그 신과함께, 팟캐스트

댓글 남기기응답 취소

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

글 내비게이션

이전 글

inotify 예제

다음 글

anonymous memory mapping, p308

2025 5월
일 월 화 수 목 금 토
 123
45678910
11121314151617
18192021222324
25262728293031
4월    

최신 글

  • common mode, differential mode 2025-05-11
  • signal conditioner, 신호 처리기 2025-05-10
  • strain gage 2025-05-09
  • 칼만 필터 2025-05-01
  • positioner(I/P) 2025-04-26

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.