Skip to content

Instantly share code, notes, and snippets.

@jeffehobbs
Created February 1, 2021 01:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeffehobbs/3e57e543264215e5765f9bbc97f46494 to your computer and use it in GitHub Desktop.
Save jeffehobbs/3e57e543264215e5765f9bbc97f46494 to your computer and use it in GitHub Desktop.
lambda that simplifies the last.fm API payload for easy import into home assistant
import requests, json
from datetime import datetime, timedelta
from flask import Flask, request, jsonify
# pip install requests, flask, zappa
# modify 'USER' and 'API_KEY' to fit
USER = 'YOUR_USER_NAME'
API_KEY = 'YOUR_API_KEY'
app = Flask(__name__)
@app.route('/')
def return_songs():
limit = request.args.get('limit', default=5, type=int)
limit = limit - 1
api_call = "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=" + USER + "&api_key=" + API_KEY + "&format=json"
r = requests.get(api_call)
data = r.json()
print(json.dumps(data, indent=4))
response = {'result': 'ok'}
for track_num, track_data in enumerate(data['recenttracks']['track']):
track_name = str(track_data['name'])
track_artist = str(track_data['artist']['#text'])
track_date = str(track_data['date']['#text']).split(', ')
d = datetime.strptime(track_date[1], "%H:%M") - timedelta(hours=5)
track_time = d.strftime("%-I:%M%p").lower()
response['track' + str(track_num)] = track_name + ' - ' + track_artist + ' - ' + track_time
if (track_num == limit):
break
return jsonify(response)
# main function
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment