Releases: jsight/ytsync
Releases · jsight/ytsync
Release list
v1.4.0
v1.3.0 - Comprehensive yt-dlp Option Support
What's New in v1.3.0
This release dramatically expands the public DownloadOptions API to expose the full breadth of yt-dlp's capabilities through a clean, typed Go interface.
Added
- Cookie and authentication support -
CookiesFile,CookiesFromBrowser,Username/Password,Netrc,VideoPassword - Network configuration -
Proxy,RateLimit,SourceAddress,ForceIPv4,SocketTimeout,ConcurrentFragments,Impersonate - Format discovery API -
ListFormats()andListSubtitles()convenience wrappers withFormatInfo/SubtitleInfotypes - Subtitle support -
WriteSubtitles,WriteAutoSubtitles,SubtitleLanguages,SubtitleFormat,ConvertSubtitles,EmbedSubtitles - Download behavior controls -
Retries,FragmentRetries,NoOverwrites,Continue,RestrictFilenames,DownloadArchive,BreakOnExisting,MaxDownloads,ExtraArgs - Metadata embedding -
WriteThumbnail,EmbedMetadata,EmbedThumbnail,EmbedChapters,WriteInfoJSON,ConvertThumbnails - Post-processing -
RemuxVideo,RecodeVideo,SponsorBlockMark,SponsorBlockRemove,FFmpegLocation,DownloadSections - Content filtering -
MatchFilters,DateAfter,DateBefore,AgeLimit,XForwardedFor,PlaylistItems - Format selection -
FormatSort,MergeOutputFormat - Enhanced CLI - 16+ new download flags for cookies, metadata, subtitles, SponsorBlock, proxy, and more
- Cookie-aware metadata/transcript APIs -
MetadataOptions,FetchMetadataWithOptions()
Full Changelog
See CHANGELOG.md for the complete list of changes.
v1.2.0
Added
Custom filename support in DownloadOptions
Implements feature request #4
- New Filename field - Optional custom output filename (without extension)
- Resolves filename conflicts - Avoids collisions from reused video titles
- Precedence over title - Custom filename takes priority when provided
- Automatic sanitization - Invalid characters removed from filenames
- Use case: ragpile - Allows unique naming using video IDs (e.g., 'dQw4w9WgXcQ')
Usage Example
// Download with custom filename using video ID
result, err := ytsync.DownloadVideoWithOptions(ctx, "dQw4w9WgXcQ", &ytsync.DownloadOptions{
OutputDir: "/tmp/downloads",
Filename: "dQw4w9WgXcQ", // Use video ID for unique naming
})Testing
- Added 7 comprehensive unit tests
- Coverage for custom filenames with special characters
- Tests for video ID usage and edge cases
- All existing tests pass
Binaries
Pre-built binaries available for:
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64)
SHA256 checksums in SHA256SUMS file.
v1.1.2
Add metadata command to ytsync CLI - Add new 'metadata' command for fetching video metadata without transcripts - Support table (default) and JSON output formats - Display comprehensive metadata: title, uploader, duration, view count, etc. - More reliable than transcript extraction which can hit API limits Closes: ytsync-tt4
v1.1.1
Fixed
VideoInfo.Published date parsing - Upload date parsing verification
Fixes #3
- Added comprehensive test coverage for YYYYMMDD format parsing from yt-dlp output
- Verified correct handling of edge cases:
- Old video dates (1980s-2000s)
- Invalid date strings
- Multiple fallback date sources (release_date, published_date)
- Timestamp fallbacks (ReleaseTimestamp, CreatedAt)
- Enhanced unit tests with 11 new test cases
- Existing parsing logic verified to be working correctly for all date sources
Binaries
This release includes pre-built binaries for:
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64)
SHA256 checksums are available in SHA256SUMS file.
v1.1.0
Release v1.1.0 - Public DownloadVideo API Features: - New DownloadVideo() and DownloadVideoWithOptions() public API functions - Support for audio-only extraction (MP3) with configurable quality - Optional metadata JSON file alongside downloaded media - Custom output directory and format selection - Context support for cancellation and timeouts Changes: - Improved video format selection with fallback chain Closes #2
v1.0.1
ytsync v1.0.1 - Windows Build Fix Fixes the Windows build that failed in v1.0.0. - Cross-platform file locking: split into Unix (flock) and Windows (LockFileEx) implementations - Added golang.org/x/sys/windows dependency for Windows file locking - Uses build tags to select platform-specific implementation Full release notes in v1.0.0.
v1.0.0-alpha1
ytsync 1.0.0-alpha1
Features
- Public Library API: Use ytsync as a Go library with high-level convenience functions
- YouTube Integration: List videos from channels using RSS feeds or yt-dlp
- Transcript Extraction: Extract transcripts with language preference support
- Metadata Fetching: Retrieve comprehensive video metadata including duration, view count, and more
- Robust Error Handling: Custom error types for programmatic error handling
- Retry Logic: Exponential backoff with jitter for resilient operations
- CLI Tool: Standalone command-line tool for all major operations
- Cross-Platform: Binaries for Linux, macOS, and Windows (both amd64 and arm64)
What's Included
ytsyncpackage for programmatic useytsync listcommand to discover videosytsync transcriptcommand to extract captionsytsync downloadcommand to get videos with metadata
Documentation
- Comprehensive godoc comments on all public APIs
- Example code for common operations
- doc.go with detailed package documentation
Requirements
- Go 1.24+ for library usage
- yt-dlp installed and available in PATH
CI/CD
- Automated testing on Go 1.23 and 1.24
- Linting and code quality checks
- Automated multi-platform builds
- GitHub Actions workflows for test, lint, build, and release
Known Limitations
- Requires yt-dlp for most operations
- YouTube may rate-limit heavy usage (retry logic helps)
- Respects YouTube Terms of Service (no private/unlisted content access)
Next Steps
- Integration tests for video list fetching
- Optional YouTube Data API v3 support
- Pagination state persistence for incremental syncs
- Rate limiting improvements for Innertube API