diff --git a/MusicPlayer.xcodeproj/project.pbxproj b/MusicPlayer.xcodeproj/project.pbxproj index 0869a9e..8b59c93 100644 --- a/MusicPlayer.xcodeproj/project.pbxproj +++ b/MusicPlayer.xcodeproj/project.pbxproj @@ -1455,7 +1455,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1.2; - DEVELOPMENT_TEAM = T93S37G27F; + DEVELOPMENT_TEAM = 6HWQW9JC74; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = MusicPlayer/Info.plist; @@ -1493,7 +1493,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1.2; - DEVELOPMENT_TEAM = T93S37G27F; + DEVELOPMENT_TEAM = 6HWQW9JC74; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = MusicPlayer/Info.plist; diff --git a/MusicPlayer/MP/Common/DataBase/MusicPlayer.xcdatamodeld/MusicPlayer.xcdatamodel/contents b/MusicPlayer/MP/Common/DataBase/MusicPlayer.xcdatamodeld/MusicPlayer.xcdatamodel/contents index 45fa55b..cbe93b0 100644 --- a/MusicPlayer/MP/Common/DataBase/MusicPlayer.xcdatamodeld/MusicPlayer.xcdatamodel/contents +++ b/MusicPlayer/MP/Common/DataBase/MusicPlayer.xcdatamodeld/MusicPlayer.xcdatamodel/contents @@ -1,6 +1,6 @@ - - + + diff --git a/MusicPlayer/MP/MPPositive/Models/Models/MPPositive_CollectionSongModel.swift b/MusicPlayer/MP/MPPositive/Models/Models/MPPositive_CollectionSongModel.swift index 502772d..7e66f35 100644 --- a/MusicPlayer/MP/MPPositive/Models/Models/MPPositive_CollectionSongModel.swift +++ b/MusicPlayer/MP/MPPositive/Models/Models/MPPositive_CollectionSongModel.swift @@ -19,4 +19,6 @@ class MPPositive_CollectionSongModel: NSManagedObject, MP_CoreDataManageableDele @NSManaged var subtitle:String? ///播放的VideoID @NSManaged var videoId:String? + + } diff --git a/MusicPlayer/MP/MPPositive/Models/ViewModels/ListViewModels/MPPositive_SongViewModel.swift b/MusicPlayer/MP/MPPositive/Models/ViewModels/ListViewModels/MPPositive_SongViewModel.swift index 8a2337b..6c1a3f9 100644 --- a/MusicPlayer/MP/MPPositive/Models/ViewModels/ListViewModels/MPPositive_SongViewModel.swift +++ b/MusicPlayer/MP/MPPositive/Models/ViewModels/ListViewModels/MPPositive_SongViewModel.swift @@ -75,9 +75,11 @@ class MPPositive_SongViewModel: NSObject { relatedId = song.relatedID } //检索是否收藏 + isCollection = MPPositive_CollectionSongModel.fetch(.init(format: "videoId == %@", song.videoId)).count != 0 //检索是否下载 - isDlownd = MPPositive_DownloadItemModel.fetch(.init(format: "videoId==%i", "dsadasda")).count != 0 + isDlownd = MPPositive_DownloadItemModel.fetch(.init(format: "videoId == %@", song.videoId)).count != 0 + //执行预加载 if isPloading == false { preloadAsset(resourceAsset) diff --git a/MusicPlayer/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift b/MusicPlayer/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift index 6324c6a..8298d5e 100644 --- a/MusicPlayer/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift +++ b/MusicPlayer/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift @@ -307,9 +307,9 @@ class MPPositive_PlayerViewController: MPPositive_BaseViewController, UIViewCont coverView.subtitleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.subtitle lyricsView.titleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.title lyricsView.subtitleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.subtitle - lyricsView.lyricsLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo.lyrics ?? "No Lyrics" + lyricsView.lyricsLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.lyrics ?? "No Lyrics" coverView.loadBtn.isSelected = MP_PlayerManager.shared.loadPlayer.currentVideo?.isDlownd ?? false - coverView.collectionSongBtn.isSelected = MP_PlayerManager.shared.loadPlayer.currentVideo.isCollection ?? false + coverView.collectionSongBtn.isSelected = MP_PlayerManager.shared.loadPlayer.currentVideo?.isCollection ?? false } //MARK: - 通知 //播放器音乐刷新 diff --git a/MusicPlayer/MP/MPPositive/Views/Player/MPPositive_PlayerCoverView.swift b/MusicPlayer/MP/MPPositive/Views/Player/MPPositive_PlayerCoverView.swift index 4628484..4543ef0 100644 --- a/MusicPlayer/MP/MPPositive/Views/Player/MPPositive_PlayerCoverView.swift +++ b/MusicPlayer/MP/MPPositive/Views/Player/MPPositive_PlayerCoverView.swift @@ -6,6 +6,7 @@ // import UIKit +import SVProgressHUD //B面播放器封面View(封面,标题,副标题,收藏,下载,进度条View) class MPPositive_PlayerCoverView: UIView { //下载进度条View @@ -148,51 +149,83 @@ class MPPositive_PlayerCoverView: UIView { } //切换当前列表收藏状态 @objc private func collectionSwitchClick(_ sender:UIButton) { - + if self.collectionSongBtn.isSelected == true{ + self.collectionSongBtn.isSelected = false + if MP_PlayerManager.shared.loadPlayer.currentVideo != nil{ + MPPositive_CollectionSongModel.fetch(.init(format: "videoId == %@", MP_PlayerManager.shared.loadPlayer.currentVideo.song.videoId)).forEach { i in + if i.videoId == MP_PlayerManager.shared.loadPlayer.currentVideo.song.videoId{ + MPPositive_CollectionSongModel.delete(i) + } + } + } + }else{ + self.collectionSongBtn.isSelected = true + if MP_PlayerManager.shared.loadPlayer.currentVideo != nil{ + let item = MPPositive_CollectionSongModel.create() + item.title = MP_PlayerManager.shared.loadPlayer.currentVideo.title + item.videoId = MP_PlayerManager.shared.loadPlayer.currentVideo.song.videoId + item.subtitle = MP_PlayerManager.shared.loadPlayer.currentVideo.subtitle + item.coverImage = MP_PlayerManager.shared.loadPlayer.currentVideo.coverUrl + MPPositive_CollectionSongModel.save() + } + } } //点击下载 @objc private func loadActionClick(_ sender:UIButton) { - // 添加圆形进度条到下载按钮位置 - addCircularProgressBar(over: sender) - - self.loadBtn.setBackgroundImage(UIImage(named: ""), for: .normal) - self.loadBtn.setImage(UIImage(named: "download"), for: .normal) - //下载,检索当前播放音乐是否存在 - if MP_PlayerManager.shared.loadPlayer.currentVideo != nil { + if MP_PlayerManager.shared.loadPlayer.currentVideo?.isDlownd == false{ + + // 添加圆形进度条到下载按钮位置 + addCircularProgressBar(over: sender) - // 下载视频 - if let currentVideo = MP_PlayerManager.shared.loadPlayer.currentVideo, let videoURLString = currentVideo.song.resourceUrls?.first, let videoURL = URL(string: videoURLString) { - let videoId = currentVideo.song.videoId ?? "default_video_id" - DownloadManager.shared.downloadVideo(from: videoURL, videoId: videoId, progressView: loadView, completion: { [weak self] result in - switch result { - case .success(let fileURL): - let item = MPPositive_DownloadItemModel.create() - item.resourcePath = "\(fileURL)" - item.coverImage = URL(string: MP_PlayerManager.shared.loadPlayer.currentVideo.song.coverUrls!.first!) - item.reviewImage = URL(string: MP_PlayerManager.shared.loadPlayer.currentVideo.song.reviewUrls!.first!) - item.title = MP_PlayerManager.shared.loadPlayer.currentVideo.song.title - item.longBylineText = MP_PlayerManager.shared.loadPlayer.currentVideo.song.longBylineText - item.lengthText = MP_PlayerManager.shared.loadPlayer.currentVideo.song.lengthText - item.shortBylineText = MP_PlayerManager.shared.loadPlayer.currentVideo.song.shortBylineText - item.lyrics = MP_PlayerManager.shared.loadPlayer.currentVideo.lyrics - item.videoId = MP_PlayerManager.shared.loadPlayer.currentVideo.song.videoId - item.relatedID = MP_PlayerManager.shared.loadPlayer.currentVideo.song.relatedID - - MPPositive_DownloadItemModel.save() - DispatchQueue.main.async { - self?.loadBtn.setBackgroundImage(UIImage(named: "Song_Loaded'logo"), for: .normal) - self?.loadBtn.setImage(UIImage(named: ""), for: .normal) + self.loadBtn.setBackgroundImage(UIImage(named: ""), for: .normal) + self.loadBtn.setImage(UIImage(named: "download"), for: .normal) + + //下载,检索当前播放音乐是否存在 + if MP_PlayerManager.shared.loadPlayer.currentVideo != nil { + + // 下载视频 + if let currentVideo = MP_PlayerManager.shared.loadPlayer.currentVideo, let videoURLString = currentVideo.song.resourceUrls?.first, let videoURL = URL(string: videoURLString) { + let videoId = currentVideo.song.videoId ?? "default_video_id" + DownloadManager.shared.downloadVideo(from: videoURL, videoId: videoId, progressView: loadView, completion: { [weak self] result in + switch result { + case .success(let fileURL): + let item = MPPositive_DownloadItemModel.create() + item.resourcePath = "\(fileURL)" + item.coverImage = URL(string: MP_PlayerManager.shared.loadPlayer.currentVideo.song.coverUrls!.first!) + item.reviewImage = URL(string: MP_PlayerManager.shared.loadPlayer.currentVideo.song.reviewUrls!.first!) + item.title = MP_PlayerManager.shared.loadPlayer.currentVideo.song.title + item.longBylineText = MP_PlayerManager.shared.loadPlayer.currentVideo.song.longBylineText + item.lengthText = MP_PlayerManager.shared.loadPlayer.currentVideo.song.lengthText + item.shortBylineText = MP_PlayerManager.shared.loadPlayer.currentVideo.song.shortBylineText + item.lyrics = MP_PlayerManager.shared.loadPlayer.currentVideo.lyrics + item.videoId = MP_PlayerManager.shared.loadPlayer.currentVideo.song.videoId + item.relatedID = MP_PlayerManager.shared.loadPlayer.currentVideo.song.relatedID + + MPPositive_DownloadItemModel.save() + DispatchQueue.main.async { + self?.loadBtn.setBackgroundImage(UIImage(named: "Song_Loaded'logo"), for: .normal) + self?.loadBtn.setImage(UIImage(named: ""), for: .normal) + } + + self?.loadView.removeFromSuperview() + case .failure(let error): + print("Download failed with error: \(error)") + self?.loadView.removeFromSuperview() + DispatchQueue.main.async { + self?.loadBtn.setBackgroundImage(UIImage(named: "Song_Unload'logo"), for: .normal) + self?.loadBtn.setImage(UIImage(named: ""), for: .normal) + } + SVProgressHUD.showInfo(withStatus: "下载超时请重新下载") + DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { + SVProgressHUD.dismiss() + } } - - self?.loadView.removeFromSuperview() - case .failure(let error): - print("Download failed with error: \(error)") - self?.loadView.removeFromSuperview() - } - }) - } + }) + } + } } + } // 添加圆形进度条 private func addCircularProgressBar(over button: UIButton) {