Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
隱藏空白變更
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
文字樣式
變更外觀
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
Untitled diff
建立於
7 年前
差異永不過期
清除
匯出
分享
解釋
280 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
353 行
全部複製
171 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
246 行
全部複製
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# ------------------------------------------------------------
複製
已複製
複製
已複製
#
Icarus
- XBMC Plugin
#
Ringraziamo
Icarus
crew
# Canale per filmpertutti.co
# Canale per filmpertutti.co
複製
已複製
複製
已複製
# https://alfa-addon.com/categories/icarus-addon.50/
# ------------------------------------------------------------
# ------------------------------------------------------------
import re
import re
import urlparse
import urlparse
複製
已複製
複製
已複製
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
複製
已複製
複製
已複製
from core.tmdb import infoIca
from lib import unshortenit
from lib import unshortenit
from platformcode import config, logger
from platformcode import config, logger
複製
已複製
複製
已複製
from channelselector import thumb
複製
已複製
複製
已複製
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):
複製
已複製
複製
已複製
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):
複製
已複製
複製
已複製
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
複製
已複製
複製
已複製
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):
複製
已複製
複製
已複製
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:
複製
已複製
複製
已複製
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 []
複製
已複製
複製
已複製
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 = []
複製
已複製
複製
已複製
# 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,
複製
已複製
複製
已複製
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
複製
已複製
複製
已複製
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,
複製
已複製
複製
已複製
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))
複製
已複製
複製
已複製
logger.info(
"icarus.filmpertutti findvideos"
)
def peliculas(item):
logger.info(
item.channel + 'peliculas'
)
itemlist = []
itemlist = []
複製
已複製
複製
已複製
logger.debug(item)
複製
已複製
複製
已複製
# 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)
複製
已複製
複製
已複製
lsrvo
=
''
patron
=
r'<li><a href="([^"]+)" data-thumbnail="([^"]+)">.*?<div class="title">([^<]+)<\/div>'
for lurl, lsrv in
matches
:
matches = scrapertoolsV2.find_multiple_
matches
(block, patron)
複製
已複製
複製
已複製
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]'
複製
已複製
複製
已複製
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)
複製
已複製
複製
已複製
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)
複製
已複製
複製
已複製
## 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()))
複製
已複製
複製
已複製
for link, srv in links:
return
itemlist
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:
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)
複製
已複製
複製
已複製
# 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
複製
已複製
複製
已複製
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
)
複製
已複製
複製
已複製
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:
複製
已複製
複製
已複製
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
複製
已複製
複製
已複製
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
已保存差異
原始文本
開啟檔案
# -*- 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
更改後文本
開啟檔案
# -*- 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
尋找差異