작년 12월경 부터 IPod Touch 를 이용하여 잘 듣던 모 라디오 방송사의 영어 방송이 아쉽게도 얼마전부터 iTunes의 Podcast directory 에서 더이상 업데이트 되질 않고 있었습니다. 그런데 앞으로도 주욱 할생각이 없는 모양이라서 개인적으로 불편이 이만 저만이 아니었습니다.
4월 초 까지는 다음과 같이 그 방송을 들을 수 있었습니다.
그 방송을 IPod 으로 계속 해서 들으려면 다음과 같은 일련의 과정을 거쳐야 합니다.
과정이 복잡해진것은 물론이고 수십배 이상의 시간을 투자해야 하는 엄청난 불편함이 따릅니다.
이 10단계를 거쳐서 podcast를 들으려면 전보다 30분은 일찍 일어나야 하지요...
그래서 한 2주간 방송을 못들었습니다.
이 방송의 mp3 가 free 이기는 하나 저작권 문제도 있고 여러가지 문제가 있을 법하여, 좀 이기적이지만 저만 사용하고 Feed URL을 공개하지 않으려고 합니다.
그런데 이렇게 포스팅 하는 이유는 Python 을 이용하여 Google App Engine 을 이용하여 이런 응용을 해봤다는 것을 자랑하려고 ... ^^;
그럼 개발기(?)를 간단히 소개해 보겠습니다.
1. Podcast 에 대해 리뷰
Podcast 써보기만 했지 이것을 만들어 보게 될줄은 몰랐습니다. Podcast 는 RSS 와 같은 형식으로 작성 하는 것인데 자세한 스펙은
Apple 홈페이지에 잘 나와 있습니다. 뭐 간단하게 이 형식을 준수하며 text/xml 로 출력해주면 됩니다.
2. mp3 URL 조사
방송사 홈페이지의 Active X가 실제로 mp3 를 받아오는 경로를 조사하기 위해서 Wireshark 를 실행했는데 집의 PC가 무선랜카드를 쓰는이유로 패킷 캡춰가 안되었습니다. 무선 인터페이스를 통한 패킷 캡춰는
AirPcap 이라는 드라이버를 돈을 주고 사야 되더군요. 예전에 Ethereal 썼을 때는 되었던것 같은데 아무튼 지금은 돈이 들더군요. 그래서 공짜로 쓸수 있는 패킷 캡춰 프로그램을 찾아 봤는데 고맙게도 MS에서 Network Monitor 3.2 라는 툴을 공짜로 제공해주더군요. 무선 I/F 도 잘 캡춰가 됩니다.
이걸로 mp3 를 서빙하는 위치를 알아내었습니다.
왜 Active X 로 HTTP 를 써서 공짜 mp3 를 제공해주는지 참으로 이해하기 힘들더군요. 왜 일까... 왜...
3. Google App Engine 학습
Google App Engine 은 구글의 Cloud Computing 서비스 플랫폼 입니다. 뭐 여러가지 의미가 있겠지만 저같은 사람의 입장에서 설명하자면, 개발자들에게 공짜로 호스팅 환경을 제공해 주는 구글의 실험적인 서비스라고나 할까요? 구글의 웹서버와, Python/Java 개발환경, Database 등을 맛볼수 있습니다. 트래픽의 제한이 있으나 저같이 짜잘한 용도로 쓰는 경우라면 큰 무리가 없지요.
사실 몇달 전에 잠깐 만져보았었는데, 이번에 다시 들어가 보니 Java 개발 환경이 추가 되어 있더군요. 뭐 저야 Python 으로 작업할 생각이라 별 관심은 없지만, Java 개발자들도 이제 관심을 가져볼만 할듯 싶습니다. 앞으로도 PHP등의 다른 개발환경도 추가된다는 이야기도 본것 같은데, Java로 PHP 를 구현하여 미리
사제 PHP for Google App Engine 을 구현해 버린 사람도 있네요. 대단합니다. Jython 같은 건가요...
뭐 어찌 되었건 이번 사소한 개발에서 Google App Engine 의 역할은 RSS 를 제공해주는 웹서버가 될것입니다. Google App Engine의 Python 환경이 DJango를 써서 웹사이트를 개발하도록 제공하고 있는데, DJango 같은것 몰라도 RSS 정도는 쉽게 만들수 있습니다. XML을 만들어서 print 만 하면 되니까요.
4. 준비물 (Windows 환경)
Google App Engine SDK,
msys,
git, gvim 정도 준비하면 끝.
아 당연히 Google App Engine 서비스에 가입해야 하는데, 저는 http://exman.appspot.com 을 할당 받아 쓰고 있습니다.
소스를 날리는 것에 대비해서 git 로 local repository 를 만들어 작업 했습니다.
저는 Windows 에서 개발할때 msys 환경에서 주로 작업합니다. msys 만세!,
윈도우즈용 git 도 msys 환경으로 빌드 되어서 배포 되고 있더군요.
$ mkdir exman.appspot
$ cd exman.appspot
$ git init
$ git add app.yaml exman.py ...
5. 시퀀스
http://exman.appspot.com/ 는 제 개인 놀이터 입니다. 이 아래의 urn 은 비공개로 작업을 하고 있습니다. 뭐 찍으면 맞출수 있겠죠... 아무튼 / 으로 들오오면 "Hi surfers! 어쵸고 저쵸고" 가 보일 뿐입니다.
아무튼 제 google app engine 에서 이번 소소한 개발에 사용된 구성 요소는 다음의 3가지 입니다.
ㄱ. http://exman.appspot.com/xxxx-update : RSS를 새로 갱신하여 Cache 를 만듭니다.
ㄴ. http://exman.appspot.com/xxxx : Podcast RSS
ㄷ. /xxxx-update 을 3시간 마다 실행시켜 주는 Cron Job
ㄱ. 의
/xxxx-update 를 먼저 웹브라우져를 통해서 최소 하루에 1번은 Request 를 해주어야 합니다. 이 urn 에 해당하는 python script 에서 모 방송사의 홈페이지의 RSS을 urlfetch 를 이용하여 다운로드 받습니다. 그리고 minidom 을 이용하여 각각의 item 정보를 얻어온뒤 net monitor로 알아낸 mp3 URL 을 넣어서 다시 RSS data 를 만들고 memcache 를 이용하여 캐쉬해 둡니다.
ㄴ. 의 /xxxx 에서는 이렇게 캐쉬된 RSS 데이타를 그냥 출력해줍니다. 매번 방송사 사이트에서 RSS를 가져와서 데이타를 가공하여 출력하지 않기 때문에 빠릅니다. 방송사 사이트에 트래픽으로 인한 피해도 주지 않지요.
ㄷ. 은 cron.yaml 을 만들어 주고 다음과 같이 작성해주었습니다.
cron:
- description: daily xxxx update
url: /xxxx-update
schedule: every 3 hours
이러면 3시간 마다 /xxxx-update 을 request 하여 마치 Unix 의 Crontab 을 설정 한것과 같아 집니다. 3시간 마다 자동으로 ㄱ.의 과정을 수행해 주는 것이지요.
6. 테스트
소소한 개발은 다 끝났습니다. google app engine 의 SDK 를 이용하여 다음과 같이 업데이트를 합니다.
$ appcfg.py update .
이제 PC의 iTunes 에서 Podcast 등록 메뉴를 통해 http://exman.appspot.com/xxxx 를 등록하고 즐기면 됩니다.
그리고 IPod Touch 에 Sync 하면 그때부터 Touch 에서 Wi-fi 를 통해 Podcast 를 편리하게 Update 할수 있을.......줄..... 알..... 았..... 는..... 데......
TT
안되네요. 쩝...
RSS URL을 Podcast Directory 에 등록하지 않아서 그런 것인지...
PC 의 iTunes 에서만 잘 동작합니다.
자세한 이유는 모르겠습니다만 Touch 에서는 '더 많은 에피소드 얻기' 를 하면 그냥 iTunes 웹사이트만 뜨고 RSS 가 나오지는 않네요.
아쉽지만 더이상의 삽질은 이제 그만하기로 하고 마음 정리를 하였습니다.
그래서 지금은 Mobile Cast 라는 Cydia App 을 이용하여 저의 '사제 XXXX Podcast' 를 즐기고 있습니다. 이 프로그램은 이런 RSS의 데이타를 IPod Touch 에 저장하여 볼수 있는 기능이 있어서 Podcast 를 저장해서 들을 수 있네요...
일단 Mobile Cast 에서라도 잘 동작 한다는 것에 만족하고 소소한 개발은 막을 내립니다.
Cydia 만세!!!
...
7/1 일 추가
Podcast Directory 에 소심하게 등록했었는데, 아이팟 터치의 iTunes에서 검색이 안되길래 등록에 실패한것으로 알고 있었는데, 몇일 걸렸던 모양입니다.
그동안 Mobile Cast 를 이용해서 제가 등록한 Podcast RSS를 직접 땡겨와서 듣고 있었는데, 오늘 문득 iTunes 에서 검색해보니 나오네요. ㅎㅎ
아이팟 터치에서도 "음악" 프로그램으로 업데이트 받을 수 있고, 잘 됩니다. ㅎㅎ
그리고 그 영어 방송의 Podcast 도 다시 부활한 모양인데, 여러개가 나옵니다.
제가 만든거는 그중에서 인기도 3위이네요 ㅎㅎ
혹시 쓰시는 분들은 이게 Google App Engine 으로 도는것인지 아시려나 ㅎㅎ