Merge pull request 'test-latest' (#1) from test-latest into master
Reviewed-on: #1
This commit is contained in:
30
.gitea/workflows/updateDomains.yaml
Normal file
30
.gitea/workflows/updateDomains.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
name: Update channel domains
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: '30 17 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: 3.7
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pip install requests
|
||||||
|
|
||||||
|
- name: Update domains
|
||||||
|
run: python tools/updateDomains.py
|
||||||
|
|
||||||
|
- name: Commit & Push changes
|
||||||
|
uses: actions-js/push@master
|
||||||
|
with:
|
||||||
|
message: "Aggiornamento domini"
|
||||||
|
branch: "master"
|
||||||
|
github_token: ${{ secrets.API_TOKEN_GITHUB }}
|
||||||
0
.github/ISSUE_TEMPLATE/canale-non-funzionante.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/canale-non-funzionante.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/server-non-funzionante.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/server-non-funzionante.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/test-canale.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/test-canale.md
vendored
Normal file → Executable file
0
.github/workflows/tests.yml
vendored
Normal file → Executable file
0
.github/workflows/tests.yml
vendored
Normal file → Executable file
0
.github/workflows/updateDomains.yml
vendored
Normal file → Executable file
0
.github/workflows/updateDomains.yml
vendored
Normal file → Executable file
0
.github/workflows/updateDomainsStable.yml
vendored
Normal file → Executable file
0
.github/workflows/updateDomainsStable.yml
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
CONTRIBUTING.md
Normal file → Executable file
0
CONTRIBUTING.md
Normal file → Executable file
0
__init__.py
Normal file → Executable file
0
__init__.py
Normal file → Executable file
5
addon.xml
Normal file → Executable file
5
addon.xml
Normal file → Executable file
@@ -1,11 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<addon id="plugin.video.kod" name="Kodi on Demand" version="1.7.7" provider-name="KoD Team">
|
||||||
<addon id="plugin.video.kod" name="Kodi on Demand BETA" version="1.7.7" provider-name="KoD Team">
|
|
||||||
<requires>
|
<requires>
|
||||||
<!-- <import addon="script.module.libtorrent" optional="true"/> -->
|
<!-- <import addon="script.module.libtorrent" optional="true"/> -->
|
||||||
<import addon="metadata.themoviedb.org" optional="true"/>
|
<import addon="metadata.themoviedb.org" optional="true"/>
|
||||||
<import addon="metadata.tvshows.themoviedb.org" optional="true"/>
|
<import addon="metadata.tvshows.themoviedb.org" optional="true"/>
|
||||||
<!-- <import addon="metadata.tvdb.com"/> -->
|
<!-- <import addon="metadata.tvdb.com"/> -->
|
||||||
<import addon="script.module.web-pdb" />
|
|
||||||
</requires>
|
</requires>
|
||||||
<extension point="xbmc.python.pluginsource" library="default.py">
|
<extension point="xbmc.python.pluginsource" library="default.py">
|
||||||
<provides>video</provides>
|
<provides>video</provides>
|
||||||
|
|||||||
15
channels.json
Normal file → Executable file
15
channels.json
Normal file → Executable file
@@ -1,28 +1,27 @@
|
|||||||
{
|
{
|
||||||
"direct": {
|
"direct": {
|
||||||
"altadefinizione01": "https://altadefinizione01.pet",
|
"altadefinizione01": "https://altadefinizione01.pet",
|
||||||
"animealtadefinizione": "https://www.animealtadefinizione.it",
|
"animealtadefinizione": "http://ww38.animealtadefinizione.it",
|
||||||
"animeforce": "https://www.animeforce.it",
|
"animeforce": "https://www.animeforce.it",
|
||||||
"animesaturn": "https://www.animesaturn.cx",
|
"animesaturn": "https://www.animesaturn.cx",
|
||||||
"animeunity": "https://www.animeunity.tv",
|
"animeunity": "https://www.animeunity.tv",
|
||||||
"animeworld": "https://www.animeworld.so",
|
"animeworld": "https://www.animeworld.so",
|
||||||
"aniplay": "https://aniplay.co",
|
"aniplay": "https://aniplay.co",
|
||||||
"casacinema": "https://casacinema.media",
|
"casacinema": "https://casacinema.media",
|
||||||
"cb01anime": "https://cineblog01.red",
|
"cb01anime": "https://cb01new.one",
|
||||||
"cinemalibero": "https://cinemalibero.cafe",
|
"cinemalibero": "https://cinemalibero.cafe",
|
||||||
"cinetecadibologna": "http://cinestore.cinetecadibologna.it",
|
"cinetecadibologna": "http://cinestore.cinetecadibologna.it",
|
||||||
"dinostreaming": "https://dinostreaming.it",
|
"dinostreaming": "https://dinostreaming.it",
|
||||||
"discoveryplus": "https://www.discoveryplus.com",
|
"discoveryplus": "https://www.discoveryplus.com",
|
||||||
"dreamsub": "https://www.animeworld.so",
|
"dreamsub": "https://www.animeworld.so",
|
||||||
"eurostreaming": "https://eurostreaming.diy",
|
"eurostreaming": "https://eurostreaming.lifestyle",
|
||||||
"eurostreaming_actor": "https://eurostreaming.futbol",
|
"eurostreaming_actor": "https://eurostreaming.my",
|
||||||
"filmstreaming": "https://film-streaming-ita.cam",
|
"filmstreaming": "https://film-streaming-ita.cam",
|
||||||
"guardaseriecam": "https://guardaserie.kitchen",
|
"guardaseriecam": "https://guardaserie.kitchen",
|
||||||
"hd4me": "https://hd4me.net",
|
"hd4me": "https://hd4me.net",
|
||||||
"ilcorsaronero": "https://ilcorsaronero.link",
|
"ilcorsaronero": "https://ilcorsaronero.link",
|
||||||
"ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.foo",
|
"ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.foo",
|
||||||
"italiafilm": "https://italia-film.biz",
|
"italiafilm": "https://italia-film.biz",
|
||||||
"lordchannel": "https://lordchannel.com",
|
|
||||||
"mediasetplay": "https://mediasetinfinity.mediaset.it",
|
"mediasetplay": "https://mediasetinfinity.mediaset.it",
|
||||||
"mondoserietv": "http://ww25.mondoserietv.club/?subid1=20230304-0434-261c-9cb0-a0044930e0a9",
|
"mondoserietv": "http://ww25.mondoserietv.club/?subid1=20230304-0434-261c-9cb0-a0044930e0a9",
|
||||||
"paramount": "https://www.mtv.it",
|
"paramount": "https://www.mtv.it",
|
||||||
@@ -30,9 +29,9 @@
|
|||||||
"plutotv": "https://pluto.tv",
|
"plutotv": "https://pluto.tv",
|
||||||
"raiplay": "https://www.raiplay.it",
|
"raiplay": "https://www.raiplay.it",
|
||||||
"serietvu": "http://ww1.serietvu.live/?sub1=47fb879a-5325-11ee-94a7-cc35006f53d1",
|
"serietvu": "http://ww1.serietvu.live/?sub1=47fb879a-5325-11ee-94a7-cc35006f53d1",
|
||||||
"streamingcommunity": "https://streamingcommunity.buzz",
|
"streamingcommunity": "https://streamingcommunity.ooo",
|
||||||
"streamingita": "https://streamingita.digital",
|
"streamingita": "https://streamingita.click",
|
||||||
"tantifilm": "https://tantifilm.hair",
|
"tantifilm": "https://tantifilm.name",
|
||||||
"toonitalia": "https://toonitalia.xyz"
|
"toonitalia": "https://toonitalia.xyz"
|
||||||
},
|
},
|
||||||
"findhost": {
|
"findhost": {
|
||||||
|
|||||||
0
channels/0example.json.txt
Normal file → Executable file
0
channels/0example.json.txt
Normal file → Executable file
0
channels/0example.py.txt
Normal file → Executable file
0
channels/0example.py.txt
Normal file → Executable file
0
channels/1337x.json
Normal file → Executable file
0
channels/1337x.json
Normal file → Executable file
0
channels/1337x.py
Normal file → Executable file
0
channels/1337x.py
Normal file → Executable file
0
channels/__init__.py
Normal file → Executable file
0
channels/__init__.py
Normal file → Executable file
0
channels/accuradio.json
Normal file → Executable file
0
channels/accuradio.json
Normal file → Executable file
0
channels/accuradio.py
Normal file → Executable file
0
channels/accuradio.py
Normal file → Executable file
0
channels/altadefinizione.json
Normal file → Executable file
0
channels/altadefinizione.json
Normal file → Executable file
0
channels/altadefinizione.py
Normal file → Executable file
0
channels/altadefinizione.py
Normal file → Executable file
0
channels/altadefinizione01.json
Normal file → Executable file
0
channels/altadefinizione01.json
Normal file → Executable file
0
channels/altadefinizione01.py
Normal file → Executable file
0
channels/altadefinizione01.py
Normal file → Executable file
0
channels/altadefinizioneclick.json
Normal file → Executable file
0
channels/altadefinizioneclick.json
Normal file → Executable file
0
channels/altadefinizioneclick.py
Normal file → Executable file
0
channels/altadefinizioneclick.py
Normal file → Executable file
0
channels/altadefinizionecommunity.json
Normal file → Executable file
0
channels/altadefinizionecommunity.json
Normal file → Executable file
0
channels/altadefinizionecommunity.py
Normal file → Executable file
0
channels/altadefinizionecommunity.py
Normal file → Executable file
0
channels/animealtadefinizione.json
Normal file → Executable file
0
channels/animealtadefinizione.json
Normal file → Executable file
0
channels/animealtadefinizione.py
Normal file → Executable file
0
channels/animealtadefinizione.py
Normal file → Executable file
0
channels/animeforce.json
Normal file → Executable file
0
channels/animeforce.json
Normal file → Executable file
0
channels/animeforce.py
Normal file → Executable file
0
channels/animeforce.py
Normal file → Executable file
0
channels/animesaturn.json
Normal file → Executable file
0
channels/animesaturn.json
Normal file → Executable file
0
channels/animesaturn.py
Normal file → Executable file
0
channels/animesaturn.py
Normal file → Executable file
0
channels/animeunity.json
Normal file → Executable file
0
channels/animeunity.json
Normal file → Executable file
42
channels/animeunity.py
Normal file → Executable file
42
channels/animeunity.py
Normal file → Executable file
@@ -4,7 +4,7 @@
|
|||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
import cloudscraper, json, copy, inspect
|
import cloudscraper, json, copy, inspect
|
||||||
from core import jsontools, support, httptools
|
from core import jsontools, support, httptools, scrapertools
|
||||||
from platformcode import autorenumber
|
from platformcode import autorenumber
|
||||||
|
|
||||||
# support.dbg()
|
# support.dbg()
|
||||||
@@ -53,7 +53,7 @@ def genres(item):
|
|||||||
# support.dbg()
|
# support.dbg()
|
||||||
itemlist = []
|
itemlist = []
|
||||||
|
|
||||||
genres = json.loads(support.match(response.text, patron='genres="([^"]+)').match.replace('"','"'))
|
genres = json.loads(support.match(response.data, patron='genres="([^"]+)').match.replace('"','"'))
|
||||||
|
|
||||||
for genre in genres:
|
for genre in genres:
|
||||||
item.args['genres'] = [genre]
|
item.args['genres'] = [genre]
|
||||||
@@ -65,10 +65,10 @@ def years(item):
|
|||||||
itemlist = []
|
itemlist = []
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
current_year = datetime.today().year
|
next_year = datetime.today().year + 1
|
||||||
oldest_year = int(support.match(response.text, patron='anime_oldest_date="([^"]+)').match)
|
oldest_year = int(support.match(response.data, patron='anime_oldest_date="([^"]+)').match)
|
||||||
|
|
||||||
for year in list(reversed(range(oldest_year, current_year + 1))):
|
for year in list(reversed(range(oldest_year, next_year + 1))):
|
||||||
item.args['year']=year
|
item.args['year']=year
|
||||||
itemlist.append(item.clone(title=support.typo(year,'bold'), action='peliculas'))
|
itemlist.append(item.clone(title=support.typo(year,'bold'), action='peliculas'))
|
||||||
return itemlist
|
return itemlist
|
||||||
@@ -116,23 +116,33 @@ def news(item):
|
|||||||
support.info()
|
support.info()
|
||||||
item.contentType = 'episode'
|
item.contentType = 'episode'
|
||||||
itemlist = []
|
itemlist = []
|
||||||
import cloudscraper
|
|
||||||
session = cloudscraper.create_scraper()
|
|
||||||
|
|
||||||
fullJs = json.loads(support.match(session.get(item.url).text, headers=headers, patron=r'items-json="([^"]+)"').match.replace('"','"'))
|
fullJs = json.loads(support.match(httptools.downloadpage(item.url).data, headers=headers, patron=r'items-json="([^"]+)"').match.replace('"','"'))
|
||||||
js = fullJs['data']
|
js = fullJs['data']
|
||||||
|
|
||||||
for it in js:
|
for it in js:
|
||||||
if it.get('anime', {}).get('title'):
|
if it.get('anime', {}).get('title') or it.get('anime', {}).get('title_eng'):
|
||||||
|
title_name = it['anime']['title'] if it.get('anime', {}).get('title') else it['anime']['title_eng']
|
||||||
|
pattern = r'[sS](?P<season>\d+)[eE](?P<episode>\d+)'
|
||||||
|
match = scrapertools.find_single_match(it['file_name'], pattern)
|
||||||
|
full_episode = ''
|
||||||
|
if match:
|
||||||
|
season, episode = match
|
||||||
|
full_episode = ' - S' + season + ' E' + episode
|
||||||
|
else:
|
||||||
|
pattern = r'[._\s]Ep[._\s]*(?P<episode>\d+)'
|
||||||
|
episode = scrapertools.find_single_match(it['file_name'], pattern)
|
||||||
|
if episode:
|
||||||
|
full_episode = ' - E' + episode
|
||||||
itemlist.append(
|
itemlist.append(
|
||||||
item.clone(title= support.typo(it['anime']['title'] + ' - EP. ' + it['number'], 'bold'),
|
item.clone(title = support.typo(title_name + full_episode, 'bold'),
|
||||||
fulltitle=it['anime']['title'],
|
fulltitle = it['anime']['title'],
|
||||||
thumbnail=it['anime']['imageurl'],
|
thumbnail = it['anime']['imageurl'],
|
||||||
forcethumb = True,
|
forcethumb = True,
|
||||||
scws_id=it.get('scws_id', ''),
|
scws_id = it.get('scws_id', ''),
|
||||||
# video_url=it.get('link', ''),
|
url = '{}/anime/{}-{}'.format(item.url, it['anime']['id'],it['anime']['slug']),
|
||||||
plot=it['anime']['plot'],
|
plot = it['anime']['plot'],
|
||||||
action='findvideos')
|
action = 'findvideos')
|
||||||
)
|
)
|
||||||
if 'next_page_url' in fullJs:
|
if 'next_page_url' in fullJs:
|
||||||
itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'),thumbnail=support.thumb(), url=fullJs['next_page_url']))
|
itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'),thumbnail=support.thumb(), url=fullJs['next_page_url']))
|
||||||
|
|||||||
0
channels/animeuniverse.json
Normal file → Executable file
0
channels/animeuniverse.json
Normal file → Executable file
0
channels/animeuniverse.py
Normal file → Executable file
0
channels/animeuniverse.py
Normal file → Executable file
0
channels/animeworld.json
Normal file → Executable file
0
channels/animeworld.json
Normal file → Executable file
0
channels/animeworld.py
Normal file → Executable file
0
channels/animeworld.py
Normal file → Executable file
0
channels/aniplay.json
Normal file → Executable file
0
channels/aniplay.json
Normal file → Executable file
0
channels/aniplay.py
Normal file → Executable file
0
channels/aniplay.py
Normal file → Executable file
0
channels/casacinema.json
Normal file → Executable file
0
channels/casacinema.json
Normal file → Executable file
0
channels/casacinema.py
Normal file → Executable file
0
channels/casacinema.py
Normal file → Executable file
0
channels/cb01anime.json
Normal file → Executable file
0
channels/cb01anime.json
Normal file → Executable file
0
channels/cb01anime.py
Normal file → Executable file
0
channels/cb01anime.py
Normal file → Executable file
0
channels/cineblog01.json
Normal file → Executable file
0
channels/cineblog01.json
Normal file → Executable file
0
channels/cineblog01.py
Normal file → Executable file
0
channels/cineblog01.py
Normal file → Executable file
0
channels/cinemalibero.json
Normal file → Executable file
0
channels/cinemalibero.json
Normal file → Executable file
0
channels/cinemalibero.py
Normal file → Executable file
0
channels/cinemalibero.py
Normal file → Executable file
0
channels/cinetecadibologna.json
Normal file → Executable file
0
channels/cinetecadibologna.json
Normal file → Executable file
0
channels/cinetecadibologna.py
Normal file → Executable file
0
channels/cinetecadibologna.py
Normal file → Executable file
0
channels/dinostreaming.json
Normal file → Executable file
0
channels/dinostreaming.json
Normal file → Executable file
0
channels/dinostreaming.py
Normal file → Executable file
0
channels/dinostreaming.py
Normal file → Executable file
0
channels/discoveryplus.json
Normal file → Executable file
0
channels/discoveryplus.json
Normal file → Executable file
0
channels/discoveryplus.py
Normal file → Executable file
0
channels/discoveryplus.py
Normal file → Executable file
0
channels/dreamsub.json
Normal file → Executable file
0
channels/dreamsub.json
Normal file → Executable file
0
channels/dreamsub.py
Normal file → Executable file
0
channels/dreamsub.py
Normal file → Executable file
2
channels/eurostreaming.json
Normal file → Executable file
2
channels/eurostreaming.json
Normal file → Executable file
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"id": "eurostreaming",
|
"id": "eurostreaming",
|
||||||
"name": "Eurostreaming",
|
"name": "Eurostreaming",
|
||||||
"active": true,
|
"active": false,
|
||||||
"language": ["ita", "sub-ita"],
|
"language": ["ita", "sub-ita"],
|
||||||
"thumbnail": "eurostreaming.png",
|
"thumbnail": "eurostreaming.png",
|
||||||
"banner": "eurostreaming.png",
|
"banner": "eurostreaming.png",
|
||||||
|
|||||||
0
channels/eurostreaming.py
Normal file → Executable file
0
channels/eurostreaming.py
Normal file → Executable file
0
channels/eurostreaming_actor.json
Normal file → Executable file
0
channels/eurostreaming_actor.json
Normal file → Executable file
0
channels/eurostreaming_actor.py
Normal file → Executable file
0
channels/eurostreaming_actor.py
Normal file → Executable file
0
channels/filmpertutti.json
Normal file → Executable file
0
channels/filmpertutti.json
Normal file → Executable file
0
channels/filmpertutti.py
Normal file → Executable file
0
channels/filmpertutti.py
Normal file → Executable file
0
channels/filmstreaming.json
Normal file → Executable file
0
channels/filmstreaming.json
Normal file → Executable file
0
channels/filmstreaming.py
Normal file → Executable file
0
channels/filmstreaming.py
Normal file → Executable file
0
channels/guardaseriecam.json
Normal file → Executable file
0
channels/guardaseriecam.json
Normal file → Executable file
0
channels/guardaseriecam.py
Normal file → Executable file
0
channels/guardaseriecam.py
Normal file → Executable file
0
channels/guardaserieclick.json
Normal file → Executable file
0
channels/guardaserieclick.json
Normal file → Executable file
0
channels/guardaserieclick.py
Normal file → Executable file
0
channels/guardaserieclick.py
Normal file → Executable file
0
channels/guardaserieicu.json
Normal file → Executable file
0
channels/guardaserieicu.json
Normal file → Executable file
0
channels/guardaserieicu.py
Normal file → Executable file
0
channels/guardaserieicu.py
Normal file → Executable file
0
channels/hd4me.json
Normal file → Executable file
0
channels/hd4me.json
Normal file → Executable file
0
channels/hd4me.py
Normal file → Executable file
0
channels/hd4me.py
Normal file → Executable file
0
channels/ilcorsaronero.json
Normal file → Executable file
0
channels/ilcorsaronero.json
Normal file → Executable file
67
channels/ilcorsaronero.py
Normal file → Executable file
67
channels/ilcorsaronero.py
Normal file → Executable file
@@ -3,56 +3,33 @@
|
|||||||
# Canale per ilcorsaronero
|
# Canale per ilcorsaronero
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
from core import support
|
from core import support, httptools
|
||||||
|
|
||||||
# def findhost(url):
|
|
||||||
# data = support.httptools.downloadpage(url).data
|
|
||||||
# url = support.scrapertools.find_single_match(data, '<li><a href="([^"]+)')
|
|
||||||
# return url[:-1] if url.endswith('/') else url
|
|
||||||
|
|
||||||
host = support.config.get_channel_url()
|
host = support.config.get_channel_url()
|
||||||
support.info('HOST',host)
|
support.info('HOST',host)
|
||||||
# host = 'https://ilcorsaronero.xyz'
|
|
||||||
headers = [['Referer', host]]
|
headers = [['Referer', host]]
|
||||||
|
|
||||||
|
|
||||||
@support.menu
|
@support.menu
|
||||||
def mainlist(item):
|
def mainlist(item):
|
||||||
|
|
||||||
menu = [
|
menu = [
|
||||||
('BDRiP {film}', ['/categoria.php?active=0&category=1&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
|
('Film {film}', ['/cat/film', 'peliculas', [0, 'movie', True], 'undefined']),
|
||||||
('Cerca BDRiP... {submenu} {film}', ['/torrent-ita/1/', 'search', ['search', 'movie', True], 'movie']),
|
('Serie TV', ['/cat/serie-tv', 'peliculas', [0 , 'tvshow', True], 'undefined']),
|
||||||
('DVD {film}', ['/categoria.php?active=0&category=20&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
|
('Animazione', ['/cat/animazione', 'peliculas', [0 , 'anime', True], 'undefined']),
|
||||||
('Cerca DVD... {submenu} {film}', ['/torrent-ita/20/', 'search', ['search', 'movie', True], 'movie']),
|
('Documentari', ['/cat/altro/documentari', 'peliculas', [0 , 'documentary', True], 'undefined']),
|
||||||
('Screener {film}', ['/categoria.php?active=0&category=19&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
|
('Programmi TV', ['/cat/altro/programmi-tv', 'peliculas', [0 , 'tvshow', True], 'tvshow']),
|
||||||
('Cerca Screener.. {submenu} {film}', ['/torrent-ita/19/', 'search', ['search', 'movie', True], 'movie']),
|
('Video Musica', ['/cat/musica/video-musicali', 'peliculas', [0 , 'music', False], 'undefined']),
|
||||||
('Serie TV', ['/categoria.php?active=0&category=15&order=data&by=DES&page=', 'peliculas', [0 , 'tvshow', True], 'tvshow']),
|
('Videocorsi', ['/cat/altro/videocorsi', 'peliculas', [0 , 'music', False], 'undefined'])
|
||||||
('Cerca Serie TV.. {submenu}', ['/torrent-ita/15/', 'search', ['search', 'tvshow',True], 'tvshow']),
|
|
||||||
('Anime', ['/categoria.php?active=0&category=5&order=data&by=DESC&page=', 'peliculas', [0, 'anime', True], 'tvshow']),
|
|
||||||
('Cerca Anime.. {submenu}', ['/torrent-ita/5/', 'search', ['search', 'anime', True], 'tvshow']),
|
|
||||||
('Musica', ['/categoria.php?active=0&category=2&order=data&by=DESC&page=', 'peliculas', [0, 'music', False], 'music']),
|
|
||||||
('Cerca Musica.. {submenu}', ['/torrent-ita/2/', 'search', ['search', 'music', False], 'music']),
|
|
||||||
('Audiolibri {musica}', ['/categoria.php?active=0&category=18&order=data&by=DESC&page=', 'peliculas', [0, 'music', False], 'music']),
|
|
||||||
('Cerca Audiolibri.. {submenu}', ['/torrent-ita/18/', 'search', ['search', 'music', False], 'music']),
|
|
||||||
# mostrerebbe anche risultati non "multimediali" e allungherebbero inutilmente la ricerca globale
|
|
||||||
# ('Altro {film}', ['/categoria.php?active=0&category=4&order=data&by=DESC&page=', 'peliculas', [0, 'other', False]]),
|
|
||||||
# ('Cerca altro.. {submenu}', ['/torrent-ita/4/', 'search', ['search', 'other', False]]),
|
|
||||||
# ('Cerca Tutto... {color kod bold}', ['/argh.php?search=', 'search', ['search', 'all', False]])
|
|
||||||
]
|
]
|
||||||
|
search = ''
|
||||||
|
|
||||||
return locals()
|
return locals()
|
||||||
|
|
||||||
|
|
||||||
@support.scrape
|
@support.scrape
|
||||||
def peliculas(item):
|
def peliculas(item):
|
||||||
# debug = True
|
debug = False
|
||||||
action = 'findvideos'
|
action = 'findvideos'
|
||||||
sceneTitle = item.args[2]
|
sceneTitle = item.args[2]
|
||||||
if item.args[1] in ['tvshow', 'anime', 'music', 'other']:
|
|
||||||
patron = r'>[^"<]+'
|
|
||||||
else:
|
|
||||||
patron = r'>(?P<quality>[^"<]+)'
|
|
||||||
patron += '<td[^>]+><a class="tab" href="(?P<url>[^"]+)"\s*>[^<]+<[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>(?P<size>[^<]+)<[^>]+>[^>]+>[^>]+><form action="[^"]+/\d+/(?P<title>[^"]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>(?P<seed>[^<]+)'
|
|
||||||
|
|
||||||
def itemHook(item):
|
def itemHook(item):
|
||||||
if not sceneTitle:
|
if not sceneTitle:
|
||||||
@@ -62,33 +39,23 @@ def peliculas(item):
|
|||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
||||||
if 'search' not in item.args:
|
patron = r'<a class="hover:underline line-clamp-1.*?href="(?P<url>[^"]+)"\s*>(?P<title>.*?)</a>[^>]+>[^>]+>[^>]+>(?P<seed>.*?)<'
|
||||||
item.url += str(item.args[0])
|
patronNext = r'<a href="(?P<url>[^"]+)".*?Next</span>'
|
||||||
def itemlistHook(itemlist):
|
|
||||||
args = item.args
|
|
||||||
args[0] += 1
|
|
||||||
support.nextPage(itemlist, item, next_page=item.url, function_or_level="peliculas")
|
|
||||||
# itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'), args=args, thumbnail=support.thumb()))
|
|
||||||
return itemlist
|
|
||||||
return locals()
|
return locals()
|
||||||
|
|
||||||
|
|
||||||
def search(item, text):
|
def search(item, text):
|
||||||
support.info(item, text)
|
item.url = "{}/search?{}".format(host, support.urlencode({'q': text}))
|
||||||
if 'all' in item.args:
|
item.args = 'search'
|
||||||
item.url += text
|
|
||||||
else:
|
|
||||||
item.url += text + '.html'
|
|
||||||
try:
|
try:
|
||||||
return peliculas(item)
|
return peliculas(item)
|
||||||
# Cattura la eccezione così non interrompe la ricerca globle se il canale si rompe!
|
|
||||||
except:
|
except:
|
||||||
import sys
|
import sys
|
||||||
for line in sys.exc_info():
|
for line in sys.exc_info():
|
||||||
support.logger.error("search except: %s" % line)
|
logger.error("search except: %s" % line)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
def findvideos(item):
|
def findvideos(item):
|
||||||
if item.contentType == 'tvshow': item.contentType = 'episode'
|
if item.contentType == 'tvshow': item.contentType = 'episode'
|
||||||
Videolibrary = True if 'movie' in item.args else False
|
Videolibrary = True if 'movie' in item.args else False
|
||||||
|
|||||||
0
channels/ilgeniodellostreaming.json
Normal file → Executable file
0
channels/ilgeniodellostreaming.json
Normal file → Executable file
0
channels/ilgeniodellostreaming.py
Normal file → Executable file
0
channels/ilgeniodellostreaming.py
Normal file → Executable file
0
channels/ilgeniodellostreaming_cam.json
Normal file → Executable file
0
channels/ilgeniodellostreaming_cam.json
Normal file → Executable file
0
channels/ilgeniodellostreaming_cam.py
Normal file → Executable file
0
channels/ilgeniodellostreaming_cam.py
Normal file → Executable file
0
channels/italiafilm.json
Normal file → Executable file
0
channels/italiafilm.json
Normal file → Executable file
0
channels/italiafilm.py
Normal file → Executable file
0
channels/italiafilm.py
Normal file → Executable file
0
channels/italiaserie.json
Normal file → Executable file
0
channels/italiaserie.json
Normal file → Executable file
0
channels/italiaserie.py
Normal file → Executable file
0
channels/italiaserie.py
Normal file → Executable file
0
channels/la7.json
Normal file → Executable file
0
channels/la7.json
Normal file → Executable file
0
channels/la7.py
Normal file → Executable file
0
channels/la7.py
Normal file → Executable file
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "lordchannel",
|
|
||||||
"name": "LordChannel",
|
|
||||||
"active": true,
|
|
||||||
"language": ["ita", "sub-ita"],
|
|
||||||
"thumbnail": "lordchannel.png",
|
|
||||||
"banner": "lordchannel.png",
|
|
||||||
"categories": ["anime", "tvshow", "movie"],
|
|
||||||
"settings": []
|
|
||||||
}
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Canale per lordchannel.py
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
|
|
||||||
from core import httptools, support, scrapertools
|
|
||||||
from core.item import Item
|
|
||||||
from platformcode import config, logger
|
|
||||||
|
|
||||||
host = config.get_channel_url()
|
|
||||||
headers = [['Referer', host]]
|
|
||||||
|
|
||||||
@support.menu
|
|
||||||
def mainlist(item):
|
|
||||||
|
|
||||||
film = ['/film/',
|
|
||||||
]
|
|
||||||
tvshow = ['/serietv/',
|
|
||||||
]
|
|
||||||
|
|
||||||
anime = ['/anime/anime-ita/',
|
|
||||||
('Anime SUB-Ita', ['/anime/anime-sub-ita/','peliculas']),
|
|
||||||
]
|
|
||||||
search = ''
|
|
||||||
return locals()
|
|
||||||
|
|
||||||
|
|
||||||
@support.scrape
|
|
||||||
def peliculas(item):
|
|
||||||
if item.args == 'search':
|
|
||||||
action = 'check'
|
|
||||||
patron= r'<div class="col-6.*?<img\s.*?src="(?P<thumb>[^"]+).*?<h3.*?<a\shref="(?P<url>[^"]+).*?>(?P<title>.*?)</a'
|
|
||||||
patronNext = r'<li class="paginator__item paginator__item--next">.*?href="(?P<url>[^"]+)'
|
|
||||||
return locals()
|
|
||||||
|
|
||||||
@support.scrape
|
|
||||||
def episodios(item):
|
|
||||||
patronBlock=r'<div class="accordion__card.*?<span>.*?:\s*(?P<season>\d*?)\s*</span>(?P<block>.*?)</table>'
|
|
||||||
patron=r'<tr>\s<th class="episode-link".*?href="(?P<url>[^"]+).*?>(?P<episode>\d+).*?_blank">(?P<title>.*?)</a>'
|
|
||||||
downloadEnabled = False
|
|
||||||
return locals()
|
|
||||||
|
|
||||||
def check(item):
|
|
||||||
item.data = httptools.downloadpage(item.url).data
|
|
||||||
if 'episode-link' in item.data.lower():
|
|
||||||
item.contentType = 'tvshow'
|
|
||||||
return episodios(item)
|
|
||||||
else:
|
|
||||||
item.contentType = 'movie'
|
|
||||||
return findvideos(item)
|
|
||||||
|
|
||||||
|
|
||||||
def search(item, text):
|
|
||||||
item.url = "{}/cerca/?{}".format(host, support.urlencode({'q': text}))
|
|
||||||
item.args = 'search'
|
|
||||||
|
|
||||||
try:
|
|
||||||
return peliculas(item)
|
|
||||||
|
|
||||||
except:
|
|
||||||
import sys
|
|
||||||
for line in sys.exc_info():
|
|
||||||
logger.error("search except: %s" % line)
|
|
||||||
return []
|
|
||||||
|
|
||||||
def findvideos(item):
|
|
||||||
video_url = item.url
|
|
||||||
|
|
||||||
if item.contentType == 'movie':
|
|
||||||
video_url = support.match(video_url, patron=r'<a\shref="(?P<url>[^"]+)"\sclass="btn-streaming streaming_btn">').match
|
|
||||||
|
|
||||||
video_url = support.match(video_url, patron=r'<video-js.*?src="(?P<url>[^"]+)').match
|
|
||||||
|
|
||||||
if (video_url == ''):
|
|
||||||
return []
|
|
||||||
|
|
||||||
item = item.clone(server='directo', url=video_url, no_return=True)
|
|
||||||
return support.server(item,itemlist=[item], Download=False, Videolibrary=False)
|
|
||||||
0
channels/mediasetplay.json
Normal file → Executable file
0
channels/mediasetplay.json
Normal file → Executable file
16
channels/mediasetplay.py
Normal file → Executable file
16
channels/mediasetplay.py
Normal file → Executable file
@@ -48,17 +48,19 @@ pagination = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100][config.get_setting('pagin
|
|||||||
def mainlist(item):
|
def mainlist(item):
|
||||||
top = [('Dirette {bold}', ['', 'live'])]
|
top = [('Dirette {bold}', ['', 'live'])]
|
||||||
|
|
||||||
menu = [('Film {bullet bold}', ['/cinema', 'peliculas', {'uxReference':'filmUltimiArrivi'}, 'movie']),
|
menu = [('Film Più Visti {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmPiuVisti24H'}, 'movie']),
|
||||||
('Film Più Visti {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmPiuVisti24H'}, 'movie']),
|
('Film ultimi arrivi {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmUltimiArrivi'}, 'movie']),
|
||||||
('Film Da Non Perdere {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmClustering'}, 'movie']),
|
('Film Da Non Perdere {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmClustering'}, 'movie']),
|
||||||
('Fiction / Serie TV {bullet bold}', ['/fiction', 'peliculas', {'uxReference':'fictionSerieTvDelMomento'}, 'tvshow']),
|
('Fiction e Serie Tv del momento {submenu}', ['/fiction', 'peliculas', {'uxReference':'fictionSerieTvDelMomento'}, 'tvshow']),
|
||||||
('Serie TV Piu Viste {submenu}', ['/fiction', 'peliculas', {'uxReference':'serieTvPiuViste24H'}, 'tvshow']),
|
('Serie TV Piu Viste {submenu}', ['/fiction', 'peliculas', {'uxReference':'serieTvPiuViste24H'}, 'tvshow']),
|
||||||
('Le Serie Soap Del Momento {submenu}', ['/cinema', 'peliculas', {'uxReference':'fictionSerieTvParamsGenre', 'params': 'genre≈Soap opera'}, 'tvshow']),
|
('Soap del momento {submenu}', ['/cinema', 'peliculas', {'uxReference':'fictionSerieTvParamsGenre', 'params': 'genre≈Soap opera'}, 'tvshow']),
|
||||||
('Programmi TV{ bullet bold}', ['/programmitv', 'peliculas', {'uxReference':'stagioniPrimaSerata'}, 'tvshow']),
|
('Programmi TV Prima serata{ submenu}', ['/programmitv', 'peliculas', {'uxReference':'stagioniPrimaSerata'}, 'tvshow']),
|
||||||
('Kids {bullet bold}', ['/kids', 'peliculas', {'uxReference':'kidsMediaset' }, 'undefined']),
|
('Programmi TV Daytime{ submenu}', ['/programmitv', 'peliculas', {'uxReference':'stagioniDaytime'}, 'tvshow']),
|
||||||
|
('Talent e reality {submenu}', ['/talent', 'peliculas', {'uxReference':'multipleBlockProgrammiTv', 'userContext' :'iwiAeyJwbGF0Zm9ybSI6IndlYiJ9Aw'}, 'tvshow']),
|
||||||
|
('Kids Evergreen {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsMediaset' }, 'undefined']),
|
||||||
('Kids Boing {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsBoing' }, 'undefined']),
|
('Kids Boing {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsBoing' }, 'undefined']),
|
||||||
('Kids Cartoonito {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsCartoonito' }, 'undefined']),
|
('Kids Cartoonito {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsCartoonito' }, 'undefined']),
|
||||||
('Documentari {bullet bold}', ['/documentari', 'peliculas', {'uxReference': 'documentariPiuVisti24H'}, 'undefined']),
|
('Documentari più visti {submenu}', ['/documentari', 'peliculas', {'uxReference': 'documentariPiuVisti24H'}, 'undefined']),
|
||||||
]
|
]
|
||||||
|
|
||||||
search = ''
|
search = ''
|
||||||
|
|||||||
0
channels/mediasetplay.py.old
Normal file → Executable file
0
channels/mediasetplay.py.old
Normal file → Executable file
2
channels/metalvideo.json
Normal file → Executable file
2
channels/metalvideo.json
Normal file → Executable file
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"id": "metalvideo",
|
"id": "metalvideo",
|
||||||
"name": "Metal Video",
|
"name": "Metal Video",
|
||||||
"active": true,
|
"active": false,
|
||||||
"language": ["*"],
|
"language": ["*"],
|
||||||
"thumbnail": "metalvideo.png",
|
"thumbnail": "metalvideo.png",
|
||||||
"banner": "metalvideo.png",
|
"banner": "metalvideo.png",
|
||||||
|
|||||||
0
channels/metalvideo.py
Normal file → Executable file
0
channels/metalvideo.py
Normal file → Executable file
0
channels/mondoserietv.json
Normal file → Executable file
0
channels/mondoserietv.json
Normal file → Executable file
0
channels/mondoserietv.py
Normal file → Executable file
0
channels/mondoserietv.py
Normal file → Executable file
0
channels/paramount.json
Normal file → Executable file
0
channels/paramount.json
Normal file → Executable file
0
channels/paramount.py
Normal file → Executable file
0
channels/paramount.py
Normal file → Executable file
0
channels/piratestreaming.json
Normal file → Executable file
0
channels/piratestreaming.json
Normal file → Executable file
0
channels/piratestreaming.py
Normal file → Executable file
0
channels/piratestreaming.py
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user