From 09a372bc45fde16fd42257ab6f78b8deeecf720b Mon Sep 17 00:00:00 2001
From: 杨锴 <841720330@qq.com>
Date: 星期三, 16 四月 2025 16:38:05 +0800
Subject: [PATCH] fix bug

---
 XQMuse/Root/Home/VC/BackgroundVoiceVC.swift |   52 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/XQMuse/Root/Home/VC/BackgroundVoiceVC.swift b/XQMuse/Root/Home/VC/BackgroundVoiceVC.swift
index 7188235..3714435 100644
--- a/XQMuse/Root/Home/VC/BackgroundVoiceVC.swift
+++ b/XQMuse/Root/Home/VC/BackgroundVoiceVC.swift
@@ -107,9 +107,6 @@
 								v1.jq_borderColor = .white
 								v1.jq_cornerRadius = 8.5
 
-//								slider_voice.setThumbImage(v1.qmui_snapshotLayerImage(), for: .normal)
-//								slider_voice.setThumbImage(v1.qmui_snapshotLayerImage(), for: .highlighted)
-
 								collectionView.collectionViewLayout = TestLeftRightCollectionViewFlowLayout(width: JQ_ScreenW, height: 213.5)
 								collectionView.delegate = self
 								collectionView.dataSource = self
@@ -182,11 +179,11 @@
 								collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
 
         guard let URL = URL(string: model.audioFile.jq_urlEncoded()) else { return }
-
-								tempPlayer = AVPlayer(url: URL)
-//								tempPlayer?.volume = slider_voice.value
-								tempPlayer!.play()
-								isPlaying = true
+        checkCacheAudio(from: URL) {[unowned self] state, url in
+            self.tempPlayer = AVPlayer(url: url)
+            self.tempPlayer!.play()
+            self.isPlaying = true
+        }
 								collectionView.reloadData()
 				}
 
@@ -210,6 +207,45 @@
 								}
 								return cell
 				}
+
+    internal func checkCacheAudio(from url: URL, completion: @escaping (Bool,URL) -> Void) {
+
+        let cacheDirectory = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!.appendingPathComponent("BGMs")
+
+        let videoCacheUrl = cacheDirectory.appendingPathComponent(url.lastPathComponent.jq_md5String() + "." + url.pathExtension)
+
+        // 检查缓存中是否已存在文件
+        if FileManager.default.fileExists(atPath: videoCacheUrl.path) {
+            print("启用缓存")
+            completion(true,videoCacheUrl)
+            return
+        }else{
+            completion(false,url)
+            print("没有缓存:执行下载")
+        }
+
+        // 使用URLSession下载视频
+        let downloadTask = URLSession.shared.downloadTask(with: url) {
+            tempLocalUrl, response, error in
+            print("执行下载任务")
+            if let tempLocalUrl = tempLocalUrl, error == nil {
+                do {
+                    let temp = videoCacheUrl
+
+                    if !(FileManager.default.fileExists(atPath: cacheDirectory.path)){
+                        try FileManager.default.createDirectory(at: cacheDirectory, withIntermediateDirectories: true)
+                    }
+
+                    try FileManager.default.moveItem(at: tempLocalUrl, to: temp)
+                } catch let e {
+                    print("视频缓存失败:catch:\(e)")
+                }
+            } else {
+                print("视频缓存失败:\(error?.localizedDescription ?? "")")
+            }
+        }
+        downloadTask.resume()
+    }
 }
 
 extension BackgroundVoiceVC:UICollectionViewDelegateFlowLayout{

--
Gitblit v1.7.1