113 lines
4.4 KiB
HTML
113 lines
4.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Navidrome Music Sync</title>
|
|
<link rel="stylesheet" href="static/style.css">
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
</head>
|
|
<body>
|
|
<div class="app-container">
|
|
<header class="header">
|
|
<div class="logo-group">
|
|
<span class="logo-icon">🎵</span>
|
|
<div>
|
|
<h1>Navidrome Music Sync</h1>
|
|
<p class="subtitle">Поиск, импорт и синхронизация музыки в Navidrome</p>
|
|
</div>
|
|
</div>
|
|
<div class="status-badges">
|
|
<span class="badge badge-success" id="yandexStatus">Яндекс Музыка: Активна</span>
|
|
<span class="badge badge-info" id="tracksCount">Загружено: 0</span>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="main-content">
|
|
<!-- Search & Input Card -->
|
|
<section class="card input-card">
|
|
<h2>🔍 Поиск и импорт музыки</h2>
|
|
<p class="card-desc">Введите название трека/артиста (например: <b>Booker - Время колокольчиков</b>) или вставьте прямую ссылку (Яндекс, Spotify, Apple, YouTube):</p>
|
|
|
|
<form id="downloadForm" class="download-form">
|
|
<div class="input-wrapper">
|
|
<input type="text" id="urlInput" placeholder="Название трека или https://..." required autocomplete="off">
|
|
<button type="submit" id="submitBtn" class="btn btn-primary">Найти / Загрузить</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div class="quick-actions">
|
|
<span>Быстрые действия:</span>
|
|
<button id="syncLikesBtn" class="btn btn-secondary">
|
|
❤️ Синхронизировать «Мне нравится» (Яндекс)
|
|
</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Search Results Card (Hidden by default) -->
|
|
<section class="card search-card" id="searchCard" style="display: none;">
|
|
<div class="search-header">
|
|
<h2>🎯 Результаты поиска: <span id="searchQueryLabel"></span></h2>
|
|
<button id="closeSearchBtn" class="btn-close" title="Закрыть поиск">×</button>
|
|
</div>
|
|
|
|
<div id="searchLoading" class="search-loading" style="display: none;">
|
|
<div class="spinner"></div> Ищем на Яндекс Музыке, Apple Music и YouTube...
|
|
</div>
|
|
|
|
<!-- Search Tracks -->
|
|
<div class="search-section" id="searchTracksSection">
|
|
<h3>🎵 Найденные треки</h3>
|
|
<div class="search-tracks-list" id="searchTracksList"></div>
|
|
</div>
|
|
|
|
<!-- Search Albums -->
|
|
<div class="search-section" id="searchAlbumsSection" style="margin-top: 1.5rem;">
|
|
<h3>💿 Альбомы</h3>
|
|
<div class="search-albums-grid" id="searchAlbumsList"></div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Active Tasks -->
|
|
<section class="card tasks-card">
|
|
<h2>⚡ Очередь задач</h2>
|
|
<div id="tasksList" class="tasks-list">
|
|
<p class="empty-state">Нет активных загрузок</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- History -->
|
|
<section class="card history-card">
|
|
<h2>📜 Недавно загруженные треки</h2>
|
|
<div class="table-container">
|
|
<table class="tracks-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Сервис</th>
|
|
<th>Исполнитель</th>
|
|
<th>Трек</th>
|
|
<th>Альбом</th>
|
|
<th>Дата</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="historyBody">
|
|
<tr>
|
|
<td colspan="5" class="empty-state">Пока нет загрузок</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<footer class="footer">
|
|
<p>Navidrome Music Sync • Интегрировано с <a href="https://music.qpid.pro" target="_blank">music.qpid.pro</a></p>
|
|
</footer>
|
|
</div>
|
|
|
|
<script src="static/app.js"></script>
|
|
</body>
|
|
</html>
|