import groovy.json.JsonSlurper
import org.serviio.library.metadata.*
import org.serviio.library.online.*
import org.serviio.util.*

/**
 * WebResource extractor plugin for pixdaus.com/rss images.
 * 
 * @author jhb50
 * Version 1- Oct. 22, 2012  

 *
 * Usage:
 *  http://pixdaus.com/rss.php
 *  
*/ 

class Pixdaus extends WebResourceUrlExtractor {
	
	final VALID_FEED_URL = '^http://pixdaus\\.com/rss.php'

	String getExtractorName() {
		return 'Pixdaus'
	}

	boolean extractorMatches(URL feedUrl) {
		return feedUrl ==~ VALID_FEED_URL
	}
	
	WebResourceContainer extractItems(URL resourceUrl, int maxItems) {
	
		log("Parsing with Pixdaus V1")

		List<WebResourceItem> items = []
		def itemsAdded = 0
		String pageTitle = ""
		String pageThumb = ""
		String imageUrl = ""
		String imageTitle = ""
		String thumbUrl = ""
		
		String html = resourceUrl.getText()
		
		def titleMatcher = html =~ '(?s)<title>(.*?)</title>'
		
		pageTitle = titleMatcher[0][1]
		
	    println html.count('img src=')
			
	    if (html.count('img src=') > 0 ){
	 
			
			
			def imageMatcher = html =~ '(?s)<item>.*?<title>(.*?)<.*?img.src=&quot;(.*?)&.*?'
			
			for( int i = 0; i < imageMatcher.size(); i++ ) {
				imageUrl = imageMatcher[i][2].trim()
				imageTitle = imageMatcher[i][1].trim()
				
				imageTitle = imageTitle.replaceAll("&#39;","'")
				imageTitle = imageTitle.replaceAll("&amp;","&")
				imageTitle = imageTitle.replaceAll("&quot;",'"')
				
				thumbUrl = imageMatcher[i][2].trim()
				
				
				WebResourceItem item = new WebResourceItem(title: imageTitle, additionalInfo: ['imageUrl':imageUrl,'thumbUrl':thumbUrl])
				
				items << item
				itemsAdded++
			}
		}
		return new WebResourceContainer(title: pageTitle, thumbnailUrl: pageThumb, items: items)
	}

	
	ContentURLContainer extractUrl(WebResourceItem item, PreferredQuality requestedQuality) {		
		
		String imageTitle = item.title
		String imageUrl = item.getAdditionalInfo()['imageUrl']
		String thumbnailUrl = item.getAdditionalInfo()['thumbUrl']
		
		return new ContentURLContainer(fileType: MediaFileType.IMAGE, contentUrl: imageUrl, thumbnailUrl: thumbnailUrl)
	}
	
	static void main(args) {
		Pixdaus extractor = new Pixdaus()
				
		assert extractor.extractorMatches( new URL("http://pixdaus.com/rss.php") )
		assert !extractor.extractorMatches( new URL("http://google.com/feeds/api/standardfeeds/top_rated?time=today") )
		WebResourceContainer container = extractor.extractItems( new URL("http://pixdaus.com/rss.php"), -1)    
		println container
		
		ContentURLContainer result = extractor.extractUrl(container.getItems()[1], PreferredQuality.HIGH)
		print result
	}
}
