├── .github ├── AppStore │ ├── Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg │ └── Download_on_the_Mac_App_Store_Badge_US-UK_RGB_blk_092917.svg ├── FUNDING.yml └── Screenshots │ ├── AlbumDetail.jpg │ ├── Library.jpg │ ├── Player.jpg │ └── macOS-Playlist.png ├── .gitignore ├── .gitmodules ├── .swiftformat ├── Amperfy.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ ├── WorkspaceSettings.xcsettings │ │ └── swiftpm │ │ └── Package.resolved └── xcshareddata │ └── xcschemes │ ├── Amperfy.xcscheme │ ├── AmperfyIntents.xcscheme │ └── DebugCoreData.xcscheme ├── Amperfy ├── Amperfy.entitlements ├── AppDelegate.swift ├── AppDelegateAlertExtensions.swift ├── AppDelegateAppKitExtension.swift ├── AppDelegateKeyboardCommands.swift ├── AppDelegateNotificationExtensions.swift ├── AppIntentVocabulary.plist ├── CarPlay │ ├── CarPlayFetchControllerExtension.swift │ └── CarPlayNowPlayingExtension.swift ├── CarPlaySceneDelegate.swift ├── Haptics.swift ├── Info.plist ├── Intents │ ├── AmperfyIntentHandler.swift │ ├── IntentManager.swift │ ├── Intents.intentdefinition │ └── NSUserActivity+IntentData.swift ├── LibraryDisplayType+Extension.swift ├── MiniPlayerSceneDelegate.swift ├── SceneDelegate.swift ├── Screens │ ├── AppStoryboard.swift │ ├── Base.lproj │ │ └── Main.storyboard │ ├── Basics │ │ ├── AnimatedGradientLayer.swift │ │ ├── BasicButton.swift │ │ ├── BasicCollectionCell.swift │ │ ├── BasicTableCell.swift │ │ ├── Corners.swift │ │ ├── Mac - Toolbar │ │ │ ├── AirplayBarButton.swift │ │ │ ├── ControlBarButton.swift │ │ │ ├── CustomBarButton.swift │ │ │ ├── NowPlayingBarItem.swift │ │ │ ├── QueueBarButton.swift │ │ │ ├── Refreshable.swift │ │ │ ├── SpaceBarItem.swift │ │ │ └── VolumeBarItem.swift │ │ ├── NotificationBannerCustomization.swift │ │ ├── OptionsButton.swift │ │ ├── PlayIndicator.swift │ │ ├── PlaytimeSlider.swift │ │ ├── SelectionAccessory.swift │ │ ├── SpinnerViewController.swift │ │ └── ViewCreator.swift │ ├── LaunchScreen.storyboard │ ├── Player │ │ ├── BarPlayerHandler.swift │ │ ├── LargeCurrentlyPlayingPlayerView.swift │ │ ├── LargeCurrentlyPlayingPlayerView.xib │ │ ├── PlayerControlView.swift │ │ ├── PlayerControlView.xib │ │ ├── PopupPlayer+Animations.swift │ │ ├── PopupPlayer+TableViewExtension.swift │ │ ├── PopupPlayer+Visuals.swift │ │ ├── PopupPlayerVC.swift │ │ ├── PopupPlayerVC.xib │ │ └── SectionHeader │ │ │ ├── ContextQueueNextSectionHeader.swift │ │ │ ├── ContextQueueNextSectionHeader.xib │ │ │ ├── ContextQueuePrevSectionHeader.swift │ │ │ ├── ContextQueuePrevSectionHeader.xib │ │ │ ├── CurrentlyPlayingTableCell.swift │ │ │ ├── CurrentlyPlayingTableCell.xib │ │ │ ├── UserQueueSectionHeader.swift │ │ │ └── UserQueueSectionHeader.xib │ ├── View │ │ ├── AlbumDetailHeaderView.swift │ │ ├── Collection │ │ │ ├── AlbumCollectionCell.swift │ │ │ ├── AlbumCollectionCell.xib │ │ │ ├── CommonCollectionSectionHeader.swift │ │ │ └── CommonCollectionSectionHeader.xib │ │ ├── DirectoryTableCell.swift │ │ ├── DirectoryTableCell.xib │ │ ├── GenericDetailTableHeader.swift │ │ ├── GenericDetailTableHeader.xib │ │ ├── GenericTableCell.swift │ │ ├── GenericTableCell.xib │ │ ├── LibraryElementDetailTableHeaderView.swift │ │ ├── LibraryElementDetailTableHeaderView.xib │ │ ├── Lyrics │ │ │ ├── LyricTableCell.swift │ │ │ └── LyricsView.swift │ │ ├── NewPlaylistTableHeader.swift │ │ ├── NewPlaylistTableHeader.xib │ │ ├── PlayableTableCell.swift │ │ ├── PlayableTableCell.xib │ │ ├── PlaylistTableCell.swift │ │ ├── PlaylistTableCell.xib │ │ ├── PodcastEpisodeTableCell.swift │ │ └── PodcastEpisodeTableCell.xib │ └── ViewController │ │ ├── AlbumDetailVC.swift │ │ ├── AlbumsCollectionVC.swift │ │ ├── AlbumsCommonVCInteractions.swift │ │ ├── AlbumsVC.swift │ │ ├── ArtistDetailVC.swift │ │ ├── ArtistsVC.swift │ │ ├── CommonScreenOperations.swift │ │ ├── DirectoriesVC.swift │ │ ├── DownloadsVC.swift │ │ ├── EntityPreviewVC.swift │ │ ├── EntityPreviewVC.xib │ │ ├── GenreDetailVC.swift │ │ ├── GenresVC.swift │ │ ├── IndexesVC.swift │ │ ├── LibraryNavigatorConfigurator.swift │ │ ├── LibrarySyncPopupVC.swift │ │ ├── LibraryVC.swift │ │ ├── LoginVC.swift │ │ ├── Mac - Navigation │ │ ├── InnerNavigationController.swift │ │ └── SliderOverMenu │ │ │ ├── LyricsVC.swift │ │ │ ├── QueueVC.swift │ │ │ ├── SlideOverHostingController.swift │ │ │ └── SlideOverVC.swift │ │ ├── MusicFoldersVC.swift │ │ ├── NotificationDetailVC.swift │ │ ├── NotificationDetailVC.xib │ │ ├── PlainDetailsVC.swift │ │ ├── PlainDetailsVC.xib │ │ ├── PlaylistAdd │ │ ├── PlaylistAddAlbumDetailVC.swift │ │ ├── PlaylistAddAlbumsVC.swift │ │ ├── PlaylistAddArtistDetailVC.swift │ │ ├── PlaylistAddArtistsVC.swift │ │ ├── PlaylistAddDirectoriesVC.swift │ │ ├── PlaylistAddGenreDetailVC.swift │ │ ├── PlaylistAddGenresVC.swift │ │ ├── PlaylistAddIndexesVC.swift │ │ ├── PlaylistAddLibraryVC.swift │ │ ├── PlaylistAddMusicFoldersVC.swift │ │ ├── PlaylistAddPlaylistDetailVC.swift │ │ ├── PlaylistAddPlaylistsVC.swift │ │ └── PlaylistAddSongsVC.swift │ │ ├── PlaylistDetailVC.swift │ │ ├── PlaylistEditVC.swift │ │ ├── PlaylistSelectorVC.swift │ │ ├── PlaylistsVC.swift │ │ ├── PodcastDetailVC.swift │ │ ├── PodcastsVC.swift │ │ ├── RadiosVC.swift │ │ ├── SearchVC.swift │ │ ├── Segues.swift │ │ ├── SettingsHostVC.swift │ │ ├── SideBarVC.swift │ │ ├── SongsVC.swift │ │ ├── SplitVC.swift │ │ ├── SyncVC.swift │ │ ├── TabBarVC.swift │ │ ├── TableViewHelper │ │ ├── BasicCollectionViewController.swift │ │ ├── BasicFetchedResultsTableViewController.swift │ │ ├── BasicTableViewController.swift │ │ ├── FetchUpdateHandler.swift │ │ ├── KeyCommandCollectionViewController.swift │ │ ├── KeyCommandTableViewController.swift │ │ ├── MultiSourceTableViewController.swift │ │ ├── SingleFetchedResultsTableViewController.swift │ │ └── SingleSnapshotFetchedResultsTableViewController.swift │ │ └── UpdateVC.swift ├── SettingsSceneDelegate.swift ├── SwiftUI │ ├── Basics │ │ ├── BehavioralStylable.swift │ │ ├── ButtonStyles.swift │ │ ├── FormSheet.swift │ │ ├── InfoBannerView.swift │ │ ├── MailView.swift │ │ ├── MultiPickerView.swift │ │ ├── SecondaryText.swift │ │ ├── SettingsList.swift │ │ ├── SettingsRow.swift │ │ └── SettingsSection.swift │ └── Settings │ │ ├── Artwork │ │ ├── ArtworkDisplaySettings.swift │ │ ├── ArtworkDownloadSettingsView.swift │ │ └── ArtworkSettingsView.swift │ │ ├── DeveloperView.swift │ │ ├── DisplaySettingsView.swift │ │ ├── LibrarySettingsView.swift │ │ ├── LicenseSettingsView.swift │ │ ├── NavigationTarget.swift │ │ ├── ObservableSettings.swift │ │ ├── PlayerSettingsView.swift │ │ ├── Server │ │ ├── AlternativeURLAddDialogView.swift │ │ ├── ServerSettingsView.swift │ │ ├── ServerURLsSettingsView.swift │ │ └── UpdatePasswordView.swift │ │ ├── SettingsView.swift │ │ ├── Support │ │ ├── EventLogCellView.swift │ │ ├── EventLogSettingsView.swift │ │ └── SupportSettingsView.swift │ │ ├── Swipe │ │ ├── AddSwipeActionView.swift │ │ ├── SwipeCellView.swift │ │ └── SwipeSettingsView.swift │ │ └── XCallbackURLsSetttingsView.swift └── UtilitiesExtensions.swift ├── AmperfyKit ├── AmperfyKit.docc │ └── AmpertyKit.md ├── AmperfyKit.h ├── AmperfyKit.swift ├── Api │ ├── Ampache │ │ ├── AlbumParserDelegate.swift │ │ ├── AmpacheApi.swift │ │ ├── AmpacheArtworkDownloadDelegate.swift │ │ ├── AmpacheLibrarySyncer.swift │ │ ├── AmpacheXmlParser.swift │ │ ├── AmpacheXmlServerApi.swift │ │ ├── ArtistParserDelegate.swift │ │ ├── AuthParserDelegate.swift │ │ ├── AuthentificationHandshake.swift │ │ ├── CatalogParserDelegate.swift │ │ ├── GenreParserDelegate.swift │ │ ├── IDsParserDelegate.swift │ │ ├── PlayableParserDelegate.swift │ │ ├── PlaylistParserDelegate.swift │ │ ├── PlaylistSongsParserDelegate.swift │ │ ├── PodcastEpisodeParserDelegate.swift │ │ ├── PodcastParserDelegate.swift │ │ ├── RadioParserDelegate.swift │ │ └── SongParserDelegate.swift │ ├── AutoDownloadLibrarySyncer.swift │ ├── BackendApi.swift │ ├── BackendProxy.swift │ ├── BackgroundFetchTriggeredSyncer.swift │ ├── BackgroundLibrarySyncer.swift │ ├── CommonLibrarySyncer.swift │ ├── EventLogger.swift │ ├── GenericXmlParser.swift │ ├── LibrarySyncerProxy.swift │ ├── LoginCredentials.swift │ └── Subsonic │ │ ├── SsAlbumParserDelegate.swift │ │ ├── SsArtistParserDelegate.swift │ │ ├── SsDirectoryParserDelegate.swift │ │ ├── SsGenreParserDelegate.swift │ │ ├── SsIDsParserDelegate.swift │ │ ├── SsLyricsParserDelegate.swift │ │ ├── SsMusicFolderParserDelegate.swift │ │ ├── SsOpenSubsonicExtensionsParserDelegate.swift │ │ ├── SsPingParserDelegate.swift │ │ ├── SsPlayableParserDelegate.swift │ │ ├── SsPlaylistParserDelegate.swift │ │ ├── SsPlaylistSongsParserDelegate.swift │ │ ├── SsPodcastEpisodeParserDelegate.swift │ │ ├── SsPodcastParserDelegate.swift │ │ ├── SsRadioParserDelegate.swift │ │ ├── SsSongParserDelegate.swift │ │ ├── SsXmlParser.swift │ │ ├── SubsonicApi.swift │ │ ├── SubsonicArtworkDownloadDelegate.swift │ │ ├── SubsonicLibrarySyncer.swift │ │ ├── SubsonicServerApi.swift │ │ └── SubsonicVersion.swift ├── Assets │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-1024.png │ │ │ ├── Icon-120.png │ │ │ ├── Icon-121.png │ │ │ ├── Icon-152.png │ │ │ ├── Icon-167.png │ │ │ ├── Icon-180.png │ │ │ ├── Icon-20.png │ │ │ ├── Icon-29.png │ │ │ ├── Icon-40.png │ │ │ ├── Icon-41.png │ │ │ ├── Icon-42.png │ │ │ ├── Icon-58.png │ │ │ ├── Icon-59.png │ │ │ ├── Icon-60.png │ │ │ ├── Icon-76.png │ │ │ ├── Icon-80.png │ │ │ ├── Icon-81.png │ │ │ └── Icon-87.png │ │ ├── Blue │ │ │ ├── BlueAlbum.imageset │ │ │ │ ├── BlueAlbumDark.png │ │ │ │ ├── BlueAlbumLight.png │ │ │ │ └── Contents.json │ │ │ ├── BlueArtist.imageset │ │ │ │ ├── BlueArtistDark.png │ │ │ │ ├── BlueArtistLight.png │ │ │ │ └── Contents.json │ │ │ ├── BlueFolder.imageset │ │ │ │ ├── BlueFolderDark.png │ │ │ │ ├── BlueFolderLight.png │ │ │ │ └── Contents.json │ │ │ ├── BlueGenre.imageset │ │ │ │ ├── BlueGenreDark.png │ │ │ │ ├── BlueGenreLight.png │ │ │ │ └── Contents.json │ │ │ ├── BluePlaylist.imageset │ │ │ │ ├── BluePlaylistDark.png │ │ │ │ ├── BluePlaylistLight.png │ │ │ │ └── Contents.json │ │ │ ├── BluePodcast.imageset │ │ │ │ ├── BluePodcastDark.png │ │ │ │ ├── BluePodcastLight.png │ │ │ │ └── Contents.json │ │ │ ├── BluePodcastEpisode.imageset │ │ │ │ ├── BluePodcastEpisodeDark.png │ │ │ │ ├── BluePodcastEpisodeLight.png │ │ │ │ └── Contents.json │ │ │ ├── BlueRadio.imageset │ │ │ │ ├── BlueRadioDark.png │ │ │ │ ├── BlueRadioLight.png │ │ │ │ └── Contents.json │ │ │ ├── BlueSong.imageset │ │ │ │ ├── BlueSongDark.png │ │ │ │ ├── BlueSongLight.png │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Green │ │ │ ├── Contents.json │ │ │ ├── GreenAlbum.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenAlbumDark.png │ │ │ │ └── GreenAlbumLight.png │ │ │ ├── GreenArtist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenArtistDark.png │ │ │ │ └── GreenArtistLight.png │ │ │ ├── GreenFolder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenFolderDark.png │ │ │ │ └── GreenFolderLight.png │ │ │ ├── GreenGenre.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenGenreDark.png │ │ │ │ └── GreenGenreLight.png │ │ │ ├── GreenPlaylist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenPlaylistDark.png │ │ │ │ └── GreenPlaylistLight.png │ │ │ ├── GreenPodcast.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenPodcastDark.png │ │ │ │ └── GreenPodcastLight.png │ │ │ ├── GreenPodcastEpisode.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenPodcastEpisodeDark.png │ │ │ │ └── GreenPodcastEpisodeLight.png │ │ │ ├── GreenRadio.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenRadioDark.png │ │ │ │ └── GreenRadioLight.png │ │ │ └── GreenSong.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── GreenSongDark.png │ │ │ │ └── GreenSongLight.png │ │ ├── Icon-1024.imageset │ │ │ ├── Contents.json │ │ │ └── Icon-1024.png │ │ ├── ImageOverlayBackground.colorset │ │ │ └── Contents.json │ │ ├── Orange │ │ │ ├── Contents.json │ │ │ ├── OrangeAlbum.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangeAlbumDark.png │ │ │ │ └── OrangeAlbumLight.png │ │ │ ├── OrangeArtist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangeArtistDark.png │ │ │ │ └── OrangeArtistLight.png │ │ │ ├── OrangeFolder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangeFolderDark.png │ │ │ │ └── OrangeFolderLight.png │ │ │ ├── OrangeGenre.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangeGenreDark.png │ │ │ │ └── OrangeGenreLight.png │ │ │ ├── OrangePlaylist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangePlaylistDark.png │ │ │ │ └── OrangePlaylistLight.png │ │ │ ├── OrangePodcast.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangePodcastDark.png │ │ │ │ └── OrangePodcastLight.png │ │ │ ├── OrangePodcastEpisode.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangePodcastEpisodeDark.png │ │ │ │ └── OrangePodcastEpisodeLight.png │ │ │ ├── OrangeRadio.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangeRadioDark.png │ │ │ │ └── OrangeRadioLight.png │ │ │ └── OrangeSong.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── OrangeSongDark.png │ │ │ │ └── OrangeSongLight.png │ │ ├── Pink │ │ │ ├── Contents.json │ │ │ ├── PinkAlbum.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkAlbumDark.png │ │ │ │ └── PinkAlbumLight.png │ │ │ ├── PinkArtist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkArtistDark.png │ │ │ │ └── PinkArtistLight.png │ │ │ ├── PinkFolder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkFolderDark.png │ │ │ │ └── PinkFolderLight.png │ │ │ ├── PinkGenre.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkGenreDark.png │ │ │ │ └── PinkGenreLight.png │ │ │ ├── PinkPlaylist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkPlaylistDark.png │ │ │ │ └── PinkPlaylistLight.png │ │ │ ├── PinkPodcast.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkPodcastDark.png │ │ │ │ └── PinkPodcastLight.png │ │ │ ├── PinkPodcastEpisode.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkPodcastEpisodeDark.png │ │ │ │ └── PinkPodcastEpisodeLight.png │ │ │ ├── PinkRadio.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkRadioDark.png │ │ │ │ └── PinkRadioLight.png │ │ │ └── PinkSong.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PinkSongDark.png │ │ │ │ └── PinkSongLight.png │ │ ├── PopupRootOverlayColor.colorset │ │ │ └── Contents.json │ │ ├── Purple │ │ │ ├── Contents.json │ │ │ ├── PurpleAlbum.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurpleAlbumDark.png │ │ │ │ └── PurpleAlbumLight.png │ │ │ ├── PurpleArtist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurpleArtistDark.png │ │ │ │ └── PurpleArtistLight.png │ │ │ ├── PurpleFolder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurpleFolderDark.png │ │ │ │ └── PurpleFolderLight.png │ │ │ ├── PurpleGenre.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurpleGenreDark.png │ │ │ │ └── PurpleGenreLight.png │ │ │ ├── PurplePlaylist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurplePlaylistDark.png │ │ │ │ └── PurplePlaylistLight.png │ │ │ ├── PurplePodcast.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurplePodcastDark.png │ │ │ │ └── PurplePodcastLight.png │ │ │ ├── PurplePodcastEpisode.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurplePodcastEpisodeDark.png │ │ │ │ └── PurplePodcastEpisodeLight.png │ │ │ ├── PurpleRadio.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurpleRadioDark.png │ │ │ │ └── PurpleRadioLight.png │ │ │ └── PurpleSong.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── PurpleSongDark.png │ │ │ │ └── PurpleSongLight 1.png │ │ ├── Red │ │ │ ├── Contents.json │ │ │ ├── RedAlbum.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedAlbumDark.png │ │ │ │ └── RedAlbumLight.png │ │ │ ├── RedArtist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedArtistDark.png │ │ │ │ └── RedArtistLight.png │ │ │ ├── RedFolder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedFolderDark.png │ │ │ │ └── RedFolderLight.png │ │ │ ├── RedGenre.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedGenreDark.png │ │ │ │ └── RedGenreLight.png │ │ │ ├── RedPlaylist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedPlaylistDark.png │ │ │ │ └── RedPlaylistLight.png │ │ │ ├── RedPodcast.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedPodcastDark.png │ │ │ │ └── RedPodcastLight.png │ │ │ ├── RedPodcastEpisode.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedPodcastEpisodeDark.png │ │ │ │ └── RedPodcastEpisodeLight.png │ │ │ ├── RedRadio.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedRadioDark.png │ │ │ │ └── RedRadioLight.png │ │ │ └── RedSong.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── RedSongDark.png │ │ │ │ └── RedSongLight.png │ │ ├── Yellow │ │ │ ├── Contents.json │ │ │ ├── YellowAlbum.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowAlbumDark.png │ │ │ │ └── YellowAlbumLight.png │ │ │ ├── YellowArtist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowArtistDark.png │ │ │ │ └── YellowArtistLight.png │ │ │ ├── YellowFolder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowFolderDark.png │ │ │ │ └── YellowFolderLight.png │ │ │ ├── YellowGenre.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowGenreDark.png │ │ │ │ └── YellowGenreLight.png │ │ │ ├── YellowPlaylist.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowPlaylistDark.png │ │ │ │ └── YellowPlaylistLight.png │ │ │ ├── YellowPodcast.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowPodcastDark.png │ │ │ │ └── YellowPodcastLight.png │ │ │ ├── YellowPodcastEpisode.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowPodcastEpisodeDark.png │ │ │ │ └── YellowPodcastEpisodeLight.png │ │ │ ├── YellowRadio.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowRadioDark.png │ │ │ │ └── YellowRadioLight.png │ │ │ └── YellowSong.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── YellowSongDark.png │ │ │ │ └── YellowSongLight.png │ │ ├── album_newest.symbolset │ │ │ ├── Contents.json │ │ │ └── staroflife.square.stack.svg │ │ ├── album_recent.symbolset │ │ │ ├── Contents.json │ │ │ └── timer.square.stack.svg │ │ ├── context_queue_append.symbolset │ │ │ ├── Contents.json │ │ │ └── custom.text.line.last.and.arrowtriangle.forward.svg │ │ ├── context_queue_insert.symbolset │ │ │ ├── Contents.json │ │ │ └── custom.text.line.first.and.arrowtriangle.forward.svg │ │ ├── gauge.symbolset │ │ │ ├── Contents.json │ │ │ └── custom.gauge.open.with.lines.needle.33percent.svg │ │ ├── gauge_down.symbolset │ │ │ ├── Contents.json │ │ │ └── custom.gauge.open.with.lines.needle.33percent.badge.arrow.down.svg │ │ ├── gauge_up.symbolset │ │ │ ├── Contents.json │ │ │ └── custom.gauge.open.with.lines.needle.33percent.badge.arrow.up.svg │ │ ├── lyrics.symbolset │ │ │ ├── Contents.json │ │ │ └── book.pages.svg │ │ ├── podcast.symbolset │ │ │ ├── Contents.json │ │ │ └── podcast-symbol.svg │ │ ├── user_queue_append.symbolset │ │ │ ├── Contents.json │ │ │ └── custom.text.line.last.and.arrowtriangle.forward.badge.person.crop.svg │ │ └── user_queue_insert.symbolset │ │ │ ├── Contents.json │ │ │ └── custom.text.line.first.and.arrowtriangle.forward.badge.person.crop.svg │ └── UIImageAssetsExtension.swift ├── Common │ ├── AsyncOperation.swift │ ├── EventNotificationHandler.swift │ ├── FuzzySearcher.swift │ ├── JSONConverter.swift │ ├── LocalNotificationManager.swift │ ├── LogData.swift │ ├── NetworkMonitor.swift │ ├── QuickActionsHandler.swift │ ├── StringHasher.swift │ └── Utilities.swift ├── Download │ ├── DownloadError.swift │ ├── DownloadManager.swift │ ├── DownloadManagerSessionExtension.swift │ ├── DownloadProtocols.swift │ └── PlayableDownloadDelegate.swift ├── Player │ ├── AudioPlayer.swift │ ├── AudioSessionHandler.swift │ ├── BackendAudioPlayer.swift │ ├── EmbeddedArtworkExtractor.swift │ ├── NowPlayingInfoCenterHandler.swift │ ├── PlayQueueHandler.swift │ ├── PlayerDownloadPreparationHandler.swift │ ├── PlayerFacade.swift │ ├── PlayerNotificationAdapter.swift │ ├── PlayerUtil.swift │ ├── RemoteCommandCenterHandler.swift │ └── ScrobbleSyncer.swift ├── Screens │ ├── ArtworkCollection.swift │ ├── ClockTime.swift │ ├── CommonString.swift │ ├── EntityImageView.swift │ ├── EntityImageView.xib │ ├── LibraryEntityImage.swift │ └── RoundedImage.swift └── Storage │ ├── CacheFileManager.swift │ ├── DownloadRequestManager.swift │ ├── DuplicateEntitiesResolver.swift │ ├── EntityWrappers │ ├── AbstractLibraryEntity.swift │ ├── AbstractPlayable.swift │ ├── Album.swift │ ├── Artist.swift │ ├── Artwork.swift │ ├── Directory.swift │ ├── Download.swift │ ├── EmbeddedArtwork.swift │ ├── Genre.swift │ ├── LogEntry.swift │ ├── MusicFolder.swift │ ├── PlayableContainable.swift │ ├── PlayableFile.swift │ ├── PlayerData.swift │ ├── Playlist.swift │ ├── PlaylistItem.swift │ ├── Podcast.swift │ ├── PodcastEpisode.swift │ ├── Radio.swift │ ├── ScrobbleEntry.swift │ ├── SearchHistoryItem.swift │ ├── Song.swift │ └── UserStatistics.swift │ ├── Identifyable.swift │ ├── LibraryDisplaySettings.swift │ ├── LibraryElementEnum.swift │ ├── LibraryStorage.swift │ ├── LibrarySyncVersion.swift │ ├── LibraryUpdater.swift │ ├── ManagedObjects │ ├── AbstractLibraryEntityMO+CoreDataClass.swift │ ├── AbstractLibraryEntityMO+CoreDataProperties.swift │ ├── AbstractPlayableMO+CoreDataClass.swift │ ├── AbstractPlayableMO+CoreDataProperties.swift │ ├── AlbumMO+CoreDataClass.swift │ ├── AlbumMO+CoreDataProperties.swift │ ├── Amperfy.xcdatamodeld │ │ ├── .xccurrentversion │ │ ├── Amperfy v10.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v11.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v12.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v13.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v14.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v15.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v16.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v17.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v18.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v19.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v2.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v20.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v21.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v22.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v23.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v24.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v25.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v26.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v27.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v28.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v29.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v3.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v30.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v31.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v32.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v33.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v34.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v35.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v36.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v37.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v38.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v39.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v4.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v40.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v41.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v42.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v43.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v44.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v45.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v5.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v6.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v7.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v8.xcdatamodel │ │ │ └── contents │ │ ├── Amperfy v9.xcdatamodel │ │ │ └── contents │ │ └── Amperfy.xcdatamodel │ │ │ └── contents │ ├── ArtistMO+CoreDataClass.swift │ ├── ArtistMO+CoreDataProperties.swift │ ├── ArtworkMO+CoreDataClass.swift │ ├── ArtworkMO+CoreDataProperties.swift │ ├── DirectoryMO+CoreDataClass.swift │ ├── DirectoryMO+CoreDataProperties.swift │ ├── DownloadMO+CoreDataClass.swift │ ├── DownloadMO+CoreDataProperties.swift │ ├── EmbeddedArtworkMO+CoreDataClass.swift │ ├── EmbeddedArtworkMO+CoreDataProperties.swift │ ├── GenreMO+CoreDataClass.swift │ ├── GenreMO+CoreDataProperties.swift │ ├── LogEntryMO+CoreDataClass.swift │ ├── LogEntryMO+CoreDataProperties.swift │ ├── Migration │ │ ├── CoreDataMigrationExtensions.swift │ │ ├── CoreDataMigrationStep.swift │ │ ├── CoreDataMigrationVersion.swift │ │ └── CoreDataMigrator.swift │ ├── MusicFolderMO+CoreDataClass.swift │ ├── MusicFolderMO+CoreDataProperties.swift │ ├── PlayableFileMO+CoreDataClass.swift │ ├── PlayableFileMO+CoreDataProperties.swift │ ├── PlayerMO+CoreDataClass.swift │ ├── PlayerMO+CoreDataProperties.swift │ ├── PlaylistItemMO+CoreDataClass.swift │ ├── PlaylistItemMO+CoreDataProperties.swift │ ├── PlaylistMO+CoreDataClass.swift │ ├── PlaylistMO+CoreDataProperties.swift │ ├── PodcastEpisodeMO+CoreDataClass.swift │ ├── PodcastEpisodeMO+CoreDataProperties.swift │ ├── PodcastMO+CoreDataClass.swift │ ├── PodcastMO+CoreDataProperties.swift │ ├── RadioMO+CoreDataClass.swift │ ├── RadioMO+CoreDataProperties.swift │ ├── ScrobbleEntryMO+CoreDataClass.swift │ ├── ScrobbleEntryMO+CoreDataProperties.swift │ ├── SearchHistoryItemMO+CoreDataClass.swift │ ├── SearchHistoryItemMO+CoreDataProperties.swift │ ├── SongMO+CoreDataClass.swift │ ├── SongMO+CoreDataProperties.swift │ ├── UserStatisticsMO+CoreDataClass.swift │ ├── UserStatisticsMO+CoreDataProperties.swift │ └── VersionMappings │ │ ├── MappingModelV10toV11.xcmappingmodel │ │ └── xcmapping.xml │ │ ├── MappingModelV4toV5.xcmappingmodel │ │ └── xcmapping.xml │ │ └── MigrationPolicyV4toV5.swift │ ├── PersistentStorage.swift │ ├── PlayerDisplayStyleType.swift │ ├── PodcastsShowType.swift │ ├── ResultController │ ├── BasicFetchedResultsController.swift │ └── FetchedResultsControllers.swift │ └── SwipeActionSettings.swift ├── AmperfyKitTests ├── AmpertyKitTests.swift ├── Cases │ ├── API │ │ ├── Ampache │ │ │ ├── AbstractAmpacheTest.swift │ │ │ ├── AlbumParserTest.swift │ │ │ ├── ArtistParserTest.swift │ │ │ ├── AuthParserTest.swift │ │ │ ├── CatalogParserTest.swift │ │ │ ├── ErrorParserTest.swift │ │ │ ├── PlaylistSongsParserTest.swift │ │ │ ├── PlaylistsParserTest.swift │ │ │ ├── PodcastEpisodesExample2ParserTest.swift │ │ │ ├── PodcastEpisodesParserTest.swift │ │ │ ├── PodcastsParserTest.swift │ │ │ ├── RadiosExampleParserTest.swift │ │ │ ├── Samples │ │ │ │ ├── GenreParserTest.swift │ │ │ │ ├── albums.xml │ │ │ │ ├── artists.xml │ │ │ │ ├── catalogs.xml │ │ │ │ ├── error-4700.xml │ │ │ │ ├── genres.xml │ │ │ │ ├── handshake.xml │ │ │ │ ├── live_streams.xml │ │ │ │ ├── playlist_songs.xml │ │ │ │ ├── playlists.xml │ │ │ │ ├── podcast_episodes.xml │ │ │ │ ├── podcast_episodes_example_2.xml │ │ │ │ ├── podcasts.xml │ │ │ │ └── songs.xml │ │ │ └── SongParserTest.swift │ │ ├── PrefetchIdTester.swift │ │ ├── Subsonic │ │ │ ├── AbstractSsTest.swift │ │ │ ├── Samples │ │ │ │ ├── OpenSubsonicExtensions_example_1.xml │ │ │ │ ├── album_example_1.xml │ │ │ │ ├── album_example_2.xml │ │ │ │ ├── album_missing_artistId.xml │ │ │ │ ├── album_multidisc_example_1.xml │ │ │ │ ├── artist_example_1.xml │ │ │ │ ├── artists_example_1.xml │ │ │ │ ├── directory_example_1.xml │ │ │ │ ├── directory_example_2.xml │ │ │ │ ├── error_example_1.xml │ │ │ │ ├── genres_example_1.xml │ │ │ │ ├── getLyricsBySongId_example_1.xml │ │ │ │ ├── getLyricsBySongId_example_2.xml │ │ │ │ ├── indexes_example_1.xml │ │ │ │ ├── internetRadioStations_example_1.xml │ │ │ │ ├── musicFolders_example_1.xml │ │ │ │ ├── ping_example_1.xml │ │ │ │ ├── playlist_example_1.xml │ │ │ │ ├── playlists_example_1.xml │ │ │ │ ├── podcast_example_1.xml │ │ │ │ └── podcasts_example_1.xml │ │ │ ├── SsAlbumMissingArtistsIdParserTest.swift │ │ │ ├── SsAlbumMultidiscExample1ParserTest.swift │ │ │ ├── SsAlbumParserPreCreatedArtistsTest.swift │ │ │ ├── SsAlbumParserTest.swift │ │ │ ├── SsArtistParserTest.swift │ │ │ ├── SsDirectoriesExample1ParserTest.swift │ │ │ ├── SsDirectoriesExample2ParserTest.swift │ │ │ ├── SsGenreParserTest.swift │ │ │ ├── SsIndexesParserTest.swift │ │ │ ├── SsLyricsBySongId1ParserTest.swift │ │ │ ├── SsLyricsBySongId2ParserTest.swift │ │ │ ├── SsMusicFolderParserTest.swift │ │ │ ├── SsOpenSubsonicExtensionsParserTest.swift │ │ │ ├── SsPingParserTest.swift │ │ │ ├── SsPlaylistSongsParserTest.swift │ │ │ ├── SsPlaylistsParserTest.swift │ │ │ ├── SsPodcastEpisodesParserTest.swift │ │ │ ├── SsPodcastParserTest.swift │ │ │ ├── SsRadioExampleParserTest.swift │ │ │ ├── SsSongExample1ParserTest.swift │ │ │ ├── SsSongExample2ParserTest.swift │ │ │ └── SsXmlParserTest.swift │ │ └── SubsonicVersionTest.swift │ ├── Common │ │ └── UtilitiesTest.swift │ ├── HelperTest.swift │ ├── Player │ │ ├── MusicPlayerTest.swift │ │ └── PlayQueueHandlerTest.swift │ └── Storage │ │ └── ManagedObjects │ │ ├── AlbumTest.swift │ │ ├── ArtistTest.swift │ │ ├── ArtworkTest.swift │ │ ├── PlayerDataTest.swift │ │ ├── PlaylistItemTest.swift │ │ ├── PlaylistTest.swift │ │ ├── PodcastEpisodeTest.swift │ │ └── SongTest.swift └── Helper │ ├── CoreDataHelper.swift │ ├── CoreDataSeeder.swift │ └── UnitTestHelper.swift ├── AppKitIntegration └── AppKitController.swift ├── BuildTools ├── Dummy.swift ├── Package.resolved ├── Package.swift └── applyFormat.sh ├── CHANGELOG.md ├── Design ├── Logo.xcf └── Playlist.xcf ├── Helper ├── add-license-header.sh └── license-header.txt ├── LICENSE └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | # github: BLeeEZ 3 | custom: ['paypal.me/BLeeEZ25'] -------------------------------------------------------------------------------- /.github/Screenshots/AlbumDetail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/.github/Screenshots/AlbumDetail.jpg -------------------------------------------------------------------------------- /.github/Screenshots/Library.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/.github/Screenshots/Library.jpg -------------------------------------------------------------------------------- /.github/Screenshots/Player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/.github/Screenshots/Player.jpg -------------------------------------------------------------------------------- /.github/Screenshots/macOS-Playlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/.github/Screenshots/macOS-Playlist.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/.gitmodules -------------------------------------------------------------------------------- /Amperfy.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Amperfy.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Amperfy.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Amperfy/Amperfy.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.carplay-audio 6 | 7 | com.apple.developer.siri 8 | 9 | com.apple.security.app-sandbox 10 | 11 | com.apple.security.network.client 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Amperfy/AppIntentVocabulary.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IntentPhrases 6 | 7 | 8 | IntentName 9 | INPlayMediaIntent 10 | IntentExamples 11 | 12 | Play the example band in Amperfy 13 | Play playlist example in Amperfy 14 | Play title by artist in Amperfy 15 | 16 | 17 | 18 | ParameterVocabularies 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Amperfy/Intents/NSUserActivity+IntentData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserActivity+IntentData.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 06.06.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | extension NSUserActivity { 25 | public enum ActivityKeys: String { 26 | case searchTerm 27 | case searchCategory 28 | case id 29 | case libraryElementType 30 | case shuffleOption 31 | case repeatOption 32 | case offlineMode 33 | case onlyCached 34 | case rating 35 | case favorite 36 | } 37 | 38 | public static let searchAndPlayActivityType = "de.familie-zimba.Amperfy.SearchAndPlay" 39 | public static let playIdActivityType = "de.familie-zimba.Amperfy.PlayID" 40 | public static let playRandomSongsActivityType = 41 | "de.familie-zimba.Amperfy.PlayRandomSongsActivityType" 42 | } 43 | -------------------------------------------------------------------------------- /Amperfy/Screens/Basics/BasicButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BasicButton.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 09.03.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import UIKit 23 | 24 | class BasicButton: UIButton { 25 | static let cornerRadius = 10.0 26 | 27 | required init?(coder aDecoder: NSCoder) { 28 | super.init(coder: aDecoder) 29 | configureStyle() 30 | } 31 | 32 | func configureStyle() { 33 | layer.cornerRadius = Self.cornerRadius 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Amperfy/Screens/Basics/BasicCollectionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BasicCollectionCell.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 28.09.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import UIKit 23 | 24 | class BasicCollectionCell: UICollectionViewCell { 25 | static let margin = UIView.defaultMarginCell 26 | 27 | required init?(coder aDecoder: NSCoder) { 28 | super.init(coder: aDecoder) 29 | self.layoutMargins = BasicTableCell.margin 30 | } 31 | 32 | override init(frame: CGRect) { 33 | super.init(frame: frame) 34 | } 35 | 36 | override func awakeFromNib() { 37 | super.awakeFromNib() 38 | } 39 | 40 | override var layoutMargins: UIEdgeInsets { get { BasicTableCell.margin } set {} } 41 | } 42 | -------------------------------------------------------------------------------- /Amperfy/Screens/Basics/BasicTableCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BasicTableCell.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 06.03.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import UIKit 23 | 24 | class BasicTableCell: UITableViewCell { 25 | static let margin = UIView.defaultMarginCell 26 | 27 | required init?(coder: NSCoder) { 28 | super.init(coder: coder) 29 | self.layoutMargins = BasicTableCell.margin 30 | } 31 | 32 | override var layoutMargins: UIEdgeInsets { get { BasicTableCell.margin } set {} } 33 | 34 | override func prepareForReuse() { 35 | super.prepareForReuse() 36 | markAsUnfocused() 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Amperfy/Screens/Basics/Mac - Toolbar/Refreshable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Refreshable.swift 3 | // Amperfy 4 | // 5 | // Created by David Klopp on 22.08.24. 6 | // Copyright (c) 2024 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | #if targetEnvironment(macCatalyst) 25 | 26 | @MainActor 27 | protocol Refreshable { 28 | func reload() 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /Amperfy/Screens/Basics/ViewCreator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewBuilder.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 09.03.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import AmperfyKit 23 | import UIKit 24 | 25 | @MainActor 26 | class ViewCreator { 27 | static func createFromNib() -> ViewType? { 28 | UINib( 29 | nibName: ViewType.typeName, 30 | bundle: nil 31 | ).instantiate(withOwner: nil, options: nil)[0] as? ViewType 32 | } 33 | 34 | static func createFromNib(withinFixedFrame rect: CGRect) -> ViewType? { 35 | guard let nibView: ViewType = createFromNib() else { 36 | return nil 37 | } 38 | nibView.frame = rect 39 | return nibView 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Amperfy/Screens/ViewController/Segues.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Segues.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 09.03.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | enum Segues: String { 25 | case toLogin 26 | case toArtistDetail 27 | case toAlbumDetail 28 | case toPlaylistDetail 29 | case toGenreDetail 30 | case toDirectories 31 | case toPodcastDetail 32 | } 33 | -------------------------------------------------------------------------------- /Amperfy/Screens/ViewController/TabBarVC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TabBarVC.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 09.03.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import AmperfyKit 23 | import UIKit 24 | 25 | class TabBarVC: UITabBarController { 26 | override func viewDidLoad() { 27 | super.viewDidLoad() 28 | } 29 | 30 | override func viewIsAppearing(_ animated: Bool) { 31 | super.viewIsAppearing(animated) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Amperfy/SwiftUI/Basics/InfoBannerView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfoBannerView.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 15.09.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import SwiftUI 23 | 24 | // MARK: - InfoBannerView 25 | 26 | struct InfoBannerView: View { 27 | var message: String 28 | var color: Color 29 | 30 | var body: some View { 31 | Text(message) 32 | .padding() 33 | .frame(maxWidth: .infinity) 34 | .foregroundColor(.white) 35 | .background(RoundedRectangle(cornerRadius: 10).fill(color.opacity(1))) 36 | } 37 | } 38 | 39 | // MARK: - InfoBannerView_Previews 40 | 41 | struct InfoBannerView_Previews: PreviewProvider { 42 | static var previews: some View { 43 | VStack { 44 | InfoBannerView(message: "Test error message", color: .error) 45 | InfoBannerView(message: "Test success message", color: .success) 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Amperfy/SwiftUI/Basics/SecondaryText.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SecondaryText.swift 3 | // Amperfy 4 | // 5 | // Created by David Klopp on 16.08.24. 6 | // Copyright (c) 2024 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | import SwiftUI 25 | 26 | struct SecondaryText: View { 27 | let text: String 28 | 29 | init(_ text: String) { 30 | self.text = text 31 | } 32 | 33 | var body: some View { 34 | Text(text) 35 | .foregroundStyle(Color.secondaryLabel) 36 | .help(text) 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Amperfy/SwiftUI/Basics/SettingsList.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SettingsList.swift 3 | // Amperfy 4 | // 5 | // Created by David Klopp on 07.09.24. 6 | // Copyright (c) 2024 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | import SwiftUI 24 | 25 | struct SettingsList: View, BehavioralStylable { 26 | @State 27 | var preferredBehavioralStyle: UIBehavioralStyle = .defaultStyle 28 | let content: () -> Content 29 | 30 | init(@ViewBuilder content: @escaping () -> Content) { 31 | self.content = content 32 | } 33 | 34 | var body: some View { 35 | if behavioralStyle == .mac, #available(iOS 16, *) { 36 | List { 37 | self.content() 38 | } 39 | .background(Color.clear) 40 | .scrollContentBackground(.hidden) 41 | } else { 42 | List { 43 | content() 44 | } 45 | .background(Color.clear) 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Amperfy/SwiftUI/Settings/Swipe/SwipeCellView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwipeCellView.swift 3 | // Amperfy 4 | // 5 | // Created by Maximilian Bauer on 16.09.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import AmperfyKit 23 | import SwiftUI 24 | 25 | // MARK: - SwipeCellView 26 | 27 | struct SwipeCellView: View { 28 | @Environment(\.colorScheme) 29 | var colorScheme: ColorScheme 30 | 31 | var swipe: SwipeActionType 32 | 33 | var body: some View { 34 | HStack { 35 | Image(uiImage: colorScheme == .light ? swipe.image : swipe.image.invertedImage()) 36 | Text(swipe.settingsName) 37 | Spacer() 38 | } 39 | .contentShape(Rectangle()) 40 | } 41 | } 42 | 43 | // MARK: - SwipeCellView_Previews 44 | 45 | struct SwipeCellView_Previews: PreviewProvider { 46 | static var previews: some View { 47 | SwipeCellView(swipe: .addToPlaylist) 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /AmperfyKit/AmperfyKit.docc/AmpertyKit.md: -------------------------------------------------------------------------------- 1 | # ``AmpertyKit`` 2 | 3 | Summary 4 | 5 | ## Overview 6 | 7 | Text 8 | 9 | ## Topics 10 | 11 | ### Group 12 | 13 | - ``Symbol`` -------------------------------------------------------------------------------- /AmperfyKit/AmperfyKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // AmperfyKit.h 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 07.06.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | #import 23 | 24 | //! Project version number for AmperfyKit. 25 | FOUNDATION_EXPORT double AmperfyKitVersionNumber; 26 | 27 | //! Project version string for AmperfyKit. 28 | FOUNDATION_EXPORT const unsigned char AmperfyKitVersionString[]; 29 | 30 | // In this header, you should import all the public headers of your framework using statements like #import 31 | 32 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-1024.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-120.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-121.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-152.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-167.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-180.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-41.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-42.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-58.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-59.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-80.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-81.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/AppIcon.appiconset/Icon-87.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueAlbum.imageset/BlueAlbumDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueAlbum.imageset/BlueAlbumDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueAlbum.imageset/BlueAlbumLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueAlbum.imageset/BlueAlbumLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueAlbum.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BlueAlbumLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BlueAlbumDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueArtist.imageset/BlueArtistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueArtist.imageset/BlueArtistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueArtist.imageset/BlueArtistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueArtist.imageset/BlueArtistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueArtist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BlueArtistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BlueArtistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueFolder.imageset/BlueFolderDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueFolder.imageset/BlueFolderDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueFolder.imageset/BlueFolderLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueFolder.imageset/BlueFolderLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BlueFolderLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BlueFolderDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueGenre.imageset/BlueGenreDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueGenre.imageset/BlueGenreDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueGenre.imageset/BlueGenreLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueGenre.imageset/BlueGenreLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueGenre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BlueGenreLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BlueGenreDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePlaylist.imageset/BluePlaylistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BluePlaylist.imageset/BluePlaylistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePlaylist.imageset/BluePlaylistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BluePlaylist.imageset/BluePlaylistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePlaylist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BluePlaylistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BluePlaylistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcast.imageset/BluePodcastDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcast.imageset/BluePodcastDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcast.imageset/BluePodcastLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcast.imageset/BluePodcastLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BluePodcastLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BluePodcastDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcastEpisode.imageset/BluePodcastEpisodeDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcastEpisode.imageset/BluePodcastEpisodeDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcastEpisode.imageset/BluePodcastEpisodeLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcastEpisode.imageset/BluePodcastEpisodeLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BluePodcastEpisode.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BluePodcastEpisodeLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BluePodcastEpisodeDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueRadio.imageset/BlueRadioDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueRadio.imageset/BlueRadioDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueRadio.imageset/BlueRadioLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueRadio.imageset/BlueRadioLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueRadio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BlueRadioLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BlueRadioDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueSong.imageset/BlueSongDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueSong.imageset/BlueSongDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueSong.imageset/BlueSongLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Blue/BlueSong.imageset/BlueSongLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/BlueSong.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "BlueSongLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "BlueSongDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Blue/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenAlbum.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenAlbumLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenAlbumDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenAlbum.imageset/GreenAlbumDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenAlbum.imageset/GreenAlbumDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenAlbum.imageset/GreenAlbumLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenAlbum.imageset/GreenAlbumLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenArtist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenArtistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenArtistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenArtist.imageset/GreenArtistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenArtist.imageset/GreenArtistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenArtist.imageset/GreenArtistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenArtist.imageset/GreenArtistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenFolderLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenFolderDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenFolder.imageset/GreenFolderDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenFolder.imageset/GreenFolderDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenFolder.imageset/GreenFolderLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenFolder.imageset/GreenFolderLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenGenre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenGenreLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenGenreDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenGenre.imageset/GreenGenreDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenGenre.imageset/GreenGenreDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenGenre.imageset/GreenGenreLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenGenre.imageset/GreenGenreLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPlaylist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenPlaylistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenPlaylistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPlaylist.imageset/GreenPlaylistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenPlaylist.imageset/GreenPlaylistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPlaylist.imageset/GreenPlaylistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenPlaylist.imageset/GreenPlaylistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenPodcastLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenPodcastDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcast.imageset/GreenPodcastDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcast.imageset/GreenPodcastDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcast.imageset/GreenPodcastLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcast.imageset/GreenPodcastLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcastEpisode.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenPodcastEpisodeLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenPodcastEpisodeDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcastEpisode.imageset/GreenPodcastEpisodeDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcastEpisode.imageset/GreenPodcastEpisodeDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcastEpisode.imageset/GreenPodcastEpisodeLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenPodcastEpisode.imageset/GreenPodcastEpisodeLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenRadio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenRadioLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenRadioDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenRadio.imageset/GreenRadioDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenRadio.imageset/GreenRadioDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenRadio.imageset/GreenRadioLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenRadio.imageset/GreenRadioLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenSong.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "GreenSongLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "GreenSongDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenSong.imageset/GreenSongDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenSong.imageset/GreenSongDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Green/GreenSong.imageset/GreenSongLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Green/GreenSong.imageset/GreenSongLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Icon-1024.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Icon-1024.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Icon-1024.imageset/Icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Icon-1024.imageset/Icon-1024.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/ImageOverlayBackground.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "0.600", 8 | "blue" : "0x29", 9 | "green" : "0x29", 10 | "red" : "0x29" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeAlbum.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangeAlbumLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangeAlbumDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeAlbum.imageset/OrangeAlbumDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeAlbum.imageset/OrangeAlbumDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeAlbum.imageset/OrangeAlbumLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeAlbum.imageset/OrangeAlbumLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeArtist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangeArtistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangeArtistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeArtist.imageset/OrangeArtistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeArtist.imageset/OrangeArtistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeArtist.imageset/OrangeArtistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeArtist.imageset/OrangeArtistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangeFolderLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangeFolderDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeFolder.imageset/OrangeFolderDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeFolder.imageset/OrangeFolderDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeFolder.imageset/OrangeFolderLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeFolder.imageset/OrangeFolderLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeGenre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangeGenreLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangeGenreDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeGenre.imageset/OrangeGenreDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeGenre.imageset/OrangeGenreDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeGenre.imageset/OrangeGenreLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeGenre.imageset/OrangeGenreLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePlaylist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangePlaylistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangePlaylistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePlaylist.imageset/OrangePlaylistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangePlaylist.imageset/OrangePlaylistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePlaylist.imageset/OrangePlaylistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangePlaylist.imageset/OrangePlaylistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangePodcastLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangePodcastDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcast.imageset/OrangePodcastDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcast.imageset/OrangePodcastDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcast.imageset/OrangePodcastLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcast.imageset/OrangePodcastLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcastEpisode.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangePodcastEpisodeLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangePodcastEpisodeDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcastEpisode.imageset/OrangePodcastEpisodeDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcastEpisode.imageset/OrangePodcastEpisodeDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcastEpisode.imageset/OrangePodcastEpisodeLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangePodcastEpisode.imageset/OrangePodcastEpisodeLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeRadio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangeRadioLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangeRadioDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeRadio.imageset/OrangeRadioDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeRadio.imageset/OrangeRadioDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeRadio.imageset/OrangeRadioLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeRadio.imageset/OrangeRadioLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeSong.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "OrangeSongLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "OrangeSongDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeSong.imageset/OrangeSongDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeSong.imageset/OrangeSongDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Orange/OrangeSong.imageset/OrangeSongLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Orange/OrangeSong.imageset/OrangeSongLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkAlbum.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkAlbumLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkAlbumDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkAlbum.imageset/PinkAlbumDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkAlbum.imageset/PinkAlbumDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkAlbum.imageset/PinkAlbumLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkAlbum.imageset/PinkAlbumLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkArtist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkArtistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkArtistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkArtist.imageset/PinkArtistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkArtist.imageset/PinkArtistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkArtist.imageset/PinkArtistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkArtist.imageset/PinkArtistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkFolderLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkFolderDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkFolder.imageset/PinkFolderDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkFolder.imageset/PinkFolderDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkFolder.imageset/PinkFolderLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkFolder.imageset/PinkFolderLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkGenre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkGenreLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkGenreDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkGenre.imageset/PinkGenreDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkGenre.imageset/PinkGenreDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkGenre.imageset/PinkGenreLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkGenre.imageset/PinkGenreLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPlaylist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkPlaylistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkPlaylistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPlaylist.imageset/PinkPlaylistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkPlaylist.imageset/PinkPlaylistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPlaylist.imageset/PinkPlaylistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkPlaylist.imageset/PinkPlaylistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkPodcastLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkPodcastDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcast.imageset/PinkPodcastDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcast.imageset/PinkPodcastDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcast.imageset/PinkPodcastLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcast.imageset/PinkPodcastLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcastEpisode.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkPodcastEpisodeLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkPodcastEpisodeDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcastEpisode.imageset/PinkPodcastEpisodeDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcastEpisode.imageset/PinkPodcastEpisodeDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcastEpisode.imageset/PinkPodcastEpisodeLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkPodcastEpisode.imageset/PinkPodcastEpisodeLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkRadio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkRadioLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkRadioDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkRadio.imageset/PinkRadioDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkRadio.imageset/PinkRadioDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkRadio.imageset/PinkRadioLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkRadio.imageset/PinkRadioLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkSong.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PinkSongLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PinkSongDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkSong.imageset/PinkSongDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkSong.imageset/PinkSongDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Pink/PinkSong.imageset/PinkSongLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Pink/PinkSong.imageset/PinkSongLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/PopupRootOverlayColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "0.803", 8 | "blue" : "0.360", 9 | "green" : "0.360", 10 | "red" : "0.360" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "0.798", 26 | "blue" : "0.000", 27 | "green" : "0.000", 28 | "red" : "0.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleAlbum.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurpleAlbumLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurpleAlbumDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleAlbum.imageset/PurpleAlbumDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleAlbum.imageset/PurpleAlbumDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleAlbum.imageset/PurpleAlbumLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleAlbum.imageset/PurpleAlbumLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleArtist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurpleArtistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurpleArtistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleArtist.imageset/PurpleArtistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleArtist.imageset/PurpleArtistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleArtist.imageset/PurpleArtistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleArtist.imageset/PurpleArtistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurpleFolderLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurpleFolderDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleFolder.imageset/PurpleFolderDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleFolder.imageset/PurpleFolderDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleFolder.imageset/PurpleFolderLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleFolder.imageset/PurpleFolderLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleGenre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurpleGenreLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurpleGenreDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleGenre.imageset/PurpleGenreDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleGenre.imageset/PurpleGenreDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleGenre.imageset/PurpleGenreLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleGenre.imageset/PurpleGenreLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePlaylist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurplePlaylistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurplePlaylistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePlaylist.imageset/PurplePlaylistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurplePlaylist.imageset/PurplePlaylistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePlaylist.imageset/PurplePlaylistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurplePlaylist.imageset/PurplePlaylistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurplePodcastLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurplePodcastDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcast.imageset/PurplePodcastDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcast.imageset/PurplePodcastDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcast.imageset/PurplePodcastLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcast.imageset/PurplePodcastLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcastEpisode.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurplePodcastEpisodeLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurplePodcastEpisodeDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcastEpisode.imageset/PurplePodcastEpisodeDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcastEpisode.imageset/PurplePodcastEpisodeDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcastEpisode.imageset/PurplePodcastEpisodeLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurplePodcastEpisode.imageset/PurplePodcastEpisodeLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleRadio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurpleRadioLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurpleRadioDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleRadio.imageset/PurpleRadioDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleRadio.imageset/PurpleRadioDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleRadio.imageset/PurpleRadioLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleRadio.imageset/PurpleRadioLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleSong.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "PurpleSongLight 1.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "PurpleSongDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleSong.imageset/PurpleSongDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleSong.imageset/PurpleSongDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Purple/PurpleSong.imageset/PurpleSongLight 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Purple/PurpleSong.imageset/PurpleSongLight 1.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedAlbum.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedAlbumLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedAlbumDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedAlbum.imageset/RedAlbumDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedAlbum.imageset/RedAlbumDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedAlbum.imageset/RedAlbumLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedAlbum.imageset/RedAlbumLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedArtist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedArtistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedArtistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedArtist.imageset/RedArtistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedArtist.imageset/RedArtistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedArtist.imageset/RedArtistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedArtist.imageset/RedArtistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedFolderLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedFolderDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedFolder.imageset/RedFolderDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedFolder.imageset/RedFolderDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedFolder.imageset/RedFolderLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedFolder.imageset/RedFolderLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedGenre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedGenreLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedGenreDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedGenre.imageset/RedGenreDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedGenre.imageset/RedGenreDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedGenre.imageset/RedGenreLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedGenre.imageset/RedGenreLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPlaylist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedPlaylistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedPlaylistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPlaylist.imageset/RedPlaylistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedPlaylist.imageset/RedPlaylistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPlaylist.imageset/RedPlaylistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedPlaylist.imageset/RedPlaylistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPodcast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedPodcastLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedPodcastDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPodcast.imageset/RedPodcastDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedPodcast.imageset/RedPodcastDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPodcast.imageset/RedPodcastLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedPodcast.imageset/RedPodcastLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPodcastEpisode.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedPodcastEpisodeLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedPodcastEpisodeDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPodcastEpisode.imageset/RedPodcastEpisodeDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedPodcastEpisode.imageset/RedPodcastEpisodeDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedPodcastEpisode.imageset/RedPodcastEpisodeLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedPodcastEpisode.imageset/RedPodcastEpisodeLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedRadio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedRadioLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedRadioDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedRadio.imageset/RedRadioDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedRadio.imageset/RedRadioDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedRadio.imageset/RedRadioLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedRadio.imageset/RedRadioLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedSong.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "RedSongLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "RedSongDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedSong.imageset/RedSongDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedSong.imageset/RedSongDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Red/RedSong.imageset/RedSongLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Red/RedSong.imageset/RedSongLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowAlbum.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowAlbumLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowAlbumDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowAlbum.imageset/YellowAlbumDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowAlbum.imageset/YellowAlbumDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowAlbum.imageset/YellowAlbumLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowAlbum.imageset/YellowAlbumLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowArtist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowArtistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowArtistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowArtist.imageset/YellowArtistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowArtist.imageset/YellowArtistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowArtist.imageset/YellowArtistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowArtist.imageset/YellowArtistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowFolderLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowFolderDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowFolder.imageset/YellowFolderDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowFolder.imageset/YellowFolderDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowFolder.imageset/YellowFolderLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowFolder.imageset/YellowFolderLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowGenre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowGenreLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowGenreDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowGenre.imageset/YellowGenreDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowGenre.imageset/YellowGenreDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowGenre.imageset/YellowGenreLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowGenre.imageset/YellowGenreLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPlaylist.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowPlaylistLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowPlaylistDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPlaylist.imageset/YellowPlaylistDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPlaylist.imageset/YellowPlaylistDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPlaylist.imageset/YellowPlaylistLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPlaylist.imageset/YellowPlaylistLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcast.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowPodcastLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowPodcastDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcast.imageset/YellowPodcastDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcast.imageset/YellowPodcastDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcast.imageset/YellowPodcastLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcast.imageset/YellowPodcastLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcastEpisode.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowPodcastEpisodeLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowPodcastEpisodeDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcastEpisode.imageset/YellowPodcastEpisodeDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcastEpisode.imageset/YellowPodcastEpisodeDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcastEpisode.imageset/YellowPodcastEpisodeLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowPodcastEpisode.imageset/YellowPodcastEpisodeLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowRadio.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowRadioLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowRadioDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowRadio.imageset/YellowRadioDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowRadio.imageset/YellowRadioDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowRadio.imageset/YellowRadioLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowRadio.imageset/YellowRadioLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowSong.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "idiom" : "universal", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "appearances" : [ 23 | { 24 | "appearance" : "luminosity", 25 | "value" : "dark" 26 | } 27 | ], 28 | "idiom" : "universal", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "filename" : "YellowSongLight.png", 33 | "idiom" : "universal", 34 | "scale" : "3x" 35 | }, 36 | { 37 | "appearances" : [ 38 | { 39 | "appearance" : "luminosity", 40 | "value" : "dark" 41 | } 42 | ], 43 | "filename" : "YellowSongDark.png", 44 | "idiom" : "universal", 45 | "scale" : "3x" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowSong.imageset/YellowSongDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowSong.imageset/YellowSongDark.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/Yellow/YellowSong.imageset/YellowSongLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/AmperfyKit/Assets/Assets.xcassets/Yellow/YellowSong.imageset/YellowSongLight.png -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/album_newest.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "staroflife.square.stack.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/album_recent.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "timer.square.stack.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/context_queue_append.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "custom.text.line.last.and.arrowtriangle.forward.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/context_queue_insert.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "custom.text.line.first.and.arrowtriangle.forward.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/gauge.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "custom.gauge.open.with.lines.needle.33percent.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/gauge_down.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "custom.gauge.open.with.lines.needle.33percent.badge.arrow.down.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/gauge_up.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "custom.gauge.open.with.lines.needle.33percent.badge.arrow.up.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/lyrics.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "book.pages.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/podcast.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "podcast-symbol.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/user_queue_append.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "custom.text.line.last.and.arrowtriangle.forward.badge.person.crop.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Assets/Assets.xcassets/user_queue_insert.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "custom.text.line.first.and.arrowtriangle.forward.badge.person.crop.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /AmperfyKit/Screens/ArtworkCollection.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArtworkCollection.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 06.06.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | import UIKit 24 | 25 | public class ArtworkCollection { 26 | let defaultArtworkType: ArtworkType 27 | let singleImageEntity: AbstractLibraryEntity? 28 | let quadImageEntity: [AbstractLibraryEntity]? 29 | 30 | init( 31 | defaultArtworkType: ArtworkType, 32 | singleImageEntity: AbstractLibraryEntity?, 33 | quadImageEntity: [AbstractLibraryEntity]? = nil 34 | ) { 35 | self.defaultArtworkType = defaultArtworkType 36 | self.singleImageEntity = singleImageEntity 37 | self.quadImageEntity = quadImageEntity 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /AmperfyKit/Screens/CommonString.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CommonString.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 06.06.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | public class CommonString { 25 | public static let oneMiddleDot: String = "\u{00B7}" 26 | public static let threeMiddleDots: String = "\u{00B7}\u{00B7}\u{00B7}" // ellipsis 27 | } 28 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/LibraryElementEnum.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LibraryElementEnum.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 09.03.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | public enum LibraryElement: Int, CaseIterable { 25 | case Playlist = 0 26 | case Artist = 1 27 | case Album = 2 28 | case Song = 3 29 | } 30 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/AbstractLibraryEntityMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AbstractLibraryEntityMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 09.03.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | @objc(AbstractLibraryEntityMO) 26 | public class AbstractLibraryEntityMO: NSManagedObject { 27 | static var excludeRemoteDeleteFetchPredicate: NSPredicate { 28 | NSCompoundPredicate(orPredicateWithSubpredicates: [ 29 | NSPredicate( 30 | format: "%K == %i", 31 | #keyPath(AbstractLibraryEntityMO.remoteStatus), 32 | RemoteStatus.available.rawValue 33 | ), 34 | ]) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/Amperfy.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | Amperfy v45.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/ArtworkMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArtworkMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 01.01.20. 6 | // Copyright (c) 2020 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | @objc(ArtworkMO) 26 | public class ArtworkMO: NSManagedObject {} 27 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/EmbeddedArtworkMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmbeddedArtworkMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 07.11.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | @objc(EmbeddedArtworkMO) 26 | public class EmbeddedArtworkMO: NSManagedObject {} 27 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/EmbeddedArtworkMO+CoreDataProperties.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmbeddedArtworkMO+CoreDataProperties.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 07.11.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | extension EmbeddedArtworkMO { 26 | @nonobjc 27 | public class func fetchRequest() -> NSFetchRequest { 28 | NSFetchRequest(entityName: "EmbeddedArtwork") 29 | } 30 | 31 | @NSManaged 32 | public var imageData: Data? /// deprecated! use relFilePath instead 33 | @NSManaged 34 | public var relFilePath: String? 35 | @NSManaged 36 | public var owner: AbstractPlayableMO? 37 | } 38 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/LogEntryMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LogEntryMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 16.05.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | // MARK: - LogEntryMO 26 | 27 | @objc(LogEntryMO) 28 | public class LogEntryMO: NSManagedObject {} 29 | 30 | extension LogEntryMO { 31 | public static var creationDateSortedFetchRequest: NSFetchRequest { 32 | let fetchRequest: NSFetchRequest = LogEntryMO.fetchRequest() 33 | fetchRequest.sortDescriptors = [ 34 | NSSortDescriptor(key: #keyPath(LogEntryMO.creationDate), ascending: false), 35 | ] 36 | return fetchRequest 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/LogEntryMO+CoreDataProperties.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LogEntryMO+CoreDataProperties.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 16.05.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | extension LogEntryMO { 26 | @nonobjc 27 | public class func fetchRequest() -> NSFetchRequest { 28 | NSFetchRequest(entityName: "LogEntry") 29 | } 30 | 31 | @NSManaged 32 | public var creationDate: Date 33 | @NSManaged 34 | public var message: String 35 | @NSManaged 36 | public var statusCode: Int32 37 | @NSManaged 38 | public var type: Int16 39 | @NSManaged 40 | public var suppressionTimeInterval: Int32 41 | } 42 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/PlayableFileMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PlayableFileMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 29.06.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | /// deprecated! use FileManger instead 26 | @objc(PlayableFileMO) 27 | public class PlayableFileMO: NSManagedObject {} 28 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/PlayableFileMO+CoreDataProperties.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PlayableFileMO+CoreDataProperties.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 29.06.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | extension PlayableFileMO { 26 | @nonobjc 27 | public class func fetchRequest() -> NSFetchRequest { 28 | NSFetchRequest(entityName: "PlayableFile") 29 | } 30 | 31 | @NSManaged 32 | public var data: Data? 33 | @NSManaged 34 | public var info: AbstractPlayableMO? 35 | } 36 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/PlayerMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PlayerMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 02.01.20. 6 | // Copyright (c) 2020 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | @objc(PlayerMO) 26 | public class PlayerMO: NSManagedObject {} 27 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/PlaylistItemMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PlaylistItemMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 31.12.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | @objc(PlaylistItemMO) 26 | public class PlaylistItemMO: NSManagedObject { 27 | public static let orderDistance: Int32 = 32 28 | 29 | static var playlistOrderSortedFetchRequest: NSFetchRequest { 30 | let fetchRequest: NSFetchRequest = PlaylistItemMO.fetchRequest() 31 | fetchRequest.sortDescriptors = [ 32 | NSSortDescriptor(key: #keyPath(PlaylistItemMO.order), ascending: true), 33 | ] 34 | return fetchRequest 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/RadioMO+CoreDataProperties.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RadioMO+CoreDataProperties.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 27.12.24. 6 | // Copyright (c) 2024 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | extension RadioMO { 26 | @nonobjc 27 | public class func fetchRequest() -> NSFetchRequest { 28 | NSFetchRequest(entityName: "Radio") 29 | } 30 | 31 | @NSManaged 32 | public var siteUrl: String? 33 | 34 | static let relationshipKeyPathsForPrefetching = [ 35 | #keyPath(RadioMO.artwork), 36 | #keyPath(RadioMO.embeddedArtwork), 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/ScrobbleEntryMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScrobbleEntryMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 05.03.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | @objc(ScrobbleEntryMO) 26 | public class ScrobbleEntryMO: NSManagedObject {} 27 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/ScrobbleEntryMO+CoreDataProperties.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScrobbleEntryMO+CoreDataProperties.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 05.03.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | extension ScrobbleEntryMO { 26 | @nonobjc 27 | public class func fetchRequest() -> NSFetchRequest { 28 | NSFetchRequest(entityName: "ScrobbleEntry") 29 | } 30 | 31 | @NSManaged 32 | public var date: Date? 33 | @NSManaged 34 | public var isUploaded: Bool 35 | @NSManaged 36 | public var playable: AbstractPlayableMO? 37 | } 38 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/SearchHistoryItemMO+CoreDataProperties.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SearchHistoryItemMO+CoreDataProperties.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 21.02.24. 6 | // Copyright (c) 2024 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | extension SearchHistoryItemMO { 26 | @nonobjc 27 | public class func fetchRequest() -> NSFetchRequest { 28 | NSFetchRequest(entityName: "SearchHistoryItem") 29 | } 30 | 31 | @NSManaged 32 | public var date: Date? 33 | @NSManaged 34 | public var searchedLibraryEntity: AbstractLibraryEntityMO? 35 | @NSManaged 36 | public var searchedPlaylist: PlaylistMO? 37 | } 38 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/UserStatisticsMO+CoreDataClass.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserStatisticsMO+CoreDataClass.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 24.05.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | @objc(UserStatisticsMO) 26 | public class UserStatisticsMO: NSManagedObject {} 27 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/ManagedObjects/VersionMappings/MigrationPolicyV4toV5.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MigrationPolicyV4toV5.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 23.02.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import CoreData 23 | import Foundation 24 | 25 | public class MigrationPolicyV4toV5: NSEntityMigrationPolicy { 26 | @objc 27 | func stringId(forIntId: NSNumber) -> NSString { 28 | forIntId.stringValue as NSString 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/PlayerDisplayStyleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PlayerDisplayStyleType.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 06.06.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | public enum PlayerDisplayStyle: Int, Sendable { 25 | case compact = 0 26 | case large = 1 27 | 28 | static let defaultValue: PlayerDisplayStyle = .large 29 | 30 | public mutating func switchToNextStyle() { 31 | switch self { 32 | case .compact: 33 | self = .large 34 | case .large: 35 | self = .compact 36 | } 37 | } 38 | 39 | public var description: String { 40 | switch self { 41 | case .compact: return "Compact" 42 | case .large: return "Large" 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /AmperfyKit/Storage/PodcastsShowType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PodcastsShowType.swift 3 | // AmperfyKit 4 | // 5 | // Created by Maximilian Bauer on 06.06.22. 6 | // Copyright (c) 2022 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | import Foundation 23 | 24 | public enum PodcastsShowType: Int, Sendable { 25 | case podcasts = 0 26 | case episodesSortedByReleaseDate = 1 27 | 28 | static let defaultValue: PodcastsShowType = .podcasts 29 | } 30 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Ampache/ErrorParserTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ErrorParserTest.swift 3 | // AmperfyKitTests 4 | // 5 | // Created by Maximilian Bauer on 01.06.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | @testable import AmperfyKit 23 | import XCTest 24 | 25 | class ErrorParserTest: XCTestCase { 26 | var xmlData: Data! 27 | 28 | override func setUp() { 29 | xmlData = getTestFileData(name: "error-4700") 30 | } 31 | 32 | func testParsing() { 33 | let parserDelegate = AmpacheXmlParser(performanceMonitor: MOCK_PerformanceMonitor()) 34 | let parser = XMLParser(data: xmlData) 35 | parser.delegate = parserDelegate 36 | parser.parse() 37 | 38 | guard let error = parserDelegate.error else { XCTFail(); return } 39 | XCTAssertEqual(error.statusCode, 4700) 40 | XCTAssertEqual(error.message, "Access Denied") 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Ampache/Samples/error-4700.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Ampache/Samples/genres.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 4 | 5 | 6 | 1 7 | 1 8 | 11 9 | 0 10 | 0 11 | 0 12 | 13 | 14 | 15 | 1 16 | 1 17 | 4 18 | 0 19 | 0 20 | 0 21 | 22 | 23 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Ampache/Samples/handshake.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Ampache/Samples/live_streams.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | 5 | 6 | 7 | 8 | 1 9 | 10 | 11 | 12 | 13 | 14 | 15 | 1 16 | 17 | 18 | 19 | 20 | 21 | 22 | 1 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/OpenSubsonicExtensions_example_1.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 1 5 | 6 | 7 | 1 8 | 9 | 10 | 1 11 | 12 | 13 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/album_example_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/artists_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/directory_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/directory_example_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/error_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/genres_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Electronic 7 | Hard Rock 8 | R&B 9 | Blues 10 | Podcast 11 | Brit Pop 12 | Live 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/getLyricsBySongId_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | It's bugging me 5 | Grating me 6 | And twisting me around... 7 | 8 | 9 | It's bugging2 me 10 | Grating2 me 11 | And twisting2 me around... 12 | 13 | 14 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/getLyricsBySongId_example_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | It's bugging me 6 | 7 | 8 | Grating me 9 | 10 | 11 | And twisting me around... 12 | 13 | 14 | 15 | 16 | It's bugging2 me 17 | 18 | 19 | Grating2 me 20 | 21 | 22 | And twisting2 me around... 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/indexes_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/internetRadioStations_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/musicFolders_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/ping_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/Samples/playlists_example_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | sindre 7 | john 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/SsPingParserTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SsPingParserTest.swift 3 | // AmperfyKitTests 4 | // 5 | // Created by Maximilian Bauer on 01.06.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | @testable import AmperfyKit 23 | import XCTest 24 | 25 | class SsPingParserTest: XCTestCase { 26 | var xmlData: Data! 27 | 28 | override func setUp() { 29 | xmlData = getTestFileData(name: "ping_example_1") 30 | } 31 | 32 | override func tearDown() {} 33 | 34 | func testParsing() { 35 | let parserDelegate = SsPingParserDelegate(performanceMonitor: MOCK_PerformanceMonitor()) 36 | let parser = XMLParser(data: xmlData) 37 | parser.delegate = parserDelegate 38 | parser.parse() 39 | 40 | XCTAssertNil(parserDelegate.error) 41 | XCTAssertTrue(parserDelegate.isAuthValid) 42 | XCTAssertEqual(parserDelegate.serverApiVersion, "1.1.1") 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/API/Subsonic/SsXmlParserTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SsXmlParserTest.swift 3 | // AmperfyKitTests 4 | // 5 | // Created by Maximilian Bauer on 01.06.21. 6 | // Copyright (c) 2021 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | @testable import AmperfyKit 23 | import XCTest 24 | 25 | class SsXmlParserTest: XCTestCase { 26 | var xmlData: Data! 27 | 28 | override func setUp() { 29 | xmlData = getTestFileData(name: "error_example_1") 30 | } 31 | 32 | override func tearDown() {} 33 | 34 | func testParsing() { 35 | let parserDelegate = SsPingParserDelegate(performanceMonitor: MOCK_PerformanceMonitor()) 36 | let parser = XMLParser(data: xmlData) 37 | parser.delegate = parserDelegate 38 | parser.parse() 39 | 40 | guard let error = parserDelegate.error else { XCTFail(); return } 41 | XCTAssertEqual(error.statusCode, 40) 42 | XCTAssertEqual(error.message, "Wrong username or password") 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /AmperfyKitTests/Cases/HelperTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HelperTest.swift 3 | // AmperfyKitTests 4 | // 5 | // Created by Maximilian Bauer on 30.12.19. 6 | // Copyright (c) 2019 Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | @testable import AmperfyKit 23 | import XCTest 24 | 25 | @MainActor 26 | class HelperTest: XCTestCase { 27 | var cdHelper: CoreDataHelper! 28 | var library: LibraryStorage! 29 | 30 | override func setUp() async throws { 31 | cdHelper = CoreDataHelper() 32 | library = cdHelper.createSeededStorage() 33 | } 34 | 35 | override func tearDown() {} 36 | 37 | func testSeeder() { 38 | XCTAssertEqual(library.getArtists().count, cdHelper.seeder.artists.count) 39 | XCTAssertEqual(library.getAlbums().count, cdHelper.seeder.albums.count) 40 | XCTAssertEqual(library.getSongs().count, cdHelper.seeder.songs.count) 41 | XCTAssertEqual(library.getPlaylists().count, cdHelper.seeder.playlists.count) 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /BuildTools/Dummy.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/BuildTools/Dummy.swift -------------------------------------------------------------------------------- /BuildTools/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "object": { 3 | "pins": [ 4 | { 5 | "package": "SwiftFormat", 6 | "repositoryURL": "https://github.com/nicklockwood/SwiftFormat", 7 | "state": { 8 | "branch": null, 9 | "revision": "468a7d32dedc8d352c191594b3b45d9fd8ba291b", 10 | "version": "0.55.5" 11 | } 12 | } 13 | ] 14 | }, 15 | "version": 1 16 | } 17 | -------------------------------------------------------------------------------- /BuildTools/Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.1 2 | import PackageDescription 3 | 4 | let package = Package( 5 | name: "BuildTools", 6 | platforms: [.macOS(.v10_11)], 7 | dependencies: [ 8 | .package( 9 | url: "https://github.com/nicklockwood/SwiftFormat", 10 | from: "0.55.5" 11 | ), 12 | ], 13 | targets: [.target(name: "BuildTools", path: "")] 14 | ) 15 | -------------------------------------------------------------------------------- /BuildTools/applyFormat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Get the current working directory 4 | cwd=$(pwd) 5 | 6 | target_dir="BuildTools" 7 | swiftformat_exec="./.build/release/swiftformat" 8 | 9 | # Check if the current directory ends with "BuildTools" 10 | if [[ "$cwd" =~ $target_dir$ ]]; then 11 | : 12 | else 13 | cd "$target_dir" 14 | fi 15 | 16 | # Check if SwiftFormat has already been build 17 | if [ ! -f "$swiftformat_exec" ]; then 18 | echo "SwiftFormat not build yet: start build" 19 | SDKROOT=(xcrun --sdk macosx --show-sdk-path) 20 | swift run -c release swiftformat "$SRCROOT" 21 | fi 22 | 23 | "$swiftformat_exec" .. -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | CHANGELOG 2 | ========= 3 | 4 | See the changes in each release here: [https://github.com/BLeeEZ/amperfy/releases](https://github.com/BLeeEZ/amperfy/releases) -------------------------------------------------------------------------------- /Design/Logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/Design/Logo.xcf -------------------------------------------------------------------------------- /Design/Playlist.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BLeeEZ/amperfy/09b7fcde67333914e064f40677ad0a36c984e0d6/Design/Playlist.xcf -------------------------------------------------------------------------------- /Helper/add-license-header.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # use this script in the root directory to add the license header to all files 4 | 5 | for i in $(git ls-files | grep "\.swift$"); do 6 | creationDate=$(git log --follow --diff-filter=A --date=format:'%d.%m.%y %H:%M:%S' $i | grep Date | tail -1 | awk '{ print $2 }') 7 | creationYear=$(git log --follow --diff-filter=A --date=format:'%Y' $i | grep Date | tail -1 | awk '{ print $2 }') 8 | filename=$(echo $i | sed "s/.*\///") 9 | modulename=$(echo $i | awk -F/ '{ print $1 }') 10 | echo "Info: <$creationYear> <$creationDate> <$modulename> <$filename> from $i" 11 | cat ./Helper/license-header.txt |sed "s|THEDATE|$creationDate|" |sed "s|THEYEAR|$creationYear|" |sed "s|THEFILENAME|$filename|" |sed "s|THEMODULENAME|$modulename|"| cat - $i > /tmp/temp && mv /tmp/temp $i 12 | done -------------------------------------------------------------------------------- /Helper/license-header.txt: -------------------------------------------------------------------------------- 1 | // 2 | // THEFILENAME 3 | // THEMODULENAME 4 | // 5 | // Created by Maximilian Bauer on THEDATE. 6 | // Copyright (c) THEYEAR Maximilian Bauer. All rights reserved. 7 | // 8 | // This program is free software: you can redistribute it and/or modify 9 | // it under the terms of the GNU General Public License as published by 10 | // the Free Software Foundation, either version 3 of the License, or 11 | // (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program. If not, see . 20 | // 21 | 22 | --------------------------------------------------------------------------------