Apple n'annonce pas vraiment que l'iTunes Store et d'autres répertoires ont une API de recherche perverse mais simple - j'ai donc décidé d'écrire à ce sujet. Dans cet article, vous apprendrez ce que l'API peut faire et comment l'utiliser.
Recherche dans l'annuaire Apple
L'API recherche le contenu de l'iTunes Store, de l'iBooks Store, des podcasts Apple et de l'App Store. En conséquence, vous pouvez trouver des chansons, des films, des livres, des podcasts et des applications.
API JSONP, Content-Type: text/javascript
application/json
.
GET /search?media=podcast&term=python HTTP/1.1
Host: itunes.apple.com
Accept: application/json
HTTP/2 200
content-type: text/javascript; charset=utf-8
{...}
, :
import requests
def search(term, media):
url = "https://itunes.apple.com/search"
payload = {"term": term, "media": media}
response = requests.get(url, params=payload)
response.raise_for_status()
results = response.json().get("results", [])
return results
>>> results = search("python", media="podcast")
>>> results[0]["collectionName"]
'Talk Python To Me'
:
term
— , ;media
— (movie
,podcast
,music
,audiobook
,software
,ebook
,all
),all
;country
— , ISO- (us
,ru
, ...),us
;limit
— ,50
.
, :
import requests
def search(term, media="all", country="us", limit=10):
url = "https://itunes.apple.com/search"
payload = {"term": term, "media": media, "country": country, "limit": limit}
response = requests.get(url, params=payload)
response.raise_for_status()
results = response.json().get("results", [])
return results
:
{
"resultCount": 10,
"results": [
{
"wrapperType": "track",
"kind": "song",
"artistId": 1495668306,
"collectionId": 527039271,
"trackId": 527039276,
"artistName": "Dodge & Fuski",
"collectionName": "Never Say Die (Deluxe Edition)",
"trackName":"Python",
...
},
{
"wrapperType": "track",
"kind": "podcast",
"collectionId": 979020229,
"trackId": 979020229,
"artistName": "Michael Kennedy (@mkennedy)",
"collectionName": "Talk Python To Me"
...
},
...
]
}
(kind
) , . :
artistId
— ;artistName
— ;artistViewUrl
— Apple;collectionId
— ;collectionName
— ;collectionViewUrl
— Apple;trackId
— ;trackName
— ;artworkUrl100
— 100x100 ;country
— ;primaryGenreName
— .
— podsearch, .
(artistId
, collectionId
, trackId
), lookup
:
import requests
def lookup(object_id):
url = "https://itunes.apple.com/lookup"
payload = {"id": object_id}
response = requests.get(url, params=payload)
response.raise_for_status()
results = response.json().get("results", [])
return results
>>> results = lookup(979020229)
>>> results[0]["collectionName"]
'Talk Python To Me'
Content-Type . :
- (
country
) , . ISO- (ru
), — (RUS
). - Il n'y a pas de modèle de réponse.
- Apple limite les appels d'API à 20 requêtes par minute.
Description de l'API sur le package de recherche Podcast du site Web d'Apple
Si vous voulez des choses plus intéressantes en Python - abonnez-vous à la chaîne @ohmypy