package io.shockah.skylark.youtube;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.shockah.skylark.urlannouncer.URLAnnouncer;
import io.shockah.skylark.util.Box;
public class YouTubeURLAnnouncer extends URLAnnouncer {
public static final Pattern URL1_PATTERN = Pattern.compile("https?\\://youtube\\.com/watch.*[\\?&]v=([^\\?]+).*");
public static final Pattern URL2_PATTERN = Pattern.compile("https?\\://youtu\\.be/(.*)");
public final YouTubePlugin plugin;
public YouTubeURLAnnouncer(YouTubePlugin plugin) {
this.plugin = plugin;
}
@Override
public String getTitleForURL(String url) {
Box<Boolean> box = new Box<>();
String videoId = videoIDFromURL(url, box);
if (videoId == null)
return null;
return plugin.getVideo(videoId).format(box.value);
}
public String videoIDFromURL(String url) {
return videoIDFromURL(url, null);
}
public String videoIDFromURL(String url, Box<Boolean> includeShortUrl) {
Matcher m;
if (includeShortUrl != null)
includeShortUrl.value = false;
m = URL1_PATTERN.matcher(url);
if (m.find()) {
includeShortUrl.value = true;
return m.group(1);
}
m = URL2_PATTERN.matcher(url);
if (m.find())
return m.group(1);
return null;
}
}