에어소닉을 사용해본 사람이라면 알겠지만
에어소닉에는 플레이리스트를 정렬할 수 있는 방법이 하나밖에 없다.
바로 손으로 일일히 하나하나 정리하는 것이다.

 

그냥 앨범별, 폴더별, 아티스트별 이렇게 간단하게 정리해줬으면 좋겠는데 기능도 없고
그렇다고 하나하나 정리하기에는 내 플레이리스트에 있는 노래가 너무 많아졌다...
그래서 플레이리스트와 별표된 노래를 정렬할 수 있는 방법을 만들려고 한다.

SERVER='http://localhost/airsonic'
CLIENT='CLI'
USERNAME='admin'
PASSWORD='admin'
SALT="$(openssl rand -hex 20)"
TOKEN="$(echo -n "${PASSWORD}${SALT}" | md5sum | awk '{ print $1 }')"
echo ${SALT}
echo ${TOKEN}
curl "${SERVER}/rest/getPlaylists?u=${USERNAME}&t=${TOKEN}&s=${SALT}&v=1.15.0&c=${CLIENT}"

위의 명령어를 사용하면 간단하게 API를 날리 수 있따.

우선 플레이리스트의 목록을 가져왔다.

플레이리스트의 id를 알아야 플레이리스트의 노래목록을 가져올 수 있기 때문이다.

<?xml version="1.0" encoding="UTF-8"?>
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.15.0">
   <playlists>
      <playlist id="4" name="aa" comment="" owner="admin" public="false" songCount="148" duration="38279" created="2021-04-24T16:32:28.549Z" changed="2021-07-08T23:39:25.343Z" coverArt="pl-4"/>
      <playlist id="7" name="aaa" owner="admin" public="false" songCount="20" duration="5462" created="2021-06-21T08:10:09.487Z" changed="2021-07-08T23:39:30.937Z" coverArt="pl-7"/>
      <playlist id="6" name="아이카츠" owner="admin" public="false" songCount="113" duration="29959" created="2021-05-20T01:30:47.781Z" changed="2021-05-20T01:31:05.752Z" coverArt="pl-6"/>
      <playlist id="5" name="프리파라" owner="admin" public="false" songCount="133" duration="29424" created="2021-05-12T00:12:54.650Z" changed="2021-07-02T04:50:00.105Z" coverArt="pl-5"/>
   </playlists>
</subsonic-response>

 

그렇게 가져온 플레이리스트 ID로 플레이리스트를 가져오면 이런 결과가 나온다.

 

curl "${SERVER}/rest/getPlaylist?u=${USERNAME}&t=${TOKEN}&s=${SALT}&v=1.0.0&c=${CLIENT}&id=7"

<?xml version="1.0" encoding="UTF-8"?>
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.15.0">
   <playlist id="7" name="aaa" owner="admin" public="false" songCount="20" duration="5462" created="2021-06-21T08:10:09.487Z" changed="2021-07-08T23:39:30.937Z" coverArt="pl-7">
      <entry id="211" parent="198" isDir="false" title="HAPPY면 LUCKY (솔라미♡스마일)" album="한국어" artist="프리파라" coverArt="198" size="4746327" contentType="audio/mpeg" suffix="mp3" duration="286" bitRate="64" path="프리파라/한국어/HAPPY면 LUCKY (솔라미♡스마일).mp3" isVideo="false" playCount="60" created="2021-02-02T15:36:38.077Z" starred="2021-04-28T23:45:30.352Z" albumId="2731" artistId="913" type="music"/>
      <entry id="11658" parent="11612" isDir="false" title="Lu La La☆Lumière" album="キラキラ☆プリキュアアラモード ボーカルアルバム 2 苺坂物語" artist="駒形友梨" track="1" year="2017" genre="Anime" coverArt="11612" size="11564299" contentType="audio/mpeg" suffix="mp3" duration="285" bitRate="320" path="프리큐어/[프리큐어] 키라키라 프리큐어 아라모드/キラキラ☆プリキュアアラモード ボーカルアルバム 2 苺坂物語/Lu La La☆Lumière.mp3" isVideo="false" playCount="59" created="2018-05-26T08:03:40.000Z" starred="2021-05-12T23:20:30.094Z" albumId="2622" type="music"/>
      <entry id="11278" parent="11254" isDir="false" title="La♪La♪La♪ Suite Precure♪ ~∞UNLIMITED∞ ver.~" album="Suite Precure♪ 2nd OP&amp;ED Theme Single" artist="Mayu Kudo" track="1" year="2011" genre="Soundtrack" coverArt="11254" size="8303807" contentType="audio/mpeg" suffix="mp3" duration="206" bitRate="320" path="프리큐어/[프리큐어] 스위트 프리큐어/Suite Precure♪ 2nd OP&amp;ED Theme Single/La♪La♪La♪ Suite Precure♪ ~∞UNLIMITED∞ ver.~.mp3" isVideo="false" playCount="44" created="2018-05-26T10:15:02.000Z" starred="2021-05-12T23:27:39.529Z" albumId="2574" artistId="900" type="music"/>
   </playlist>
</subsonic-response>

 

계획은 간단한데

우선 설정값으로 이런 값을 받는다.

1. 유저 ID

2. 유저 패스워드

3. 플레이리스트 이름

4. 새로 만들 플레이리스트 이름

5. 정렬 기준(최대 3개정도)

 

정렬기준은 아래와 같다.

 

id
album
artist
year
genre
size
path
created
starred

getPlaylist에 들어있는 값들을 이용해서 정렬할것이다

 

 

그 후에 그냥 플레이리스트를 만든 후

정렬된 리스트를 순서대로 플레이리스트에 넣어주면 끝이다.

 

아니 이런 간단한 기능을 지금까지 아무도 안만들어 주다니

진짜 너무한것 같다.

 

그래서 한번 간단하게 만들어봤는데 일단 동작 자체는 잘 되는걸 확인했다.

 

https://github.com/AhatLi/SonicClassifier

 

AhatLi/SonicClassifier

Sort playlist for Airsonic, subsonic . Contribute to AhatLi/SonicClassifier development by creating an account on GitHub.

github.com

 

근데 막상 써보니 star 목록에 대해서도 정렬을 해야될것 같다.

이것도 플레이리스트 정렬 방법이랑 똑같이 하면 되긴 하지만

사용하는 API가 달라서 결국 기능 추가는 해야한다...

어렵지는 않지만 귀찮은 작업인데 나중에 시간날때 추가해야겠다.

 

그리고 또 써보니까 GUI로 되어있으면 상당히 편하지 않을까 하는 생각도 들었다.

go언어용 GUI 라이브러리가 몇가지 있던데 사용방법을 확인해서

나중에는 GUI로 돌아가도록 수정해야겠다.

예전에 핸드폰에 용량이 너무 부족해서

클라우드 스토리지를 이것저것 알아본적이 있었다.

 

네이버 클라우드, 구글 클라우드, 원드라이브 다 알아보았는데 내 마음에 드는것은 없었다.

굳이 꼽자면 네이버 클라우드쪽이 가장 쓰기 좋았지만

안그래도 돈 나가는것도 많은데 매달 돈을 쓰면서까지 사용해야할 정도는 아니기도 하고...

 

그래서 무료 오픈소스 클라우드 서버프로그램인 파이디오(Pydio) 등도 설치하고 다 해보았지만

생각보다 무겁고 내 빈약한 스마트폰 환경에서는 사용하기가 어려웠다.

 

그러다가 이미지 전용 클라우드 서버같은건 없을까 싶어서 찾아보다가  그냥 내가 만들기로 했다.

내가 진짜로 원하는 기능은 정말 간단했는데

 

그냥 이미지파일을 업로드 다운로드가 가능하고 

목록의 이미지는 썸네일을 표시 해서 표시하는데 필요한 용량은 줄이고

이미지 썸네일을 누르면 원본 이미지를 표시해서 양옆 스와이프로 다음 이전 이미지로 이동할 수 있는 정도?

 

이정도만 있으면 딱 좋겠다고 생각했다.

 

일단 모바일에서 사용이 가능해야되는데 앱으로 만들기는 어려우니까

간단하게 html과 자바스크립트 그리고 golang을 사용해서 만들었다.

 

일단 제작 컨셉은 다른 오픈소스 클라우드 프로그램들을 사용하다보니

설치나 사용방법 복잡하다는 것을 느껴서

다운받고 실행파일만 눌러서 딱 실행만 하면 바로 쉽게 사용할 수 있는 프로그램이다.

 

프로그램 외형은 컨셉이 아니라 그냥 내가 디자인 센스가 없어서 저렇게 됐다.

 

github.com/AhatLi/ahat-simple-image-gallery

 

AhatLi/ahat-simple-image-gallery

A very simple image gallery server developed with go. Suitable for use on mobile. - AhatLi/ahat-simple-image-gallery

github.com

서버 프로그램을 실행시킨 후 브라우저로 서버의 주소에 접속하고

로그인을 하면 위와같은 화면이 나온다.

 

로그인 기능은 처음에는 만들 생각이 없었는데

서버 로그를 살펴보던 중에 자꾸 이상한 IP에 요청이 계속 들어와서

그냥 로그인 기능을 추가해주었다.

 

사용하면서 또 필요하다고 느낀 기능으로는 

인증서를 이용한 SSL 기능과 이미지 업로드 기능

그리고 새폴더 같은거 만드는기능?

 

버그도 좀 있는것 같은데 그것도 확인해봐야겠다.

 

 

###Ahat Simple Gallary

```
모바일에서 사용하기 적합한 간단한 이미지 갤러리 서버입니다.

Ahat Simple Gallary를 실행시키고 
모바일 웹브라우저 혹은 데스크탑 웹 브라우저로 접속하여
이미지 갤러리 기능을 사용할 수 있습니다.
현재까지 구현된 기능은 아래와 같습니다.
```

```
 - 이미지를 썸네일화 하여 갤러리 목록에 표시
 - 썸네일을 클릭할 경우 원본 이미지를 표시
 - 이미지를 좌 우로 드래그하여 이전/다음 이미지 표시
 - 이미지를 선택 후 이미지 경로 이동 기능
 - 이미지를 선택 후 이미지 삭제 기능
 - 페이지 접속 시 로그인을 하여야 접속 가능
 - 이미지의 이름/크기/날짜별 정렬 기능
```

```
컴파일 방법
 go get github.com/disintegration/imaging
 go get gopkg.in/ini.v1
 go get github.com/gorilla/securecookie
 go build .\ImageCloud.go .\Utils.go .\login.go
```

```
사용방법 1. 윈도우 환경
1) images 파일에 이용한 이미지 파일을 구성한다.
2) ImageCloud.exe 파일을 실행한다.
2-1) 로그파일을 남기고 싶을 경우 CMD 창을 열고 바이너리 위치로 이동해 
     ` ImageCloud.exe >> ImageCloud.log ` 
     형식으로 실행한다.
3) 프로그램이 실행된 후 모바일 브라우저 혹은 브라우저로 접속하여 사용한다.
ex) http://127.0.0.1:9090/
```

 

 

아직 개선할 점이 많이 있지만

내 서버컴퓨터에 이미지를 넣어두고 외부에서 접속해서 보거나 가져가는 등의 작업은 가능하다.

 

나중에 기능을 추가해야겠다.

 

인터넷을 보니까 커피찌꺼기로 식물 비료를 만드는 방법이 있어서 한번 만들어봤다.

마침 집에서 탈취용으로 사용하던 잘마른 커피찌꺼기가 있어서 그걸 사용했다.

 

커피찌꺼기를 한달정도 발효시킨 후에 식물에게 주어야 한다고 하는데

그대로 사용하면 커피찌꺼기가 나중에 발효되면서 가스가 발생하고 그 가스때문에

식물에게 안좋은 영향을 줄 수 있다는것 같다.

 

하지만 커피찌꺼기를 흙에 섞는게 아니라 화분 위쪽에 뿌리기만 하는거면

굳이 발효시킬 필요가 없지 않을까 싶기도 하다.

 

어쨌든 전문가들이 발효시켜서 쓰라고 하니까 나는 한번 발효를 시켜보기로 했다.

 

커피찌꺼기를 발효시킬 통에 담았다.

뚜껑이 있고 밀폐되는 용기가 좋다고 한다.

 

마른 과일껍질을 섞어서 만드는 사람도 있길래

나도 귀찮아서 안치웠더니 내 책상위에서 바싹 말라있는 귤껍질을 부숴서 섞어줬다.

 

 

 

여기에 요구르트를 섞어주었다.

 

요구르트를 섞으니까 생각보다 양이 많아져서 좀 더 큰 용기로 옮겨주었다.

 

 

균이 번식할 수 있도록 설탕을 섞어주라고 하는데

설탕이 안보여서 그냥 올리고당을 뿌려줬다.

 

 

다 섞고나니 브라우니 반죽처럼 되었다.

 

 

 

이제 따뜻한곳에서 한달동안 발효시키면 된다.

 

엘로나를 플레이 하던 도중 King's Heart 라는 아이템을 얻었다.

이 아이템은 적에게 낮은 확률로 드랍되는 아이템으로 

플레이어의 펫을 진화시킬 수 있는 아이템 중에 하나다.

 

마침 새로운 동료를 하나 추가하고싶던 참이라 어떤 동료를 추가할까 고민하다가

King's Heart 를 사용하여 Ghost Princess로 진화가 가능한 

Ghost를 동료로 만들었다.

 

Ghost Princess의 모습

하지만 내가 가지고있는 최고의 아이템을 착용시켜줬는데도 불구하고

Ghost Princess의 공격력은 생각보다 강하지 않았다.

 

어째서인지 그런지 전투 로그를 살펴보았는데

Ghost Princess가 내가 준 무기로 공격을 하는게 아니라

썩은 손으로 손대었다와 무서운 손으로 손대었다 라는 로그가 남았다.

 

그래서 엘로나 위키를 살펴보니

망령공주의 공격이 Touch of Weakness, Touch of Fear 그리고 Martial Arts 로구성되어 있다는 것을 알았다.

그러나 현재 내 동료인 망령공주는 마셜아츠가 발동되지 않고있었고

내가 무기를 착용시켜준 것이 원인 것으로 생각된다. 

아무래도 NPC 고스트가 맨손으로 등장하기 때문에 마셜아츠라고 기록된 것으로 생각된다.

 

만약 Touch of Weakness, Touch of Fear 기술의 공격력이 맨손전투의 영향을 받는다면 

무기를 빼고 맨손전투 스킬을 올려줬겠는데 그런것도 아닌것같고 의지 스탯의 영향을 받는다고 한다.

그래도 혹시 몰라서 테스트를 해보기로 했다.

 

망령공주의 격투스킬은 현재 16.296이다.

만약 무기를 착용한 상태에서 망령공주의 맨손격투 스킬이 올라간다면 

Touch of Weakness, Touch of Fear 기술은 격투스킬의 영향을 받는다는것이 된다.

 

낮은 레벨의 던전을 클리어 한 후 망령공주의 스킬레벨을 확인해보았다.

장검 스킬 같은경우는 레벨이나 올라간 반면에 격투 스킬은 사실상 오르지 않았다.

 

Touch of Weakness, Touch of Fear는 격투와는 정말로 아무런 관계도 없는 스킬이었다.

 

망령공주를 앞으로 어떻게 육성할지는 좀 더 생각을 해보아야겠다.

'생활 > 게임' 카테고리의 다른 글

엘로나 거미 플레이  (0) 2020.12.24

+ Recent posts