콘텐츠로 이동

빠른 시작

API는 공개되어 있으며 키가 필요 없습니다. 이 페이지의 예제는 모두 여기서 바로 실행됩니다.

GET /api/v1/songs/{id}
아직 보내지 않음

server는 카탈로그를 고릅니다. jp 또는 기본값인 Global의 intl입니다. 텍스트 필드는 일본어, 영어, 번체 중국어, 간체 중국어, 한국어 순서의 배열입니다. 빈 문자열은 해당 언어 텍스트가 아직 없다는 뜻입니다.

GET /api/v1/songs
아직 보내지 않음

목록은 items를 반환하고, 다음 페이지가 있으면 nextCursor도 반환합니다. 다음 요청의 cursor로 전달하세요.

const base = "https://haneoka.org/api/v1/songs?server=jp&limit=100";
const songs = [];
let cursor = null;
do {
const url = cursor ? `${base}&cursor=${encodeURIComponent(cursor)}` : base;
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const page = await response.json();
songs.push(...page.items);
cursor = page.nextCursor;
} while (cursor);
console.log(songs.length);

이미지 필드는 haneoka.org의 경로입니다. 오리진을 붙이고 referrerpolicy="no-referrer"를 지정하세요. 다른 사이트를 리퍼러로 보내는 요청은 거부됩니다.

<img id="jacket" alt="" width="240" height="240" referrerpolicy="no-referrer">
<h1 id="title"></h1>
<script type="module">
const origin = "https://haneoka.org";
const song = await (await fetch(`${origin}/api/v1/songs/100091?server=jp`)).json();
document.querySelector("#title").textContent = song.musicTitle[0];
document.querySelector("#jacket").src = origin + song.jacketUrl;
</script>