def scrobble():
session_id, scrobbles = parse_scrobble_request(request.form)
if not session_id:
return api_response('BADREQUEST'), 400
session = db.session.query(Session).filter(Session.session_id == session_id).first()
for data in scrobbles:
artist = db.session.query(Artist).filter(Artist.name == data['artist']).first()
artist_id = None
album_id = None
if artist:
artist_id = artist.id
artist.local_playcount += 1
album = db.session.query(Album).filter(
Album.artist_id == artist_id,
Album.name == data['album']
).first()
if album:
album_id = album.id
album.local_playcount += 1
# PG 9.5+: DO NOTHING if duplicate
query = insert(Scrobble).values(
user_id=session.user_id,
token_id=session.token_id,
played_at=data.pop('timestamp'),
artist_id=artist_id,
album_id=album_id,
**data
).on_conflict_do_nothing(
index_elements=['user_id', 'played_at', 'artist', 'track']
)
db.session.execute(query)
# PG <9.5
# scrobble = Scrobble(
# user_id=session.user_id,
# played_at=data.pop('timestamp'),
# artist_id=artist_id,
# **data
# )
# db.session.add(scrobble)
db.session.commit()
return api_response('OK')
评论列表
文章目录