Skip to content

Instantly share code, notes, and snippets.

@webserveis
Last active March 28, 2022 18:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save webserveis/1a65e8fa975574c83947c57620d4f433 to your computer and use it in GitHub Desktop.
Save webserveis/1a65e8fa975574c83947c57620d4f433 to your computer and use it in GitHub Desktop.

Utils for youtube manage links

val links = listOf(
    "youtube.com/v/tFad5gHoBjY",
    "youtube.com/vi/tFad5gHoBjY",
    "youtube.com/?v=tFad5gHoBjY",
    "youtube.com/?vi=tFad5gHoBjY",
    "youtube.com/watch?v=tFad5gHoBjY",
    "youtube.com/watch?vi=tFad5gHoBjY",
    "youtu.be/tFad5gHoBjY",
    "http://youtu.be/qokEYBNWA_0?t=30m26s",
    "youtube.com/v/tFad5gHoBjY",
    "youtube.com/vi/tFad5gHoBjY",
    "youtube.com/?v=tFad5gHoBjY",
    "youtube.com/?vi=tFad5gHoBjY",
    "youtube.com/watch?v=tFad5gHoBjY",
    "youtube.com/watch?vi=tFad5gHoBjY",
    "youtu.be/tFad5gHoBjY",
    "youtube.com/embed/tFad5gHoBjY",
    "http://youtube.com/v/tFad5gHoBjY",
    "http://www.youtube.com/v/tFad5gHoBjY",
    "https://www.youtube.com/v/tFad5gHoBjY",
    "youtube.com/watch?v=tFad5gHoBjY&wtv=wtv",
    "http://www.youtube.com/watch?dev=inprogress&v=tFad5gHoBjY&feature=related",
    "youtube.com/watch?v=7HCZvhRAk-M"
)

/*links.forEach {
    println(it)
    println(YoutubeUtils.getYoutubeId(it))
}*/

val testStr = "Nuevo video kpop youtube.com/watch?v=xGr53sCo62c&list=RDxGr53sCo62c&index=1 y  mi blog https://wordpress.com/post/dev4phones.wordpress.com/3389 otro video de youtube https://www.youtube.com/watch?v=Ed6N7RPiqKU"
val links2 = YoutubeUtils.getYoutubeId(testStr)
Log.d(TAG, "alllinks: " + links2)

links2.forEach {
    Log.d(TAG, "onCreate: " + YoutubeUtils.buildYoutubeLinkDetail(it))
}
import android.util.Patterns
import java.util.regex.Pattern
object YoutubeUtils {
private fun extractYoutubeId(url: String): String? {
val pattern = "([/|?|&]vi?[/|=]|youtu.be/|embed/)([a-zA-Z0-9_-]+)".toRegex()
return pattern.find(url)?.groupValues?.last()
}
fun getYoutubeId(input: String): List<String> {
val links = getHyperlinksFromText(input)
val result: MutableList<String> = ArrayList()
links.forEach {
val vId: String? = extractYoutubeId(it)
vId?.let {
result.add(vId)
}
}
return result.toList()
}
private fun getHyperlinksFromText(input: String): List<String> {
val result: MutableList<String> = ArrayList()
val words = input.split("\\s+".toRegex()).toTypedArray()
val pattern: Pattern = Patterns.WEB_URL
for (word in words) {
if (pattern.matcher(word).find()) {
result.add(
if (!word.lowercase().contains("http://") && !word.lowercase().contains("https://")) {
"https://$word"
} else word
)
}
}
return result
}
fun buildYoutubeLink(vId: String): String {
return "https://www.youtube.com/watch?v=$vId"
}
fun buildYoutubeLinkDetail(vId: String) : String {
val url = buildYoutubeLink(vId)
return "http://www.youtube.com/oembed?url=$url&format=json"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment