Screenlet 에 현재 재생중인 음악파일 커버 출력시키기
Programming/Shell script 2010. 6. 20. 13:30
저번에 한번 conky자체에 그림나오는 기능을 사용해서 자켓 이미지를 출력하게 시도한 적이 있었다는..
http://lowid.tistory.com/entry/conky-%EA%B7%B8%EB%A6%BC
그런데 그때는... cpu를 너무 많이 먹는 바람에 하루정도 돌리고 포기...
그러다가 새로운 desklet을 한번 알게 되었는데 그게 바로 screenlet
이것을 좀 보니깐 python스크립트로 되어있는거라.. 좀 깨름직했지만...
(개인적으로 pstree 했을때 python 실행파일이 보이는것이 영 내키지 않아서)
그래도 어짜피 메모리 많이 남으니깐..
(전체 2긱인데 vm, firefox를 안돌리면 절대 200mb(각하의 100배임) 을 넘길일이 없으니)
그냥 쓰기로 해따.. 뭐 많은데 쓰지뭐
어쨋던 그렇게 하고.. screenlet 에 어떤 위젯(?) 이 있나 보니깐..
"SlideShow" 라는게 있어서 좀 살펴보니깐, 특정 디렉토리에 있는 그림파일을 출력해 주는 기능이 있었다는.
그래서 생각한게... 뭐 그냥 그 디렉토리에다가 현재 mpd로 재생중인 파일의 path을 알아내서
find로 찾아주면 간단하겠네.... 라는 생각이 들어서 바로 만들어 봤다..
find할때 재대로 안되는건 쿼우팅이 문제라서 따옴표를 붙여주고...
디렉토리 이름에 공백문자가 들어가서 생기는 문제는 IFS로 해결했다.
이러니깐 어지간한건 다 잡는듯.....
다음은 스크립트
그리고 이걸 곡이 바뀔때 마다 실행해 주면 된다 -_-..
나는 그냥 귀차나서 lyrics프로그램 내부에 mpd감지하는 루틴에
넣어버림 ㅋㅋㅋㅋㅋㅋㅋ
이래도 문제는 발생한다는거...
곡이 바뀌면서 바로 커버가 바뀌는게 아니라 몇초 딜레이 시간이 필요하다. (머 1초로 설정하면 거의 없긴해두)
(SlideShow의 자체 갱신 시간이 있기때문)
python 프로그램을 찾아서 갱신시간을 event로 알아낼수 있게 어떻게 수정하면 되긴하겠는데...
python 은 귀찮기도 하고............ 걍 PASS 귀차늠..
아니 윗에처럼 하느니.. 그냥 lyrics + cover + control이 되는 새로운 프로그램을 gtk로 만드는게 나을지도
근데 이것도 귀찮아서 아마 시도도 안할거임 아마..............
추가-----
find에서 exec로 해도 되는거 같은데 .;
http://lowid.tistory.com/entry/conky-%EA%B7%B8%EB%A6%BC
그런데 그때는... cpu를 너무 많이 먹는 바람에 하루정도 돌리고 포기...
그러다가 새로운 desklet을 한번 알게 되었는데 그게 바로 screenlet
이것을 좀 보니깐 python스크립트로 되어있는거라.. 좀 깨름직했지만...
(개인적으로 pstree 했을때 python 실행파일이 보이는것이 영 내키지 않아서)
그래도 어짜피 메모리 많이 남으니깐..
(전체 2긱인데 vm, firefox를 안돌리면 절대 200mb(각하의 100배임) 을 넘길일이 없으니)
그냥 쓰기로 해따.. 뭐 많은데 쓰지뭐
어쨋던 그렇게 하고.. screenlet 에 어떤 위젯(?) 이 있나 보니깐..
"SlideShow" 라는게 있어서 좀 살펴보니깐, 특정 디렉토리에 있는 그림파일을 출력해 주는 기능이 있었다는.
(Terminal lyrics, Slideshow, conky의 조화!!)
그래서 생각한게... 뭐 그냥 그 디렉토리에다가 현재 mpd로 재생중인 파일의 path을 알아내서
find로 찾아주면 간단하겠네.... 라는 생각이 들어서 바로 만들어 봤다..
find할때 재대로 안되는건 쿼우팅이 문제라서 따옴표를 붙여주고...
디렉토리 이름에 공백문자가 들어가서 생기는 문제는 IFS로 해결했다.
이러니깐 어지간한건 다 잡는듯.....
다음은 스크립트
#!/bin/bash
# MPD 설정 디렉토리
MPD_DIR="/data/mp3"
# 현재 재생중인 파일의 MPD 디렉토리
MPD_PATH=$(dirname "$(mpc -f "%file%" | head -n 1)")
# 자켓이 임시 복사될 디렉토리
JACKET_DIR="/home/lowid/etc/mpd_jacket"
# 현재 재생중인 파일의 디렉토리
PLAY_FILE_DIR="$MPD_DIR"/"$MPD_PATH"
# 경로에서 확장자가 jpg인것을 검색(작은따옴표 주의)
JACKET_FILES="$(find "$PLAY_FILE_DIR" -iname '*.jpg' -o -iname '*.png' -o -iname '*.gif')"
# 아까 있던 파일들 모두 삭제
rm -rf "$JACKET_DIR"/*
# IFS를 '\n'으로 변경(spc 방지)
IFS='
'
# 복사
for IMAGE_FILE in $JACKET_FILES
do
echo "$IMAGE_FILE"
cp "$IMAGE_FILE" "$JACKET_DIR"
done
# MPD 설정 디렉토리
MPD_DIR="/data/mp3"
# 현재 재생중인 파일의 MPD 디렉토리
MPD_PATH=$(dirname "$(mpc -f "%file%" | head -n 1)")
# 자켓이 임시 복사될 디렉토리
JACKET_DIR="/home/lowid/etc/mpd_jacket"
# 현재 재생중인 파일의 디렉토리
PLAY_FILE_DIR="$MPD_DIR"/"$MPD_PATH"
# 경로에서 확장자가 jpg인것을 검색(작은따옴표 주의)
JACKET_FILES="$(find "$PLAY_FILE_DIR" -iname '*.jpg' -o -iname '*.png' -o -iname '*.gif')"
# 아까 있던 파일들 모두 삭제
rm -rf "$JACKET_DIR"/*
# IFS를 '\n'으로 변경(spc 방지)
IFS='
'
# 복사
for IMAGE_FILE in $JACKET_FILES
do
echo "$IMAGE_FILE"
cp "$IMAGE_FILE" "$JACKET_DIR"
done
그리고 이걸 곡이 바뀔때 마다 실행해 주면 된다 -_-..
나는 그냥 귀차나서 lyrics프로그램 내부에 mpd감지하는 루틴에
system("/home/lowid/bin/mpd_jacket.sh");
넣어버림 ㅋㅋㅋㅋㅋㅋㅋ
이래도 문제는 발생한다는거...
곡이 바뀌면서 바로 커버가 바뀌는게 아니라 몇초 딜레이 시간이 필요하다. (머 1초로 설정하면 거의 없긴해두)
(SlideShow의 자체 갱신 시간이 있기때문)
python 프로그램을 찾아서 갱신시간을 event로 알아낼수 있게 어떻게 수정하면 되긴하겠는데...
python 은 귀찮기도 하고............ 걍 PASS 귀차늠..
아니 윗에처럼 하느니.. 그냥 lyrics + cover + control이 되는 새로운 프로그램을 gtk로 만드는게 나을지도
근데 이것도 귀찮아서 아마 시도도 안할거임 아마..............
추가-----
find에서 exec로 해도 되는거 같은데 .;
'Programming > Shell script' 카테고리의 다른 글
간단하지만 유용한 쉘스크립트. (2) | 2012.10.19 |
---|---|
외부접속 확인하는 간단한 스크립트 (0) | 2011.06.23 |
mplayer 백그라운드 실행법 (3) | 2009.01.28 |
Bash 쉘스크립트 배열 (9) | 2009.01.12 |
Mplayer로 workspace이동하기 (2) | 2008.02.20 |