YoutubeのvideoIDからサムネイルの画像URLを取得する

はじめに

iOSでYoutubeの動画を再生する場合youtube-ios-player-helperを使うことになりますが、インサイン再生を行う場合で小さな領域に表示させておくと再生前にサムネイルが綺麗に表示できないことがよくあるのでYoutubeのサムネイルURLを取得できるようなenumを作ってみました。

コード

enum YoutubeThumbnailType {
    case `default`
    case typeOne
    case typeTwo
    case typeThree
    case mqdefault
    case hqdefault
    case sddefault
    case maxresdefault
    
    func convertURL(id: String) -> URL {
        switch self {
        case .default: // 120 × 90
            return URL(string: "https://i.ytimg.com/vi/\(id)/default.jpg")!
        case .typeOne: // 120 × 90
            return URL(string: "https://i.ytimg.com/vi/\(id)/1.jpg")!
        case .typeTwo: // 120 × 90
            return URL(string: "https://i.ytimg.com/vi/\(id)/2.jpg")!
        case .typeThree: // 120 × 90
            return URL(string: "https://i.ytimg.com/vi/\(id)/3.jpg")!
        case .mqdefault: // 320 × 180
            return URL(string: "https://i.ytimg.com/vi/\(id)/mqdefault.jpg")!
        case .hqdefault: // 480 × 360
            return URL(string: "https://i.ytimg.com/vi/\(id)/hqdefault.jpg")!
        case .sddefault: // 640 × 480
            return URL(string: "https://i.ytimg.com/vi/\(id)/sddefault.jpg")!
        case .maxresdefault: // 1920x1080
            return URL(string: "https://i.ytimg.com/vi/\(id)/maxresdefault.jpg")!
        }
    }
}

こんな感じでvideoIDを指定することでサムネイルのURLが返ってきます

YoutubeThumbnailType.maxresdefault.convertURL(id: "xxxxx")

参考文献

YoutubeサムネイルURL取得

Youtube動画からサムネイル画像を取得する方法