Musicoin Player 만들기 - 1화 목마른 사슴이...
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는 문제가 좀 있었습니다.
- 한번에 한곡만 재생할 수 있다.
- 반복 재생이 안된다.
그래서 musicoin의 정책에 반하지만 않으면 이것저것 기능이 있는 쓸만한 뮤직 플레이어를 만들어서 음원차트도 공개하고 그러면 자연스레 컨텐츠도 생겨서 좋지 않을까라는 안일한 생각으로 플레이어를 보기 시작했습니다.
https://musicoin.org/embedded-player/0x1e5d291507499791e81688a27b51fbfe10433569
iframe으로 보통 삽입하는 embedded-player의 주소는 이렇습니다.
0x1e5d291507499791e81688a27b51fbfe10433569 는 위의 artist page와는 별도로 곡 마다 붙는 곡 지갑(?)인거죠.
주소에서 눈치채셨겠지만 이렇게 한번에 하나밖에 안됩니다.
https://musicoin.org/api 란게 있긴 한데 별로 도움이 되지 않았습니다.
그래서, 브라우저 창에 이 주소를 붙여놓고 얘가 뭘 하고 있나 보기 시작했습니다.
일단 자동으로 플레이가 되고 있고 크롬 개발자 콘솔을 열어보았습니다.
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}}]
트랙에 대한 상세 정보가 보이는 군요.
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.....
안녕하세요.
흥미로워요!
뮤지코인에 대해 잘 모르는데요.
곡을 안만들고 곡만 들어도 코인을 받을 수 있는건가요?
아니요. 현재까지는 아티스트가 아니면 뮤지코인 입수법이 마이닝(이더리움 파생입니다) 밖에 없는 걸로 알고 있습니다.
나쁜놈들이 인증을 안시켜줘서 저는 디싸운드 해야게씀다 ㅠㅠ