Files
AM-Exporter/user/test.py
√(noham)² 828e481d1d changes
2024-03-03 15:52:50 +01:00

86 lines
2.9 KiB
Python

import subprocess
import time
import json
import requests
from pprint import pprint
import os
from dotenv import load_dotenv
load_dotenv()
USER = os.getenv("USER")
PASSWORD = os.getenv("PASSWORD")
def get_current_song():
try:
output = subprocess.check_output(['osascript', 'export.applescript']).decode('utf-8').strip()
return output
except subprocess.CalledProcessError as e:
return e
def get_track_extras(song, artist, album):
query = f"{song} {artist} {album}"
params = {"media": "music", "entity": "song", "term": query}
r = requests.get("https://itunes.apple.com/search", params=params)
json_data = r.json()
if json_data["resultCount"] == 1:
result = json_data["results"][0]
elif json_data["resultCount"] > 1:
result = json_data["results"][0]
else :
result = ''
artwork_url = result["artworkUrl100"] if result else None
itunes_url = result["trackViewUrl"] if result else None
artist_url = result["artistViewUrl"] if result else None
return (artwork_url, itunes_url, artist_url)
def post(currentsong):
currentsong['user'] = USER
currentsong['password'] = PASSWORD
data = json.dumps(currentsong)
r = requests.post(url+'/music/set', data=data, headers=headers)
if r.status_code != 200:
return r.status_code
else :
return r.text
url = "https://api.noh.am" #RUN WEB
url = "http://127.0.0.1:5000" #DEV
url = "http://0.0.0.0:3005"
headers = {'Content-Type': 'application/json'}
def main():
persistendId = ''
prevstatus = ''
while True:
print('getting data..')
# currentsong = json.loads(str(get_current_song()).replace("'''", '"'))
currentsong = json.loads(get_current_song())
if currentsong['status'] == 'playing':
if currentsong['persistent ID'] != persistendId:
persistendId = currentsong['persistent ID']
currentsong['timestamp'] = time.time()
(currentsong['artwork_url'], currentsong['itunes_url'], currentsong['artist_url']) = get_track_extras(currentsong['name'], currentsong['artist'], currentsong['album'])
print(post(currentsong))
timets = float(currentsong['duration'].replace(",", "."))-float(currentsong['pPosition'].replace(",", ".")) + 3
prevstatus = 'playing'
elif currentsong['status'] == 'not playing' and prevstatus != 'not playing':
prevstatus = 'not playing'
print('not playing')
print(post({'status' : 'not playing'}))
timets = 5*60
elif currentsong['status'] == 'not running' and prevstatus != 'not running':
prevstatus = 'not running'
print('not running')
print(post({'status' : 'not running'}))
timets = 5*60
else:
timets = 5*60
time.sleep(timets)
if __name__ == "__main__":
main()