2016-03-23 30 views
0

kullanarak REST API üzerinden yükleme:Ayar pasajı verileri başarıyla aşağıdaki kodu kullanarak REST API aracılığıyla youtube video yükleme açabiliyorum Swift

func postVideoToYouTube(token: String, callback: Bool -> Void){ 

let headers = ["Authorization": "Bearer \(token)"] 

let path = NSBundle.mainBundle().pathForResource("video", ofType: "mp4") 
let videodata: NSData = NSData.dataWithContentsOfMappedFile(path!)! as! NSData 
upload(
    .POST, 
    "https://www.googleapis.com/upload/youtube/v3/videos?part=id", 
    headers: headers, 
    multipartFormData: { multipartFormData in 
     multipartFormData.appendBodyPart(data: videodata, name: "video", fileName: "video.mp4", mimeType: "application/octet-stream") 
    }, 
    encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .Success(let upload, _, _): 
      upload.responseJSON { request, response, error in 
       print(response) 
       callback(true) 
      } 
     case .Failure(_): 
      callback(false) 
     } 
    }) 
} 

Şimdi yukarıdaki kodunu düzenlemek istiyoruz Böylece ilk yüklemeye, özellikle title ve description'a kadar bazı snippet verilerini ayarlayabilirim.

Yukarıdaki gibi çok benzer bir alternatif Alamofire yöntemini kullanmayı denedim, yalnızca bir NSMutableURLRequest parametresini de alır. Snippet sözlüğümü hazırladım ve değiştirilebilen isteğin HTTPBody özelliği olarak ayarladım. Video yükleme işlemi hala çalışıyor, ancak snippet'in başlık ve açıklama değerlerim hala ayarlanmadı.

Videoyu youtube'a yüklerken bazı pasaj bilgilerini nasıl ayarlayabilirim?

cevap

2

olarak aşağıdaki parametre değerleri için multipartFormData bloğu (video öğesinden önce kod yerleştirmek) bir satır ekleyin: post url da = pasajı ayrılmaya değiştirilmesi gerektiğini

multipartFormData.appendBodyPart(data:"{'snippet':{'title' : 'TITLE_TEXT', 'description': 'DESCRIPTION_TEXT'}}".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"snippet", mimeType: "application/json") 

https://www.googleapis.com/upload/youtube/v3/videos?part=snippet 

yani ben pasajı verilerle Video yüklemek başardı

.POST, 
    "https://www.googleapis.com/upload/youtube/v3/videos?part=snippet", 
    headers: headers, 
    multipartFormData: { multipartFormData in 
     multipartFormData.appendBodyPart(data:"{'snippet':{'title' : 'TITLE_TEXT', 'description': 'DESCRIPTION_TEXT'}}".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"snippet", mimeType: "application/json") 
     multipartFormData.appendBodyPart(data: videodata, name: "video", fileName: "video.mp4", mimeType: "application/octet-stream") 
}, 
2

tek yol POST ve PUT çağrıları bir araya geldi. Meta verisi olmayan bir video yüklemek için POST ve video meta verilerini düzenlemek için PUT. Eğer olduğu gibi kalabilir Alamofire Sorunuza dahil ettik POST kullanıyorsanız, Şimdi

1. Enable the necessary scopes 
    -https://www.googleapis.com/auth/youtube.upload for POST 
    -https://www.googleapis.com/auth/youtube for PUT 
2. Be mindful of the URL's you use for each request 
    -https://www.googleapis.com/upload/youtube/v3/videos?part=snippet for POST 
    -https://www.googleapis.com/youtube/v3/videos?part=snippet&key=\(ios_key) for PUT 

: Bunu yapmak bir kaç şey gerektirir.

request(<#T##method: Method##Method#>, <#T##URLString: URLStringConvertible##URLStringConvertible#>, parameters: <#T##[String : AnyObject]?#>, encoding: <#T##ParameterEncoding#>, headers: <#T##[String : String]?#>) 

Bildirim parametreleri: < [Dize: AnyObject]?> Bu Snippet'inizi tanımlamak zorunda nasıl tam olan PUT kısmı için, Alamofire parametreleri geçirilecek istediği nasıl dikkatli olmak zorunda Sözlük:

let dictionaryParameters :Dictionary<String, AnyObject> = [ 
      "id" : "\(returnedId)", 
      "snippet" : dictionarySnippet, 
      ] 
:

let dictionarySnippet :Dictionary<String, AnyObject> = [ 
    "title" : "something in the way", 
    "description" : "is this finally gonna work?", 
    "tags" : ["whisky","tango","fox"], 
    "categoryId" : "1" 
] 

Ayrıca henüz başka sözlükte sizin POST yakalayabilir yükleyen video id (gönderme gerekecek

Son olarak, artık videonun meta verilerini güncellemek olacağı bir PUT isteği göndermek için hazır:

let putRequest = request(.PUT, "https://www.googleapis.com/youtube/v3/videos?part=snippet&key=\(ios_key)", parameters: dictionaryParameters, encoding: .JSON , headers: headers) 
+0

nihayet anladım sevindim bu dışarı ve gönderme için teşekkürler! – user3344977