$ show Piotrekol/CollectionManager
CollectionManager is a desktop application for managing osu! rhythm game beatmap collections. It provides both a Windows Forms GUI and a command-line interface for creating, editing, merging, and exporting collections of beatmaps. The application supports both stable (.db) and lazer (.realm) osu! collection formats, integrates with the osu! API for downloading beatmaps and user scores, includes audio playback functionality with tempo/pitch adjustment, and offers various export formats for collections. The architecture follows a layered design with clear separation between presentation, application logic, core domain, and extension modules.
The LLM identified 5 files worth highlighting for reuse:
Implements an efficient beatmap caching system using hash and map ID dictionaries for rapid lookups. Demonstrates skilled optimization for frequent data access patterns in collection management operations. The component is self-contained with minimal dependencies and could be extracted for use in any application requiring high-performance object caching by identifier.
Provides robust rate limiting for API calls with configurable limits (specifically implemented for osu!'s 170/hour, 3/minute constraints). Encapsulates token bucket or similar algorithm in an isolated, reusable manner. This component solves a common problem in API-driven applications and could be easily adapted for other services with different rate limiting requirements.
Collection of format-specific list generators (TxtListGenerator, HtmlListGenerator, etc.) that all implement the IListGenerator interface. Each generator is self-contained and handles the specifics of its output format while delegating common logic to base classes. This demonstrates excellent application of the strategy pattern for report generation and could be reused for creating lists in various formats across different domains.
Set of strategy classes (AddStrategy, MergeStrategy, IntersectStrategy, etc.) that encapsulate specific collection modification operations. Each strategy implements ICollectionEditStrategy and operates on collection data in isolation. This collection of strategies exemplifies clean separation of concerns and could be directly reused in any collection management system needing similar operations.
Wrapper for the osu! API that handles authentication, rate limiting, and request/response processing. Encapsulates all osu! API-specific logic in a single, well-structured class. Demonstrates skill in adapting to a specific API's quirks and requirements while maintaining a clean interface that could be patterned for other REST API integrations.