61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
import time
|
|
import requests
|
|
from instagrapi import Client
|
|
from pathlib import Path
|
|
|
|
USERNAME = ""
|
|
PASSWORD = ""
|
|
|
|
LASTFM_API_KEY = ""
|
|
LASTFM_USERNAME = ""
|
|
COOKIE_PATH = Path(f"{USERNAME}.json")
|
|
|
|
def generate_cookie(username, password):
|
|
cl = Client()
|
|
cl.login(username, password)
|
|
cl.dump_settings(COOKIE_PATH)
|
|
|
|
def get_latest_track(username, api_key):
|
|
url = "http://ws.audioscrobbler.com/2.0/"
|
|
params = {
|
|
"method": "user.getrecenttracks",
|
|
"user": username,
|
|
"api_key": api_key,
|
|
"format": "json",
|
|
"limit": 1
|
|
}
|
|
response = requests.get(url, params=params)
|
|
data = response.json()
|
|
|
|
if "recenttracks" in data and "track" in data["recenttracks"]:
|
|
track = data["recenttracks"]["track"][0]
|
|
artist = track["artist"]["#text"]
|
|
song = track["name"]
|
|
# return song <- for only showing songs
|
|
return f"{artist} - {song}"
|
|
return None
|
|
|
|
def main():
|
|
if not COOKIE_PATH.exists():
|
|
generate_cookie(USERNAME, PASSWORD)
|
|
print("Cookies generated")
|
|
|
|
cl = Client()
|
|
cl.load_settings(COOKIE_PATH)
|
|
cl.login(USERNAME, PASSWORD)
|
|
|
|
previous_note_text = None
|
|
|
|
while True:
|
|
note_text = get_latest_track(LASTFM_USERNAME, LASTFM_API_KEY)
|
|
if note_text:
|
|
if len(note_text) > 60:
|
|
note_text = note_text[:57] + "..."
|
|
if note_text != previous_note_text:
|
|
print(note_text)
|
|
cl.create_note(note_text, 0)
|
|
previous_note_text = note_text
|
|
time.sleep(30)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|