# vrc_media_gui_release.py
import sys
import requests
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QListWidget, QLineEdit, QRadioButton, QButtonGroup, QMessageBox, QInputDialog
from PySide6.QtCore import Qt, QTimer

SERVER_URL = "http://10.126.76.158:1240"

class VRCMediaGUI(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("VRC Media Server")
        self.setGeometry(200,200,600,550)
        self.setStyleSheet("background-color: #2b2b2b; color: #f0f0f0; font-size: 14px")
        self.layout = QVBoxLayout()
        self.setLayout(self.layout)

        self.track_label = QLabel("🎵 Сейчас играет: -")
        self.layout.addWidget(self.track_label)

        self.mode_group = QButtonGroup()
        self.mode_layout = QHBoxLayout()
        self.video_mode = QRadioButton("Видео (AudioLink)")
        self.stream_mode = QRadioButton("Стрим (Playlist)")
        self.udon_mode = QRadioButton("UDON (Smart Player)")
        self.video_mode.setChecked(True)
        self.mode_group.addButton(self.video_mode)
        self.mode_group.addButton(self.stream_mode)
        self.mode_group.addButton(self.udon_mode)
        self.mode_layout.addWidget(self.video_mode)
        self.mode_layout.addWidget(self.stream_mode)
        self.mode_layout.addWidget(self.udon_mode)
        self.layout.addLayout(self.mode_layout)

        self.playlist_label = QLabel("Плейлисты:")
        self.layout.addWidget(self.playlist_label)
        self.playlist_list = QListWidget()
        self.layout.addWidget(self.playlist_list)

        self.playlist_buttons_layout = QHBoxLayout()
        self.create_playlist_btn = QPushButton("Создать плейлист")
        self.playlist_buttons_layout.addWidget(self.create_playlist_btn)
        self.layout.addLayout(self.playlist_buttons_layout)

        self.content_layout = QHBoxLayout()
        self.youtube_input = QLineEdit()
        self.youtube_input.setPlaceholderText("YouTube URL")
        self.add_youtube_btn = QPushButton("Добавить YouTube")
        self.content_layout.addWidget(self.youtube_input)
        self.content_layout.addWidget(self.add_youtube_btn)
        self.layout.addLayout(self.content_layout)

        self.video_link_label = QLabel("Ссылка для Video Player:")
        self.video_link_value = QLabel("-")
        self.video_link_value.setTextInteractionFlags(Qt.TextSelectableByMouse)
        self.layout.addWidget(self.video_link_label)
        self.layout.addWidget(self.video_link_value)

        self.add_youtube_btn.clicked.connect(self.add_youtube)
        self.create_playlist_btn.clicked.connect(self.create_playlist)
        self.playlist_list.itemDoubleClicked.connect(self.play_selected_playlist)

        self.timer = QTimer()
        self.timer.timeout.connect(self.update_current_track)
        self.timer.start(2000)

        self.load_playlists()
        self.update_current_track()

    def load_playlists(self):
        try:
            resp = requests.get(f"{SERVER_URL}/playlists")
            if resp.ok:
                self.playlist_list.clear()
                for pl in resp.json():
                    self.playlist_list.addItem(pl)
        except Exception as e:
            QMessageBox.warning(self, "Ошибка", f"Не удалось загрузить плейлисты: {e}")

    def update_current_track(self):
        try:
            resp = requests.get(f"{SERVER_URL}/status")
            if resp.ok:
                status = resp.json()
                self.track_label.setText(f"🎵 Сейчас играет: {status.get('title','-')}, Режим: {status.get('mode','-')}")
                if status.get('mode')=='VIDEO':
                    self.video_link_value.setText(f"{SERVER_URL}/video/{status.get('title','')}.mp4")
        except:
            self.track_label.setText("🎵 Ошибка связи с сервером")

    def add_youtube(self):
        url = self.youtube_input.text().strip()
        if not url:
            return
        try:
            resp = requests.get(f"{SERVER_URL}/download?url={url}")
            if resp.ok:
                QMessageBox.information(self,"OK","Видео добавлено и скачано")
                self.youtube_input.clear()
                self.load_playlists()
        except Exception as e:
            QMessageBox.warning(self,"Ошибка",f"Не удалось добавить видео: {e}")

    def create_playlist(self):
        name, ok = QInputDialog.getText(self,'Создать плейлист','Название плейлиста:')
        if ok and name:
            try:
                resp = requests.post(f"{SERVER_URL}/playlists",json={'name':name})
                if resp.ok:
                    QMessageBox.information(self,"OK",f"Плейлист '{name}' создан")
                    self.load_playlists()
            except Exception as e:
                QMessageBox.warning(self,"Ошибка",f"Не удалось создать плейлист: {e}")

    def play_selected_playlist(self,item):
        try:
            mode = 'VIDEO' if self.video_mode.isChecked() else 'STREAM' if self.stream_mode.isChecked() else 'UDON'
            resp = requests.post(f"{SERVER_URL}/play/{item.text()}?mode={mode}")
            if resp.ok:
                QMessageBox.information(self,"OK",f"Плейлист '{item.text()}' запущен в режиме {mode}")
        except Exception as e:
            QMessageBox.warning(self,"Ошибка",f"Не удалось запустить плейлист: {e}")

if __name__=="__main__":
    app=QApplication(sys.argv)
    window=VRCMediaGUI()
    window.show()
    sys.exit(app.exec())
