feat: Add series TV support with Vidzy HLS downloads and duplicate prevention

Major improvements:
- Series TV support via FS7 provider with dedicated search endpoint
- Vidzy downloader now uses Playwright for JS obfuscation and ffmpeg for HLS streams
- Episode filenames properly named (Series Title - Episode X) instead of master.m3u8.mp4
- Duplicate download prevention: checks existing tasks before creating new ones
- Removed host preference system in favor of intelligent URL-based detection

Technical changes:
- Vidzy: Added Playwright extraction and M3U8→MP4 conversion with ffmpeg
- FS7: Episodes now use pipe format (video_url|series_url|episode_title)
- DownloadManager: Extract target_filename from pipe URL and prevent duplicates
- UI: New Series tab with search, recommendations, and releases sections
- Anime-Sama: Removed hardcoded host preferences, uses site's URL order

Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
root
2026-01-25 20:42:29 +00:00
parent 5e50081b58
commit c1c31d7685
17 changed files with 938 additions and 219 deletions
+6 -6
View File
@@ -253,20 +253,20 @@ function getRatingColor(score) {
return 'linear-gradient(45deg, #666, #888)';
}
// Search anime on providers (redirects to search tab)
// Search anime on providers (redirects to anime tab)
function searchAnimeOnProviders(title) {
// Switch to search tab
switchTab('search');
// Switch to anime tab
switchTab('anime');
// Fill search input
const searchInput = document.getElementById('searchInput');
const searchInput = document.getElementById('animeSearchInput');
if (searchInput) {
searchInput.value = title;
// Trigger search
setTimeout(() => {
if (typeof searchAnime === 'function') {
searchAnime();
if (typeof handleAnimeSearch === 'function') {
handleAnimeSearch();
}
}, 300);
}