Skip to content

Instantly share code, notes, and snippets.

@logbasex
Last active May 6, 2020 09:57
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 logbasex/0ba3d35d34aa59650357279c66a8da05 to your computer and use it in GitHub Desktop.
Save logbasex/0ba3d35d34aa59650357279c66a8da05 to your computer and use it in GitHub Desktop.
/**
* Youtube has many different types of URL.
* https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured
* https://www.youtube.com/watch?v=DFYRQ_zQ-gk
* http://www.youtube.com/watch?v=DFYRQ_zQ-gk
* //www.youtube.com/watch?v=DFYRQ_zQ-gk
* www.youtube.com/watch?v=DFYRQ_zQ-gk
* https://youtube.com/watch?v=DFYRQ_zQ-gk
* http://youtube.com/watch?v=DFYRQ_zQ-gk
* //youtube.com/watch?v=DFYRQ_zQ-gk
* youtube.com/watch?v=DFYRQ_zQ-gk
*
* https://m.youtube.com/watch?v=DFYRQ_zQ-gk
* http://m.youtube.com/watch?v=DFYRQ_zQ-gk
* //m.youtube.com/watch?v=DFYRQ_zQ-gk
* m.youtube.com/watch?v=DFYRQ_zQ-gk
*
* https://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
* http://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
* //www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
* www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
* youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
*
* https://www.youtube.com/embed/DFYRQ_zQ-gk?autoplay=1
* https://www.youtube.com/embed/DFYRQ_zQ-gk
* http://www.youtube.com/embed/DFYRQ_zQ-gk
* //www.youtube.com/embed/DFYRQ_zQ-gk
* www.youtube.com/embed/DFYRQ_zQ-gk
* https://youtube.com/embed/DFYRQ_zQ-gk
* http://youtube.com/embed/DFYRQ_zQ-gk
* //youtube.com/embed/DFYRQ_zQ-gk
* youtube.com/embed/DFYRQ_zQ-gk
*
* https://youtu.be/DFYRQ_zQ-gk?t=120
* https://youtu.be/DFYRQ_zQ-gk
* http://youtu.be/DFYRQ_zQ-gk
* //youtu.be/DFYRQ_zQ-gk
* youtu.be/DFYRQ_zQ-gk
*
* https://www.youtube.com/HamdiKickProduction?v=DFYRQ_zQ-gk
* */
String youtubeUrlRegex = "^\n" +
"((?:https?:)?//)? #protocol\n" +
"((?:www|m)\\.)? #sub-domain\n" +
"((?:youtube\\.com|youtu.be)) #domain name\n" +
"(/(?:[\\w\\-]+\\?v=|embed/|v/)?) #path, query\n" +
"([\\w\\-]+) #video id\n" +
"(\\S+)? #fragment\n" +
"$";
/**
* Vimeo have 4 different public video links
*
* Video ID: vimeo.com/[Video ID]
* Channels: vimeo.com/channels/[Channel]/[Video ID]
* Groups: vimeo.com/groups/[Group]/[Video ID]
* Player: player.vimeo.com/video/[Video ID]
//https://developer.vimeo.com/api/oembed/videos
* */
String vimeoUrlRegex = "^\n" +
"((?:https?:)?//)? #protocol\n" +
"(www\\.|player\\.)? #sub-domain\n" +
"(?:vimeo\\.com) #domain name\n" +
"(/(?:channels/(?:\\w+/)?|groups/([^/]*)/videos/|video/|)) #path\n" +
"(\\d+) #video id\n" +
"(?:|/\\?) #fragment\n" +
"$";
Matcher youtubeUrlMatcher = Pattern
.compile(youtubeUrlRegex, Pattern.COMMENTS | Pattern.CASE_INSENSITIVE)
.matcher(embeddedUrl);
Matcher vimeoUrlMatcher = Pattern
.compile(vimeoUrlRegex, Pattern.COMMENTS | Pattern.CASE_INSENSITIVE)
.matcher(embeddedUrl);
String videoId;
if (youtubeUrlMatcher.find()) {
videoId = youtubeUrlMatcher.group(5);
} else if (vimeoUrlMatcher.find()) {
videoId = vimeoUrlMatcher.group(5);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment