- New light UI: fixed 220px sidebar, single scrolling page, 8 named sections - Static files split by concern: style.css, app.js, loader.js, nav.js - Each page section is its own partial in static/sections/s-*.html - loader.js fetches all section partials in parallel, then loads app.js and nav.js - All original functionality, element IDs, and API endpoints preserved Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
2.3 KiB
HTML
37 lines
2.3 KiB
HTML
<div class="section-head">
|
|
<span class="section-icon">🌐</span>
|
|
<div class="section-title">
|
|
<h2>Get Voices Online</h2>
|
|
<p>Browse public voice clip sources, preview direct audio files, and import voices from the web.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-content" id="tab-getvoices">
|
|
<div class="card">
|
|
<h2>Get voices</h2>
|
|
<div class="getvoices-source-editor">
|
|
<textarea id="getvoices-sources" spellcheck="false" aria-label="Voice source URLs"></textarea>
|
|
<div class="getvoices-source-buttons">
|
|
<button class="btn-primary" id="getvoices-refresh-btn">Scrape sources</button>
|
|
<button class="btn-secondary" id="getvoices-reset-sources-btn">Reset list</button>
|
|
<span id="getvoices-status" class="note">Not scraped yet.</span>
|
|
</div>
|
|
</div>
|
|
<div class="getvoices-toolbar">
|
|
<input type="search" id="getvoices-search" placeholder="Search voices, languages, datasets..." autocomplete="off">
|
|
<select id="getvoices-source-filter"><option value="all">Source: all</option></select>
|
|
<select id="getvoices-language-filter"><option value="all">Language: all</option></select>
|
|
<select id="getvoices-gender-filter"><option value="all">Sex: all</option></select>
|
|
<select id="getvoices-filetype-filter"><option value="all">Filetype: all</option></select>
|
|
<label style="font-size:14px;color:var(--subtext);display:flex;align-items:center;gap:7px;cursor:pointer;white-space:nowrap">
|
|
<input type="checkbox" id="getvoices-direct-only"> Direct audio only
|
|
</label>
|
|
</div>
|
|
<p class="note">Edit the source list one URL per line. External sources may block scraping; source errors are shown without hiding successful results. Check each source page for license, consent, and usage rights before importing or publishing a voice.</p>
|
|
</div>
|
|
<div class="getvoices-summary" id="getvoices-summary"></div>
|
|
<div class="getvoices-grid" id="getvoices-list">
|
|
<div class="card"><p class="note">Click <strong>Scrape sources</strong> to fetch Aiartes VoiceAI clips, yaph/tts-samples MP3 files, and the jim-schwoebel voice dataset index.</p></div>
|
|
</div>
|
|
</div><!-- /tab-getvoices -->
|