1

デンマークの国営ラジオ局 P3 で再生された 36,000 曲のトラックリストをクロールしました。この期間内に各ジャンルがどれくらいの頻度で再生されたかについて統計を取りたいので、discogs API が各トラックにジャンルのラベルを付けるのに役立つかもしれないと考えました. ただし、API のドキュメントには、特定の曲のジャンルをクエリする例が含まれているようです。

アーティスト、タイトル、テスト (API で各曲にジャンルのラベルを付けるテスト) の 3 つの列を持つ CSV ファイルがあります。

これまでに作成したスクリプトのサンプルを次に示します。

import json
import pandas as pd
import requests
import discogs_client
d = discogs_client.Client('ExampleApplication/0.1')
d.set_consumer_key('key-here', 'secret-here')

input = pd.read_csv('Desktop/TEST.csv', encoding='utf-8',error_bad_lines=False)

df = input[['Artist', 'Title', 'Test']]
df.columns = ['Artist', 'Title','Test']

for i in range(0, len(list(df.Artist))):
x = df.Artist[i]
g = d.artist(x)
df.Test[i] = str(g)

df.to_csv('Desktop/TEST2.csv', encoding='utf-8', index=False)

このスクリプトは、指定された ID 番号のアーティストをマッピングするために、これまでに 3 つのレコードを含むダミー ファイルで動作しています。しかし、ファイルが大きくなるとすぐに (ex. 2000)、アーティストが見つからないと HTTP エラーを返します。

このアプローチに関していくつか質問があります。

1) API の検索クエリ機能を使用して、変数を「ジャンル」として取得することをお勧めしますか? それとも、「d」でジャンルを取得できると思いますか。APIからの機能?

2) API キーを取得する必要がありますか? これまでのところ、API キーなしで 3 つのレコードを正常にマッピングしました。ただし、キーは無料のようです。

これが私がフォローしているガイドです: https://github.com/discogs/discogs_client

API のドキュメントは次のとおりです: https://www.discogs.com/developers/#page:home,header:home-quickstart

4

3 に答える 3

1

discogs_client の例をもう一度読む必要があるかもしれません。私は専門家ではありませんが、この API を使用しようとしている初心者です。

私の知る限り、 x は文字列ではなく整数でなければならないため、 g = d.artist(x) は失敗します。

したがって、最初に検索を行い、次にアーティスト ID を取得し、次に d.artist(artist_id) を取得する必要があります。

例を提供できなくて申し訳ありません。私は今、python初心者です;)

また、acoustidをチェックしましたか

于 2015-05-18T18:07:16.657 に答える
0

それはおそらくレート制限です。応答のステータス コードを読むと、429 Too Many Requests が見つかるはずです。

残念ながら、その場合の唯一の解決策は、コードにスリープを追加して、1 秒あたり 1 つのリクエストを行うことです。

API ドキュメントをチェックアウト: http://www.discogs.com/developers/#page:home,header:home-rate-limiting

于 2015-05-01T22:24:50.877 に答える
0

このガイドを見つけました:

https://github.com/neutralino1/discogs_client.

キーを使用して API にアクセスし、次のように試してください。

d = discogs_client.Client('something.py', user_token=auth_token)
release = d.release(774004)
genre = release.genres

より良い解決策を見つけた場合は、共有してください。

于 2021-06-02T10:04:39.280 に答える