import org.serviio.library.metadata.*
import org.serviio.library.online.*
import org.ccil.cowan.tagsoup.*
/**
 * Sweflix.to content URL extractor plugin. 
 * 
 *
 *  
 * @author Stefan Andersson
 *
 */
class Sweflix extends WebResourceUrlExtractor {

    final VALID_RESOURCE_URL = '^http://sweflix\\..*$'
        
    String getExtractorName() {
        return getClass().getName()
    }
    
    boolean extractorMatches(URL resourceUrl) {
        return resourceUrl ==~ VALID_RESOURCE_URL
    }
    
    WebResourceContainer extractItems(URL resourceUrl, int maxItemsToRetrieve) {

        def conn = resourceUrl.openConnection()
        conn.addRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)")

        def root = new XmlSlurper(new Parser()).parseText(conn.getInputStream().getText())

        def node = root.depthFirst().find {it.@class == "movieResult"}

        def items = []
        def count = 0
        def nodes = node.children()
        def i = 0

	 while (i < nodes.size()) {
             
            if (nodes[i].name() == 'a' && nodes[i].@href.text().contains("film") && (maxItemsToRetrieve == -1 || count < maxItemsToRetrieve)) {

               count++             
  
               def movie = nodes[i].@href.text().replace("film", "play")

               i++              
 
               def image = nodes[i].img.@src.text()                              
               def title = nodes[i].img.@alt.text()

               items.add(new WebResourceItem(title : title, additionalInfo : ['content' : movie, 'thumb' : image]))
   
               log("image: $image")
               log("movie: $movie")
               log("title: $title")

            }
            i++
         }
                      
        return new WebResourceContainer(title : "", items: items)

    }

    ContentURLContainer extractUrl(WebResourceItem item, PreferredQuality requestedQuality) {

        def linkUrl = "https://sweflix.to${item.additionalInfo['content']}"
        def thumbnailUrl = item.additionalInfo['thumb']

        def html = openURL(new URL(linkUrl), "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)")

        def contentUrl = html.find(/http.*?mp4/)
          
        return new ContentURLContainer(contentUrl: contentUrl, thumbnailUrl: thumbnailUrl)


    }

 }