Musicoin Player 만들기 - 1화 목마른 사슴이...

in #kr7 years ago (edited)

https://musicoin.org/nav/artist/0x15d3efbf2f8df32bce36f3479cf99d5392714a7a
↑ 제 Musicoin Artist page 입니다. 0x15d3efbf2f8df32bce36f3479cf99d5392714a7a가 지갑주소 비슷한 것이고 모든 Musician들은 이 주소를 가지고 있어요.

작년말에 저도 드디어 Musicoin Musician이 되었습니다.
곡을 안쓴지 좀 오래되어서 부끄럽지만 그래도 몇곡 추려서 올려봤는데 초기라 그런지 서로서로 팔로우하고 팁도 주고 봇도 돌면서 흥청망청 100MC씩 쏴줘서 은근 분위기 좋고 재밌습니다.
기본적으로 Musicoin은 steem과 비슷하게 채굴+생산자+소비자 구도로 되있는데 최근 UBI라는걸 도입해서 Listener는 무료로 들을 수 있고 Musician은 UBI가 MC(Musicoin단위)를 지급합니다.
한번 들을 때 마다 1MC니까 개인적으론 꽤 크게 느껴지더군요.
1MC를 1분만(현재 곡 길이와 상관없이 1분 재생되면 적립됩니다)에 마이닝하기는 쉽지 않거든요. 그냥 한번 곡 재생하는게 낫지.


주의!!!

재생 한번에 1MC라고 수십개 창 돌리거나 하면 안됩니다. 이상한 짓 하면 계정 정지 당합니다!


여튼 듣기만 해도 1MC를 벌 수 있으니까 플레이어가 있음 좋겠다 싶어 봤더니 기본 embedplayer는 문제가 좀 있었습니다.

  1. 한번에 한곡만 재생할 수 있다.
  2. 반복 재생이 안된다.

그래서 musicoin의 정책에 반하지만 않으면 이것저것 기능이 있는 쓸만한 뮤직 플레이어를 만들어서 음원차트도 공개하고 그러면 자연스레 컨텐츠도 생겨서 좋지 않을까라는 안일한 생각으로 플레이어를 보기 시작했습니다.

https://musicoin.org/embedded-player/0x1e5d291507499791e81688a27b51fbfe10433569
iframe으로 보통 삽입하는 embedded-player의 주소는 이렇습니다.
0x1e5d291507499791e81688a27b51fbfe10433569 는 위의 artist page와는 별도로 곡 마다 붙는 곡 지갑(?)인거죠.
주소에서 눈치채셨겠지만 이렇게 한번에 하나밖에 안됩니다.

https://musicoin.org/api 란게 있긴 한데 별로 도움이 되지 않았습니다.
그래서, 브라우저 창에 이 주소를 붙여놓고 얘가 뭘 하고 있나 보기 시작했습니다.

일단 자동으로 플레이가 되고 있고 크롬 개발자 콘솔을 열어보았습니다.
musicoin embedded player

audio 요소가 보이고 그 src는 제 지갑주소랑은 꽤 다른 위치를 가르키고 있었습니다.
/ppp/38fb0c55aa339a47b1d64ffacd23a4ecf5c66aade88cbb1398128b8846c3b3a38ac881e1faed9e9d87238fb5f66b94c4b4bafe5ec721e13d?1515510836736
? 이후 부분도 그렇지만 앞의 해쉬값도 모르겠다.
? 이후의 부분은 여러번 반복 해보니

1515510836736
1515514679904
1515514896847

이런 식으로 증가했습니다. 타임스탬프. 즉, 시간이랑 상관있는 것으로 보입니다.
이것저것 관련된 주소+링크들을 뒤져봅니다.

먼저, 제일 처음 보이는 건.
https://musicoin.org/nav/artist/0x15d3efbf2f8df32bce36f3479cf99d5392714a7a
curl로 찔러봅니다. POST고 인자가 붙어있군요.
$ curl 'https://musicoin.org/json-api/artists/earnings' --data 'refresh-period=10&url=%2Fjson-api%2Fartists%2Fearnings&artistid=594823c2ca8fad055744593b'

{"tips":162,"plays":3782,"followers":35,"formattedTotalUSD":"$430.98"}

artistid인 594823c2ca8fad055744593b는 어디서 나온건지 모르겠지만 지금은 중요하지 않으니 패스합니다.

https://musicoin.org/json-api/tracks/details?addresses%5B%5D=0x10254eb7e07f223193c756b2b440892043cd3b7a
다음은 GET이군요. 찔러봅니다. 아 GET이니까 그냥 브라우저에서 붙여도 됩니다.
curl 'https://musicoin.org/json-api/tracks/details?addresses%5B%5D=0x10254eb7e07f223193c756b2b440892043cd3b7a'

[{"artistName":"spectrum","genres":["Beats & Instrumentals","Electronic"],"languages":[],"moods":[],"regions":[],"description":"easy listening. electronic peace","timeSince":"7 months ago","directTipCount":12,"directPlayCount":692,"artistProfileAddress":"0x15d3efbf2f8df32bce36f3479cf99d5392714a7a","title":"NoAU","image":"/media/cf3920a795f5db5a53b348b6f3550aeacb5b9b18333643c26d6996cca2820ceb5c6c3200bc84185622562132ed13","address":"0x10254eb7e07f223193c756b2b440892043cd3b7a","tx":"0xe917d2c3528fda8090e036e1c96a949bc441f2afbf1307202d60dfbcb4772ff7","artist":{"artistName":"spectrum","image":"/media/cf3934999be1a87b20a72eb5d7352ed9ff32ce0a1c1673c26d0a88c88ebb59aa6c644847a8ad20637f502115ba71","verified":true}}]

tracks details
트랙에 대한 상세 정보가 보이는 군요.
artist address와 image 위치, 등등 메타정보가 있습니다. 좋네요.

POST로 canPlay라는 걸 검증하는데 address에 트랙 주소를 넣어줍니다.
$ curl 'https://musicoin.org/user/canPlay' -d "address=0x10254eb7e07f223193c756b2b440892043cd3b7a"

{"success":true,"canUseCache":true}

성공이라고 하는군요. 네.

https://musicoin.org/json-api/track/0x10254eb7e07f223193c756b2b440892043cd3b7a
GET 입니다. 쓸만한 걸 건졌네요.

{"resourceUrl":"eipfs://QmSrPmr85LWZttc6MG7ghfa3WXhVEY2t4nEtKKHgN93her","contentType":"audio/mp3","createdBy":"0x6e1d33f195e7fadcc6da8ca9e36d6d4d717cf504","totalShares":"1","totalPending":"0","title":"NoAU","getContributorsLength":"1","licenseVersion":"1","metadataVersion":"0","artistProfileAddress":"0x15d3efbf2f8df32bce36f3479cf99d5392714a7a","artistName":"spectrum","totalEarned":"693000000000000000000","owner":"0x6e1d33f195e7fadcc6da8ca9e36d6d4d717cf504","playCount":"693","contractVersion":"v0.7","imageUrl":"ipfs://QmZYWaDvBg5Wc6UxpX7TvBtiz7RqDZd8hM71AMmMomit28","weiPerPlay":"1000000000000000000","totalTipped":"0","metadataUrl":"ipfs://Qmb5561nQV2yFot51RfBqgPah7t24wmyLseWb18qp4Vtjg","tipCount":"0","balance":"0","contributors":[{"address":"0x15d3efbf2f8df32bce36f3479cf99d5392714a7a","shares":"1"}],"royalties":[],"coinsPerPlay":"1","totalEarnedCoins":"693","address":"0x10254eb7e07f223193c756b2b440892043cd3b7a","image":"/media/cf3920a795f5db5a53b348b6f3550aeacb5b9b18333643c26d6996cca2820ceb5c6c3200bc84185622562132ed13","audioUrl":"/ppp/38fb0c55aa339a47b1d64ffacd23a4ecf5c66aade88cbb1398128b8846c3b3a38ac881e1faed9e9d87238fb5f66b94c4b4befe56c825e23e","genres":["Beats & Instrumentals","Electronic"],"languages":[],"moods":[],"regions":[],"description":"easy listening. electronic peace","timeSince":"7 months ago","directTipCount":12,"directPlayCount":693,"releaseDate":"2017-06-20T10:04:55.297Z","tx":"0xe917d2c3528fda8090e036e1c96a949bc441f2afbf1307202d60dfbcb4772ff7"}

먼저 mp3의 주소입니다.
audioUrl":"/ppp/38fb0c55aa339a47b1d64ffacd23a4ecf5c66aade88cbb1398128b8846c3b3a38ac881e1faed9e9d87238fb5f66b94c4b4befe56c825e23e",
이걸 건졌군요.
GET /json-api/track/ 는 나머지도 흥미로운게 많은데 차근차근 살펴보면...

to be continue.....

Sort:  

안녕하세요.
흥미로워요!
뮤지코인에 대해 잘 모르는데요.
곡을 안만들고 곡만 들어도 코인을 받을 수 있는건가요?

아니요. 현재까지는 아티스트가 아니면 뮤지코인 입수법이 마이닝(이더리움 파생입니다) 밖에 없는 걸로 알고 있습니다.

나쁜놈들이 인증을 안시켜줘서 저는 디싸운드 해야게씀다 ㅠㅠ

Coin Marketplace

STEEM 0.26
TRX 0.20
JST 0.038
BTC 96560.41
ETH 3644.15
USDT 1.00
SBD 3.81