Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide whitespace changes
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Text styles
Change appearance
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
Untitled diff
Created
7 years ago
Diff never expires
Clear
Export
Share
Explain
280 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
353 lines
Copy
171 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
246 lines
Copy
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# ------------------------------------------------------------
Copy
Copied
Copy
Copied
#
Icarus
- XBMC Plugin
#
Ringraziamo
Icarus
crew
# Canale per filmpertutti.co
# Canale per filmpertutti.co
Copy
Copied
Copy
Copied
# https://alfa-addon.com/categories/icarus-addon.50/
# ------------------------------------------------------------
# ------------------------------------------------------------
import re
import re
import urlparse
import urlparse
Copy
Copied
Copy
Copied
from core import scrapertools
, servertools, httptools
from channels import autoplay, support
from core import scrapertools
V2
, servertools, httptools
, tmdb
from core.item import Item
from core.item import Item
Copy
Copied
Copy
Copied
from core.tmdb import infoIca
from lib import unshortenit
from lib import unshortenit
from platformcode import config, logger
from platformcode import config, logger
Copy
Copied
Copy
Copied
from channelselector import thumb
Copy
Copied
Copy
Copied
host = "https://www.filmpertutti.
uno"
host = "https://www.filmpertutti.
club"
headers = [['Referer', host]]
list_servers = ['openload', 'streamango', 'wstream', 'akvideo']
list_quality = ['HD', 'SD']
def mainlist(item):
def mainlist(item):
Copy
Copied
Copy
Copied
logger.info(
"icarus.filmpertutti mainlist")
logger.info(
)
itemlist = [Item(channel=item.channel,
title="[COLOR azure]Ultimi film inseriti[/COLOR]",
itemlist =[]
action="peliculas",
extra="movie",
support.menu(itemlist, '[B]Film[/B]', 'peliculas', host + '/category/film/', 'movie')
url="%s/category/film/" % host,
support.menu(itemlist, '[B] > Film per Genere[/B]', 'genre', host, 'episode')
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
support.menu(itemlist, '[B]Serie TV[/B]', 'peliculas', host + '/category/serie-tv/', 'episode')
Item(channel=item.channel,
support.menu(itemlist, '[B] > Serie TV in ordine alfabetico[/B]', 'az', host + '/category/serie-tv/', 'episode')
title="[COLOR azure]Categorie film[/COLOR]",
support.menu(itemlist, '[COLOR blue]Cerca Serie TV...[/COLOR]', 'search', '', 'episode')
action="categorias",
url="%s/category/film/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
autoplay.init(item.channel, list_servers, list_quality)
Item(channel=item.channel,
autoplay.show_option(item.channel, itemlist)
title="[COLOR yellow]Cerca...[/COLOR]",
action="search",
for item in itemlist:
extra="movie",
logger.info('MENU=' + str(item) )
thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search"),
Item(channel=item.channel,
title="[COLOR azure]Serie TV[/COLOR]",
extra="tvshow",
action="peliculas_tv",
url="%s/category/serie-tv/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
title="[COLOR yellow]Cerca Serie TV...[/COLOR]",
action="search",
extra="tvshow",
thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search")]
return itemlist
return itemlist
def newest(categoria):
def newest(categoria):
Copy
Copied
Copy
Copied
logger.info("
icarus.
filmpertutti newest" + categoria)
logger.info("
filmpertutti newest" + categoria)
itemlist = []
itemlist = []
item = Item()
item = Item()
try:
try:
if categoria == "film":
if categoria == "film":
item.url = host + "/category/film/"
item.url = host + "/category/film/"
item.action = "peliculas"
item.action = "peliculas"
item.extra = "movie"
item.extra = "movie"
itemlist = peliculas(item)
itemlist = peliculas(item)
if itemlist[-1].action == "peliculas":
if itemlist[-1].action == "peliculas":
itemlist.pop()
itemlist.pop()
# Continua la ricerca in caso di errore
# Continua la ricerca in caso di errore
except:
except:
import sys
import sys
for line in sys.exc_info():
for line in sys.exc_info():
logger.error("{0}".format(line))
logger.error("{0}".format(line))
return []
return []
return itemlist
return itemlist
Copy
Copied
Copy
Copied
def peliculas(item):
logger.info("icarus.filmpertutti peliculas")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data
# Estrae i contenuti
patron = '<li><a href="([^"]+)" data-thumbnail="([^"]+)"><div>\s*<div class="title">(.*?)<.*?IMDb">([^<]+)'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumbnail, scrapedtitle, scraprate in matches:
scrapedplot = ""
itemlist.append(infoIca(
Item(channel=item.channel,
action="findvideos",
contentType="movie",
fulltitle=scrapedtitle,
show=scrapedtitle,
title="[COLOR azure]" + scrapedtitle + "[/COLOR] - IMDb: " + scraprate,
url=scrapedurl,
thumbnail=scrapedthumbnail,
plot=scrapedplot,
extra=item.extra,
folder=True), tipo='movie'))
# Paginazione
patronvideos = '<a href="([^"]+)"[^>]+>Pagina'
matches = re.compile(patronvideos, re.DOTALL).findall(data)
if len(matches) > 0:
scrapedurl = urlparse.urljoin(item.url, matches[0])
itemlist.append(
Item(channel=item.channel,
action="peliculas",
title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]",
url=scrapedurl,
thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png",
extra=item.extra,
folder=True))
return itemlist
def peliculas_tv(item):
logger.info("icarus.filmpertutti peliculas")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data
# Estrae i contenuti
patron = '<li><a href="([^"]+)" data-thumbnail="([^"]+)"><div>\s*<div class="title">(.*?)<'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
title = scrapertools.decodeHtmlentities(scrapedtitle)
scrapedplot = ""
itemlist.append(infoIca(
Item(channel=item.channel,
action="episodios",
fulltitle=title,
show=title,
title="[COLOR azure]" + title + "[/COLOR]",
url=scrapedurl,
thumbnail=scrapedthumbnail,
plot=scrapedplot,
extra=item.extra,
folder=True), tipo='tv'))
# Paginazione
patronvideos = '<a href="([^"]+)"[^>]+>Pagina'
matches = re.compile(patronvideos, re.DOTALL).findall(data)
if len(matches) > 0:
scrapedurl = urlparse.urljoin(item.url, matches[0])
itemlist.append(
Item(channel=item.channel,
action="peliculas_tv",
title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]",
url=scrapedurl,
thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png",
extra=item.extra,
folder=True))
return itemlist
def categorias(item):
logger.info("icarus.filmpertutti categorias")
itemlist = []
data = httptools.downloadpage(item.url).data
# Narrow search by selecting only the combo
patron = '<option>Scegli per Genere</option>(.*?)</select'
bloque = scrapertools.get_match(data, patron)
# The categories are the options for the combo
patron = '<option data-src="([^"]+)">([^<]+)</option>'
matches = re.compile(patron, re.DOTALL).findall(bloque)
for scrapedurl, scrapedtitle in matches:
scrapedurl = urlparse.urljoin(item.url, scrapedurl)
scrapedthumbnail = ""
scrapedplot = ""
itemlist.append(
Item(channel=item.channel,
action="peliculas",
title="[COLOR azure]" + scrapedtitle + "[/COLOR]",
url=scrapedurl,
thumbnail=scrapedthumbnail,
extra=item.extra,
plot=scrapedplot))
return itemlist
def search(item, texto):
def search(item, texto):
Copy
Copied
Copy
Copied
logger.info("
icarus.
filmpertutti " + item.url + " search " + texto)
logger.info("
filmpertutti " + item.url + " search " + texto)
item.url = host + "/?s=" + texto
item.url = host + "/?s=" + texto
try:
try:
Copy
Copied
Copy
Copied
if item.extra == "movie":
return peliculas(item)
return peliculas(item)
if item.extra == "tvshow":
return peliculas_tv(item)
# Continua la ricerca in caso di errore
# Continua la ricerca in caso di errore
except:
except:
import sys
import sys
for line in sys.exc_info():
for line in sys.exc_info():
logger.error("%s" % line)
logger.error("%s" % line)
return []
return []
Copy
Copied
Copy
Copied
def
episodios
(item):
def
genre
(item):
def load_episodios(html, item, itemlist, lang_title):
logger.info(item.channel + 'genre')
patron = '.*?<a[^h]+href="[^"]+"[^>]+>[^<]+<\/a>(?:<br \/>|<\/p>|-)'
matches = re.compile(patron).findall(html)
for data in matches:
# Estrae i contenuti
scrapedtitle = data.split('<a ')[0]
scrapedtitle = re.sub(r'<[^>]*>', '', scrapedtitle).strip()
if scrapedtitle != 'Categorie':
scrapedtitle = scrapedtitle.replace('×', 'x')
itemlist.append(
Item(channel=item.channel,
action="findvideos",
contentType="episode",
title="[COLOR azure]%s[/COLOR]" % (scrapedtitle + " (" + lang_title + ")"),
url=data,
thumbnail=item.thumbnail,
extra=item.extra,
fulltitle=scrapedtitle + " (" + lang_title + ")" + ' - ' + item.show,
show=item.show))
logger.info("[filmpertutti.py] episodios")
itemlist = []
itemlist = []
Copy
Copied
Copy
Copied
# Carica la pagina
data = httptools.downloadpage(item.url
, headers=headers
).data
data = httptools.downloadpage(item.url
).data
block
= scrapertools
V2.find_single_match
(data
, r'<ul class="table-list">(
.*?
)<\/ul>')
data
= scrapertools
.decodeHtmlentities
(data
)
matches =
scrapertoolsV2.find_multiple_matches(block, r'<a href="([^"]+)">.*?<\/span>(.*?)<\/a>')
for
url, title
in matches:
lang_titles = []
starts = []
patron = r"Stagione
.*?
ITA"
matches =
re.compile(patron, re.IGNORECASE).finditer(data)
for
match
in matches:
season_title = match.group()
if season_title != '':
lang_titles.append('SUB ITA' if 'SUB' in season_title.upper() else 'ITA')
starts.append(match.end())
i = 1
len_lang_titles = len(lang_titles)
while i <= len_lang_titles:
inizio = starts[i - 1]
fine = starts[i] if i < len_lang_titles else -1
html = data[inizio:fine]
lang_title = lang_titles[i - 1]
load_episodios(html, item, itemlist, lang_title)
i += 1
if config.get_videolibrary_support() and len(itemlist) != 0:
itemlist.append(
itemlist.append(
Item(channel=item.channel,
Item(channel=item.channel,
Copy
Copied
Copy
Copied
title="[COLOR lightblue]%s[/COLOR]" % config.get_localized_string(30161),
action='peliculas',
url=item.url,
title=title,
action="add_serie_to_library",
url=host+url)
extra="episodios" + "###" + item.extra,
)
show=item.show))
itemlist = thumb(itemlist)
return itemlist
return itemlist
Copy
Copied
Copy
Copied
def
findvideos
(item):
def
az
(item):
def add_my
item
(sitemlist, scontentType, stitle, surl):
logger.info(
item
.channel + 'genre')
s
itemlist.append(
itemlist = []
data = httptools.downloadpage(item.url, headers=headers).data
block = scrapertoolsV2.find_single_match(data, r'<select class="cats">(.*?)<\/select>')
matches = scrapertoolsV2.find_multiple_matches(block, r'<option data-src="([^"]+)">(.*?)<\/option>')
for url, title in matches:
itemlist.append(
Item(channel=item.channel,
Item(channel=item.channel,
Copy
Copied
Copy
Copied
action=
"play",
action=
'peliculas'
,
contentType=scontentType
,
title=
title,
title=
stitle,
url=
url
)
fulltitle=item.fulltitle,
)
server=s
title,
itemlist =
thumb
(itemlist)
url=
s
url
,
return itemlist
thumb
nail=item.thumbnail,
extra=item.extra))
Copy
Copied
Copy
Copied
logger.info(
"icarus.filmpertutti findvideos"
)
def peliculas(item):
logger.info(
item.channel + 'peliculas'
)
itemlist = []
itemlist = []
Copy
Copied
Copy
Copied
logger.debug(item)
Copy
Copied
Copy
Copied
# Carica la pagina
data = httptools.downloadpage(item.url, headers=headers).data
if item.contentType == "episode":
block = scrapertoolsV2.find_single_match(data, r'<ul class="posts">(.*)<\/ul>')
patron = '<a\s*href="(.*?)\s*".*?[^>]+>([^<]+)<\/a>'
matches = re.compile(patron).findall(item.url)
Copy
Copied
Copy
Copied
lsrvo
=
''
patron
=
r'<li><a href="([^"]+)" data-thumbnail="([^"]+)">.*?<div class="title">([^<]+)<\/div>'
for lurl, lsrv in
matches
:
matches = scrapertoolsV2.find_multiple_
matches
(block, patron)
Copy
Copied
Copy
Copied
if lsrv == 'HD': lsrv
=
lsrvo + ' HD
'
for scrapedurl, scrapedthumb, scrapedtitle in matches:
lsrvo
=
lsrv
title = re.sub(r'.\(.*?\)|.\[.*?\]', '', scrapedtitle)
quality = scrapertoolsV2.find_single_match(scrapedtitle, r'\[(.*?)\]')
if not quality:
quality
=
'SD
'
longtitle
=
title + ' [COLOR blue][' + quality + '][/COLOR]'
Copy
Copied
Copy
Copied
add_myitem(itemlist, "episode", "[COLOR azure]%s[/COLOR]" % lsrv, lurl)
if item.contentType == 'episode':
else:
action = 'episodios'
# Carica la pagina
else:
data = httptools.downloadpage(item.url).data
action ='findvideos'
patron = '<strong>\s*(Versione.*?)<p><strong>Download'
data = re.compile(patron, re.DOTALL).findall(data)
Copy
Copied
Copy
Copied
if data:
itemlist.append(
vqual = re.compile('ersione.*?:\s*([^|,\s,&,<]+)').findall(data[0])
Item(channel=item.channel,
sect = re.compile('Streaming', re.DOTALL).split(data[0])
action=action,
contentType=item.contentType,
title=longtitle,
fulltitle=title,
show=title,
quality=quality,
url=scrapedurl,
thumbnail=scrapedthumb
))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
Copy
Copied
Copy
Copied
## SD links
next_page = scrapertoolsV2.find_single_match(data, '<a href="([^"]+)">Pagina')
links = re.compile('<a\s*href="([^",\s]+).*?>([^<]+)', re.DOTALL).findall(sect[1])
if next_page != "":
itemlist.append(
Item(channel=item.channel,
action="peliculas",
contentType=item.contentType,
title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]",
url=next_page,
thumbnails=thumb()))
Copy
Copied
Copy
Copied
for link, srv in links:
return
itemlist
add_myitem(
itemlist
, "movie", "[COLOR azure]%s (SD)[/COLOR] - %s" % (srv, vqual[0]), link)
Copy
Copied
Copy
Copied
## HD Links
if len(sect) > 2:
links = re.compile('<a\s*href="([^",\s]+).*?>([^<]+)', re.DOTALL).findall(sect[2])
Copy
Copied
Copy
Copied
for link, srv in links:
def episodios(item):
add_myitem(itemlist, "movie", "[COLOR azure]%s (HD)[/COLOR] - %s" % (srv, vqual[0]), link)
logger.info(item.channel + 'findvideos')
else:
itemlist = []
itemlist = servertools.find_video_items(item=item)
Copy
Copied
Copy
Copied
# for item in itemlist:
data = httptools.downloadpage(item.url, headers=headers).data
#
logger.info(item)
if 'accordion-item' in data:
block = scrapertoolsV2.find_single_match(data, 'accordion-item.*?>(.*?)<div id="disqus_thread">')
patron = r'<img src="([^"]+)">.*?<li class="season-no">(.*?)<\/li>(.*?)<\/table>'
matches = scrapertoolsV2.find_multiple_matches(block, patron)
for scrapedthumb, scrapedtitle, scrapedurl in matches:
title = scrapedtitle + ' - ' + item.title
if title[0] == 'x':
title = '1' + title
itemlist.append(
Item(channel=item.channel,
action='findvideos',
contentType=item.contentType,
title=title,
fulltitle=title,
show=title,
quality=item.quality,
url=scrapedurl,
thumbnail=scrapedthumb
))
else:
block = scrapertoolsV2.find_single_match(data, '<div id="info" class="pad">(.*?)<div id="disqus_thread">').replace('</p>','<br />').replace('×','x')
matches = scrapertoolsV2.find_multiple_matches(block, r'<strong>(.*?)<\/strong>.*?<p>(.*?)<span')
for lang, seasons in matches:
lang = re.sub('.*?Stagione[^a-zA-Z]+', '', lang)
# patron = r'([0-9]+x[0-9]+) (.*?)<br'
season = scrapertoolsV2.find_multiple_matches(seasons, r'([0-9]+x[0-9]+) (.*?)<br')
for title, url in season:
title = title + ' - ' + lang
itemlist.append(
Item(channel=item.channel,
title=title,
fulltitle=title,
show=title,
url=url,
contentType=item.contentType,
action='findvideos'
))
return itemlist
return itemlist
Copy
Copied
Copy
Copied
def
play
(item):
def
findvideos
(item):
logger.info(
"icarus.filmpertutti play: %s" %
item.
url)
logger.info(
item.
channel + 'findvideos'
)
data = item.url
data, c = unshortenit.unshorten(data
)
Copy
Copied
Copy
Copied
if item.contentType == 'movie':
data = httptools.downloadpage(item.url, headers=headers).data
else:
data = item.url
itemlist = servertools.find_video_items(data=data)
itemlist = servertools.find_video_items(data=data)
for videoitem in itemlist:
for videoitem in itemlist:
Copy
Copied
Copy
Copied
videoitem.title = item.title +
videoitem.title
videoitem.title = item.title +
' - [COLOR limegreen][[/COLOR]' +
videoitem.title
+ '[COLOR limegreen]][/COLOR]'
videoitem.fulltitle = item.fulltitle
videoitem.fulltitle = item.fulltitle
videoitem.thumbnail = item.thumbnail
videoitem.thumbnail = item.thumbnail
videoitem.show = item.show
videoitem.show = item.show
videoitem.plot = item.plot
videoitem.plot = item.plot
videoitem.channel = item.channel
videoitem.channel = item.channel
videoitem.contentType = item.contentType
videoitem.contentType = item.contentType
Copy
Copied
Copy
Copied
videoitem.quality = item.quality
autoplay.start(itemlist, item)
if item.contentType != 'episode':
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append(
Item(channel=item.channel, title='[COLOR yellow][B]'+config.get_localized_string(30161)+'[/B][/COLOR]', url=item.url,
action="add_pelicula_to_library", extra="findvideos", contentTitle=item.fulltitle))
return itemlist
return itemlist
Saved diffs
Original text
Open file
# -*- coding: utf-8 -*- # ------------------------------------------------------------ # Icarus - XBMC Plugin # Canale per filmpertutti.co # https://alfa-addon.com/categories/icarus-addon.50/ # ------------------------------------------------------------ import re import urlparse from core import scrapertools, servertools, httptools from core.item import Item from core.tmdb import infoIca from lib import unshortenit from platformcode import config, logger host = "https://www.filmpertutti.uno" def mainlist(item): logger.info("icarus.filmpertutti mainlist") itemlist = [Item(channel=item.channel, title="[COLOR azure]Ultimi film inseriti[/COLOR]", action="peliculas", extra="movie", url="%s/category/film/" % host, thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"), Item(channel=item.channel, title="[COLOR azure]Categorie film[/COLOR]", action="categorias", url="%s/category/film/" % host, thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"), Item(channel=item.channel, title="[COLOR yellow]Cerca...[/COLOR]", action="search", extra="movie", thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search"), Item(channel=item.channel, title="[COLOR azure]Serie TV[/COLOR]", extra="tvshow", action="peliculas_tv", url="%s/category/serie-tv/" % host, thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"), Item(channel=item.channel, title="[COLOR yellow]Cerca Serie TV...[/COLOR]", action="search", extra="tvshow", thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search")] return itemlist def newest(categoria): logger.info("icarus.filmpertutti newest" + categoria) itemlist = [] item = Item() try: if categoria == "film": item.url = host + "/category/film/" item.action = "peliculas" item.extra = "movie" itemlist = peliculas(item) if itemlist[-1].action == "peliculas": itemlist.pop() # Continua la ricerca in caso di errore except: import sys for line in sys.exc_info(): logger.error("{0}".format(line)) return [] return itemlist def peliculas(item): logger.info("icarus.filmpertutti peliculas") itemlist = [] # Carica la pagina data = httptools.downloadpage(item.url).data # Estrae i contenuti patron = '<li><a href="([^"]+)" data-thumbnail="([^"]+)"><div>\s*<div class="title">(.*?)<.*?IMDb">([^<]+)' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedthumbnail, scrapedtitle, scraprate in matches: scrapedplot = "" itemlist.append(infoIca( Item(channel=item.channel, action="findvideos", contentType="movie", fulltitle=scrapedtitle, show=scrapedtitle, title="[COLOR azure]" + scrapedtitle + "[/COLOR] - IMDb: " + scraprate, url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot, extra=item.extra, folder=True), tipo='movie')) # Paginazione patronvideos = '<a href="([^"]+)"[^>]+>Pagina' matches = re.compile(patronvideos, re.DOTALL).findall(data) if len(matches) > 0: scrapedurl = urlparse.urljoin(item.url, matches[0]) itemlist.append( Item(channel=item.channel, action="peliculas", title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]", url=scrapedurl, thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png", extra=item.extra, folder=True)) return itemlist def peliculas_tv(item): logger.info("icarus.filmpertutti peliculas") itemlist = [] # Carica la pagina data = httptools.downloadpage(item.url).data # Estrae i contenuti patron = '<li><a href="([^"]+)" data-thumbnail="([^"]+)"><div>\s*<div class="title">(.*?)<' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedthumbnail, scrapedtitle in matches: title = scrapertools.decodeHtmlentities(scrapedtitle) scrapedplot = "" itemlist.append(infoIca( Item(channel=item.channel, action="episodios", fulltitle=title, show=title, title="[COLOR azure]" + title + "[/COLOR]", url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot, extra=item.extra, folder=True), tipo='tv')) # Paginazione patronvideos = '<a href="([^"]+)"[^>]+>Pagina' matches = re.compile(patronvideos, re.DOTALL).findall(data) if len(matches) > 0: scrapedurl = urlparse.urljoin(item.url, matches[0]) itemlist.append( Item(channel=item.channel, action="peliculas_tv", title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]", url=scrapedurl, thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png", extra=item.extra, folder=True)) return itemlist def categorias(item): logger.info("icarus.filmpertutti categorias") itemlist = [] data = httptools.downloadpage(item.url).data # Narrow search by selecting only the combo patron = '<option>Scegli per Genere</option>(.*?)</select' bloque = scrapertools.get_match(data, patron) # The categories are the options for the combo patron = '<option data-src="([^"]+)">([^<]+)</option>' matches = re.compile(patron, re.DOTALL).findall(bloque) for scrapedurl, scrapedtitle in matches: scrapedurl = urlparse.urljoin(item.url, scrapedurl) scrapedthumbnail = "" scrapedplot = "" itemlist.append( Item(channel=item.channel, action="peliculas", title="[COLOR azure]" + scrapedtitle + "[/COLOR]", url=scrapedurl, thumbnail=scrapedthumbnail, extra=item.extra, plot=scrapedplot)) return itemlist def search(item, texto): logger.info("icarus.filmpertutti " + item.url + " search " + texto) item.url = host + "/?s=" + texto try: if item.extra == "movie": return peliculas(item) if item.extra == "tvshow": return peliculas_tv(item) # Continua la ricerca in caso di errore except: import sys for line in sys.exc_info(): logger.error("%s" % line) return [] def episodios(item): def load_episodios(html, item, itemlist, lang_title): patron = '.*?<a[^h]+href="[^"]+"[^>]+>[^<]+<\/a>(?:<br \/>|<\/p>|-)' matches = re.compile(patron).findall(html) for data in matches: # Estrae i contenuti scrapedtitle = data.split('<a ')[0] scrapedtitle = re.sub(r'<[^>]*>', '', scrapedtitle).strip() if scrapedtitle != 'Categorie': scrapedtitle = scrapedtitle.replace('×', 'x') itemlist.append( Item(channel=item.channel, action="findvideos", contentType="episode", title="[COLOR azure]%s[/COLOR]" % (scrapedtitle + " (" + lang_title + ")"), url=data, thumbnail=item.thumbnail, extra=item.extra, fulltitle=scrapedtitle + " (" + lang_title + ")" + ' - ' + item.show, show=item.show)) logger.info("[filmpertutti.py] episodios") itemlist = [] # Carica la pagina data = httptools.downloadpage(item.url).data data = scrapertools.decodeHtmlentities(data) lang_titles = [] starts = [] patron = r"Stagione.*?ITA" matches = re.compile(patron, re.IGNORECASE).finditer(data) for match in matches: season_title = match.group() if season_title != '': lang_titles.append('SUB ITA' if 'SUB' in season_title.upper() else 'ITA') starts.append(match.end()) i = 1 len_lang_titles = len(lang_titles) while i <= len_lang_titles: inizio = starts[i - 1] fine = starts[i] if i < len_lang_titles else -1 html = data[inizio:fine] lang_title = lang_titles[i - 1] load_episodios(html, item, itemlist, lang_title) i += 1 if config.get_videolibrary_support() and len(itemlist) != 0: itemlist.append( Item(channel=item.channel, title="[COLOR lightblue]%s[/COLOR]" % config.get_localized_string(30161), url=item.url, action="add_serie_to_library", extra="episodios" + "###" + item.extra, show=item.show)) return itemlist def findvideos(item): def add_myitem(sitemlist, scontentType, stitle, surl): sitemlist.append( Item(channel=item.channel, action="play", contentType=scontentType, title=stitle, fulltitle=item.fulltitle, server=stitle, url=surl, thumbnail=item.thumbnail, extra=item.extra)) logger.info("icarus.filmpertutti findvideos") itemlist = [] logger.debug(item) # Carica la pagina if item.contentType == "episode": patron = '<a\s*href="(.*?)\s*".*?[^>]+>([^<]+)<\/a>' matches = re.compile(patron).findall(item.url) lsrvo = '' for lurl, lsrv in matches: if lsrv == 'HD': lsrv = lsrvo + ' HD' lsrvo = lsrv add_myitem(itemlist, "episode", "[COLOR azure]%s[/COLOR]" % lsrv, lurl) else: # Carica la pagina data = httptools.downloadpage(item.url).data patron = '<strong>\s*(Versione.*?)<p><strong>Download' data = re.compile(patron, re.DOTALL).findall(data) if data: vqual = re.compile('ersione.*?:\s*([^|,\s,&,<]+)').findall(data[0]) sect = re.compile('Streaming', re.DOTALL).split(data[0]) ## SD links links = re.compile('<a\s*href="([^",\s]+).*?>([^<]+)', re.DOTALL).findall(sect[1]) for link, srv in links: add_myitem(itemlist, "movie", "[COLOR azure]%s (SD)[/COLOR] - %s" % (srv, vqual[0]), link) ## HD Links if len(sect) > 2: links = re.compile('<a\s*href="([^",\s]+).*?>([^<]+)', re.DOTALL).findall(sect[2]) for link, srv in links: add_myitem(itemlist, "movie", "[COLOR azure]%s (HD)[/COLOR] - %s" % (srv, vqual[0]), link) else: itemlist = servertools.find_video_items(item=item) # for item in itemlist: # logger.info(item) return itemlist def play(item): logger.info("icarus.filmpertutti play: %s" % item.url) data = item.url data, c = unshortenit.unshorten(data) itemlist = servertools.find_video_items(data=data) for videoitem in itemlist: videoitem.title = item.title + videoitem.title videoitem.fulltitle = item.fulltitle videoitem.thumbnail = item.thumbnail videoitem.show = item.show videoitem.plot = item.plot videoitem.channel = item.channel videoitem.contentType = item.contentType return itemlist
Changed text
Open file
# -*- coding: utf-8 -*- # ------------------------------------------------------------ # Ringraziamo Icarus crew # Canale per filmpertutti.co # ------------------------------------------------------------ import re import urlparse from channels import autoplay, support from core import scrapertoolsV2, servertools, httptools, tmdb from core.item import Item from lib import unshortenit from platformcode import config, logger from channelselector import thumb host = "https://www.filmpertutti.club" headers = [['Referer', host]] list_servers = ['openload', 'streamango', 'wstream', 'akvideo'] list_quality = ['HD', 'SD'] def mainlist(item): logger.info() itemlist =[] support.menu(itemlist, '[B]Film[/B]', 'peliculas', host + '/category/film/', 'movie') support.menu(itemlist, '[B] > Film per Genere[/B]', 'genre', host, 'episode') support.menu(itemlist, '[B]Serie TV[/B]', 'peliculas', host + '/category/serie-tv/', 'episode') support.menu(itemlist, '[B] > Serie TV in ordine alfabetico[/B]', 'az', host + '/category/serie-tv/', 'episode') support.menu(itemlist, '[COLOR blue]Cerca Serie TV...[/COLOR]', 'search', '', 'episode') autoplay.init(item.channel, list_servers, list_quality) autoplay.show_option(item.channel, itemlist) for item in itemlist: logger.info('MENU=' + str(item) ) return itemlist def newest(categoria): logger.info("filmpertutti newest" + categoria) itemlist = [] item = Item() try: if categoria == "film": item.url = host + "/category/film/" item.action = "peliculas" item.extra = "movie" itemlist = peliculas(item) if itemlist[-1].action == "peliculas": itemlist.pop() # Continua la ricerca in caso di errore except: import sys for line in sys.exc_info(): logger.error("{0}".format(line)) return [] return itemlist def search(item, texto): logger.info("filmpertutti " + item.url + " search " + texto) item.url = host + "/?s=" + texto try: return peliculas(item) # Continua la ricerca in caso di errore except: import sys for line in sys.exc_info(): logger.error("%s" % line) return [] def genre(item): logger.info(item.channel + 'genre') itemlist = [] data = httptools.downloadpage(item.url, headers=headers).data block = scrapertoolsV2.find_single_match(data, r'<ul class="table-list">(.*?)<\/ul>') matches = scrapertoolsV2.find_multiple_matches(block, r'<a href="([^"]+)">.*?<\/span>(.*?)<\/a>') for url, title in matches: itemlist.append( Item(channel=item.channel, action='peliculas', title=title, url=host+url) ) itemlist = thumb(itemlist) return itemlist def az(item): logger.info(item.channel + 'genre') itemlist = [] data = httptools.downloadpage(item.url, headers=headers).data block = scrapertoolsV2.find_single_match(data, r'<select class="cats">(.*?)<\/select>') matches = scrapertoolsV2.find_multiple_matches(block, r'<option data-src="([^"]+)">(.*?)<\/option>') for url, title in matches: itemlist.append( Item(channel=item.channel, action='peliculas', title=title, url=url) ) itemlist = thumb(itemlist) return itemlist def peliculas(item): logger.info(item.channel + 'peliculas') itemlist = [] data = httptools.downloadpage(item.url, headers=headers).data block = scrapertoolsV2.find_single_match(data, r'<ul class="posts">(.*)<\/ul>') patron = r'<li><a href="([^"]+)" data-thumbnail="([^"]+)">.*?<div class="title">([^<]+)<\/div>' matches = scrapertoolsV2.find_multiple_matches(block, patron) for scrapedurl, scrapedthumb, scrapedtitle in matches: title = re.sub(r'.\(.*?\)|.\[.*?\]', '', scrapedtitle) quality = scrapertoolsV2.find_single_match(scrapedtitle, r'\[(.*?)\]') if not quality: quality = 'SD' longtitle = title + ' [COLOR blue][' + quality + '][/COLOR]' if item.contentType == 'episode': action = 'episodios' else: action ='findvideos' itemlist.append( Item(channel=item.channel, action=action, contentType=item.contentType, title=longtitle, fulltitle=title, show=title, quality=quality, url=scrapedurl, thumbnail=scrapedthumb )) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) next_page = scrapertoolsV2.find_single_match(data, '<a href="([^"]+)">Pagina') if next_page != "": itemlist.append( Item(channel=item.channel, action="peliculas", contentType=item.contentType, title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]", url=next_page, thumbnails=thumb())) return itemlist def episodios(item): logger.info(item.channel + 'findvideos') itemlist = [] data = httptools.downloadpage(item.url, headers=headers).data if 'accordion-item' in data: block = scrapertoolsV2.find_single_match(data, 'accordion-item.*?>(.*?)<div id="disqus_thread">') patron = r'<img src="([^"]+)">.*?<li class="season-no">(.*?)<\/li>(.*?)<\/table>' matches = scrapertoolsV2.find_multiple_matches(block, patron) for scrapedthumb, scrapedtitle, scrapedurl in matches: title = scrapedtitle + ' - ' + item.title if title[0] == 'x': title = '1' + title itemlist.append( Item(channel=item.channel, action='findvideos', contentType=item.contentType, title=title, fulltitle=title, show=title, quality=item.quality, url=scrapedurl, thumbnail=scrapedthumb )) else: block = scrapertoolsV2.find_single_match(data, '<div id="info" class="pad">(.*?)<div id="disqus_thread">').replace('</p>','<br />').replace('×','x') matches = scrapertoolsV2.find_multiple_matches(block, r'<strong>(.*?)<\/strong>.*?<p>(.*?)<span') for lang, seasons in matches: lang = re.sub('.*?Stagione[^a-zA-Z]+', '', lang) # patron = r'([0-9]+x[0-9]+) (.*?)<br' season = scrapertoolsV2.find_multiple_matches(seasons, r'([0-9]+x[0-9]+) (.*?)<br') for title, url in season: title = title + ' - ' + lang itemlist.append( Item(channel=item.channel, title=title, fulltitle=title, show=title, url=url, contentType=item.contentType, action='findvideos' )) return itemlist def findvideos(item): logger.info(item.channel + 'findvideos') if item.contentType == 'movie': data = httptools.downloadpage(item.url, headers=headers).data else: data = item.url itemlist = servertools.find_video_items(data=data) for videoitem in itemlist: videoitem.title = item.title + ' - [COLOR limegreen][[/COLOR]' + videoitem.title + '[COLOR limegreen]][/COLOR]' videoitem.fulltitle = item.fulltitle videoitem.thumbnail = item.thumbnail videoitem.show = item.show videoitem.plot = item.plot videoitem.channel = item.channel videoitem.contentType = item.contentType videoitem.quality = item.quality autoplay.start(itemlist, item) if item.contentType != 'episode': if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': itemlist.append( Item(channel=item.channel, title='[COLOR yellow][B]'+config.get_localized_string(30161)+'[/B][/COLOR]', url=item.url, action="add_pelicula_to_library", extra="findvideos", contentTitle=item.fulltitle)) return itemlist
Find difference