matthileo

Last.fm Discord Rich Presence

Mar 18th, 2020
432
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.76 KB | None | 0 0
  1. from sys import platform as _platform
  2. import time
  3. import datetime
  4.  
  5. import pylast
  6. from pypresence import Presence
  7.  
  8. def timestamp():
  9.     return datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %I:%M:%S %p')
  10.  
  11. ## THIS MUST BE REMOVED IF CODE IS SHARED
  12. LASTFM_API_KEY = "LASTFM API KEY GOES HERE"
  13. LASTFM_API_SECRET = "LASTFM API SECRET GOES HERE"
  14. LASTFM_USERNAME = "Your Lastfm Username Goes Here"
  15. client_id = 'DISCORD APP CLIENT ID GOES HERE'  # Discord Client ID
  16.  
  17. RPC = Presence(client_id)  # Initialize the Presence class
  18. RPC.connect()  # Start the handshake loop
  19.  
  20. #print("BEFORE LOGGING IN TO LAST.FM") #DEBUG STATEMENT
  21.  
  22. network = pylast.LastFMNetwork(LASTFM_API_KEY, LASTFM_API_SECRET)
  23.  
  24. user = network.get_user(LASTFM_USERNAME)
  25. out = "Tuned in to %s on Last.fm..." % LASTFM_USERNAME
  26. print(out)
  27. print("-" * len(out))
  28.  
  29. playing_track = None
  30.  
  31. interval = 15
  32. counter = 0
  33.  
  34. while True:
  35.     try:
  36.         #print(timestamp() + " - CHECKING NOW (Counter = " + str(counter) + ", Interval = " + str(interval) + ")")
  37.         #print("BEFORE USER.GETNOWPLAYING") #DEBUG STATEMENT
  38.         new_track = user.get_now_playing()
  39.         #print("AFTER GET NOW PLAYING") #DEBUG STATEMENT
  40.        
  41.         # A new, different track
  42.         if new_track != playing_track:
  43.             playing_track = new_track
  44.             track_string = str(playing_track)
  45.  
  46.             try:
  47.                 artist = str(playing_track.get_artist())
  48.                 song = str(playing_track.get_name())
  49.             except Exception as e:
  50.                 #print(timestamp() + " - Error: %s" % repr(e))
  51.                 artist = "None"
  52.                 song = "None"
  53.  
  54.             try:
  55.                 album = str(playing_track.get_album().get_name())    
  56.                 album_image = playing_track.get_album().get_cover_image()          
  57.             except Exception as e:
  58.                 album = "None"
  59.                 album_image = "None"
  60.  
  61.             #timestamp = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %I:%M:%S %p')
  62.             print(timestamp() + " - " + track_string)
  63.  
  64.             #print("BEFORE WRITING TRACK TO CHANNEL") #DEBUG STATEMENT
  65.  
  66.             if track_string != "None":
  67.                 interval = 15
  68.                 counter = 0
  69.                 if len(song) > 128:
  70.                     song = song[0:125] + "..."
  71.                 if album != "None":
  72.                     RPC.update(details=song, state="by " + artist,large_image="icon",large_text=album)
  73.                 else:
  74.                     RPC.update(details=song, state="by " + artist,large_image="icon")
  75.             else:
  76.                 RPC.clear()
  77.    
  78.     except Exception as e:
  79.         print(timestamp() + " - Error: " + str(e))
  80.  
  81.     time.sleep(interval)
  82. RPC.close()
Advertisement
Add Comment
Please, Sign In to add comment