2013-02-03 5 views
2

그래서 Echo Nest API를 사용하여 사용자의 음악 카탈로그에있는 아티스트와 비슷한 100 명의 아티스트 목록을 생성하는 응용 프로그램을 만들고 있습니다. 그런 다음 사용자는 특정 연도를 제공 할 수 있으며 유사한 아티스트를 기준으로 해당 연도에 출시 된 앨범 목록을 반환합니다.API를 사용하여 연도 별 앨범 필터링

유일한 문제는 연도별로 앨범을 필터링하는 방법을 모르는 것입니다. Echo Nest API는 실제로 앨범을 많이 사용하지 않습니다. Discogs 및 Last.fm API는 앨범에서 작동하며 Discogs API에는 앨범의 출시 날짜에 대한 데이터가 있지만 출시일까지 초기 쿼리를 필터링 할 수있는 방법은 없습니다. 예를 들어, Fleet Foxes라는 아티스트가 2011 년 출시 된 앨범으로 필터링하려는 경우 Fleet Foxes에서 2011 년 출시 일정으로 제한된 앨범을 검색 할 수있는 옵션이 없습니다.

이 시점에서 실제로 볼 수있는 것은 모든 아티스트의 앨범을 반복하고 내 사양을 충족하는 앨범 만 추가하는 것입니다. 그러나 이것은 분명히 API와 내 서버 모두에서 매우 무거웠습니다. 특히 100 명의 유사한 아티스트 목록에있는 많은 아티스트가 내 기준과 일치하는 앨범을 갖지 않을 것이며 수많은 아티스트가 100 개의 앨범 범위 내에있는 것을 고려할 때 당신은 싱글, 리믹스 등을 고려합니다.

누구든지 이것을하는 더 좋은 방법이 있습니까?

+0

이것은 Java 또는 Python과 어떤 관련이 있습니까? – abarnert

+0

미안, 계획 단계에 있었고 그 두 언어 중 하나를 사용하도록 열었습니다. 그래서 나는 그들을 포함시킬 생각이었습니다. 나는 그들을 데리고 나갈 것이다. – user1427661

답변

1

API에 실제로 연도별로 필터링 할 방법이 없으면 물론 모든 출시를 풀고 사실 이후에 필터링해야합니다.

코드 또는 서버에 부담이 있다고 생각되면 필터링을 추가하라는 기능 요청을 제출해야합니다.

하지만 실제로는 그런 것을 제공하지 않아야합니다. 대부분의 REST API는 "가져 오기"와 "검색"을 분리합니다. 예를 들어, http://api.example.com/artists/12345/releases은 필터링 할 수있는 방법이 없을 수도 있지만 http://api.example.com/search?type=releases&artist=12345&year=2011이있을 수 있습니다.

모든 API를 자세하게 살펴보면 Discogs의 "Run a search query" 문서를 빠르게 확인하면 year 기준을 검색에 포함 할 수 있음을 알 수 있습니다 (실제로 아티스트 ID로 검색 할 수없는 것 같지만 아티스트 이름으로?).

+1

당신은 완전히 옳습니다. HTTP 요청을 사용하여 가져 오기 대신 검색을 사용하여 연도별로 검색 할 수 있습니다. 불행히도 파이썬을 사용하고 있으며 클라이언트 라이브러리는이를 제공하지 않습니다. 그러나 Search 클래스를 빠르게 조정하고 요청 라이브러리를 사용하여 호출하면이를 수정할 수 있습니다. 작동하는 경우 솔루션으로 내 게시물을 편집합니다. – user1427661

+0

Discogs와 last.fm은 모두 클라이언트 라이브러리를 오픈 소스로 가지고 있으며 적어도 파이썬은 순수 파이썬 웹 서비스 래퍼입니다. 따라서 쉽게 추가 할 수있는 기능이없는 경우 버그를 제출하고 패치를 제출하십시오. – abarnert