diff --git a/kplayer/core/NetworkManager.swift b/kplayer/core/NetworkManager.swift index 1a56712..62c093b 100644 --- a/kplayer/core/NetworkManager.swift +++ b/kplayer/core/NetworkManager.swift @@ -483,7 +483,7 @@ class NetworkManager { } } - func downloadToServer(path: String, url: URL, result: @escaping (String) -> ()) { + func downloadToServer(path: String, url: URL, cookies: String?, result: @escaping (String) -> ()) { let date = Date() let format = DateFormatter() format.dateFormat = "yyyyMMdd_HHmmss" @@ -500,7 +500,12 @@ class NetworkManager { name = path + "/" + url.lastPathComponent } - let queryItems = [URLQueryItem(name: "url", value: url.absoluteString), URLQueryItem(name: "name", value: name)] + var queryItems = [URLQueryItem(name: "url", value: url.absoluteString), + URLQueryItem(name: "name", value: name)] + + if let c = cookies { + queryItems.append(URLQueryItem(name: "cookies", value: c)) + } var urlComps = URLComponents(string: nodeurl + cmd)! urlComps.queryItems = queryItems diff --git a/kplayer/detail/BrowserController.swift b/kplayer/detail/BrowserController.swift index 7863b5a..6cd60d4 100644 --- a/kplayer/detail/BrowserController.swift +++ b/kplayer/detail/BrowserController.swift @@ -219,7 +219,7 @@ class BrowserController : UIViewController, ItemController, WebBrowserDelegate, let site = String(hostcomp[hostcomp.count-2]) if ((url2.pathExtension == "mp4" || url2.pathExtension == "m3u8") && dl) { - NetworkManager.sharedInstance.downloadToServer(path: site, url: url2, result: { + NetworkManager.sharedInstance.downloadToServer(path: site, url: url2, cookies: nil, result: { (r) in print(r) self.showAlert(title: "download ready", message: r) diff --git a/kplayer/master/ServerDownloadDelegate.swift b/kplayer/master/ServerDownloadDelegate.swift index 08ba1b5..f65c441 100644 --- a/kplayer/master/ServerDownloadDelegate.swift +++ b/kplayer/master/ServerDownloadDelegate.swift @@ -20,7 +20,7 @@ class ServerDownloadDelegate : DownloadDelegate { } func downloadToServer(path: String, url: URL, result: @escaping (String) -> ()) { - NetworkManager.sharedInstance.downloadToServer(path: path, url: url, result: result) + NetworkManager.sharedInstance.downloadToServer(path: path, url: url, cookies: nil, result: result) } func inProgress() -> Int { diff --git a/kplayer/server/kplayer.js b/kplayer/server/kplayer.js index 985eadb..8e4478f 100644 --- a/kplayer/server/kplayer.js +++ b/kplayer/server/kplayer.js @@ -248,7 +248,13 @@ app.get('/webdl', function (req, res) { return } - var cmd = 'wget -b -O "'+n+'" "'+p+'"' + var cmd = 'wget -b -O "'+n+'" ' + + if (req.query.cookies) { + cmd = cmd + '--header="Cookie: ' + req.query.cookies + '" ' + } + cmd = cmd + '"'+p+'"' + console.log(cmd) exec(cmd, (err, stdout, stderr) => { if (err) { diff --git a/kplayer/web/KBrowserView.swift b/kplayer/web/KBrowserView.swift index 5eb19ba..ca5c652 100644 --- a/kplayer/web/KBrowserView.swift +++ b/kplayer/web/KBrowserView.swift @@ -89,9 +89,13 @@ struct KBrowserView: View { ForEach(0..