'가사'에 해당되는 글 7건
- 2007.05.25 Mpd 싱크 가사....... 프로그램 8
- 2007.01.08 Amarok 스크립트로 터미널에서 가사보기 6
Mpd 싱크 가사....... 프로그램
Programming/C 2007. 5. 25. 12:47
이딴거 올려봤자 별루 보는사람도 얼마 없겠지만뭐.........
주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도 그렇다..)
사실 뻘짓할 시간이 아까우니 원래 이런 라이브러리를 쓰는게 이익이겠지만...
공부도 함 해볼겸해서 걍 내가 뻘짓해가면서 만듦
두번째 프로젝트(?) 인 주2>MPD 용 싱크가사 프로그램을 대충~ 완성했다.........
일단 되는 기능은 잘 된다.... 내부적으로 고칠건 좀 있는데....... 안그래도 잘 작동하는데 고치기는
귀찮고 해서 현재 놀면서 방치중~~~ 귀차나~ 귀차나~ 어디 딴짓이나 해볼까~ 하고 있는.............
이거에 대해서 간단히 설명하자면 원래 랜덤여신님이 만든 주3>amarok-live-lyrics
가 있는데.. 그 프로그램에 서버로부터 가져오는 주소값만 살짝 내 프로그램으로 받게 해서 만든것!
사실 "구태여 이렇게 따로 프로그램을 만들지 않더라도"
저 amarok-live-lyrics의 내용만 약간 바꾸면 (주4>dcop 대신 주5>mpc를 써서 한다던가............)
mpd용으로 사용할수 있건만............ 만들어본,........
주6> conky에서 주7>파이썬 안써보고 프로그램 만들어보려고요...
또.......어짜피 배우는 입장이기도 하고........ ,c언어 예/복습도 할겸................ )
아직 주9>터미널 전용(!) 프로그램이라 사용자 인터페이스는 정말 할말이 없다
(이부분에서만 보면 완존 쓰레기다 ; 그래서 주10>공개를 못하겠어용 ㅜ)
아직은 계획이 없지만... 뭐 필요하면 Gtk용 프로글햄으로 바꿀 생각도 있긴한데 귀차나서...
하지만! amarok-live-lyrics 보다 좋은건 딱 하나있다...... 주11> mutagen
을 쓰지않고 자체적으로 mp3파일을 분석해서 태그를 무시하기때문에.. 싱크가사 인식성공률이
amarok-live-lyrics보다 높다..........는거 정도...
(amarok-live-lyrics는 서버에 가사가 있는데도 불구하고 태그위치를 제대로 감지를 못해서
md5값을 잘못얻어오는 경우가 몇몇 mp3파일에서 발견되었었다........
모르겠다 요즘에 버젼업 되어서 고쳐졌는지...... )
일단 되는 기능은 잘 된다.... 내부적으로 고칠건 좀 있는데....... 안그래도 잘 작동하는데 고치기는
귀찮고 해서 현재 놀면서 방치중~~~ 귀차나~ 귀차나~ 어디 딴짓이나 해볼까~ 하고 있는.............
이거에 대해서 간단히 설명하자면 원래 랜덤여신님이 만든 주3>amarok-live-lyrics
가 있는데.. 그 프로그램에 서버로부터 가져오는 주소값만 살짝 내 프로그램으로 받게 해서 만든것!
사실 "구태여 이렇게 따로 프로그램을 만들지 않더라도"
저 amarok-live-lyrics의 내용만 약간 바꾸면 (주4>dcop 대신 주5>mpc를 써서 한다던가............)
mpd용으로 사용할수 있건만............ 만들어본,........
주6> conky에서 주7>파이썬 안써보고 프로그램 만들어보려고요...
또.......어짜피 배우는 입장이기도 하고........ ,c언어 예/복습도 할겸................ )
대략 프로그램 구조가......
mp3파일을 읽어 망할놈의 태그 를 건너뛴 만큼 읽는 위치를 이동한다
-> 일정부분을 읽어서 md5 Hash(?) 한다
-> md5한 값을 바로슬 서버의 주소와 합쳐서 -> 주8>소켓써서 서버로부터 페이지를 받아온다
-> 새로운 가사 파일에 그 내용을 저장한다 -> 저장한 내용을 불러와서 메모리에 저장
-> 가사/시간 분리 -> 링크드리스트로 정리 -> 타이머써서 -> (시간에 맞춰) 출력하기.....
-> 에러있음 break -> 그리고 쭉~ 반복~.
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도 그렇다..)
사실 뻘짓할 시간이 아까우니 원래 이런 라이브러리를 쓰는게 이익이겠지만...
공부도 함 해볼겸해서 걍 내가 뻘짓해가면서 만듦
'Programming > C' 카테고리의 다른 글
메모리 직접 접근의 유용성 (memcpy) (3) | 2007.07.01 |
---|---|
리눅스에서 2기가 이상인 파일에 접근하기 (4) | 2007.06.28 |
간단한 양방향 linkedlist (6) | 2007.05.11 |
세그멘테이션 폴트를 줄이자! valgrind (4) | 2007.05.08 |
c언어로 구현한 mp3 태그(id3v2) 지우기 (6) | 2007.05.06 |
Amarok 스크립트로 터미널에서 가사보기
Linux/내부설정 2007. 1. 8. 00:56
너므 허접 스럽슴다...
징글 맞은 바탕화면... (이 스크립트 사용 예제 입니다... 오른쪽 구석에 터미널...)
소개를 하자면..
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 을 뒤에 넣어줘야 하는거냐!!!
징글 맞은 바탕화면... (이 스크립트 사용 예제 입니다... 오른쪽 구석에 터미널...)
소개를 하자면..
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:
(실제로 있습니다...
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 |