import groovy.json.JsonSlurper
import org.serviio.library.metadata.*
import org.serviio.library.online.*
import org.serviio.util.*
/********************************************************************
* einthusan plugin for Serviio
*
* @author
*
* URL to use as video webresource: http://www.einthusan.com/movies/index.php?lang=tamil
* URL to use as video webresource: http://www.einthusan.com/movies/index.php?lang=telugu
* URL to use as video webresource: http://www.einthusan.com/movies/index.php?lang=hindi
* URL to use as video webresource: http://www.einthusan.com/movies/index.php?lang=malayalam
* URL to use as video webresource: http://www.einthusan.com/movies/index.php?lang=hindi&organize=Year&filtered=2013&org_type=Year
* URL to use as video webresource: http://www.einthusan.com/movies/index.php?lang=tamil&organize=Year&filtered=2013&org_type=Year
*
* Version:
* V1.2: - May 13, 2013
*
********************************************************************/
class einthusan extends WebResourceUrlExtractor {
final VALID_RESOURCE_URL = '(.*?)www.einthusan.com(.*?)movies(.*?)(index|watch).php(.*?)'
final TITLE = 'EINTHUSAN.COM'
final BASE_URL = ''
final MOVIE_PAGE_EXTRACTOR = '
0)
{
return true
}
else
{
return false
}
}
/**/
void write_to_log(
String text
) {
log(TITLE + ' - ' + text)
}
/**/
public int getVersion() {
return 1.2
}
Boolean URLExists(URL fileURL){
if(((HttpURLConnection) fileURL.openConnection()).getResponseCode() == 404){
return false
}
return true
}
WebResourceContainer extractItems(URL resourceURL, int maxItemsToRetrieve) {
List items = []
log(String.format("extractItems - %s", resourceURL))
if (URLExists(resourceURL) == false) {
write_to_log("Invalid Resource URL")
return null
}
if (resourceURL.toString().find('&') != '&')
{
resourceURL = (resourceURL.toString() + "&organize=Activity&filtered=RecentlyPosted&org_type=Activity").toURL()
}
def LINK_PAGE_EXTRACTOR = resourceURL.toString()[resourceURL.toString().indexOf('?') + 1..resourceURL.toString().length() - 1] + '&page=(.*?)"'
def resource_text = openURL(resourceURL,
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.1"
)
resource_text = resource_text.replaceAll("\n","")
resource_text = resource_text.replaceAll("\r","")
def page_count_var = resource_text =~ LINK_PAGE_EXTRACTOR
def page_count = page_count_var.count
log(String.format("extractItems page_count - %d", page_count))
log(String.format("extractItems page_count_var - %d", page_count_var.count))
if (page_count > 5)
{
page_count = 5
}
for (page_in in 1..page_count)
{
def resourceURL1 = (resourceURL.toString() + "&page="+ page_in).toURL()
log(String.format("extractItems resourceURL1 - %s", resourceURL1.toString()))
resource_text = openURL(resourceURL1,
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.1"
)
resource_text = resource_text.replaceAll("\n","")
resource_text = resource_text.replaceAll("\r","")
def movie_count_var = resource_text =~ MOVIE_PAGE_EXTRACTOR
def movie_count = movie_count_var.count
for (movie_in in 1..movie_count)
{
def resourceURL2 = ("http://www.einthusan.com" + movie_count_var[movie_in - 1][1].toString() ).toURL()
log(String.format("extractItems resourceURL2 - %s", resourceURL2.toString()))
resource_text = openURL(resourceURL2,
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.1"
)
resource_text = resource_text.replaceAll("\n","")
resource_text = resource_text.replaceAll("\r","")
def channel_link_matcher = resource_text =~ CHANNEL_LINK_EXTRACTOR
def channel_title_matcher = resource_text =~ CHANNEL_TITLE_EXTRACTOR
def thumb_link_matcher = resource_text =~ THUMB_LINK_EXTRACTOR
def channel_count = channel_link_matcher.count
def channel_url = channel_link_matcher[0][1]
def channel_title = channel_title_matcher[0][1].substring(0,channel_title_matcher[0][1].lastIndexOf(" "))
def channel_image = "http://www.einthusan.com" + thumb_link_matcher[0][2].substring(2)
def channel_cache_key = channel_title
items << new WebResourceItem(title: channel_title,
additionalInfo: [channelURL: channel_url,
thumbnailURL: channel_image,
cacheKey: TITLE + '_' + channel_cache_key
])
}
}
log(String.format("extractItems b4 return items.size()=[%d]\n", items.size()))
return new WebResourceContainer(title: TITLE, items: items)
}
protected ContentURLContainer extractUrl(WebResourceItem webResourceItem, PreferredQuality preferredQuality) {
log(String.format("extractUrl "))
if(log.isDebugEnabled()){
log(String.format("Staring video URL extraction for %s",webResourceItem.getAdditionalInfo().get("videoPageURL")))
}
try{
return new ContentURLContainer(contentUrl: webResourceItem.getAdditionalInfo().get("channelURL"),
thumbnailUrl: webResourceItem.getAdditionalInfo().get("thumbnailURL"),
expiresImmediately: false,
cacheKey : webResourceItem.getAdditionalInfo().get("cacheKey"),
live: false
)
}catch (IndexOutOfBoundsException e){
log.error(String.format("%s , Filed to create resource item for URL: %s",getExtractorName(), webResourceItem.getAdditionalInfo().get("videoPageURL")), log.isDebugEnabled()? e:null)
}
return null
}
static void main(args) {
def extractor = new einthusan()
//WebResourceContainer container = extractor.extractItems( new URL("http://www.einthusan.com/movies/index.php?lang=tamil"), 5)
WebResourceContainer container = extractor.extractItems( new URL("http://www.einthusan.com/movies/index.php?lang=telugu&organize=Alphabetical&filtered=D&org_type=Alphabetical"), 5)
/**/
container.getItems().each {
ContentURLContainer result = extractor.extractUrl(it, PreferredQuality.HIGH)
println result
}
/**/
}
}