'가사'에 해당되는 글 7건

  1. 2007.05.25 Mpd 싱크 가사....... 프로그램 8
  2. 2007.01.08 Amarok 스크립트로 터미널에서 가사보기 6

Mpd 싱크 가사....... 프로그램

이딴거 올려봤자 별루 보는사람도 얼마 없겠지만뭐.........

두번째 프로젝트(?) 인 주2>MPD 용 싱크가사 프로그램을 대충~ 완성했다.........

일단 되는 기능은 잘 된다.... 내부적으로 고칠건 좀 있는데....... 안그래도 잘 작동하는데 고치기는

귀찮고 해서 현재 놀면서 방치중~~~ 귀차나~ 귀차나~ 어디 딴짓이나 해볼까~ 하고 있는.............

이거에 대해서 간단히 설명하자면 원래 랜덤여신님이 만든 주3>amarok-live-lyrics

가 있는데.. 그 프로그램에 서버로부터 가져오는 주소값만 살짝 내 프로그램으로 받게 해서 만든것!

사실 "구태여 이렇게 따로 프로그램을 만들지 않더라도"

저 amarok-live-lyrics의 내용만 약간 바꾸면 (주4>dcop 대신 주5>mpc를 써서 한다던가............)

mpd용으로 사용할수 있건만............ 만들어본,........

주6> conky에서 주7>파이썬 안써보고 프로그램 만들어보려고요...

 또.......어짜피 배우는 입장이기도 하고........ ,c언어 예/복습도 할겸................ )

대략 프로그램 구조가......

mp3파일을 읽어 망할놈의 태그 를 건너뛴 만큼 읽는 위치를 이동한다

-> 일정부분을 읽어서 md5 Hash(?) 한다

-> md5한 값을 바로슬 서버의 주소와 합쳐서  -> 주8>소켓써서 서버로부터 페이지를 받아온다

-> 새로운 가사 파일에 그 내용을 저장한다 -> 저장한 내용을 불러와서 메모리에 저장

-> 가사/시간 분리 -> 링크드리스트로 정리 -> 타이머써서 -> (시간에 맞춰) 출력하기.....

-> 에러있음 break -> 그리고 쭉~ 반복~.

아직 주9>터미널 전용(!) 프로그램이라 사용자 인터페이스는 정말 할말이 없다

(이부분에서만 보면 완존 쓰레기다 ; 그래서 주10>공개를 못하겠어용 ㅜ)

아직은 계획이 없지만... 뭐 필요하면 Gtk용 프로글햄으로 바꿀 생각도 있긴한데 귀차나서...

하지만! amarok-live-lyrics 보다 좋은건 딱 하나있다...... 주11> mutagen

을 쓰지않고 자체적으로 mp3파일을 분석해서 태그를 무시하기때문에.. 싱크가사 인식성공률이

amarok-live-lyrics보다 높다..........는거 정도...

(amarok-live-lyrics는 서버에 가사가 있는데도 불구하고 태그위치를 제대로  감지를 못해서

md5값을  잘못얻어오는 경우가 몇몇 mp3파일에서 발견되었었다........

모르겠다 요즘에 버젼업 되어서 고쳐졌는지...... )

주1>지워졌다 ㅋㅋ.

주2>MPD : Music Player Demon 일겁니다.. 내기억으로는.. 데몬이기때문에 재부팅을하거나
일부로 종료시키지 않은한 음악이 멈추질 않죠! 저는 가끔씩 X 를 재시작하는데 그때 음악이 끈겨서
참 안타까웠던차 이프로그램을 jazzbug님의 추천으로 사용하게 되었죠.......
괜찮네요.. 좋아요...근데 지원되는 파일 포맷이 mp3,ogg정도 밖에 없는게 단점..
망할 wma는 재생이 안돼ㅜㅜㅜㅜㅜㅜ

주3>amarok-live-lyrics 
랜덤여신님이 만든 live-lyrics 다음 링크를 참조해주세요.
http://barosl.com/blog/entry/amarok-live-lyrics

주4>dcop :amarok이 이거 쓰던데...... 이거쓰면 amarok이 플레이중인 시간,전체시간,곡이름등을 알수 있다
dcop amarok default 뭐시기.. 이런식으로 썻던거 같은데.. 지금 amarok을 실행시키고 있다면 함
해보시길어플의 상태를 알수 있게 해주는 뭐 그런 녀석인가부다......... 더이상은 모르겠삼..
gtk어플(?) 쪽에도 이런게 있던거 같긴함.

주5>mpc : Music Player Client 인가.. 그래요..

주7> conky
에서 주8>파이썬(python) 이가 메모리 젤많이 먹는거 보면 기분이 상당이 뭐하다(?) 그래서 파이썬
안쓰고 만들려다보니......

주8>소켓 : 이녀석도 기억이 안나서 혼자서 만들다가 몰라서 걍 소스 보고 몇줄 복사붙여넣기 했어요 ㅜㅜ

주9>터미널 전용(!) 프로그램 : 아시려나 모르겠지만 본인은 터미널 프로그램을 매우 사랑! 스러워한다..

주10>공개를 못하겠어용 ㅜ
그리고 우리나라에서 MPD를 쓰는 사람이 몇이나되겠으며( 아니 아는 사람이나 몇이나 될까! )
, 호좁한 인터페이스를 가진 이 터미널 프로그램을 쓸사람은 몇이나 되겠으며......
그래서 공개를 못하겠어욤...

주11> mutagen
파이썬 라이브러리라...물론 이 플그램은 C언어니까 쓸수 없기도 했고 또 c언어용 태그 라이브러리(id3lib인가?)가 존재는 하나 파일을 복사해놓고 거기서 다시 태그를 읽어오고 해야했기 때문에 비효울적인거 같기도 하고(mutagen을 쓴 amarok-live-lyrics도 그렇다..) 
사실 뻘짓할 시간이 아까우니 원래 이런 라이브러리를 쓰는게 이익이겠지만...
공부도 함 해볼겸해서  걍 내가 뻘짓해가면서 만듦

Amarok 스크립트로 터미널에서 가사보기

너므 허접 스럽슴다...
징글 맞은 바탕화면... (이 스크립트 사용 예제 입니다... 오른쪽 구석에 터미널...)
사용자 삽입 이미지


소개를 하자면..
dcop에서 amarok이를 제어할수가 있더라고요..
그중에서 dcop amarok player title 뭐 이렇게 하면 타이틀이 나오데요...
그걸 이용해서 허접스럽게 나마 끄적여 봤습니다..

중간에 환경변수 바꾸는 부분이 있는데.. 이건 쿼리 보낼때 EUC-KR로 보내야 되서..
처리 한겁니다.. 중간에 환경 변수를 바꾸니까는 적응이 안돼서 이상한 형식으로 해결했습니다.;;;

sed를 써서 중간 공백에 +기호를 넣어주는 곳도 있습니다.. 쿼리늘때 이렇게 해야 글자가 안짤리더군요..

결과적으로 하는 기능은 걍 주소 만들어주기 (.............. ) 바께 없습니다...(이 스크립트는)

게다가 곡이 바낄때 마다 수동으로 일일이 실행시켜줘야(.............) 하고
띠러 브라우저가 있어야 한다는점...도 점 그렇네요..

GTk+socket으로 제대로 된거 한번째볼라고 원래는 C로 짰었으나...접음
과정이 길거 같아서? 쉘스크립트로 만들어 봤습니다.;;
추가>CIX에 가사가 별루 없어서 안뜨는 가사가 좀 많습니다..
추가2>태그 내용을 잘 넣어 주셔야 합니다.. 아님 검색이 안되는................
.
#!/bin/bash.

clear
#---------------------------------------------------------------#
# #
# dcop을 이용한 amarok 가사보기?? #
# 07,1,2 #
# 폼잡기용으로 만듬.......Lowid................ #
# 좀 허접스리 보여도 좀 참아? 주세요 ; #
# 이 Cix에서 쿼리 줘서 가사 주소를 뽑는 플그램 입니다 #
# 뭐 더 정확하게 말하면 제트 오디오꺼;; #
#_______________________________________________________________#

if [ "`dcop amarok 2>/dev/null;echo $?`" == 1 ];then
echo "Amarok 프로그램이 켜졌는지 확인해 주세요"
exit
fi

if [ "`dcop amarok player status`" = 0 ]; then
echo "현재 재생중인 곡이 없습니다 정지중인지 확인해 주세요"
exit
fi

#로케일을 변경한다.. 이거 보다 좋은방법이 있을거 같은데...
if [ "$LC_CTYPE" != "ko_KR.EUC-KR" ]; then
env LC_CTYPE=ko_KR.EUC-KR $0 #자기자신을 다시 불러온다
#env를 쓰면 주어진 환경변수로 해당 프로그램을 켤수있다.
exit
else

ADDR_QER="http://cix.co.kr/player/jetaudio/lyrics.html?"

#사용자 정의 알아서 바꾸세영...
web_browser="w3m"
Options="-O UTF8"
turn_sec=2

while((1))
do
#dcop으로 Amarok 의 상태를 받아 온다
title=$(dcop amarok player title 2>/dev/null)
singer="`dcop amarok player artist 2>/dev/null`" #이거 두개 같은거다...
now_play="`dcop amarok player path`"

#간단한 필터...(공백 문자를 '+'로 바꾼다...
title="`echo $title | sed -e 's/ /+/g'`"
singer="`echo $singer | sed -e 's/ /+/g'`"
link=$ADDR_QER"title="$title"&singer="$singer""

#w3m으로 쿼리된 웹페이지를 보여준다.
#백그라운드 모드로 돌며 아래 루프를 실행한다.
$web_browser $Options $link &.br>
while((1))
do
sleep $turn_sec #3초에 1번씩 처크한다.

if [ `ps -C $web_browser >/dev/null;echo $?` == 1 ] ;then
exit
fi

if [ "$now_play" != "`dcop amarok player path`" ];then
#현재 재생중은 w3m종료,새로운 w3m을 새로운 변수로 실행
pts_num=`tty | sed -e s/[^0-9]//g` #정규식의 새로운 지평? 을 열다...
pkill -t pts/$pts_num w3m #받은 pts를 써서 현재 pts의 w3m만 kill 시킨다.
break;
fi
done
done
fi


Ps1:아 펄스크립트 배우는 중..
Ps2:dcop 옵션 보니까 잘하믄 amarok 자체 가사창의 URL 를 딴대로 돌려주는 방법도 있는듯합니다??
(실제로 있습니다...
http://amarok.kde.org/wiki/Script-Writing_HowTo_amarok_signal_dcop
를 참조 해보세요.. 직접 만들려고 하긴했는데.. 귀차나서..
예제파일은 amarok/scripts파일에 다 있더군요 가사 파일도 이 스크립트로 작동하는듯)
현재 종료시 좀 문제가 있음 (컨트롤 C를 눌려아 할때가 좀 있음)
ps3: 언재까지 BR 을 뒤에 넣어줘야 하는거냐!!!

'Linux > 내부설정' 카테고리의 다른 글

USB 스토리지 마운트 하기(SD,MMC카드,USB메모리)  (6) 2007.02.12
usb마운트  (2) 2007.02.11
[linux] 랜덤으로 바탕화면 바꾸기.  (2) 2006.12.24
w3m 기본 단축키 모음  (4) 2006.12.01
Arch에서 jfbterm 사용기  (2) 2006.11.28
prev 1 2 next