led-matrix-player/main.py

82 lines
2.1 KiB
Python

import sys
import spotipy
import spotipy.util as util
import config as cfg
from PIL import Image
import asyncio
from rgbmatrix import RGBMatrix, RGBMatrixOptions
import threading
import requests
from io import BytesIO
import time
client_id = cfg.client_id
client_secret = cfg.client_secret
redirect_uri = cfg.redirect_uri
username = cfg.username
scope = 'user-read-currently-playing'
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
screen = RGBMatrix(options = options) #pygame.display.set_mode(self.size, self.flags)
token = util.prompt_for_user_token(username, scope, client_id, client_secret, redirect_uri)
def get_track():
print('getting info')
sp = spotipy.Spotify(auth=token)
track = sp.currently_playing()
print(track['is_playing'])
print(track['item']['name'] + ' - ' + track['item']['artists'][0]['name'])
print('getting image')
image_url = track['item']['album']['images'][0]['url']
response = requests.get(image_url)
image = Image.open(BytesIO(response.content))
#imageString = requests.get(track['item']['album']['images'][0]['url'])
#image = Image.open(f)
print('resizing image')
image = image.resize((32,32))
#return image
image.save("thumbnail.jpg","JPEG")
print('set image')
screen.SetImage(image.convert('RGB'))
print('image set')
#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:
print("Can't get token for", username)
def main():
x = threading.Thread(target=get_track)
x.start()
if __name__ == "__main__":
main()
print('text')
while True:
time.sleep(10)
print('timed')