// // SPTVPlayerListViewController.swift // ShortPlay // // Created by 曾觉新 on 2025/4/10. // import UIKit class SPTVPlayerListViewController: SPPlayerListViewController { override var PlayerCellClass: SPPlayerListCell.Type { return SPTVPlayerListCell.self } override var contentSize: CGSize { return CGSize(width: kSPScreenWidth, height: kSPScreenHeight) } var videoId: String? var shortPlayId: String? private var detailModel: SPVideoDetailModel? override func viewDidLoad() { super.viewDidLoad() self.autoNextEpisode = true self.dataSource = self requestDetailData() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(true, animated: true) } override func play() { super.play() if let _ = self.viewModel.currentPlayer?.model as? SPVideoDetailModel, let videoInfo = self.viewModel.currentPlayer?.videoInfo { SPVideoAPI.requestRequestVideoPlayHistory(videoId: videoInfo.short_play_video_id ?? "", shortPlayId: videoInfo.short_play_id ?? "") } } } //MARK: -------------- SPPlayerListViewControllerDataSource -------------- extension SPTVPlayerListViewController: SPPlayerListViewControllerDataSource { func sp_playerListViewController(_ viewController: SPPlayerListViewController, _ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath, oldCell: UICollectionViewCell) -> UICollectionViewCell { if let cell = oldCell as? SPPlayerListCell { cell.model = detailModel cell.videoInfo = detailModel?.episodeList?[indexPath.row] cell.isLoop = false } return oldCell } func sp_playerListViewController(_ viewController: SPPlayerListViewController, _ collectionView: UICollectionView, numberOfItemsInSection section: Int, oldNumber: Int) -> Int { return detailModel?.episodeList?.count ?? 0 } } extension SPTVPlayerListViewController { private func requestDetailData() { guard let shortPlayId = self.shortPlayId else { return } SPVideoAPI.requestVideoDetail(videoId: videoId, shortPlayId: shortPlayId) { [weak self] model in guard let self = self else { return } if let model = model { self.detailModel = model self.reloadData() self.play() } } } }