led-matrix-player/main.py

67 lines
1.8 KiB
Python
Raw Normal View History

2020-12-19 20:13:22 +00:00
import sys
import spotipy
import spotipy.util as util
2020-12-19 20:34:44 +00:00
import config as cfg
2020-12-19 20:13:22 +00:00
from PIL import Image
2020-12-19 21:32:34 +00:00
import asyncio
2020-12-19 21:08:07 +00:00
from rgbmatrix import RGBMatrix, RGBMatrixOptions
2020-12-19 20:13:22 +00:00
import requests
from io import BytesIO
2020-12-19 20:34:44 +00:00
client_id = cfg.client_id
client_secret = cfg.client_secret
redirect_uri = cfg.redirect_uri
username = cfg.username
2020-12-19 20:13:22 +00:00
scope = 'user-read-currently-playing'
2020-12-19 21:08:07 +00:00
options = RGBMatrixOptions()
options.rows = 32
options.cols = 64
options.chain_length = 6
options.parallel = 2
options.hardware_mapping = 'regular'
options.pixel_mapper_config = 'U-mapper'
options.limit_refresh_rate_hz = 240
options.gpio_slowdown = 4
2020-12-19 21:09:02 +00:00
screen = RGBMatrix(options = options) #pygame.display.set_mode(self.size, self.flags)
2020-12-19 21:08:07 +00:00
2020-12-19 20:13:22 +00:00
2020-12-19 20:34:44 +00:00
token = util.prompt_for_user_token(username, scope, client_id, client_secret, redirect_uri)
2020-12-19 20:13:22 +00:00
2020-12-19 21:27:06 +00:00
async def get_track():
2020-12-19 20:13:22 +00:00
sp = spotipy.Spotify(auth=token)
2020-12-19 20:52:10 +00:00
track = sp.currently_playing()
print(track['is_playing'])
2020-12-19 20:13:22 +00:00
print(track['item']['name'] + ' - ' + track['item']['artists'][0]['name'])
imageString = requests.get(track['item']['album']['images'][0]['url'])
image = Image.open(BytesIO(imageString.content))
image = image.resize((32,32))
2020-12-19 21:27:06 +00:00
return image
2020-12-19 21:13:19 +00:00
#image.save("thumbnail.jpg","JPEG")
2020-12-19 21:27:06 +00:00
#if token:
# sp = spotipy.Spotify(auth=token)
# track = sp.currently_playing()
# print(track['is_playing'])
# print(track['item']['name'] + ' - ' + track['item']['artists'][0]['name'])
# imageString = requests.get(track['item']['album']['images'][0]['url'])
# image = Image.open(BytesIO(imageString.content))
# image = image.resize((32,32))
# #image.save("thumbnail.jpg","JPEG")
#else:
2020-12-19 20:13:22 +00:00
print("Can't get token for", username)
2020-12-19 21:30:49 +00:00
async def main():
2020-12-19 21:30:10 +00:00
thumbnail = await get_track()
2020-12-19 21:29:48 +00:00
screen.SetImage(thumbnail.convert('RGB'))
2020-12-19 21:36:09 +00:00
2020-12-19 21:36:24 +00:00
async def test():
2020-12-19 21:36:09 +00:00
print('text')
2020-12-19 21:29:02 +00:00
if __name__ == "__main__":
2020-12-19 21:32:12 +00:00
asyncio.run(main())
2020-12-19 21:36:09 +00:00
asyncio.run(test())