프로그래밍/Kotlin

[Kotlin/Java] Youtube URL인지 체크, Youtube Video ID 가져오기

Lou Park 2021. 1. 8. 23:24

대세는 유튜브라~ 안드로이드 앱에서 어떤 문자열이 유튜브 URL인지 체크해야할 경우가 잦다. 유튜브는 PC에서 볼 수 있는 youtube.com과 모바일이나 공유시 볼 수 있는 youtu.be 이렇게 생긴 URL이있는데 인터넷을 긁어긁어 모든 Youtube 관련 URL에 대응할 수 있는 완벽한 정규식을 찾아냈다. 하핫 유용하게 사용하세요.

object YoutubeUtil {

    // 유튜브 섬네일 가져옴
    fun getThumbnail(url: String): String {
        val vId = getVideoId(url)
        return "https://img.youtube.com/vi/$vId/hqdefault.jpg"
    }

    fun getVideoId(url: String?): String {
        var vId = ""
        val pattern = Pattern.compile(
                "^.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/)|(?:(?:watch)?\\?v(?:i)?=|\\&v(?:i)?=))([^#\\&\\?]*).*",
                Pattern.CASE_INSENSITIVE)
        val matcher = pattern.matcher(url ?: "")
        if (matcher.matches()) {
            vId = matcher.group(1) ?: ""
        }
        return vId
    }
    // 유튜브 주소인지 판별
    fun isYoutube(url: String?): Boolean {
        return getVideoId(url).isNotEmpty()
    }
}