398 lines
18 KiB
Python
Executable File
398 lines
18 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import re
|
|
|
|
from core import scrapertools
|
|
from core.item import Item
|
|
from platformcode import config, logger
|
|
|
|
|
|
def strip_tags(value):
|
|
return re.sub(r'<[^>]*?>', '', value)
|
|
|
|
|
|
def mainlist(item):
|
|
logger.info()
|
|
user = config.get_setting("filesmonsteruser")
|
|
itemlist = []
|
|
itemlist.append(Item(channel=item.channel, action="unusualporn", title="Canal unusualporn.net",
|
|
thumbnail="http://filesmonster.biz/img/logo.png"))
|
|
itemlist.append(Item(channel=item.channel, action="files_monster", title="Canal files-monster.org",
|
|
thumbnail="http://files-monster.org/template/static/images/logo.jpg"))
|
|
itemlist.append(Item(channel=item.channel, action="filesmonster", title="Canal filesmonster.filesdl.net",
|
|
thumbnail="http://filesmonster.biz/img/logo.png"))
|
|
if user != '': itemlist.append(
|
|
Item(channel=item.channel, action="favoritos", title="Favoritos en filesmonster.com del usuario " + user,
|
|
folder=True))
|
|
|
|
return itemlist
|
|
|
|
|
|
def filesmonster(item):
|
|
logger.info()
|
|
|
|
itemlist = []
|
|
itemlist.append(Item(channel=item.channel, action="videos", title="Ultimos vídeos",
|
|
thumbnail="http://photosex.biz/imager/w_400/h_400/9f869c6cb63e12f61b58ffac2da822c9.jpg",
|
|
url="http://filesmonster.filesdl.net"))
|
|
itemlist.append(Item(channel=item.channel, action="categorias", title="Categorias",
|
|
thumbnail="http://photosex.biz/imager/w_400/h_500/e48337cd95bbb6c2c372ffa6e71441ac.jpg",
|
|
url="http://filesmonster.filesdl.net"))
|
|
itemlist.append(Item(channel=item.channel, action="search", title="Buscar en filesmonster.fliesdl.net",
|
|
url="http://filesmonster.filesdl.net/posts/search?q=%s"))
|
|
return itemlist
|
|
|
|
|
|
def unusualporn(item):
|
|
logger.info()
|
|
|
|
itemlist = []
|
|
itemlist.append(Item(channel=item.channel, action="videos_2", title="Últimos vídeos", url="http://unusualporn.net/",
|
|
thumbnail="http://photosex.biz/imager/w_400/h_500/e48337cd95bbb6c2c372ffa6e71441ac.jpg"))
|
|
itemlist.append(Item(channel=item.channel, action="categorias_2", title="Categorías", url="http://unusualporn.net/",
|
|
thumbnail="http://photosex.biz/imager/w_400/h_500/e48337cd95bbb6c2c372ffa6e71441ac.jpg"))
|
|
itemlist.append(Item(channel=item.channel, action="search", title="Buscar en unusualporn",
|
|
url="http://unusualporn.net/search/%s"))
|
|
return itemlist
|
|
|
|
|
|
def files_monster(item):
|
|
logger.info()
|
|
|
|
itemlist = []
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="videos_3", title="Últimos vídeos", url="http://www.files-monster.org/",
|
|
thumbnail="http://photosex.biz/imager/w_400/h_500/e48337cd95bbb6c2c372ffa6e71441ac.jpg"))
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="categorias_3", title="Categorías", url="http://www.files-monster.org/",
|
|
thumbnail="http://photosex.biz/imager/w_400/h_500/e48337cd95bbb6c2c372ffa6e71441ac.jpg"))
|
|
itemlist.append(Item(channel=item.channel, action="search", title="Buscar en files-monster.org",
|
|
url="http://files-monster.org/search?search=%s"))
|
|
return itemlist
|
|
|
|
|
|
def favoritos(item):
|
|
user = config.get_setting("filesmonsteruser")
|
|
password = config.get_setting("filesmonsterpassword")
|
|
logger.info()
|
|
name_file = os.path.splitext(os.path.basename(__file__))[0]
|
|
fname = os.path.join(config.get_data_path(), "settings_channels", name_file + "_favoritos.txt")
|
|
fa = open(fname, 'a+')
|
|
fa.close()
|
|
f = open(fname, 'r')
|
|
lines = f.readlines()
|
|
f.close()
|
|
itemlist = []
|
|
post2 = "username=" + user + "&password=" + password
|
|
login_url = "http://filesmonster.com/api/public/login"
|
|
data1 = scrapertools.cache_page(login_url, post=post2)
|
|
partes1 = data1.split('"')
|
|
estado = partes1[3]
|
|
if estado != 'success': itemlist.append(Item(channel=item.channel,
|
|
title="No pudo accederse con tus datos de acceso de Filesmonster.com, introdúcelos en con el apartado figuración. Error: " + estado + data1))
|
|
url_favoritos = "http://filesmonster.com/?favorites=1"
|
|
data2 = scrapertools.cache_page(url_favoritos, post=post2)
|
|
data2 = scrapertools.find_single_match(data2, 'favorites-table(.*?)pager')
|
|
patronvideos = '<a href="([^"]+)">([^<]+)</a>.*?del=([^"]+)"'
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data2)
|
|
contador = 0
|
|
for url, title, borrar in matches:
|
|
contador = contador + 1
|
|
imagen = ''
|
|
for linea in lines:
|
|
partes2 = linea.split("@")
|
|
parte_url = partes2[0]
|
|
parte_imagen = partes2[1]
|
|
if (parte_url == url): imagen = parte_imagen.rstrip('\n').rstrip('\r')
|
|
|
|
if url.find("?fid=") == -1:
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="play", server="filesmonster", title=title, fulltitle=item.title,
|
|
url=url, thumbnail=imagen, folder=False))
|
|
else:
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="detail", server="filesmonster", title=title, fulltitle=title,
|
|
thumbnail=imagen, url=url, folder=True))
|
|
itemlist.append(Item(channel=item.channel, action="quitar_favorito",
|
|
title="(-) quitar de mis favoritos en filesmonster.com", thumbnail=imagen,
|
|
url="http://filesmonster.com/?favorites=1&del=" + borrar, plot=borrar))
|
|
itemlist.append(Item(channel=item.channel, title="", folder=True))
|
|
if contador == 0 and estado == 'success':
|
|
itemlist.append(
|
|
Item(channel=item.channel, title="No tienes ningún favorito, navega por las diferentes fuentes y añádelos"))
|
|
return itemlist
|
|
|
|
|
|
def quitar_favorito(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
data = scrapertools.downloadpage(item.url)
|
|
itemlist.append(Item(channel=item.channel, action="favoritos",
|
|
title="El vídeo ha sido eliminado de tus favoritos, pulsa para volver a tu lista de favoritos"))
|
|
|
|
return itemlist
|
|
|
|
|
|
def anadir_favorito(item):
|
|
logger.info()
|
|
name_file = os.path.splitext(os.path.basename(__file__))[0]
|
|
fname = os.path.join(config.get_data_path(), "settings_channels", name_file + "_favoritos.txt")
|
|
user = config.get_setting("filesmonsteruser")
|
|
password = config.get_setting("filesmonsterpassword")
|
|
itemlist = []
|
|
post2 = "username=" + user + "&password=" + password
|
|
login_url = "http://filesmonster.com/api/public/login"
|
|
data1 = scrapertools.cache_page(login_url, post=post2)
|
|
if item.plot == 'el archivo':
|
|
id1 = item.url.split('?id=')
|
|
id = id1[1]
|
|
que = "file"
|
|
if item.plot == 'la carpeta':
|
|
id1 = item.url.split('?fid=')
|
|
id = id1[1]
|
|
que = "folder"
|
|
url = "http://filesmonster.com/ajax/add_to_favorites"
|
|
post3 = "username=" + user + "&password=" + password + "&id=" + id + "&obj_type=" + que
|
|
data2 = scrapertools.cache_page(url, post=post3)
|
|
if data2 == 'Already in Your favorites': itemlist.append(Item(channel=item.channel, action="favoritos",
|
|
title="" + item.plot + " ya estaba en tu lista de favoritos (" + user + ") en Filesmonster"))
|
|
if data2 != 'You are not logged in' and data2 != 'Already in Your favorites':
|
|
itemlist.append(Item(channel=item.channel, action="favoritos",
|
|
title="Se ha añadido correctamente " + item.plot + " a tu lista de favoritos (" + user + ") en Filesmonster",
|
|
plot=data1 + data2))
|
|
f = open(fname, "a+")
|
|
if (item.plot == 'la carpeta'):
|
|
ruta = "http://filesmonster.com/folders.php?"
|
|
if (item.plot == 'el archivo'):
|
|
ruta = "http://filesmonster.com/download.php"
|
|
laruta = ruta + item.url
|
|
laruta = laruta.replace("http://filesmonster.com/folders.php?http://filesmonster.com/folders.php?",
|
|
"http://filesmonster.com/folders.php?")
|
|
laruta = laruta.replace("http://filesmonster.com/download.php?http://filesmonster.com/download.php?",
|
|
"http://filesmonster.com/download.php?")
|
|
f.write(laruta + '@' + item.thumbnail + '\n')
|
|
f.close()
|
|
if data2 == 'You are not logged in': itemlist.append(Item(channel=item.channel, action="favoritos",
|
|
title="No ha sido posible añadir " + item.plot + " a tu lista de favoritos (" + user + " no logueado en Filesmonster)", ))
|
|
|
|
return itemlist
|
|
|
|
|
|
def categorias(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
data = scrapertools.downloadpage(item.url)
|
|
data = scrapertools.find_single_match(data,
|
|
'Categories <b class="caret"></b></a>(.*?)RSS <b class="caret"></b></a>')
|
|
|
|
patronvideos = '<a href="([^"]+)">([^<]+)</a>'
|
|
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
|
|
for url, title in matches:
|
|
itemlist.append(Item(channel=item.channel, action="videos", title=title, url=url))
|
|
|
|
return itemlist
|
|
|
|
|
|
def categorias_2(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
data = scrapertools.downloadpage(item.url)
|
|
|
|
patronvideos = '<li class="cat-item cat-item-[\d]+"><a href="([^"]+)" title="[^"]+">([^<]+)</a><a class="rss_s" title="[^"]+" target="_blank" href="[^"]+"></a></li>'
|
|
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
|
|
for url, title in matches:
|
|
itemlist.append(Item(channel=item.channel, action="videos_2", title=title, url=url))
|
|
|
|
return itemlist
|
|
|
|
|
|
def categorias_3(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
data = scrapertools.downloadpage(item.url)
|
|
|
|
patronvideos = '<li><a href="([^"]+)">([^<]+)</a></li>'
|
|
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
|
|
for url, title in matches:
|
|
itemlist.append(Item(channel=item.channel, action="videos_3", title=title, url=url))
|
|
|
|
return itemlist
|
|
|
|
|
|
def search(item, texto):
|
|
logger.info("texto:" + texto)
|
|
original = item.url
|
|
item.url = item.url % texto
|
|
try:
|
|
if original == 'http://filesmonster.filesdl.net/posts/search?q=%s':
|
|
return videos(item)
|
|
if original == 'http://unusualporn.net/search/%s':
|
|
return videos_2(item)
|
|
if original == 'http://files-monster.org/search?search=%s':
|
|
return videos_3(item)
|
|
# Se captura la excepción, para no interrumpir al buscador global si un canal falla
|
|
except:
|
|
import sys
|
|
for line in sys.exc_info():
|
|
logger.error("%s" % line)
|
|
return []
|
|
|
|
|
|
def videos(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
url = item.url
|
|
while url and len(itemlist) < 25:
|
|
data = scrapertools.downloadpage(url)
|
|
patronvideos = '<div class="panel-heading">.*?<a href="([^"]+)">([^<]+).*?</a>.*?<div class="panel-body" style="text-align: center;">.*?<img src="([^"]+)".*?'
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
|
|
for url, title, thumbnail in matches:
|
|
title = title.strip()
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="detail", title=title, fulltitle=title, url=url, thumbnail=thumbnail))
|
|
|
|
url = scrapertools.find_single_match(data, '<li><a href="([^"]+)">Next</a></li>').replace("&", "&")
|
|
|
|
# Enlace para la siguiente pagina
|
|
if url:
|
|
itemlist.append(Item(channel=item.channel, action="videos", title=">> Página Siguiente", url=url))
|
|
|
|
return itemlist
|
|
|
|
|
|
def videos_2(item):
|
|
logger.info()
|
|
itemlist = []
|
|
url_limpia = item.url.split("?")[0]
|
|
url = item.url
|
|
while url and len(itemlist) < 25:
|
|
data = scrapertools.downloadpage(url)
|
|
patronvideos = 'data-link="([^"]+)" data-title="([^"]+)" src="([^"]+)" border="0" />';
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
|
|
for url, title, thumbnail in matches:
|
|
itemlist.append(Item(channel=item.channel, action="detail_2", title=title, fulltitle=title, url=url,
|
|
thumbnail=thumbnail))
|
|
|
|
url = scrapertools.find_single_match(data, '<link rel="next" href="([^"]+)" />').replace("&", "&")
|
|
|
|
# Enlace para la siguiente pagina
|
|
if url:
|
|
itemlist.append(Item(channel=item.channel, action="videos_2", title=">> Página Siguiente", url=url))
|
|
|
|
return itemlist
|
|
|
|
|
|
def videos_3(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
url = item.url
|
|
url_limpia = item.url.split("?")[0]
|
|
while url and len(itemlist) < 25:
|
|
data = scrapertools.downloadpage(url)
|
|
patronvideos = '<a href="([^"]+)">.*?<img src="([^"]+)" border="0" title=".*?([^"]+).*?" height="70" />'
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
|
|
for url, thumbnail, title in matches:
|
|
itemlist.append(Item(channel=item.channel, action="detail_2", title=title, fulltitle=title, url=url,
|
|
thumbnail=thumbnail))
|
|
|
|
url = scrapertools.find_single_match(data,
|
|
'<a style="text-decoration:none;" href="([^"]+)">→</a>').replace(
|
|
"&", "&")
|
|
|
|
# Enlace para la siguiente pagina
|
|
if url:
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="videos_3", title=">> Página Siguiente", url=url_limpia + url))
|
|
|
|
return itemlist
|
|
|
|
|
|
def detail(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
data = scrapertools.downloadpage(item.url)
|
|
patronvideos = '["|\'](http\://filesmonster.com/download.php\?[^"\']+)["|\']'
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
|
|
for url in matches:
|
|
title = "Archivo %d: %s [filesmonster]" % (len(itemlist) + 1, item.fulltitle)
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="play", server="filesmonster", title=title, fulltitle=item.fulltitle,
|
|
url=url, thumbnail=item.thumbnail, folder=False))
|
|
itemlist.append(Item(channel=item.channel, action="anadir_favorito",
|
|
title="(+) Añadir el vídeo a tus favoritos en filesmonster", url=url,
|
|
thumbnail=item.thumbnail, plot="el archivo", folder=True))
|
|
itemlist.append(Item(channel=item.channel, title=""));
|
|
|
|
patronvideos = '["|\'](http\://filesmonster.com/folders.php\?[^"\']+)["|\']'
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
for url in matches:
|
|
if not url == item.url:
|
|
logger.info(url)
|
|
logger.info(item.url)
|
|
title = "Carpeta %d: %s [filesmonster]" % (len(itemlist) + 1, item.fulltitle)
|
|
itemlist.append(Item(channel=item.channel, action="detail", title=title, fulltitle=item.fulltitle, url=url,
|
|
thumbnail=item.thumbnail, folder=True))
|
|
itemlist.append(Item(channel=item.channel, action="anadir_favorito",
|
|
title="(+) Añadir la carpeta a tus favoritos en filesmonster", url=url,
|
|
thumbnail=item.thumbnail, plot="la carpeta", folder=True))
|
|
itemlist.append(Item(channel=item.channel, title=""));
|
|
|
|
return itemlist
|
|
|
|
|
|
def detail_2(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
# descarga la pagina
|
|
data = scrapertools.downloadpageGzip(item.url)
|
|
data = data.split('<span class="filesmonsterdlbutton">Download from Filesmonster</span>')
|
|
data = data[0]
|
|
# descubre la url
|
|
patronvideos = 'href="http://filesmonster.com/download.php(.*?)".(.*?)'
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
for match2 in matches:
|
|
url = "http://filesmonster.com/download.php" + match2[0]
|
|
title = "Archivo %d: %s [filesmonster]" % (len(itemlist) + 1, item.fulltitle)
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="play", server="filesmonster", title=title, fulltitle=item.fulltitle,
|
|
url=url, thumbnail=item.thumbnail, folder=False))
|
|
itemlist.append(Item(channel=item.channel, action="anadir_favorito",
|
|
title="(+) Añadir el vídeo a tus favoritos en filesmonster", url=match2[0],
|
|
thumbnail=item.thumbnail, plot="el archivo", folder=True))
|
|
itemlist.append(Item(channel=item.channel, title=""));
|
|
|
|
patronvideos = '["|\'](http\://filesmonster.com/folders.php\?[^"\']+)["|\']'
|
|
matches = re.compile(patronvideos, re.DOTALL).findall(data)
|
|
for url in matches:
|
|
if not url == item.url:
|
|
logger.info(url)
|
|
logger.info(item.url)
|
|
title = "Carpeta %d: %s [filesmonster]" % (len(itemlist) + 1, item.fulltitle)
|
|
itemlist.append(Item(channel=item.channel, action="detail", title=title, fulltitle=item.fulltitle, url=url,
|
|
thumbnail=item.thumbnail, folder=True))
|
|
itemlist.append(Item(channel=item.channel, action="anadir_favorito",
|
|
title="(+) Añadir la carpeta a tus favoritos en filesmonster", url=url,
|
|
thumbnail=item.thumbnail, plot="la carpeta", folder=True))
|
|
itemlist.append(Item(channel=item.channel, title=""));
|
|
|
|
return itemlist
|