Created ver 1.00 of LastFM-NowPlaying.
-Stable
This commit is contained in:
69
LastFM-NowPlaying.py
Normal file
69
LastFM-NowPlaying.py
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
from xml.dom import minidom
|
||||||
|
from urllib.request import urlopen
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import threading
|
||||||
|
|
||||||
|
userName = input("Enter your LastFM username: ")
|
||||||
|
|
||||||
|
#Public API Key for Accessing Last FM
|
||||||
|
apiKey = ("460cda35be2fbf4f28e8ea7a38580730")
|
||||||
|
|
||||||
|
#Global Variables
|
||||||
|
currentTrackURL = ('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&nowplaying="true"&user=' + str(userName) + '&api_key=' + str(apiKey))
|
||||||
|
runCheck = True
|
||||||
|
waitTime = 0
|
||||||
|
noSongPlaying = ("Nothing Currently Playing")
|
||||||
|
|
||||||
|
#Defines the funcions for use in different threads.
|
||||||
|
def checkForNewSong():
|
||||||
|
global runCheck
|
||||||
|
global waitTime
|
||||||
|
while runCheck == True:
|
||||||
|
#Loads Current Song info from Last FM
|
||||||
|
currentTrackXML = urlopen(currentTrackURL).read()
|
||||||
|
currentTrack = minidom.parseString(currentTrackXML)
|
||||||
|
songName = currentTrack.getElementsByTagName('name')
|
||||||
|
songArtist = currentTrack.getElementsByTagName('artist')
|
||||||
|
songInfo = songName[0].firstChild.nodeValue + " by " + songArtist[0].firstChild.nodeValue + " "
|
||||||
|
|
||||||
|
currentSongFile = open("currentSong.txt", "r")
|
||||||
|
#Checks if currentSong is already in currentSong.txt If it isn't, clears the file.
|
||||||
|
if currentSongFile.readline() != songInfo:
|
||||||
|
currentSongFile.close()
|
||||||
|
#Runs twice; Once for clearing and once for adding the curren song.
|
||||||
|
currentSongFile = open("currentSong.txt", "w")
|
||||||
|
currentSongFile.write(songInfo)
|
||||||
|
currentSongFile.close()
|
||||||
|
|
||||||
|
print(songInfo)
|
||||||
|
#Adds wait before next check.
|
||||||
|
time.sleep(waitTime)
|
||||||
|
#End of While Loop
|
||||||
|
|
||||||
|
#Sets the current song to "Nothing Currently Playing"
|
||||||
|
currentSongFile = open("currentSong.txt", "w")
|
||||||
|
currentSongFile.write(noSongPlaying)
|
||||||
|
currentSongFile.close()
|
||||||
|
#Closes the Application
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
def exitCheck():
|
||||||
|
global runCheck
|
||||||
|
while runCheck == True:
|
||||||
|
exitInput = input("Type Exit to close: \n")
|
||||||
|
if exitInput == "exit" or exitInput == "Exit" or exitInput == "EXIT":
|
||||||
|
print("Closing Application...")
|
||||||
|
runCheck = False
|
||||||
|
|
||||||
|
|
||||||
|
#Checks for currentSong.txt. If doesn't exist, creates file.
|
||||||
|
currentSongFile = open("currentSong.txt", "w")
|
||||||
|
#Used to keep currentSong.txt on "Nothing Currently Playing" until first song is pulled from LastFM
|
||||||
|
currentSongFile.write(noSongPlaying)
|
||||||
|
currentSongFile.close()
|
||||||
|
#Creates Threads for the two functions
|
||||||
|
newSongThread = threading.Thread(target=checkForNewSong)
|
||||||
|
exitThread = threading.Thread(target=exitCheck)
|
||||||
|
newSongThread.start()
|
||||||
|
exitThread.start()
|
||||||
@@ -1,2 +1,6 @@
|
|||||||
# LastFM-NowPlaying
|
# LastFM-NowPlaying
|
||||||
A Python Script that pull's a user's current song from Last FM then writes it to a text file for use with OBS or Xsplit.
|
A Python Script that pull's a user's current song from LastFM then writes it to a text file for use with an external program.
|
||||||
|
|
||||||
|
### Use
|
||||||
|
Input your LastFM username. Then let it run. The songs will automatically write to currentSong.txt
|
||||||
|
To close, type in "exit" then press Enter.
|
||||||
|
|||||||
BIN
__pycache__/apiKey.cpython-36.pyc
Normal file
BIN
__pycache__/apiKey.cpython-36.pyc
Normal file
Binary file not shown.
Reference in New Issue
Block a user