Repository navigation
Expand file tree
/
Copy pathserver.py
More file actions
85 lines (74 loc) · 2.75 KB
/
Copy pathserver.py
File metadata and controls
85 lines (74 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
from flask import Flask, render_template, jsonify, request
import keyboard
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
from comtypes import CLSCTX_ALL
import requests
import os
app = Flask(__name__)
# Configurações
CURRENT_TRACK_INFO = {
'title': 'Nenhuma música tocando',
'artist': '',
'album_art': 'https://via.placeholder.com/150',
'lyrics': ''
}
API_KEY = os.getenv('API_KEY')
# Controles Básicos de Mídia
def send_media_key(key):
keyboard.send(key)
# Obter letras via API (Genius)
def get_lyrics(title, artist):
# API_KEY = 'SUA_CHAVE_AQUI' # Obtenha em: https://genius.com/api-clients
try:
response = requests.get(
f"https://api.genius.com/search?q={title} {artist}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
if data['response']['hits']:
return data['response']['hits'][0]['result']['url']
return "Letra não encontrada"
except:
return "Erro ao buscar letras"
# Rotas
@app.route('/')
def index():
return render_template('player.html')
@app.route('/control', methods=['POST'])
def control():
action = request.json['action']
keys = {
'playpause': 'play/pause media',
'next': 'next track',
'previous': 'previous track' # Previous track
}
send_media_key(keys[action])
return jsonify(status="success")
@app.route('/volume', methods=['POST'])
def volume():
level = request.json['level']
sessions = AudioUtilities.GetSpeakers()
interface = sessions.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = interface.QueryInterface(IAudioEndpointVolume)
volume.SetMasterVolumeLevelScalar(level / 100, None)
return jsonify(status="success")
@app.route('/track-info')
def track_info():
# (Implemente a lógica para pegar informações da música atual)
# Exemplo para Windows usando Windows.Media.Control:
# https://github.com/serialoverflow/MediaControl
return jsonify(CURRENT_TRACK_INFO)
# Novo: função para iniciar o servidor a partir do main.py
def run(host: str | None = None, port: int | None = None, debug: bool | None = None):
"""Inicia o servidor Flask. Usa SERVER_IP, PORT e FLASK_DEBUG do ambiente por padrão."""
resolved_host = host or os.getenv("SERVER_IP", "0.0.0.0")
resolved_port = int(port or os.getenv("PORT", "5000"))
if debug is None:
debug_env = os.getenv("FLASK_DEBUG", "1")
resolved_debug = debug_env.lower() in ("1", "true", "yes", "on")
else:
resolved_debug = debug
app.run(host=resolved_host, port=resolved_port, debug=resolved_debug)
if __name__ == '__main__':
run()