You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
//
|
|
// MusicRequest.swift
|
|
// cloudmusic
|
|
//
|
|
// Created by Qihua Pan on 2020/7/3.
|
|
// Copyright © 2020 Qihua Pan. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import Alamofire
|
|
import SwiftyJSON
|
|
//音乐接口请求
|
|
class MusicRequest: NSObject {
|
|
|
|
//接口服务端地址
|
|
private static let request_host = "192.168.50.73:5000"
|
|
|
|
private static func request(url:String,callback:@escaping (JSON?) -> Void){
|
|
debugPrint("搜索请求接口地址:\(url)")
|
|
AF.request(url).responseJSON { response in
|
|
debugPrint(response)
|
|
|
|
if let data=response.data,let json = try? JSON(data: data){
|
|
callback(json)
|
|
}else{
|
|
callback(nil)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//关键词搜索歌曲
|
|
static func search(keyword:String,callback:@escaping (JSON?) -> Void ){
|
|
let url="http://\(String(describing: request_host))/search?keywords=\(keyword)"
|
|
request(url: url, callback: callback)
|
|
}
|
|
|
|
//获取音乐url
|
|
static func searchUrl(id:Int32,callback:@escaping (JSON?) -> Void ){
|
|
let url="http://\(String(describing: request_host))/song/url?id=\(id)"
|
|
request(url: url, callback: callback)
|
|
}
|
|
|
|
//
|
|
static func saveMusic(url:String,music:Music,callback:@escaping (Progress,URL) -> Void){
|
|
let documentsURL = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask)[0]
|
|
let fileURL = documentsURL.appendingPathComponent("\(music.id).mp3")
|
|
let destination: DownloadRequest.Destination = { _, _ in
|
|
return (fileURL, [])
|
|
}
|
|
AF.download(url, to: destination)
|
|
.downloadProgress { progress in
|
|
callback(progress,fileURL)
|
|
}
|
|
.responseData { response in
|
|
if let data=response.value{
|
|
debugPrint("文件体积:\(data.count/(1024*1024))MB")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|