feat: initial implementation of navidrome-music-sync with Yandex, Spotify, Apple, YouTube support and Web UI
This commit is contained in:
1 parent
44c67ab49d
commit
5b6c2c72f7
23 files changed
+1445
-2
No files matched your search
@@ -0,0 +1,88 @@
|
||||
<!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">
|
||||
<!-- Input Card -->
|
||||
<section class="card input-card">
|
||||
<h2>📥 Импорт музыки</h2>
|
||||
<p class="card-desc">Вставьте ссылку на трек, альбом или плейлист из <b>Яндекс Музыки</b>, <b>Spotify</b>, <b>Apple Music</b> или <b>YouTube</b>:</p>
|
||||
|
||||
<form id="downloadForm" class="download-form">
|
||||
<div class="input-wrapper">
|
||||
<input type="text" id="urlInput" placeholder="https://music.yandex.ru/... или https://open.spotify.com/..." 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>
|
||||
|
||||
<!-- 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>
|
||||
Reference in new issue
Block a user