콘텐츠로 바로가기

now0930 일지

이런저런 생각

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

과학하고 앉아있네 podcast 다운로드 + plex 관리 스크립트

과거 쎈호스팅에서 mp3를 다운로드를 제공했었는데, 팟빵 앱으로 접근하지 않는 사용자들을 제약하려고 주소를 옮겼다. 겨우 찾았는데, 쎈호스팅과 과학과사람들이 어떤 일을 했는지 이후 다운로드 서비스도 하고 있지 않았다. 귀찮아 방치했는데, 하드디스크로 바꾼 기념으로 찾아보니, 홈페이지가 rss를 제공하고 있었다.

bash로 xml을 parsing하기 힘들어 xpath 도움을 받았다. xpath를 쓰지 않았을 때 정규표현식으로 억지로 뽑아냈다. xmllint도 있는데, 맨 처음 한 개만 제대로 출력하고 이 후 정보를 무시해버려 시간만 날렸다. 몇 시간 노가다 끝에 다음 방식으로 정리했다. 과거 노가다보다 훨씬 정확하고 보람차다.

#!/bin/bash
#cron을 위한 cd
cd ???

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

FEED=feed_podcast.xml
URLS=urls_podcast
DIRNAME=파토의과학

rm -f ${FEED}
rm -f ${URLS}

#podcast_address=http://www.podbbang.com/ch/6205
podcast_address=https://feeds.feedburner.com/sciencewithpeople
${GET_CMD} ${FEED} ${podcast_address}

#xpath 
#get nth item
#xpath -e "//rss/channel/item[position()=2]/title" temp2.txt
patoCouter=10;
#과학과사람들fileInfo.txt 만듦.
#filename, path, title, 업데이트일 순으로 정리
for i in $(seq 1 $patoCouter);
do
	#echo $i
	title=$(xpath -q -e "//rss/channel/item[position()=$i]/title" ${FEED})
	title2=$(echo $title | sed 's/<title>//g' | sed 's/<\/title>//')
	title3=$(echo $title2 | sed 's/  / /g' | sed 's/,/_/g')
	#echo $title3

	fileTmp=$(xpath -q -e "//rss/channel/item[position()=$i]/enclosure" ${FEED})
	file=$(echo $fileTmp | cut -d'"' -f2)
	#echo $file

	pubTmp=$(xpath -q -e "//rss/channel/item[position()=$i]/pubDate" ${FEED})
	pub=$(echo $pubTmp| sed 's/<pubDate>//g' | sed 's/<\/pubDate>//'| cut -d',' -f2 | cut -d' ' -f1-4 | sed 's/^ //g')
	#monthtmp=$(echo $pub | cut -d'-' -f2)
	#daytmp=$(echo $pub | cut -d'-' -f1)
	#yeartmp=$(echo $pub | cut -d'-' -f3)
	#echo $pubTmp
	echo $pub
	#echo $monthtmp
	#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")
	#echo $myeardate

	printf "$title3" >> ${URLS}
	printf "," >> ${URLS}
	printf "$file" >> ${URLS}
	printf "," >> ${URLS}
	printf "$pub" >> ${URLS}
	printf "\n" >> ${URLS}

done

cp ${URLS} ${DIRNAME}/파토가과학하고앉아있네FileAndTitle.txt

mkdir -p ${DIRNAME}
cd ${DIRNAME}
for line in $(cat ../${URLS} | cut -d',' -f2);
do
	URL=$(echo ${line} | cut -d',' -f2)
	FILENAME=`basename ${URL}|tr -d '\r'`
	if [ ! -f "${FILENAME}" ]; then
#	 || [ ${SIZE} -ne `ls -l "${FILENAME}" | awk '{print $5}'` ]; then
		rm -f "${FILENAME}"
		${GET_CMD} "${FILENAME}" "${URL}"
	fi
done

plex media server가 정확하게 인식하도록 id3 태그를 각 파일에 입력했다.

now0930@gen8:파토의과학$ ls -t
파토가과학하고앉아있네FileAndTitle.txt  174371_1619141878558.mp3  174371_1621561758166.mp3  174371_1616052641424.mp3  174371_1617934621403.mp3  174371_1620965968488.mp3  details.txt
174371_1616979006251.mp3                174371_1620359306326.mp3  174371_1622166509979.mp3  174371_1618471405918.mp3  174371_1617304165488.mp3  conver.jpg

파토가과학하고앉아있네FileAndTitle.txt 파일은 id3를 입력할 수 있는 파일, 태그, 날자 데이터다.

now0930@gen8:파토의과학$ cat 파토가과학하고앉아있네FileAndTitle.txt | head -10
삼테성즈 S7E04 반도체 대란_ KF21 핵심기술 그리고 게임의 역사2!,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1622166509979.mp3,28 May 2021
과학하고 앉아있네 S7E04 K박사 완전 복귀 특집! 암흑의 물질과 K박사의 어두운 미래,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1621561758166.mp3,21 May 2021
격동 500년! S7E04 세계적인 나비박사 석주명 선생!,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1620965968488.mp3,14 May 2021
뉴스룸! S7E04 생명연장의 시간표_ 그리고 나의 뇌를 다스리자! feat. 카이스트 김대수 교수,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1620359306326.mp3,07 May 2021
삼테성즈 S7E03 화제의 메타버스 특집! Feat. 강원대 김상균 교수,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1619141878558.mp3,23 Apr 2021
과학하고 앉아있네 S7E03 빛은 뭐고 LCD는 뭐고 OLED는 또 뭐냐? feat. 한림대 고재현 교수,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1618471405918.mp3,16 Apr 2021
격동 500년! S7E03 태양의 정체를 밝히다! 세실리아 페인.,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1617934621403.mp3,09 Apr 2021
뉴스룸! S7E03 화성 퍼시비어런스 엠바고 속보! 그리고 자연계 5번째의 힘 발견? feat. 박인규 교수,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1617304165488.mp3,02 Apr 2021
(음질보정재업) 삼테성즈! S7E02 딥페이크_ 전기자동차_ NFT_ 비디오게임. Feat. K2박사_ 최팀장,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1616979006251.mp3,28 Mar 2021
과학하고 앉아있네 S7E02 코로나백신 완전 털기! feat. 남재환 교수_ 김연희 기자,https://cdn-cf.podty.me/meta/episode_audio/22286/174371_1616052641424.mp3,19 Mar 2021

details.txt 파일은 각 디렉토리별 어떻게 입력할지 대한 규칙이다. 각 폴더마다 스크립트를 다르게 사용할 수 없어, details.txt로 각 폴더 규칙을 정리했다.

now0930@gen8:파토의과학$ cat details.txt 
SONGEXP	$(cat $EXTRAINFO | grep $FILE | cut -d',' -f1)
tmpSONGEXP	$(cat $EXTRAINFO | grep $FILE | cut -d$'\t' -f2)
ARTISTEXP	"파토"
ALBUMEXP	"파토가과학하고앉아있네"
mYearDateEXPtmp	"2020-1-1"
mYearDateEXP	$(cat $EXTRAINFO | grep $FILE | cut -d',' -f3)
GENREEXP	"팟캐스트"
FILETYPE	"mp3"
PODCASTFILE	파토가과학하고앉아있네FileAndTitle.txt

id3를 업데이트 하는 스크립트를 실행하면 각 폴더에 설정한 details.txt를 읽어 업데이트 한다. 이전에 이 내용을 포스트했다. 다 하고나니 이렇게까지 해야 하나 싶다. 관리하기 참 까다롭다. plex media server 스캐너까지 관리하고 싶은데, 어떻게 하는지 모르겠다. 모두 하면 다음과 같이 관리할 수 있다.

이 글 공유하기:

  • Tweet
발행일 2021-05-30글쓴이 이대원
카테고리 생활코딩 태그 idv3, mid3v2, mp3, plexmediaserver, tag

댓글 남기기응답 취소

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

글 내비게이션

이전 글

linux kernel 중 container_of 이해와 사용

다음 글

5장 인터럽트, p345 실습

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로 제작.
 

댓글 로드중...