Last active
May 6, 2020 09:57
-
-
Save logbasex/0ba3d35d34aa59650357279c66a8da05 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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