();
additionalInfo.put("videoURL",DEFAULT_VIDEO_DOMAIN + candidate)
String title = ((pageSource=~String.format(/(?s)(.*?)<\/a>/,candidate))[0]-null)[-1].toString().trim()
items << new WebResourceItem(title: title, additionalInfo: additionalInfo)
}
}
}
return items;
}
@Override
protected ContentURLContainer extractUrl(WebResourceItem webResourceItem, PreferredQuality preferredQuality) {
URL videoPageURL = new URL(webResourceItem.getAdditionalInfo().get("videoURL"))
log(String.format("[%s] Staring video URL extraction for %s",getExtractorName(),videoPageURL))
ContentURLContainer contentURLContainer = new ContentURLContainer();
try{
fillURLContainer(videoPageURL,contentURLContainer)
return contentURLContainer
}catch (IndexOutOfBoundsException e){
log.error(String.format("%s , Filed to create resource item for URL: %s",getExtractorName(), it), log.isDebugEnabled()? e:null)
}
return null
}
void fillURLContainer (URL url,ContentURLContainer contentURLContainer) {
String pageSource = openURL(url, USER_AGENT)
contentURLContainer.setThumbnailUrl(((pageSource=~THUMBNAIL_REGEX)[0]-null)[-1].toString().trim())
contentURLContainer.setContentUrl(new URLDecoder().decode(((pageSource=~VIDEO_REGEX)[0]-null)[-1].toString().trim()))
}
@Override
boolean extractorMatches(URL url) {
return url ==~ VALID_WEB_RESOURCE_URL
}
@Override
String getExtractorName() {
return getClass().getName()
}
@Override
int getVersion() {
return 3
}
static void main(args) {
def TestUrl = new URL("http://www.xvideos.com/c/5/teen-13")
XVIDEOS extractor = new XVIDEOS()
WebResourceContainer container = extractor.extractItems(TestUrl, -1);
println "PluginName : " + extractor.getExtractorName();
println "TestMatch : " + extractor.extractorMatches(TestUrl);
container.getItems().each {
println "URL : " + extractor.extractUrl(it, PreferredQuality.HIGH)
}
}
}