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 을 뒤에 넣어줘야 하는거냐!!!
신고
Trackback 2 Comment 6
prev 1 ··· 238 239 240 241 242 243 244 245 246 ··· 342 next


티스토리 툴바