· 6 years ago · Mar 18, 2020, 09:46 PM
1from sys import platform as _platform
2import time
3import datetime
4
5import pylast
6from pypresence import Presence
7
8def 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
12LASTFM_API_KEY = "LASTFM API KEY GOES HERE"
13LASTFM_API_SECRET = "LASTFM API SECRET GOES HERE"
14LASTFM_USERNAME = "Your Lastfm Username Goes Here"
15client_id = 'DISCORD APP CLIENT ID GOES HERE' # Discord Client ID
16
17RPC = Presence(client_id) # Initialize the Presence class
18RPC.connect() # Start the handshake loop
19
20#print("BEFORE LOGGING IN TO LAST.FM") #DEBUG STATEMENT
21
22network = pylast.LastFMNetwork(LASTFM_API_KEY, LASTFM_API_SECRET)
23
24user = network.get_user(LASTFM_USERNAME)
25out = "Tuned in to %s on Last.fm..." % LASTFM_USERNAME
26print(out)
27print("-" * len(out))
28
29playing_track = None
30
31interval = 15
32counter = 0
33
34while 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)
82RPC.close()