Implementing a streaming setup with Usenet
This commit is contained in:
@@ -24,6 +24,14 @@
|
||||
<i class="bi bi-collection text-lg"></i>
|
||||
<span class="hidden sm:inline">*Arrs</span>
|
||||
</button>
|
||||
<button type="button" class="tab-button flex items-center gap-2 py-3 px-1 border-b-2 border-transparent text-base-content/70 hover:text-base-content hover:border-base-300 font-medium text-sm transition-colors" data-tab="usenet">
|
||||
<i class="bi bi-globe text-lg"></i>
|
||||
<span class="hidden sm:inline">Usenet</span>
|
||||
</button>
|
||||
<button type="button" class="tab-button flex items-center gap-2 py-3 px-1 border-b-2 border-transparent text-base-content/70 hover:text-base-content hover:border-base-300 font-medium text-sm transition-colors" data-tab="sabnzbd">
|
||||
<i class="bi bi-download text-lg"></i>
|
||||
<span class="hidden sm:inline">SABnzbd</span>
|
||||
</button>
|
||||
<button type="button" class="tab-button flex items-center gap-2 py-3 px-1 border-b-2 border-transparent text-base-content/70 hover:text-base-content hover:border-base-300 font-medium text-sm transition-colors" data-tab="repair">
|
||||
<i class="bi bi-wrench text-lg"></i>
|
||||
<span class="hidden sm:inline">Repair</span>
|
||||
@@ -328,6 +336,146 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Usenet Tab Content -->
|
||||
<div class="tab-content hidden" data-tab-content="usenet">
|
||||
<div class="space-y-6">
|
||||
<h2 class="text-2xl font-bold flex items-center mb-6">
|
||||
<i class="bi bi-globe mr-3 text-info"></i>Usenet Settings
|
||||
</h2>
|
||||
|
||||
<!-- Global Usenet Settings -->
|
||||
<div class="card bg-base-100 border border-base-300 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title text-lg mb-4">
|
||||
<i class="bi bi-folder mr-2 text-info"></i>
|
||||
Main Settings
|
||||
</h3>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
||||
<div class="form-control">
|
||||
<label class="label" for="usenet.mount_folder">
|
||||
<span class="label-text font-medium">Mount Folder</span>
|
||||
</label>
|
||||
<input type="text" class="input input-bordered"
|
||||
name="usenet.mount_folder" id="usenet.mount_folder"
|
||||
placeholder="/mnt/usenet">
|
||||
<div class="label">
|
||||
<span class="label-text-alt">Path where usenet downloads are mounted</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
||||
<div class="form-control">
|
||||
<label class="label" for="usenet.chunks">
|
||||
<span class="label-text font-medium">Download Chunks</span>
|
||||
</label>
|
||||
<input type="text" class="input input-bordered"
|
||||
name="usenet.chunks" id="usenet.chunks"
|
||||
placeholder="30">
|
||||
<div class="label">
|
||||
<span class="label-text-alt">Number of chunks to pre-cache(default 5)</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<label class="label cursor-pointer justify-start gap-3">
|
||||
<input type="checkbox" class="checkbox" name="usenet.skip_pre_cache" id="usenet.skip_pre_cache">
|
||||
<div>
|
||||
<span class="label-text font-medium">Skip Pre-Cache</span>
|
||||
<div class="label-text-alt">Disabling this speeds up import</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4">
|
||||
<div class="form-control">
|
||||
<label class="label" for="usenet.rc_url">
|
||||
<span class="label-text font-medium">Rclone RC URL</span>
|
||||
</label>
|
||||
<input type="text" class="input input-bordered"
|
||||
name="usenet.rc_url" id="usenet.rc_url"
|
||||
placeholder="http://rclone-usenet:9990">
|
||||
<div class="label">
|
||||
<span class="label-text-alt">Rclone RC URL</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<label class="label" for="usenet.rc_user">
|
||||
<span class="label-text font-medium">Rclone RC Username</span>
|
||||
</label>
|
||||
<input type="text" class="input input-bordered"
|
||||
name="usenet.rc_user" id="usenet.rc_user"
|
||||
placeholder="rcuser">
|
||||
<div class="label">
|
||||
<span class="label-text-alt">Rclone RC Username</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<label class="label" for="usenet.rc_pass">
|
||||
<span class="label-text font-medium">Rclone RC Password</span>
|
||||
</label>
|
||||
<div class="password-toggle-container">
|
||||
<input autocomplete="off" type="password" class="input input-bordered webdav-field input-has-toggle"
|
||||
name="usenet.rc_pass" id="usenet.rc_pass">
|
||||
<button type="button" class="password-toggle-btn">
|
||||
<i class="bi bi-eye" id="usenet.rc_pass_icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Usenet Servers Section -->
|
||||
<div class="flex justify-between items-center">
|
||||
<h3 class="text-xl font-bold flex items-center">
|
||||
<i class="bi bi-server mr-2 text-info"></i>Usenet Servers
|
||||
</h3>
|
||||
<button type="button" id="addUsenetBtn" class="btn btn-info">
|
||||
<i class="bi bi-plus mr-2"></i>Add Usenet Server
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="usenetConfigs" class="space-y-4">
|
||||
<!-- Dynamic usenet configurations will be added here -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- SABnzbd Tab Content -->
|
||||
<div class="tab-content hidden" data-tab-content="sabnzbd">
|
||||
<div class="space-y-6">
|
||||
<h2 class="text-2xl font-bold flex items-center mb-6">
|
||||
<i class="bi bi-download mr-3 text-accent"></i>SABnzbd Settings
|
||||
</h2>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
||||
<div class="form-control">
|
||||
<label class="label" for="sabnzbd.download_folder">
|
||||
<span class="label-text font-medium">Download Folder</span>
|
||||
</label>
|
||||
<input type="text" class="input input-bordered" name="sabnzbd.download_folder" id="sabnzbd.download_folder" placeholder="/downloads/sabnzbd">
|
||||
<div class="label">
|
||||
<span class="label-text-alt">Folder where SABnzbd downloads files</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<label class="label" for="sabnzbd.refresh_interval">
|
||||
<span class="label-text font-medium">Refresh Interval (seconds)</span>
|
||||
</label>
|
||||
<input type="number" class="input input-bordered" name="sabnzbd.refresh_interval" id="sabnzbd.refresh_interval" min="1" max="3600">
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<label class="label" for="sabnzbd.categories">
|
||||
<span class="label-text font-medium">Default Categories</span>
|
||||
</label>
|
||||
<input type="text" class="input input-bordered" name="sabnzbd.categories" id="sabnzbd.categories">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- End tab-content-container -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,8 +4,20 @@
|
||||
<div class="card bg-base-100 shadow-xl">
|
||||
<div class="card-body">
|
||||
<form id="downloadForm" enctype="multipart/form-data" class="space-y-3">
|
||||
<!-- Mode Selection -->
|
||||
<div class="flex justify-center mb-4">
|
||||
<div class="join">
|
||||
<button type="button" class="btn btn-primary join-item" id="torrentMode" data-mode="torrent">
|
||||
<i class="bi bi-magnet mr-2"></i>Torrents
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline join-item" id="nzbMode" data-mode="nzb">
|
||||
<i class="bi bi-file-zip mr-2"></i>NZBs
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Torrent Input Section -->
|
||||
<div class="space-y-2">
|
||||
<div class="space-y-2" id="torrentInputs">
|
||||
<div class="form-control">
|
||||
<label class="label" for="magnetURI">
|
||||
<span class="label-text font-semibold">
|
||||
@@ -42,6 +54,44 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- NZB Input Section -->
|
||||
<div class="space-y-2 hidden" id="nzbInputs">
|
||||
<div class="form-control">
|
||||
<label class="label" for="nzbURLs">
|
||||
<span class="label-text font-semibold">
|
||||
<i class="bi bi-link-45deg mr-2 text-primary"></i>NZB URLs
|
||||
</span>
|
||||
<span class="label-text-alt">Paste NZB download URLs</span>
|
||||
</label>
|
||||
<textarea class="textarea textarea-bordered h-32 font-mono text-sm"
|
||||
id="nzbURLs"
|
||||
name="nzbUrls"
|
||||
placeholder="Paste your NZB URLs here, one per line..."></textarea>
|
||||
</div>
|
||||
|
||||
<div class="divider">OR</div>
|
||||
|
||||
<div class="form-control">
|
||||
<label class="label">
|
||||
<span class="label-text font-semibold">
|
||||
<i class="bi bi-file-earmark-arrow-up mr-2 text-secondary"></i>Upload NZB Files
|
||||
</span>
|
||||
<span class="label-text-alt">Select .nzb files</span>
|
||||
</label>
|
||||
<input type="file"
|
||||
class="file-input file-input-bordered w-full"
|
||||
id="nzbFiles"
|
||||
name="nzbs"
|
||||
multiple
|
||||
accept=".nzb">
|
||||
<div class="label">
|
||||
<span class="label-text-alt">
|
||||
<i class="bi bi-info-circle mr-1"></i>You can select multiple files at once
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- Configuration Section -->
|
||||
@@ -75,7 +125,7 @@
|
||||
name="downloadFolder"
|
||||
placeholder="/downloads/torrents">
|
||||
<div class="label">
|
||||
<span class="label-text-alt">Leave empty to use default qBittorrent folder</span>
|
||||
<span class="label-text-alt" id="downloadFolderHint">Leave empty to use default qBittorrent folder</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -131,7 +181,7 @@
|
||||
<!-- Submit Button -->
|
||||
<div class="form-control">
|
||||
<button type="submit" class="btn btn-primary btn-lg" id="submitDownload">
|
||||
<i class="bi bi-cloud-upload mr-2"></i>Add to Download Queue
|
||||
<i class="bi bi-cloud-upload mr-2"></i><span id="submitButtonText">Add to Download Queue</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -4,6 +4,18 @@
|
||||
<!-- Controls Section -->
|
||||
<div class="card bg-base-100 shadow-xl">
|
||||
<div class="card-body">
|
||||
<!-- Dashboard Mode Toggle -->
|
||||
<div class="flex justify-center mb-4">
|
||||
<div class="join">
|
||||
<button class="btn btn-primary join-item" id="torrentsMode" data-mode="torrents">
|
||||
<i class="bi bi-magnet mr-2"></i>Torrents
|
||||
</button>
|
||||
<button class="btn btn-outline join-item" id="nzbsMode" data-mode="nzbs">
|
||||
<i class="bi bi-file-zip mr-2"></i>NZBs
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col lg:flex-row justify-between items-start lg:items-center gap-4">
|
||||
<!-- Batch Actions -->
|
||||
<div class="flex items-center gap-2">
|
||||
@@ -47,12 +59,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Torrents Table -->
|
||||
<!-- Data Table -->
|
||||
<div class="card bg-base-100 shadow-xl">
|
||||
<div class="card-body p-0">
|
||||
<div class="overflow-x-auto">
|
||||
<table class="table table-hover">
|
||||
<thead class="bg-base-200">
|
||||
<!-- Torrents Headers -->
|
||||
<thead class="bg-base-200" id="torrentsHeaders">
|
||||
<tr>
|
||||
<th class="w-12">
|
||||
<label class="cursor-pointer">
|
||||
@@ -86,7 +99,41 @@
|
||||
<th class="font-semibold w-32">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="torrentsList">
|
||||
|
||||
<!-- NZBs Headers -->
|
||||
<thead class="bg-base-200 hidden" id="nzbsHeaders">
|
||||
<tr>
|
||||
<th class="w-12">
|
||||
<label class="cursor-pointer">
|
||||
<input type="checkbox" class="checkbox checkbox-sm" id="selectAllNzb">
|
||||
</label>
|
||||
</th>
|
||||
<th class="font-semibold">
|
||||
<i class="bi bi-file-zip mr-2"></i>Name
|
||||
</th>
|
||||
<th class="font-semibold">
|
||||
<i class="bi bi-hdd mr-2"></i>Size
|
||||
</th>
|
||||
<th class="font-semibold">
|
||||
<i class="bi bi-speedometer2 mr-2"></i>Progress
|
||||
</th>
|
||||
<th class="font-semibold">
|
||||
<i class="bi bi-clock mr-2"></i>ETA
|
||||
</th>
|
||||
<th class="font-semibold">
|
||||
<i class="bi bi-tag mr-2"></i>Category
|
||||
</th>
|
||||
<th class="font-semibold">
|
||||
<i class="bi bi-activity mr-2"></i>Status
|
||||
</th>
|
||||
<th class="font-semibold">
|
||||
<i class="bi bi-calendar mr-2"></i>Age
|
||||
</th>
|
||||
<th class="font-semibold w-32">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody id="dataList">
|
||||
<!-- Dynamic content will be loaded here -->
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -95,7 +142,7 @@
|
||||
<!-- Pagination -->
|
||||
<div class="flex flex-col sm:flex-row justify-between items-center p-6 border-t border-base-200 gap-4">
|
||||
<div class="text-sm text-base-content/70">
|
||||
<span id="paginationInfo">Loading torrents...</span>
|
||||
<span id="paginationInfo">Loading data...</span>
|
||||
</div>
|
||||
<div class="join" id="paginationControls"></div>
|
||||
</div>
|
||||
@@ -108,8 +155,8 @@
|
||||
<div class="text-6xl text-base-content/30 mb-4">
|
||||
<i class="bi bi-inbox"></i>
|
||||
</div>
|
||||
<h3 class="text-2xl font-bold mb-2">No Torrents Found</h3>
|
||||
<p class="text-base-content/70 mb-6">You haven't added any torrents yet. Start by adding your first download!</p>
|
||||
<h3 class="text-2xl font-bold mb-2" id="emptyStateTitle">No Data Found</h3>
|
||||
<p class="text-base-content/70 mb-6" id="emptyStateMessage">No downloads found.</p>
|
||||
<a href="{{.URLBase}}download" class="btn btn-primary">
|
||||
<i class="bi bi-plus-circle mr-2"></i>Add New Download
|
||||
</a>
|
||||
@@ -117,7 +164,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Context Menu -->
|
||||
<!-- Torrent Context Menu -->
|
||||
<ul class="menu bg-base-100 shadow-lg rounded-box context-menu hidden fixed z-50" id="torrentContextMenu">
|
||||
<li class="menu-title">
|
||||
<span class="torrent-name text-sm font-bold truncate max-w-48"></span>
|
||||
@@ -135,9 +182,33 @@
|
||||
</a></li>
|
||||
</ul>
|
||||
|
||||
<!-- NZB Context Menu -->
|
||||
<ul class="menu bg-base-100 shadow-lg rounded-box context-menu hidden fixed z-50" id="nzbContextMenu">
|
||||
<li class="menu-title">
|
||||
<span class="nzb-name text-sm font-bold truncate max-w-48"></span>
|
||||
</li>
|
||||
<hr/>
|
||||
<li><a class="menu-item text-sm" data-action="pause">
|
||||
<i class="bi bi-pause text-warning"></i>Pause Download
|
||||
</a></li>
|
||||
<li><a class="menu-item text-sm" data-action="resume">
|
||||
<i class="bi bi-play text-success"></i>Resume Download
|
||||
</a></li>
|
||||
<li><a class="menu-item text-sm" data-action="retry">
|
||||
<i class="bi bi-arrow-clockwise text-info"></i>Retry Download
|
||||
</a></li>
|
||||
<li><a class="menu-item text-sm" data-action="copy-name">
|
||||
<i class="bi bi-clipboard text-info"></i>Copy Name
|
||||
</a></li>
|
||||
<hr/>
|
||||
<li><a class="menu-item text-sm text-error" data-action="delete">
|
||||
<i class="bi bi-trash"></i>Delete NZB
|
||||
</a></li>
|
||||
</ul>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
window.dashboard = new TorrentDashboard();
|
||||
window.dashboard = new Dashboard();
|
||||
});
|
||||
</script>
|
||||
{{ end }}
|
||||
Reference in New Issue
Block a user