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/View/HomeTopMenuView.swift |   49 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/XQMuse/Root/Home/View/HomeTopMenuView.swift b/XQMuse/Root/Home/View/HomeTopMenuView.swift
index d813fe2..96250c9 100644
--- a/XQMuse/Root/Home/View/HomeTopMenuView.swift
+++ b/XQMuse/Root/Home/View/HomeTopMenuView.swift
@@ -31,7 +31,7 @@
 				private var disposeBag = DisposeBag()
 				private var defaultItems = [HomeTopMenuItem]()
 				private var clouse:((HomeTopMenuItem)->Void)?
-
+    private let session = URLSession.shared
     private var aVPlayerLayer:AVPlayerLayer?
 
 				override func awakeFromNib() {
@@ -82,7 +82,9 @@
             }
 
             if let videoUrl = model.backUrl,videoUrl.isEmpty == false{
-                setPlayer(url: URL(string: videoUrl)!)
+                checkCacheAudio(from: URL(string: videoUrl)!) {[unowned self] state, url in
+                    self.setPlayer(url: url)
+                }
                 return
             }
 
@@ -109,6 +111,49 @@
         }
     }
 
+    // 下载视频并缓存,如果没有缓存,原路返回并异步下载
+    internal func checkCacheAudio(from url: URL, completion: @escaping (Bool,URL) -> Void) {
+
+        let cacheDirectory = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!.appendingPathComponent("bgVideos")
+
+        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 = session.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()
+    }
+
 				func resetItems(_ items:[HomeTopMenuItem]){
 								defaultItems.removeAll()
 								defaultItems = items

--
Gitblit v1.7.1