67 lines
1.9 KiB
Plaintext
67 lines
1.9 KiB
Plaintext
package views
|
|
|
|
import "go.fifitido.net/ytdl-web/pkg/components"
|
|
|
|
type Error struct {
|
|
Message string
|
|
RetryUrl *string
|
|
}
|
|
|
|
templ Home(err *Error) {
|
|
@Layout() {
|
|
<h1 class="text-center">YTDL Web</h1>
|
|
<p class="text-center mb-5">
|
|
Download videos from over a thousand websites with the help of
|
|
<a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a>, a fork of youtube-dl
|
|
with more features and fixes.
|
|
<br/>
|
|
View a complete list of supported websites
|
|
<a href="https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md">here</a>.
|
|
</p>
|
|
<form hx-get={ pathTo(ctx, "/download") } hx-trigger="submit">
|
|
<div class="mb-3">
|
|
<label for="url" class="form-label visually-hidden">Url</label>
|
|
<div class="input-group">
|
|
<input
|
|
type="url"
|
|
name="url"
|
|
id="url"
|
|
class="form-control"
|
|
required
|
|
placeholder="Enter url here then click download"
|
|
/>
|
|
@components.PasteButton()
|
|
</div>
|
|
</div>
|
|
<div class="d-grid">
|
|
<button type="submit" class="btn btn-primary">
|
|
Download
|
|
<div class="spinner-border spinner-border-sm htmx-indicator ms-1" role="status">
|
|
<span class="visually-hidden">Loading...</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
if err != nil {
|
|
<div class="alert alert-danger mt-4" role="alert">
|
|
<span>{ err.Message }</span>
|
|
if err.RetryUrl != nil {
|
|
<button
|
|
class="btn btn-link btn-sm pt-0 lh-base text-decoration-none"
|
|
hx-get={ pathTo(ctx, "/download") }
|
|
hx-trigger="click"
|
|
hx-target="#main-content"
|
|
hx-swap="innerHTML"
|
|
hx-vals={ templ.JSONString(map[string]any{"url": *err.RetryUrl}) }
|
|
>
|
|
<span class="text-decoration-underline">Try Again</span>
|
|
<div class="spinner-border spinner-border-sm htmx-indicator ms-1" role="status">
|
|
<span class="visually-hidden">Loading...</span>
|
|
</div>
|
|
</button>
|
|
}
|
|
</div>
|
|
}
|
|
}
|
|
}
|