对网络请求内容的一次优化
This commit is contained in:
parent
97297c7c55
commit
e37d80fbd3
@ -66,7 +66,6 @@ class MP_LunchViewController: UIViewController {
|
||||
progressView.setProgress(value)
|
||||
}
|
||||
}else {
|
||||
print("进度已满")
|
||||
// DispatchQueue.main.async {
|
||||
// [weak self] in
|
||||
// guard let self = self else {return}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="22757" systemVersion="23E224" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
|
||||
<entity name="MPPositive_CollectionArtistModel" representedClassName="MPPositive_CollectionArtistModel" syncable="YES" codeGenerationType="class">
|
||||
<entity name="MPPositive_CollectionArtistModel" representedClassName="MPPositive_CollectionArtistModel" syncable="YES">
|
||||
<attribute name="artistId" optional="YES" attributeType="String"/>
|
||||
<attribute name="coverImage" optional="YES" attributeType="URI"/>
|
||||
<attribute name="subtitle" optional="YES" attributeType="String"/>
|
||||
|
||||
@ -17,6 +17,9 @@ typealias ListRequestResultBlock = (_ list:MPPositive_ListAlbumListViewModel) ->
|
||||
class MP_NetWorkManager: NSObject {
|
||||
//单例工具
|
||||
static let shared = MP_NetWorkManager()
|
||||
//MARK: - 网络请求会话
|
||||
///会话实例
|
||||
private let MPSession = Alamofire.Session(interceptor: MP_CustomRetrier())
|
||||
//MARK: - API接口
|
||||
///域名链接
|
||||
private let header:String = "https://music.youtube.com"
|
||||
@ -129,6 +132,25 @@ class MP_NetWorkManager: NSObject {
|
||||
let queue = DispatchQueue(label: "MPNetWorkManager")
|
||||
monitor.start(queue: queue)
|
||||
}
|
||||
///网络请求检测
|
||||
private func requestStatusToYouTube(_ isAilable:@escaping(Bool) -> Void) {
|
||||
//设置一个节点
|
||||
let reachabilityManager = NetworkReachabilityManager(host: "https://music.youtube.com/")
|
||||
//通过ping节点确认是否能执行网络请求
|
||||
reachabilityManager?.startListening(onUpdatePerforming: { status in
|
||||
switch status {
|
||||
case .unknown://未知状况
|
||||
isAilable(false)
|
||||
print("网络情况未知")
|
||||
case .notReachable://网络不可用
|
||||
isAilable(false)
|
||||
print("网络不可用")
|
||||
case .reachable(.ethernetOrWiFi), .reachable(.cellular)://网络可用,且做出了分类
|
||||
//网络可用
|
||||
isAilable(true)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
//MARK: - API请求
|
||||
extension MP_NetWorkManager {
|
||||
@ -167,16 +189,19 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostHomeBrowse(url, parameters: parameters)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostHomeBrowse(url, parameters: parameters)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//请求首页预览内容(执行多次)
|
||||
private func requestPostHomeBrowse(_ url:URL, parameters:Parameters) {
|
||||
//发送post请求,并将结果转为RootBrowses
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonBrowses.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonBrowses.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
if value.responseContext?.visitorData != nil {
|
||||
@ -230,14 +255,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostAlbumOrList(url, parameters: parameters) { results in
|
||||
comletion(results)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostAlbumOrList(url, parameters: parameters) { results in
|
||||
comletion(results)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求列表/专辑数据
|
||||
private func requestPostAlbumOrList(_ url:URL, parameters:Parameters, comletion:@escaping (MPPositive_ListAlbumListViewModel) -> Void) {
|
||||
//发送post请求,并将结果转为RootBrowses
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonListOrAlbum.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonListOrAlbum.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -286,14 +315,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostArtist(url, parameters: parameters) { result in
|
||||
comletion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostArtist(url, parameters: parameters) { result in
|
||||
comletion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求艺术家信息
|
||||
private func requestPostArtist(_ url:URL, parameters:Parameters, comletion:@escaping (MPPositive_ArtistViewModel) -> Void) {
|
||||
//发送post请求,并将结果转为RootBrowses
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonArtist.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonArtist.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -341,14 +374,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostArtistMore(url, parameters: parameters) { result in
|
||||
comletion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostArtistMore(url, parameters: parameters) { result in
|
||||
comletion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
///请求艺术家更多数据
|
||||
private func requestPostArtistMore(_ url:URL, parameters:Parameters, comletion:@escaping (([MPPositive_BrowseItemViewModel], String?, String?)) -> Void) {
|
||||
//发送post请求,并将结果转为RootBrowses
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonArtistMore.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonArtistMore.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -393,14 +430,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostArtistMoreContinuation(url, parameters: parameters) { result in
|
||||
comletion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostArtistMoreContinuation(url, parameters: parameters) { result in
|
||||
comletion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
///请求艺术家更多数据继续
|
||||
private func requestPostArtistMoreContinuation(_ url:URL, parameters:Parameters, comletion:@escaping (([MPPositive_BrowseItemViewModel], String?, String?)) -> Void) {
|
||||
//发送post请求,并将结果转为RootBrowses
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonArtistMore.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonArtistMore.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -446,16 +487,20 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
//发送next列表请求
|
||||
requestPostNextList(url, parameters: parameters) { listSongs in
|
||||
//成功拿到列表所有歌曲(内容尚不完善)
|
||||
completion(listSongs)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
//发送next列表请求
|
||||
self.requestPostNextList(url, parameters: parameters) { listSongs in
|
||||
//成功拿到列表所有歌曲(内容尚不完善)
|
||||
completion(listSongs)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求next列表
|
||||
private func requestPostNextList(_ url:URL, parameters:Parameters, completion:@escaping (([MPPositive_SongItemModel]) -> Void)) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonNext.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonNext.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -497,15 +542,19 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
//发送next列表歌词/相关内容请求
|
||||
requestPostNextLyricsAndRelated(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
//发送next列表歌词/相关内容请求
|
||||
self.requestPostNextLyricsAndRelated(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求请求Next歌词/相关内容
|
||||
private func requestPostNextLyricsAndRelated(_ url:URL, parameters:Parameters, completion:@escaping(((String?,String?)) -> Void)) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonNext.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonNext.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -547,14 +596,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostPlayer(url, parameters: parameters){ resourceUlrs, coverUrls in
|
||||
completion(resourceUlrs, coverUrls)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostPlayer(url, parameters: parameters){ resourceUlrs, coverUrls in
|
||||
completion(resourceUlrs, coverUrls)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求单曲/视频
|
||||
private func requestPostPlayer(_ url:URL, parameters:Parameters, completion:@escaping((([String],[String]), [String]?) -> Void)) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonPlayer.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonPlayer.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
|
||||
switch response.result {
|
||||
@ -598,14 +651,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostLyric(url, parameters: parameters) { lyrics in
|
||||
completion(lyrics)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostLyric(url, parameters: parameters) { lyrics in
|
||||
completion(lyrics)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求歌词
|
||||
private func requestPostLyric(_ url:URL, parameters:Parameters, completion:@escaping((String) -> Void)) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonLyrics.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonLyrics.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -644,14 +701,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostRecommend(url, parameters: parameters) { results in
|
||||
completion(results)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostRecommend(url, parameters: parameters) { results in
|
||||
completion(results)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
///请求相关内容
|
||||
private func requestPostRecommend(_ url:URL, parameters:Parameters, completion: @escaping ([MPPositive_RecommendListViewModel]) -> Void) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonRecommend.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonRecommend.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -696,14 +757,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostSearchSuggestions(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostSearchSuggestions(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求搜索建议
|
||||
private func requestPostSearchSuggestions(_ url:URL, parameters:Parameters, completion:@escaping(([[MPPositive_SearchSuggestionItemModel]]) -> Void)) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchSuggestions.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchSuggestions.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -746,14 +811,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostSearchPreviewResults(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostSearchPreviewResults(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求搜索预览结果
|
||||
private func requestPostSearchPreviewResults(_ url:URL, parameters:Parameters, completion:@escaping (([MPPositive_SearchResultListViewModel]) -> Void)) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchPreviewResults.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchPreviewResults.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -802,14 +871,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostSearchTypeResults(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostSearchTypeResults(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求搜索分类结果
|
||||
private func requestPostSearchTypeResults(_ url:URL, parameters:Parameters, completion:@escaping (([MPPositive_SearchResultItemViewModel], String?, String?))->Void) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchTypeResults.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchTypeResults.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -858,14 +931,18 @@ extension MP_NetWorkManager {
|
||||
]
|
||||
]
|
||||
]
|
||||
requestPostSearchTypeContinuation(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
requestStatusToYouTube { isAvailable in
|
||||
if isAvailable == true {
|
||||
self.requestPostSearchTypeContinuation(url, parameters: parameters) { result in
|
||||
completion(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//请求搜索分类继续结果
|
||||
private func requestPostSearchTypeContinuation(_ url:URL, parameters:Parameters, completion:@escaping (([MPPositive_SearchResultItemViewModel], String?, String?))->Void) {
|
||||
//发送post请求
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchTypeContinuation.self) { [weak self] (response) in
|
||||
MPSession.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseDecodable(of: JsonSearchTypeContinuation.self) { [weak self] (response) in
|
||||
guard let self = self else {return}
|
||||
switch response.result {
|
||||
case .success(let value):
|
||||
@ -1674,4 +1751,33 @@ extension MP_NetWorkManager {
|
||||
return decodedString
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - 自动重试
|
||||
///重试策略类
|
||||
class MP_CustomRetrier: RequestInterceptor {
|
||||
// 尝试重试次数的最大值
|
||||
private let maximumRetryCount = 3
|
||||
// 请求与其对应的重试次数
|
||||
private var retryCounts: [String: Int] = [:]
|
||||
func retry(_ request: Alamofire.Request, for session: Alamofire.Session, dueTo error: any Error, completion: @escaping (Alamofire.RetryResult) -> Void) {
|
||||
// 根据请求的id获取当前的重试次数
|
||||
let requestID = request.id
|
||||
let currentRetryCount = retryCounts[requestID.uuidString] ?? 0
|
||||
// 判断是否需要重试,可以基于错误类型或请求状态码来决定
|
||||
if currentRetryCount < maximumRetryCount, let response = request.task?.response as? HTTPURLResponse, response.statusCode == 503 {
|
||||
// 更新请求的重试次数
|
||||
retryCounts[requestID.uuidString] = currentRetryCount + 1
|
||||
// 在1秒后重试此请求
|
||||
completion(.retryWithDelay(1))
|
||||
print("请求\(requestID.uuidString)执行重复请求")
|
||||
} else {
|
||||
// 不重试,清除此请求的重试记录
|
||||
retryCounts[requestID.uuidString] = nil
|
||||
completion(.doNotRetry)
|
||||
}
|
||||
}
|
||||
// 在请求成功完成时,清除重试计数
|
||||
func requestDidFinish(_ request: Request) {
|
||||
let requestID = request.id
|
||||
retryCounts[requestID.uuidString] = nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -406,6 +406,8 @@ class MP_PlayerManager:NSObject{
|
||||
@objc private func userSwitchCurrentVideoAction(_ sender:Notification) {
|
||||
//将播放器状态调整未播放
|
||||
playState = .Null
|
||||
//暂停播放
|
||||
player.pause()
|
||||
//优先获取传递的值
|
||||
if let video = sender.object as? MPPositive_SongViewModel {
|
||||
//切歌时移除KVO监听
|
||||
|
||||
@ -57,6 +57,8 @@ class MP_WebWork:NSObject {
|
||||
//成功获得base.js地址,进行拼接更改
|
||||
self.jsPath = self.jsPath + matchedString
|
||||
print("Current base.JavaScript path:\(self.jsPath)")
|
||||
//开始获取首页内容
|
||||
MPPositive_BrowseLoadViewModel.shared.reloadBrowseLists()
|
||||
//切换地址
|
||||
if let baseUrl = URL(string: self.jsPath) {
|
||||
let request = URLRequest(url: baseUrl)
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
import UIKit
|
||||
///b面音乐数据管理load
|
||||
class MPPositive_BrowseLoadViewModel: NSObject {
|
||||
static let shared = MPPositive_BrowseLoadViewModel()
|
||||
///预览模块数据组(通过网络请求刷新)
|
||||
var browseModuleLists:[MPPositive_BrowseModuleListViewModel] = []
|
||||
override init() {
|
||||
|
||||
@ -34,14 +34,11 @@ class MPPositive_HomeViewController: MPPositive_BaseViewController{
|
||||
return tableView
|
||||
}()
|
||||
private let MPPositive_HomeShowTableViewCellID = "MPPositive_HomeShowTableViewCell"
|
||||
private var loadViewModel:MPPositive_BrowseLoadViewModel!
|
||||
// private var loadViewModel:MPPositive_BrowseLoadViewModel!
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
setTitle("Musicoo")
|
||||
confirgue()
|
||||
loadViewModel = MPPositive_BrowseLoadViewModel()
|
||||
//开始获取预览页数据
|
||||
loadViewModel.reloadBrowseLists()
|
||||
NotificationCenter.notificationKey.add(observer: self, selector: #selector(reloadAction(_ :)), notificationName: .positive_browses_reload)
|
||||
}
|
||||
deinit {
|
||||
@ -85,14 +82,14 @@ class MPPositive_HomeViewController: MPPositive_BaseViewController{
|
||||
//MARK: - tableView
|
||||
extension MPPositive_HomeViewController: UITableViewDataSource, UITableViewDelegate {
|
||||
func numberOfSections(in tableView: UITableView) -> Int {
|
||||
return loadViewModel.browseModuleLists.count
|
||||
return MPPositive_BrowseLoadViewModel.shared.browseModuleLists.count
|
||||
}
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
return 1
|
||||
}
|
||||
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_HomeShowTableViewCellID, for: indexPath) as! MPPositive_HomeShowTableViewCell
|
||||
cell.browseViewModel = loadViewModel.browseModuleLists[indexPath.section]
|
||||
cell.browseViewModel = MPPositive_BrowseLoadViewModel.shared.browseModuleLists[indexPath.section]
|
||||
cell.showType = .init(rawValue: (indexPath.section > 4 ? 4:indexPath.section))!
|
||||
cell.requestNextBlock = {
|
||||
[weak self] (item) in
|
||||
@ -107,7 +104,6 @@ extension MPPositive_HomeViewController: UITableViewDataSource, UITableViewDeleg
|
||||
let lodaViewModel = MPPositive_PlayerLoadViewModel(listSongs, currentVideoId: item.browseItem.videoId ?? "")
|
||||
lodaViewModel.improveData(item.browseItem.videoId ?? "")
|
||||
MP_PlayerManager.shared.loadPlayer = lodaViewModel
|
||||
//判断是否
|
||||
NotificationCenter.notificationKey.post(notificationName: .pup_player_vc)
|
||||
}
|
||||
case .list:
|
||||
@ -122,7 +118,7 @@ extension MPPositive_HomeViewController: UITableViewDataSource, UITableViewDeleg
|
||||
[weak self] in
|
||||
guard let self = self else {return}
|
||||
let moreVC = MPPositive_MoreContentViewController()
|
||||
moreVC.browseModuleList = loadViewModel.browseModuleLists[indexPath.section]
|
||||
moreVC.browseModuleList = MPPositive_BrowseLoadViewModel.shared.browseModuleLists[indexPath.section]
|
||||
navigationController?.pushViewController(moreVC, animated: true)
|
||||
}
|
||||
return cell
|
||||
|
||||
@ -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: - 通知
|
||||
//播放器音乐刷新
|
||||
|
||||
Loading…
Reference in New Issue
Block a user