바다소리(맞춤법상으론 "바닷소리"가 맞습니다)는 Mac 용 소리바다 플레이어입니다.


기존의 웹플레이어를 이용해 만들었으며, (당연히) 비공식 어플리케이션입니다.

(고로 별 문제 없으리라 믿지만, 갑자기 작동이 안되거나 사라질 수도...)


http://badasori.iolate.kr/

이 링크를 보고 오시면 어떻게 생겼는지 이해가 가실거에요.


다운로드는 여기

(혹은 위 페이지)


이 플레이어를 만든 이유는

1. 웹플레이어 형태가 웹 서핑시 불편하다

- 새 창을 띄우기 위해 손을 한번 더 쓰거나 실수로 꺼버리는 상황이 발생


2. 키보드 단축키 사용을 위해서


3. 웹으로 인한 자잘한 불편함


4. 맥용 Bugs 플레이어를 고등학생이 만들었다고 기사까지 난거보고

-그리고 수능 친 잉여지만 나도 아직 고등학생.......



아직 불편한 점도 많고 개선할 부분도 많지만 조금씩 개선해나갈 생각입니다.




재생목록과 관련된 부분은 미니플레이어에 있는 소리바다 로고를 누르면 나타나는 소리바다 웹에서 해결해 주셔야합니다..


또한 상태바의 소리바다 아이콘을 우클릭하면 로그인과 설정을 할 수 있는 메뉴가 나타납니다.



감사합니다~!!



ps. 근데,, 소리바다를, 그것도 맥에서 쓰는 사람은 많지 않을 것 같은데 말이죠.....

ps2. 형이 Genie 버전을 내놓아라고 강요하고 있어서 곧 Genie 용 플레이어도 만들어질 수도...


Version 1.0 (2013.12.15) :

최초 버전

미니 플레이어 - 현재 재생 정보, 컨트롤(재생, 다음곡, 이전곡, 시간 탐색, 볼륨, 반복, 셔플)

알림센터 지원

맥용 키보드의 미디어 키(재생, 다음곡, 이전곡) 지원


Version 1.1 (2013.12.17) :

플레이어 새로고침 버튼 추가

로딩 중에도 소리바다 웹을 열 수 있도록 수정

메뉴 - 로그인 시 로그인 탭이 열리지 않던 문제 수정

플레이어가 나타날 때 작업중이던 창이 포커스를 잃는 문제 수정

네비게이트 에러시 url 출력

맥에 있는 기본 앱들을 열어보면, 있어야 할 리소스 대신


이런 파일만 있다..

iOS 에 .artwork 처럼 리소스들을 압축(?)해 놓은 파일이다.


검색을 해본 결과 Resedit, ThemePark 등의 앱이 나왔지만,, 현재 OSX 에는 없거나 호환이 되지 않는다.


http://iconverticons.com/online/


에서 웹으로 파일을 올린 후 내려받는 식으로 할 수도 있지만,

무료인 웹서비스는 제대로 되지도 않고 용량제한도 있다..

iConvert 앱으로도 제공하나, 얘는 유료.



그래서 결론은,,

http://stackoverflow.com/questions/5069705/how-to-get-images-from-itunes-rsrc-using-derez


이 글.

뭔가 제대로된 해결책이 아닌 것 같아서 검색 초창기에 봤음에도 지나갔는데, 저게 정답이였다.

(확장자만 제대로 썼어도...ㅡ_ㅡ)


우선 DeRez 는 xcode 개발툴에 있다. 만약 없으면,, xcode 를 설치하고.. 그래도 없으면 command line tool 도 설치.


$ DeRez -useDF -only 'PNG' iTunes.rsrc > iTunes.txt


(PNG 대문자 구분한다... 이거땜에 또 좀 고생..ㅠㅠ)

이렇게 하면 바이너리 값이 잘 정리된(?) 파일이 튀어나온다.




대충 이런형태....

딱봐도 저부분만 빼내면 png 파일이 나오는건데,,, 


이걸 저 stackoverflow 의 답변자가 파이썬으로 만들어 놨다.


for l in file('iTunes.txt'):

    if not l[0] == '\t':

        if l.startswith('data '):

            res_id = l[l.rindex('(') + 1:l.rindex(')')]

            out = file('extract/' + res_id + '.png', 'wb')

        continue

    out.write(l[l.index('"') + 1:l.index('" ')].replace(' ', '').decode('hex'))


안에 인자들을 자신에 맞게 적당히 바꿔준다음

python 을 돌려주면 이미지가 다 튀어나온다.



간단하다.


Target -> Info (즉 Info.plist 수정) 에서

Application is agent (UIElement) 값을 YES 로 해주면 된다.

Raw key 값은 LSUIElement



근데 이렇게 하면 내가 원하는대로 수정이 안되거나,

수정을 하더라도 앱을 재실행 해줘야 한다.


그래서,, 아래와 같은 방법이 있다!!


위에서 설정하는 UIElement 값을 동적으로 바꿔주는 것 같다.


ProcessSerialNumber psn = { 0, kCurrentProcess };

TransformProcessType(&psn, kProcessTransformToForegroundApplication);


이건 독에 아이콘을 나타내는 코드



ProcessSerialNumber psn = { 0, kCurrentProcess };

TransformProcessType(&psn, kProcessTransformToUIElementApplication);


이건 다시 UIElement = TRUE, 즉 독에서 앱을 없애게 해준다.


type 인자만 다르지만,, 두줄밖에 안되니 그냥 두번 적어줬다.

+ Recent posts