- J-all
Swift - YouTube動画のあれこれ②
こんにちは。J-allエンジニアの中澤です。
前回に続いて、今回もSwiftでのiOSアプリケーションの開発を行う際に役立つものを紹介していきます。
今回は、YouTube上にアップロードさている動画の情報をTTTAttributedLabelに反映させる方法を紹介します。
まずは、https://www.d2c-smile.com/201611018039
こちらの方の方法を参考にしてYouTube APIを導入します。導入すると得られるAPIキーというものがとても重要となりますので忘れずにメモするようにお願いします。
今回は動画のタイトルと詳細を抽出してみましょう。
podfileに
pod "TTTAttributedLabel"
pod "Alamofire"
を書き加えインストールします。忘れずに2つともswiftファイルにimportしておきましょう。
そしてswiftファイルのクラス定義部分に
class ViewController: UIViewController, TTTAttributedLabelDelegate {
を書き加え、
@IBOutlet weak var movie_title: TTTAttributedLabel!
@IBOutlet weak var movie_description: TTTAttributedLabel!
の2つを用意します。これらは、それぞれ動画のタイトルと詳細を印字してくれるUILabelとなります。
次に、
var items: [JSON] = []
var urlStr = "https://www.googleapis.com/youtube/v3/videos?id=ここに動画のIDを入れる&key=ここに自分のAPIキーを入れる&part=snippet,contentDetails,statistics,status"
Alamofire.request(urlStr).responseJSON{ response in
guard let object = response.result.value else {
return
}
let json = JSON(object)
self.movie_description.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue
self.movie_description.delegate = self
self.movie_title.numberOfLines = 0 \\ "0"を代入することで行数に制限がなくなる
self.movie_description.numberOfLines = 0 \\ "0"を代入することで行数に制限がなくなる
self.movie_title.lineBreakMode = .byWordWrapping
self.movie_description.lineBreakMode = .byWordWrapping
self.movie_title.text = json["items"][0]["snippet"]["title"].string
self.movie_description.text = json["items"][0]["snippet"]["description"].string
\\ "urlStr"より得られるjsonファイルの中身によってはこれら2つを変更しないと表示されないことがある。
}
func attributedLabel(_ label: TTTAttributedLabel!, didSelectLinkWith url: URL!) {
UIApplication.shared.openURL(url)
}
}
これらを追加することで書き込んだIDを持つYouTube動画のタイトルや詳細を自動的に反映させることができます。jsonファイルの配列の中身を確認して、"self.movie_title.text" や "self.movie_description.text" の代入する配列を変更すればタイトルや詳細以外のデータを得ることもできるのでぜひお試しください。
ちなみに、最後に定義している "attributedLabel" は動画の詳細にURLがはられていた場合を考慮して、自動的にリンク化してもらうために導入しています。なので、この部分がいらない場合は "TTTAttributedLabel" 関連のコードはすべて不要です!