2009년 3월 26일 목요일

파이썬으로 sftp에서 MP3P 자동 갱신

많은 분들이 홈서버를 통해 mms 스트림을 녹음하고 계신 걸로 알고 있습니다.


저도 EBS 라디오가 mms서비스를 접기 전 까지 EBS 라디오를 통해 영어공부를 하는데 이를 활용하고 있었지요



그 방법은 고수민 님의 블로그 중 라디오로 영어공부 제대로 하는 법에 잘 나와 있습니다. :)



EBS 라디오는 홈페이지 개편 후에 - 바보같이도- ActiveX를 사용해 스트리밍 방송을 하고 있습니다.



KLDP의 bushi님 께서 계속 리눅스박스에서 들을 수 있는 을 열어 주셨습니다!! 감사합니다. (__)



하지만 본인은, 아니꼬와서, 그 즈음부터 시작한 English only 방송, tbs eFMOut Of Bed with Travis를 듣고 있습니다. tbs eFM의 방송들은 아직 DJ들이 서툴어 보이는 점도 있지만, 보다 실전 영어에 가까워 진 느낌이며, 음악도 틀어줍니다. 오예~


녹음방법은 예전과 동일합니다. 자세한 설명은 생략하고, tbs eFM의 mms 주소는 다음과 같습니다.



  • mms://58.227.116.249/eFM


자 그럼. 홈서버에 날자별로 mp3파일들이 쌓여 있게 되고, sftp를 통해 다운받아 MP3P로 옮겨 듣곤 하였습니다.


어우... 이게 은근히 귀찮길래 스크립트를 써 봤습니다.




다음 링크에서 다운 받으세요.



제가 필요했던 기능들은 다음과 같습니다.



  • 원클릭으로 홈서버의 sftp를 통해 mp3파일들을 다운-갱신- 해 줄 것

  • mp3 플레이어에 넣고 다닐만큼 작을것

  • 윈도/리눅스에서 모두 실행 가능할 것


파이썬과 ssh2 라이브러리 paramiko를 사용하여 위의 조건을 모두 충족시킬 수 있었습니다.



윈도에서 paramiko를 사용하려며 PuTTY가 필요합니다. 그 밖에는 OS를 가리지 않고 동일한 코드로 동작합니다. 오예~



다음은 제 MP3P를 연결한 화면:


 


자동 업데이트 스크립트와 ssh2 개인키를 넣어두어 파이썬과 paramiko가 깔린 곳(제가 쓰는 PC들에는 모두 깔려 있습니다.)이라면 어디서든 준비완료 입니다. 추가 용량은 단 5k


윈도에선 파이썬 설치시 py 확장자가 파이썬 인터프리터에 연결되어 스크립트를 더블 클릭하는 것 만으로 실행 됩니다.


다음은 자동 업데이트 스크립트의 실행 장면:



3일만의 실행 화면이네요. 이전 파일들을 지우고 새 파일들 3개를 다운받고 있습니다. paramiko1.7.4 버젼부터는 sftp의 전송 상태를 CB 함수에 건네줄 수 있게 되어, 파이썬 소리바다 클라이언트에 사용되었던 CUI 진행 바를 붙여 보았습니다.


워낙 간단한 스크립트니 sftp를 사용하지 않으시는 분들은 입맛에 맞게 ftp나 http등을 사용하도록 바꿔 보세요. :)