409 Commits

Author SHA1 Message Date
22b61234a9 update updater config
All checks were successful
Update channel domains / update (push) Successful in 17s
2025-01-17 22:17:29 +01:00
f129d57f30 workflow
All checks were successful
Update channel domains / update (push) Successful in 17s
2025-01-17 21:50:02 +01:00
607f3c8128 workflow edit
Some checks failed
Update channel domains / update (push) Failing after 53s
2025-01-17 21:46:53 +01:00
75e0f8bfa0 Merge pull request 'test-latest' (#1) from test-latest into master
Reviewed-on: #1
2025-01-17 20:44:30 +00:00
50954f50ec add workflow gitea 2025-01-17 21:41:09 +01:00
59ad6be60e update channels 2025-01-16 00:43:17 +01:00
b22139ba2c Tlatest 2025-01-16 00:40:27 +01:00
bde83602d6 latest version 2025-01-16 00:40:16 +01:00
github-actions[bot]
84a6d7ec93 Aggiornamento domini 2024-09-07 17:35:47 +00:00
Timmy89
3ffa260525 Disattivato Tantifilm 2024-09-04 13:08:56 +02:00
Timmy89
edb24c906f Disattivato AniPlay 2024-09-04 13:00:28 +02:00
github-actions[bot]
8d6ef2aebd Aggiornamento domini 2024-09-03 17:36:37 +00:00
github-actions[bot]
df6b7c70d8 Aggiornamento domini 2024-08-26 17:38:12 +00:00
ilmich
e0cc7d9edb cineblog: fix scraper 2024-08-24 17:00:33 +02:00
github-actions[bot]
e93b58895c Aggiornamento domini 2024-08-19 17:37:41 +00:00
github-actions[bot]
ae13adb02f Aggiornamento domini 2024-08-11 17:39:39 +00:00
ilmich
bcbb42b4c0 lordchannel: new channel 2024-08-02 16:33:33 +02:00
ilmich
771d2d571a updated scws 2024-07-29 08:18:41 +02:00
ilmich
bbdb4375c5 Aggiornamento domini 2024-07-25 17:04:56 +02:00
github-actions[bot]
88cdae47ff Aggiornamento domini 2024-07-24 17:39:07 +00:00
ilmich
f1d055d4fa toonitalia: fix scraper and voe server 2024-07-21 09:44:04 +02:00
github-actions[bot]
7d641bf83f Aggiornamento domini 2024-07-20 17:38:38 +00:00
github-actions[bot]
eb14c3c0ac Aggiornamento domini 2024-07-19 17:38:35 +00:00
ilmich
bb4e63471e channels: fix raiplay e filmpertutti 2024-07-19 19:01:58 +02:00
github-actions[bot]
73c5b73b64 Aggiornamento domini 2024-07-16 17:40:05 +00:00
ilmich
ffffcf691d filmpertutti: fix channel 2024-07-13 21:56:47 +02:00
github-actions[bot]
cc8353ddca Aggiornamento domini 2024-07-11 17:39:49 +00:00
github-actions[bot]
b100f758af Aggiornamento domini 2024-07-07 17:36:16 +00:00
ilmich
43b173c7a2 dinostreaming: updated with some categories 2024-07-07 12:08:06 +02:00
ilmich
2c901fdbf1 dinostreaming: new channel (work in progress) 2024-07-07 11:25:44 +02:00
ilmich
d378d31677 altadefinizione: channel refactored 2024-07-05 14:59:41 +02:00
ilmich
3d25d8d098 altadefinizione: fix resume on some tv series 2024-06-28 18:15:47 +02:00
ilmich
1818994ded altadefinizione: fix for not working stream 2024-06-28 17:38:53 +02:00
ilmich
da7d766531 altadefinizione: fix player resume 2024-06-28 17:09:52 +02:00
ilmich
7d46b74bee altadefinizione: fix for speed 2024-06-28 16:36:29 +02:00
ilmich
bc90ba67be altadefiniziona: fix scraper 2024-06-28 08:58:34 +02:00
github-actions[bot]
4bd441bf4d Aggiornamento domini 2024-06-17 17:36:11 +00:00
ilmich
d049be14e0 vvvvid: disabled 2024-06-16 21:19:00 +02:00
ilmich
5e4cf944b1 discoveryplus: fix live channels 2024-06-16 09:47:15 +02:00
ilmich
2a150f7978 altadefinizione: fixed episode scraper 2024-06-15 11:47:14 +02:00
ilmich
125e62e763 supervideo: fix url 2024-06-07 17:50:30 +02:00
github-actions[bot]
b8a2ea0dc4 Aggiornamento domini 2024-05-31 17:39:13 +00:00
github-actions[bot]
2f6c6cf453 Aggiornamento domini 2024-05-27 17:36:27 +00:00
Timmy89
6bc86936b2 Aggiornamento domini 2024-05-26 22:47:01 +02:00
ilmich
404c9558eb altadefinizione: fix scraper 2024-05-25 08:53:01 +02:00
ilmich
7ce8acd5eb fix SC pagination 2024-05-23 19:50:09 +02:00
ilmich
2f4edf4d79 Fix SWCS 2024-05-23 10:06:47 +02:00
ilmich
6c5746a2ad Fix SCWS 2024-05-23 09:54:17 +02:00
Alhaziel01
521f168ab9 Fix AnimeUnity e SCWS 2024-05-16 19:26:44 +02:00
github-actions[bot]
26e5fb068e Aggiornamento domini 2024-05-10 17:37:11 +00:00
ilmich
895b81edb7 hd4me: fix channel 2024-05-10 09:57:22 +02:00
github-actions[bot]
412025c514 Aggiornamento domini 2024-05-06 17:37:23 +00:00
marco
29915fa6e4 altadefinizione: episodios con scrape 2024-04-28 17:26:56 +02:00
ilmich
48fd712f81 downloads: fix when autoplay is enabled 2024-04-27 20:41:54 +02:00
ilmich
c8ffa002a3 support: set movie icon for saghe 2024-04-27 12:16:58 +02:00
ilmich
430b7174bf altadefinizione: fix channel 2024-04-27 09:15:44 +02:00
ilmich
251d7f2687 mediasetplay: revised channel menu 2024-04-26 08:09:07 +02:00
ilmich
c8047932e2 mediasetplay: fix channel 2024-04-24 17:31:46 +02:00
ilmich
f6e2410a2d supervideo: fix url 2024-04-24 14:34:13 +02:00
ilmich
f84527c700 altadefinizione01: channel fix 2024-04-24 11:17:21 +02:00
ilmich
f7e467c23a voe: fix media url 2024-04-24 08:08:07 +02:00
github-actions[bot]
1f160b96f9 Aggiornamento domini 2024-04-22 17:36:13 +00:00
ilmich
6c08f820e6 raiplay: fix drm contents 2024-04-18 07:24:14 +02:00
Timmy89
cc07517afb Disabilitato filmstreaming 2024-04-16 08:57:22 +02:00
github-actions[bot]
72f850ef3b Aggiornamento domini 2024-04-11 17:37:36 +00:00
ilmich
26c8122500 fix domain 2024-04-06 17:40:57 +02:00
ilmich
1b7fc47781 updated servers 2024-04-06 00:05:16 +02:00
ilmich
db0802f5bc discoveryplus: fix for some programs 2024-04-05 23:30:35 +02:00
github-actions[bot]
3ce79ced23 Aggiornamento domini 2024-03-22 17:36:33 +00:00
Timmy89
8f98b6486a Update maxstream.json 2024-03-22 13:42:56 +01:00
TheHacker66
ef1c9a7736 Fix maxstream su cineblog01 (#485) 2024-03-21 19:39:49 +01:00
marco
8150bace6c Rimosso anonfiles dai provider per i file di log 2024-03-21 19:25:21 +01:00
ilmich
987755c058 added lulustream server 2024-03-19 19:27:22 +01:00
marco
a44c567ad7 Header di httptools al lettore di kodi 2024-03-18 20:38:42 +01:00
github-actions[bot]
74c43e5755 Aggiornamento domini 2024-03-18 17:37:53 +00:00
ilmich
cc5619d7b2 fix toonitalia and uprot 2024-03-17 19:30:03 +01:00
Alhaziel01
58c402bcc6 Poster di default 2024-03-17 11:21:03 +01:00
ilmich
575629a3ac toonitalia: fix content type 2024-03-17 08:35:15 +01:00
github-actions[bot]
8d72b692a4 Aggiornamento domini 2024-03-16 17:36:32 +00:00
ilmich
41e6e87115 toonitalia: fix menu 2024-03-16 17:53:33 +01:00
ilmich
75b3db40c4 toonitalia: fix menu and icons 2024-03-16 17:04:27 +01:00
marco
28e811b576 Nuovi proxy CF 2024-03-16 13:40:02 +01:00
TheHacker66
3f1351e11b Fix maxstream & uprot.net (#482) 2024-03-16 11:22:16 +01:00
ilmich
913b8d7bed mixdrop: fix redirection 2024-03-15 18:34:13 +01:00
ilmich
72de374f9e toonitalia: added serie tv 2024-03-14 12:49:43 +01:00
ilmich
272f0b68e7 toonitalia: fix channel 2024-03-14 12:34:00 +01:00
ilmich
8b8105adef italiafilm: fix year for tmdb 2024-03-13 18:34:07 +01:00
ilmich
a9992b9ea6 platformcode: fix some warning and populate also manifest_headers 2024-03-11 12:26:46 +01:00
ilmich
1ca9c7031c italiafilm: fix channel search 2024-03-09 08:19:05 +01:00
ilmich
68937da460 fix eurostreaming channel and small updates 2024-03-08 17:17:26 +01:00
github-actions[bot]
afe008ea89 Aggiornamento domini 2024-03-06 17:37:41 +00:00
ilmich
3a183b82f8 fix mixdrop and supervideo 2024-03-05 21:06:35 +01:00
github-actions[bot]
a172fe86f3 Aggiornamento domini 2024-03-05 17:36:34 +00:00
Timmy89
d484a64fb2 Aggiornamento domini 2024-03-05 07:49:57 +01:00
github-actions[bot]
299327d47f Aggiornamento domini 2024-02-29 17:36:24 +00:00
Timmy89
bf2e80dbcd Merge pull request #479 from ilmich/fix-altadefinizione01
altadefinizione01: fix dominio
2024-02-29 00:26:52 +01:00
Timmy89
79efa0a193 Merge pull request #480 from ilmich/fix-altadefinzione-redirection
altadefizione: fix url redirection
2024-02-29 00:24:31 +01:00
ilmich
cea5feb59d altadefizione: fix url redirection 2024-02-28 22:05:20 +01:00
ilmich
9d28622ce8 altadefinizione01: fix dominio 2024-02-28 21:24:09 +01:00
Timmy89
be05eb6ec3 Fix trakt 2024-02-28 14:14:35 +01:00
Timmy89
ae00b017a8 Merge pull request #478 from ilmich/select-dns-provider
resolverdns: added select dns provider option
2024-02-27 10:24:00 +01:00
github-actions[bot]
b5e2b26f9f Aggiornamento domini 2024-02-26 17:36:33 +00:00
ilmich
86768ed294 resolverdns: added select dns provider option 2024-02-25 19:41:35 +01:00
Timmy89
ca3fb3e7ff Aggiornamento domini 2024-02-25 19:27:55 +01:00
Timmy89
d5c22b2043 Aggiornamento domini 2024-02-25 19:05:01 +01:00
Timmy89
1c6069eba5 Merge pull request #475 from ilmich/fix-eurostreaming
eurostreaming: fix scraper and re-enable channel
2024-02-25 18:54:43 +01:00
Timmy89
d24eced956 Merge pull request #476 from ilmich/urlshortenit
unshortenit: fix clicca.cc and added safego.cc
2024-02-25 18:54:33 +01:00
Timmy89
e3cf5c6e5d Merge pull request #477 from ilmich/another-mixdrop-path
mixdrop: include another path
2024-02-25 18:54:22 +01:00
ilmich
ca1159e163 mixdrop: include another path 2024-02-25 14:17:37 +01:00
ilmich
f1f8330419 unshortenit: fix clicca.cc and added safego.cc 2024-02-25 14:07:47 +01:00
ilmich
22159f5f28 eurostreaming: fix scraper and re-enable channel 2024-02-25 13:56:43 +01:00
ilmich
cd15000d71 resolverdns: better exception handling (#472)
* resolverdns: better exception handling
2024-02-22 20:22:14 +01:00
Timmy89
aa501e2f7d Merge pull request #474 from ilmich/fix-mediasetplay-episodes
mediasetplay: fixed TV series episode list
2024-02-21 16:15:19 +01:00
ilmich
9bed2d29c9 mediasetplay: fixed TV series episode list 2024-02-21 13:00:57 +01:00
github-actions[bot]
ec5a56f91e Aggiornamento domini 2024-02-20 17:38:14 +00:00
Timmy89
2c8dd243a6 Aggiornamento domini 2024-02-20 17:39:43 +01:00
Timmy89
7e5964d840 FIx correzioni per kodi su raspberry pi 2024-02-20 16:47:16 +01:00
Timmy89
b9aed889af Aggiornamento domini 2024-02-20 16:39:18 +01:00
Timmy89
511f95298d FIx correzioni per kodi su raspberry pi 2024-02-20 16:26:05 +01:00
Timmy89
b6c81c8b4e FIx correzioni per kodi su raspberry pi 2024-02-20 16:23:39 +01:00
marco
559ae1edd2 correzioni per kodi su raspberry pi 2024-02-19 20:26:32 +01:00
ilmich
bdc025b87d altadefinizione: added saga section (#467) 2024-02-12 20:06:43 +01:00
ilmich
2acd018503 httptools: resolverdns refactored (#466) 2024-02-05 20:52:34 +01:00
Timmy89
dfff40552d Merge pull request #462 from ilmich/fix-doodstream
fix doodstream
2024-01-31 17:39:33 +01:00
ilmich
09036d4d59 raiplay: switch to inputstream adaptive (#463) 2024-01-29 20:13:50 +01:00
ilmich
32f6781af5 fix useragent (#459) 2024-01-29 20:12:44 +01:00
ilmich
b96b63448c Update request urllib3 (#464)
* requests: updated to version 2.27.1

* urllib3: updated to version 1.26.18
2024-01-29 20:12:20 +01:00
ilmich
803b77b9b7 cloudscraper: disable tls1.2 2024-01-28 09:03:14 +01:00
ilmich
6de3ae422c fix doodstream 2024-01-27 09:29:02 +01:00
ilmich
349752a380 mixdrop: add another domain (#458) 2024-01-22 19:14:59 +01:00
Timmy89
6421ba1229 disattivato casacinema 2024-01-20 09:36:13 +01:00
Timmy89
529c6f3669 Disattivato cinemalibero 2024-01-20 09:26:44 +01:00
Michele Zuccalà
ae34d43429 altadefinizione: fix title, lang and others (#456) 2024-01-18 19:55:00 +01:00
Michele Zuccalà
03a332eb75 service: fix ua updater (#457) 2024-01-17 20:13:36 +01:00
Timmy89
9b25357d46 Aggiornata versione ua 2024-01-16 20:59:03 +01:00
github-actions[bot]
111a5a58d5 Aggiornamento domini 2024-01-16 17:37:12 +00:00
Michele Zuccalà
3e233c0658 platformtools: fix user agent for hls playlist and hls key (#454) 2024-01-13 15:19:33 +01:00
github-actions[bot]
8d7867d084 Aggiornamento domini 2024-01-10 17:36:54 +00:00
Timmy89
4328677965 Aggiornamento domini 2024-01-10 03:32:10 +01:00
Timmy89
018062037b Revert DoodStream 2024-01-10 00:47:38 +01:00
github-actions[bot]
1f3eea05ef Aggiornamento domini 2024-01-08 17:36:44 +00:00
Timmy89
d1d991b887 Fix DoodStream 2024-01-07 18:30:49 +01:00
github-actions[bot]
95251821f1 Aggiornamento domini 2024-01-06 17:36:32 +00:00
Timmy89
44109843af Aggiornamento domini 2024-01-06 17:08:15 +01:00
Timmy89
3ba2b28ef7 Aggiornamento domini 2024-01-06 16:52:29 +01:00
Pasquale Pizzuti
f1e7263a07 Update streamingcommunity.py old python compatibility (#450) 2024-01-05 13:59:17 +01:00
Michele Zuccalà
2191660bac fix altadefinizione (#452) 2024-01-05 12:08:23 +01:00
Michele Zuccalà
6ddec976b9 optimize html_uniform (#449) 2024-01-05 11:54:38 +01:00
github-actions[bot]
a3999d2746 Aggiornamento domini 2023-12-15 17:36:34 +00:00
github-actions[bot]
2fe75c1470 Aggiornamento domini 2023-12-01 17:36:46 +00:00
marco
e4edd5872d Fix animeunity 2023-11-25 19:18:51 +01:00
marco
7ab21e01c5 Fix auto SC 2023-11-23 20:07:07 +01:00
github-actions[bot]
c3fa9f22aa Aggiornamento domini 2023-11-22 17:36:16 +00:00
Michele Zuccalà
2a1394767c Fix altadefinizione01 (#445) 2023-11-17 20:35:26 +01:00
github-actions[bot]
647406ea5b Aggiornamento domini 2023-11-17 17:36:21 +00:00
Michele Zuccalà
43f343555d Add another mixdrop domain regexp (#443) 2023-11-14 20:30:34 +01:00
Timmy89
5b04e52af4 Fix streamingcommunity @ilmich 2023-11-08 19:28:45 +01:00
Timmy89
880b228dee Aggiornamento dominio Mixdrop 2023-11-03 20:44:11 +01:00
github-actions[bot]
f4f0dbfe97 Aggiornamento domini 2023-10-27 17:36:30 +00:00
github-actions[bot]
d6c0efaba2 Aggiornamento domini 2023-10-25 17:37:00 +00:00
marco
bbcc6e126e Fix altadefinizione, film in videoteca 2023-10-24 19:45:38 +02:00
github-actions[bot]
280dc6f217 Aggiornamento domini 2023-10-23 17:38:10 +00:00
marco
7ae3f7e30e Fix altadefinizione (tranne sez. agg.), aggiunto wolfstream 2023-10-22 15:01:58 +02:00
github-actions[bot]
956526affc Aggiornamento domini 2023-10-20 17:37:51 +00:00
github-actions[bot]
f44ab32bab Aggiornamento domini 2023-10-19 17:36:34 +00:00
github-actions[bot]
1ab05e540c Aggiornamento domini 2023-10-15 17:36:05 +00:00
github-actions[bot]
27d06bf875 Aggiornamento domini 2023-10-02 17:36:21 +00:00
github-actions[bot]
a415644995 Aggiornamento domini 2023-09-29 17:36:25 +00:00
github-actions[bot]
3d480a9b15 Aggiornamento domini 2023-09-28 17:36:23 +00:00
Timmy89
682e9e8b91 Riabilitato Streamingita 2023-09-27 20:56:09 +02:00
Timmy89
3b7f277270 Aggiornamento domini 2023-09-27 20:54:54 +02:00
marco
e14f01ec80 Fix parziale altadefinizione, corretto catastrophic backtraking su guardaseriecam (in alcuni casi) 2023-09-26 20:49:45 +02:00
enricodarodda
08eb178410 Fix Resume Playback Function
Updated platformtools.py fixing "resume_playback" function when the Skin Resume Menu is set. In particular, the function now matches correctly the selected option of the dialog with the corresponding action triggered.
2023-09-25 21:59:16 +02:00
github-actions[bot]
46c191c725 Aggiornamento domini 2023-09-14 17:36:53 +00:00
github-actions[bot]
3dbf1ee755 Aggiornamento domini 2023-09-12 17:36:39 +00:00
github-actions[bot]
7faf8c726a Aggiornamento domini 2023-09-09 17:36:25 +00:00
Timmy89
604896083c Disattivato StreamingITA 2023-08-21 01:43:25 +02:00
Timmy89
afcd204167 CB01 Aggiunta sezione film Italiani 2023-08-21 00:35:42 +02:00
github-actions[bot]
14b7d8fefa Aggiornamento domini 2023-08-15 17:33:59 +00:00
marco
4d2968a308 decoratore scrape, aggiunto parametro flags e flagsBlock per modifica flag regex 2023-08-10 13:19:29 +02:00
github-actions[bot]
074adf7e73 Aggiornamento domini 2023-07-28 17:34:22 +00:00
marco
95f28f0187 Fix ilcorsaronero 2023-07-28 11:13:31 +02:00
github-actions[bot]
5b55e3c9f2 Aggiornamento domini 2023-07-21 17:40:08 +00:00
github-actions[bot]
036252990f Aggiornamento domini 2023-07-17 17:35:12 +00:00
marco
9aed9468d7 Fix menu 1337x 2023-07-17 12:51:17 +02:00
marco
75b8e42fd8 StreamSB nuovi domini 2023-07-17 12:14:37 +02:00
Pasquale Pizzuti
29c483618f Aggiornamento domini (#430) 2023-07-17 11:51:31 +02:00
github-actions[bot]
fb74d5ccb3 Aggiornamento domini 2023-07-14 17:38:57 +00:00
Timmy89
d4bbb01b9c Prova dipendenze opzionali 2023-07-13 22:10:10 +02:00
github-actions[bot]
14872314b6 Aggiornamento domini 2023-07-13 17:40:48 +00:00
github-actions[bot]
b38631d19b Aggiornamento domini 2023-07-08 17:43:04 +00:00
github-actions[bot]
34e0cde285 Aggiornamento domini 2023-07-07 17:43:46 +00:00
github-actions[bot]
7c09dba22a Aggiornamento domini 2023-07-06 17:45:15 +00:00
github-actions[bot]
6314317766 Aggiornamento domini 2023-07-05 17:42:51 +00:00
github-actions[bot]
0d218b592e Aggiornamento domini 2023-07-01 17:38:21 +00:00
marco
57d2aaadb3 KoD 1.7.7 2023-06-30 19:38:58 +02:00
Alhaziel01
c97c70a00e Revert Youtube 2023-06-26 16:37:23 +02:00
Alhaziel01
141e24e8fa Fix Metalivideo 2023-06-26 11:52:58 +02:00
Alhaziel01
c1c2aa6f0c Test Fix Ricerca globale 2023-06-26 11:31:30 +02:00
Alhaziel01
b3ebe95278 Fix Tunein 2023-06-26 11:31:16 +02:00
Timmy89
f913513d47 Disattivato AnimeForce 2023-06-23 20:33:27 +02:00
Alhaziel01
03166d3226 Italia Film icona Sub ITA 2023-06-23 19:53:48 +02:00
Alhaziel01
b2288673dc Selezione Tipologia Visualizzazione Riprendi da (Impostazioni/Riproduzione) 2023-06-23 19:44:35 +02:00
Alhaziel01
7431f78b58 Fix ToonItalia 2023-06-23 18:56:36 +02:00
Alhaziel01
58ca87ce64 Fix AnimeWorld 2023-06-23 18:26:15 +02:00
Alhaziel01
60807b637b Fix Httptools 2023-06-23 18:16:14 +02:00
Alhaziel01
93f8386df6 Fix AnimeWorld 2023-06-23 18:06:45 +02:00
Alhaziel01
96acd612d6 Fix LA7 2023-06-23 17:40:21 +02:00
Alhaziel01
8400b15c60 Merge branch 'master' of https://github.com/kodiondemand/addon 2023-06-23 11:44:49 +02:00
Alhaziel01
e5bb7fbca9 Fix DooD Stream 2023-06-23 11:44:43 +02:00
github-actions[bot]
c85f0e28be Aggiornamento domini 2023-06-22 17:38:46 +00:00
Alhaziel01
68048f1d61 Fix Metalvideo e Youtube (Necessarie API personali) 2023-06-22 18:30:18 +02:00
Alhaziel01
d42310a1ac Fix Cinemalibero 2023-06-22 17:38:17 +02:00
Alhaziel01
1ca2b1e981 Merge branch 'master' of https://github.com/kodiondemand/addon 2023-06-22 17:16:14 +02:00
Alhaziel01
76550bcebb Fix StreamSB 2023-06-22 17:16:00 +02:00
Alhaziel01
e1ce48e859 aggiunto server StreamHide 2023-06-22 17:15:50 +02:00
Alhaziel01
8cc7cd3ae6 hls per Filemoon 2023-06-22 17:15:30 +02:00
Alhaziel01
db36530e97 Fix Animeunity 2023-06-22 17:14:52 +02:00
marco
84b7e9e5f2 guardaseriecam: aggiunto dropload 2023-06-21 19:51:47 +02:00
github-actions[bot]
f66c75a0e0 Aggiornamento domini 2023-06-20 17:43:10 +00:00
Timmy89
b4b2c4aa43 Disattivato Animealtadefinizione 2023-06-19 23:18:51 +02:00
Alhaziel01
7d92a9bc41 RAi Play Nuove Sezioni 2023-06-19 18:30:37 +02:00
Alhaziel01
a01a097b88 SCWS always displays the resolution 2023-06-19 09:05:20 +02:00
Alhaziel01
18ee7b3c17 Fix Risoluzioni SCWS 2023-06-18 21:58:21 +02:00
Alhaziel01
62d63483d4 Fix SCWS 2023-06-18 19:25:44 +02:00
github-actions[bot]
5d611224c6 Aggiornamento domini 2023-06-17 17:38:55 +00:00
Alhaziel01
17d4615015 Fix Aggiunta alla Videoteca anime 2023-06-17 17:59:56 +02:00
Alhaziel01
f3127f54f5 Fix SCWS 2023-06-17 17:26:33 +02:00
Alhaziel01
b7e28501a7 StreamingCommunity WS - Sottotitoli e banner "Prossimamente" 2023-06-17 16:41:49 +02:00
marco
58e01dc49d Merge remote-tracking branch 'origin/master' 2023-06-17 11:44:12 +02:00
marco
769306faa3 Streamingcommunity nuovo player 2023-06-17 11:44:03 +02:00
Timmy89
14660b5aaa CB01 aggiunto tutti i film popolari e distinzione tra popolari per genere. 2023-06-15 23:05:31 +02:00
Timmy89
a7dbe4f287 Popolari per Generi, Tutti i film popolari. 2023-06-15 22:52:51 +02:00
github-actions[bot]
839885c5c7 Aggiornamento domini 2023-06-09 17:38:50 +00:00
marco
14488c4c54 Fix streamingcommunity 2023-05-30 20:17:47 +02:00
marco
0cfe48cc74 Fix supervideo 2023-05-17 20:57:01 +02:00
marco
9055e2ac02 Merge remote-tracking branch 'origin/master' 2023-05-17 20:46:29 +02:00
marco
b46cec8041 Fix ilcorsaronero 2023-05-17 20:46:14 +02:00
github-actions[bot]
aabaa8d78c Aggiornamento domini 2023-05-13 17:34:24 +00:00
Timmy89
0333e1262d Aggiornamento domini 2023-05-13 18:57:38 +02:00
github-actions[bot]
d628d9108d Aggiornamento domini 2023-05-11 17:34:38 +00:00
Timmy89
66a79e4e21 Aggiornamento domini 2023-05-10 02:29:26 +02:00
github-actions[bot]
0a25af3aba Aggiornamento domini 2023-05-06 17:34:23 +00:00
Timmy89
c59bb0da6f Aggiornamento domini 2023-05-06 17:06:09 +02:00
truemich
f65d05b52f resume_playback: use kodi api for context menu for consistency with the skin in use (#422) 2023-05-04 20:32:38 +02:00
github-actions[bot]
9af9a564f9 Aggiornamento domini 2023-05-04 17:34:21 +00:00
github-actions[bot]
a88e915d0f Aggiornamento domini 2023-05-01 17:36:41 +00:00
Timmy89
2a2e0d8c60 Aggiornamento domini 2023-05-01 16:27:54 +02:00
Timmy89
36be150ad4 Aggiornamento domini 2023-04-30 22:02:01 +02:00
Timmy89
a6f9413ee1 Aggiornamento domini 2023-04-30 21:47:02 +02:00
marco
ff4b428e1b Fix streamSB 2023-04-29 17:19:43 +02:00
marco
e19b5245d8 Fix stagioni mancanti filmpertutti 2023-04-26 21:58:10 +02:00
marco
29e27940d5 Fix sottosezioni CB01 2023-04-26 21:33:04 +02:00
marco
2717037824 Fix download da menu contestuale con canali singolo server 2023-04-26 21:23:48 +02:00
github-actions[bot]
cfc7ee7855 Aggiornamento domini 2023-04-23 17:34:34 +00:00
Timmy89
a507fa3143 Aggiornamento domini 2023-04-23 13:05:11 +02:00
github-actions[bot]
9d0fe1fdf7 Aggiornamento domini 2023-04-21 17:34:32 +00:00
Timmy89
f6bc183fba Aggiornamento domini 2023-04-21 12:38:13 +02:00
marco
bd61acb55f Refresh all'abilitazione del download 2023-04-11 21:17:22 +02:00
marco
6bf5f01442 Prova streamtape 2023-04-11 20:55:12 +02:00
marco
d5af2723b7 Downloader: sistemata finestra selezione, fix riproduzione da sezione videoteca e ottimizzazione 2023-04-11 20:51:58 +02:00
Timmy89
4ab3f80e05 Update italiafilm.py 2023-04-10 20:29:31 +02:00
Timmy89
4364ae20be Aggiunta sezione Film 2023-04-10 20:22:30 +02:00
github-actions[bot]
647abfc5b0 Aggiornamento domini 2023-04-10 17:34:38 +00:00
Timmy89
f20f223da0 Aggiornamento domini 2023-04-10 04:14:18 +02:00
Timmy89
5f12bdf049 Aggiornamento domini 2023-04-10 04:11:58 +02:00
Timmy89
f528dd9556 Aggiornamento domini 2023-04-10 04:08:10 +02:00
Timmy89
b611c4ca3a Piccolo aggiustamento CB01 2023-04-02 15:34:12 +02:00
Timmy89
990017a533 Fix novità CB01 2023-04-02 13:29:51 +02:00
Timmy89
1cdc11d84e Ripristinata sezione ultimi 100 film aggiunti CB01 2023-04-01 21:23:29 +02:00
github-actions[bot]
e40145fae2 Aggiornamento domini 2023-03-31 17:34:43 +00:00
github-actions[bot]
44903392e1 Aggiornamento domini 2023-03-28 17:34:56 +00:00
marco
89a5513852 Piccoli aggiustamenti italiafilm 2023-03-27 20:21:13 +02:00
syscallkill
184d497aec add italiafilm channel (#414) 2023-03-27 20:17:05 +02:00
github-actions[bot]
b1983b754b Aggiornamento domini 2023-03-27 17:35:40 +00:00
Timmy89
36665f517b Aggiornamento domini 2023-03-26 22:54:03 +02:00
marco
43526800bb Merge remote-tracking branch 'origin/master' 2023-03-25 10:35:50 +01:00
marco
e1c9cd232f Fix CF 2023-03-25 10:35:39 +01:00
github-actions[bot]
4263b76650 Aggiornamento domini 2023-03-24 17:34:52 +00:00
marco
24443db5ee Merge remote-tracking branch 'origin/master' 2023-03-23 20:35:18 +01:00
marco
fcb1ecfde7 Fix YT, sezione serietv raiplay 2023-03-23 20:35:09 +01:00
github-actions[bot]
49e22dbe3b Aggiornamento domini 2023-03-23 17:35:09 +00:00
github-actions[bot]
1433ee2a32 Aggiornamento domini 2023-03-21 17:34:52 +00:00
Timmy89
3b7beb6daf Ops 2023-03-21 13:14:21 +01:00
Timmy89
09be82638d Aggiornamento domini 2023-03-21 12:45:13 +01:00
marco
52aadb2352 Fix goodstream 2023-03-20 20:29:32 +01:00
marco
92aa849d16 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	channels.json
2023-03-20 19:52:40 +01:00
marco
fdfa364943 Fix Altadefinizione, casacinema e filmpertutti, streamsb. Nuovo dominio toonitalia.xyz (non ha sottosezioni) 2023-03-20 19:52:06 +01:00
github-actions[bot]
c1832406c3 Aggiornamento domini 2023-03-17 17:34:47 +00:00
Timmy89
a511eaa355 Aggiornamento domini 2023-03-17 09:33:05 +01:00
Timmy89
1bedea3214 Aggiornamento domini 2023-03-17 09:31:27 +01:00
github-actions[bot]
14c77d2d8d Aggiornamento domini 2023-03-15 17:35:58 +00:00
Timmy89
5ed63ea2ed Aggiornamento domini 2023-03-15 18:03:48 +01:00
marco
8a048464a4 CB01: rimosse sezioni non più esistenti 2023-03-13 21:15:37 +01:00
github-actions[bot]
14ce21a646 Aggiornamento domini 2023-03-07 17:36:13 +00:00
github-actions[bot]
39dbbc655e Aggiornamento domini 2023-03-03 17:34:43 +00:00
marco
9a821de508 Merge remote-tracking branch 'origin/master' 2023-03-02 20:47:19 +01:00
marco
14ee433eb5 Fix VVVVID, streamsb e nuovo server filemoon. Miglior passaggio info a trakt (se attivo) 2023-03-02 20:47:05 +01:00
github-actions[bot]
605b74e8f8 Aggiornamento domini 2023-03-01 17:36:58 +00:00
Timmy89
fc96554986 Aggiornamento domini 2023-02-28 21:10:27 +01:00
github-actions[bot]
24580fec0b Aggiornamento domini 2023-02-28 17:36:15 +00:00
marco
c1ce1abcae Fix casacinema 2023-02-20 20:07:47 +01:00
github-actions[bot]
2c294785da Aggiornamento domini 2023-02-17 17:34:34 +00:00
marco
9fb3b3c261 Merge remote-tracking branch 'origin/master' 2023-02-16 20:20:43 +01:00
marco
dc04b19ce7 Fix casacinema 2023-02-16 20:20:34 +01:00
Timmy89
c0f14dbe4f Fix SC 2023-02-16 19:17:52 +01:00
github-actions[bot]
1dfc394565 Aggiornamento domini 2023-02-16 17:35:03 +00:00
github-actions[bot]
11b6e8bc75 Aggiornamento domini 2023-02-12 17:34:54 +00:00
github-actions[bot]
1bf4acac39 Aggiornamento domini 2023-02-11 17:34:45 +00:00
marco
3e9a5813af Fix StreamSB 2023-02-11 13:39:10 +01:00
marco
74de895999 Prova tempdir per js2py 2023-02-07 20:03:53 +01:00
marco
a846c17e79 Log per streamtape 2023-02-07 19:31:03 +01:00
github-actions[bot]
5bf69c93b9 Aggiornamento domini 2023-02-01 17:35:11 +00:00
Timmy89
4fd7b80203 Update channels.json
Fix SC
2023-02-01 16:44:16 +01:00
marco
b1e46658f0 TMDb Python default su Kodi 20 2023-01-30 19:55:37 +01:00
marco
fcf3f8cba3 Fix vvvvid, rimosso animeuniverse(chiuso) 2023-01-28 11:20:56 +01:00
marco
09a5a07923 Fix vvvvid 2023-01-24 20:36:33 +01:00
marco
726e524c1f Merge remote-tracking branch 'origin/master' 2023-01-23 20:45:32 +01:00
marco
0eaada8ba4 Fix doodstream e opzioni di KoD (kodi 20) 2023-01-23 20:45:23 +01:00
github-actions[bot]
41e4a9f02d Aggiornamento domini 2023-01-21 17:34:36 +00:00
Timmy89
295d6560cc Update channels.json 2023-01-21 14:13:37 +01:00
Timmy89
9ec6f09ca3 Update channels.json 2023-01-21 14:13:15 +01:00
marco
36042ac2bc Merge remote-tracking branch 'origin/master' 2023-01-21 14:03:48 +01:00
marco
00c9a72966 Fix cinemalibero e SC 2023-01-21 14:03:41 +01:00
github-actions[bot]
13a14dd3e5 Aggiornamento domini 2023-01-20 17:34:22 +00:00
marco
2787c980db Fix animeunity, cinemalibero sezione anime 2023-01-19 20:27:23 +01:00
github-actions[bot]
ef018fce11 Aggiornamento domini 2023-01-19 17:34:53 +00:00
marco
f18aab9fa8 HexUpload download come streaming, aggiustamenti per cinemalibero 2022-12-30 13:37:27 +01:00
marco
f0ab97a6fd cinemalibero: niente link di download 2022-12-29 17:48:21 +01:00
marco
043f12afe8 Nuovo dominio streamingita 2022-12-29 16:47:15 +01:00
marco
f5a6384653 Migliorie cinemalibero e nuovo server HexUpload. Disattivato streamingita 2022-12-29 15:50:57 +01:00
marco
8982993835 Fix altadefinizione01 - alcuni server mancanti 2022-12-27 20:07:02 +01:00
marco
84e22ca681 Merge remote-tracking branch 'origin/master' 2022-12-20 20:05:47 +01:00
marco
54816418b3 Fix VVVVID 2022-12-20 20:05:40 +01:00
github-actions[bot]
8748cd39e9 Aggiornamento domini 2022-12-16 17:34:53 +00:00
github-actions[bot]
c77e6105ec Aggiornamento domini 2022-12-15 17:37:26 +00:00
Alhaziel01
66f562b5f6 Fix Riproduzione AniPlay 2022-12-15 15:47:15 +01:00
Alhaziel01
2f37557f97 Fix Videoteca Aniplay 2022-12-15 12:14:47 +01:00
github-actions[bot]
265f00c20d Aggiornamento domini 2022-12-14 17:35:29 +00:00
Alhaziel01
7cacbf1b22 Fix Casacinema 2022-12-14 11:13:07 +01:00
Alhaziel01
7bf554d333 Fix AniPlay 2022-12-14 10:44:52 +01:00
mac12m99
e13b8fc202 aggiornamento domini 2022-12-13 19:58:47 +01:00
marco
e91e29b95d Aggiornata libreria js2py 2022-12-04 14:33:39 +01:00
marco
d7ab122d31 Riattivato filmstreaming, fix minori 2022-12-04 14:33:15 +01:00
marco
17f8cab8d7 Fix dropload, filmpertutti (sezione aggiornamenti), disattivato filmstreaming (da errore anche da browser) 2022-12-03 14:58:49 +01:00
marco
5c56c5e1ec Fix vvvvid 2022-12-03 11:29:24 +01:00
Alhaziel01
bb49bf1405 Fix VOE 2022-12-02 12:45:51 +01:00
Alhaziel01
b98ac40d66 Fix Cinemalibero 2022-12-02 11:00:15 +01:00
Alhaziel01
d44f23497e Merge branch 'master' of https://github.com/kodiondemand/addon 2022-12-02 10:52:54 +01:00
Alhaziel01
0536c4dfde Fix Cinemalibero 2022-12-02 10:52:51 +01:00
Alhaziel01
237a8cad77 Fix Cinemalibero 2022-12-02 10:43:01 +01:00
Alhaziel01
e78e0006b0 Fix Ricerca in Altadefinizione 2022-12-02 10:17:51 +01:00
Alhaziel01
e94885cedc Eurostreaming - Momentaneamente Disabilitato 2022-12-02 10:07:11 +01:00
Alhaziel01
75b2937c41 Fix Tmdb - Aggiunta alla videoteca di Film in Collezione 2022-12-02 09:52:05 +01:00
marco
75fd8e04c7 Merge remote-tracking branch 'origin/master' 2022-11-24 20:37:35 +01:00
marco
9ca822fb7b Proxy anti CF 2022-11-24 20:37:28 +01:00
github-actions[bot]
b625462cbc Aggiornamento domini 2022-11-24 17:35:59 +00:00
marco
09d29418b9 Merge remote-tracking branch 'origin/master' 2022-11-21 18:54:47 +01:00
marco
340f202c6d Nuovo dominio altadefinizione01 2022-11-21 18:54:38 +01:00
github-actions[bot]
3fe8478a00 Aggiornamento domini 2022-11-17 17:39:21 +00:00
github-actions[bot]
4a37dc5207 Aggiornamento domini 2022-11-16 17:38:34 +00:00
Alhaziel01
43fc32c5cd - Fix Finestra selezione Qualità
- Fix Redirect StreamingCommunity
2022-11-16 16:59:15 +01:00
Alhaziel01
1f1bf35493 StreamingCommunity Ripristinato Messaggio "Prossimamente" 2022-11-15 19:14:17 +01:00
marco
2968299354 Streamingcommunity: non riprodurre ultimo contenuto quando il selezionato uscirà prossimamente 2022-11-14 20:59:32 +01:00
github-actions[bot]
136782b5fc Aggiornamento domini 2022-11-13 17:39:19 +00:00
marco
5d5080ca7f Prova test-suite 2022-11-10 20:53:13 +01:00
marco
1c322fc604 Prova test-suite 2022-11-09 20:39:28 +01:00
marco
fba9e0f007 Prova test-suite 2022-11-09 20:37:58 +01:00
marco
f78a60d612 Prova test-suite 2022-11-09 20:19:23 +01:00
marco
43d43543b7 Prova test-suite 2022-11-09 20:12:13 +01:00
marco
7e1769bfe5 Prova test-suite 2022-11-08 18:55:32 +01:00
marco
9c07dceab7 Prova test-suite 2022-11-07 20:21:40 +01:00
marco
54bab829b5 Merge remote-tracking branch 'origin/master' 2022-11-07 20:12:41 +01:00
marco
204ae57e2b Fix ricerca casacinema 2022-11-07 20:12:35 +01:00
github-actions[bot]
770e819ad6 Aggiornamento domini 2022-11-07 17:47:11 +00:00
marco
b2ec377d56 Fix filmpertutti serietv, server VUP chiuso 2022-11-06 17:26:11 +01:00
marco
e2f195ebd3 animeuniverse è ora AnimeHDitalia, nascosti gli episodi non ancora caricati 2022-11-05 14:22:00 +01:00
Alhaziel01
c94b32da26 VVVVID Fix contenuti con DRM 2022-11-03 18:18:16 +01:00
Alhaziel01
5ff98c23ce Fix Rinumerazione Toonitalia 2022-10-31 10:57:59 +01:00
Alhaziel01
707d8c7fd1 Discovery + [free] - Aggiunto Warner TV 2022-10-31 09:49:26 +01:00
Alhaziel01
6abf9d0d09 Fix Ripresa punto di visione 2022-10-28 18:52:58 +02:00
Alhaziel01
88ccec0b15 Test chiusura globalsearch 2022-10-25 20:06:59 +02:00
Alhaziel01
0a4cba7489 traceback alla chiusura di globalsearch 2022-10-25 19:36:46 +02:00
Alhaziel01
b11fb3dec3 Fix Chiusura Globalsearch 2022-10-25 19:15:50 +02:00
Alhaziel01
84951a6801 Fix Autoplay e Altadefinizione 2022-10-25 15:49:20 +02:00
Alhaziel01
84bc6f6135 Fix Play in ricerca con un unico server 2022-10-25 15:11:47 +02:00
Alhaziel01
94e107e17c Fix Autoplay e Altadefinizione 2022-10-25 09:05:49 +02:00
Alhaziel01
8ae182536c Animeunity, rimosso server secondario 2022-10-24 10:27:56 +02:00
Alhaziel01
f545d74a75 Fix gestione finestra server 2022-10-24 10:27:32 +02:00
Alhaziel01
b23480664b Fix voe, streamsb 2022-10-24 10:27:13 +02:00
marco
8648014368 Fix streamlare, streamsb, toonitalia e modifiche interne 2022-10-23 20:42:43 +02:00
github-actions[bot]
3da43a418b Aggiornamento domini 2022-10-22 17:52:59 +00:00
github-actions[bot]
bb9ec6dcdc Aggiornamento domini 2022-10-20 18:07:11 +00:00
Alhaziel01
d78abb98ee Fix AccuRadio 2022-10-20 19:24:46 +02:00
Alhaziel01
2ef54dd4be Fix Navigazione in Ricerca globale se un video è in riproduzione 2022-10-20 19:16:40 +02:00
marco
c30e1311d6 Nuovo server: dropload e fix puntate sfasate eurostreaming_actor 2022-10-16 17:16:14 +02:00
marco
61dac80edd Nuovo dominio shotener 2022-10-13 21:07:32 +02:00
marco
e059f6e4c6 Aggiornamento domino eurostreaming 2022-10-13 20:39:24 +02:00
Alhaziel01
cd7ecd2c48 Fix download Elementum 2022-10-13 10:50:48 +02:00
Alhaziel01
9128f26657 Fix SetreamSB 2022-10-13 10:11:23 +02:00
Alhaziel01
183c285b6f Fix Pluto TV 2022-10-12 20:32:46 +02:00
Alhaziel01
6a0a46dcff Aggiornamento StreamingCommunity 2022-10-05 18:24:35 +02:00
Alhaziel01
3e019573c9 Fix SC 2022-10-03 09:23:01 +02:00
github-actions[bot]
22bfc53eaa Aggiornamento domini 2022-10-02 17:50:15 +00:00
Alhaziel01
04639802d5 Fix SC 2022-10-01 19:27:27 +02:00
Alhaziel01
46658a2595 Fix SC 2022-10-01 19:12:46 +02:00
Alhaziel01
650489ac46 Fix Aggiunta in Videoteca Film o Serie TV che cominciano con il punto 2022-10-01 16:16:26 +02:00
Alhaziel01
abdfd25011 Fix SC e AU 2022-10-01 15:57:16 +02:00
Alhaziel01
ee837ace97 Fix SC 2022-10-01 12:25:17 +02:00
1251 changed files with 6854 additions and 3047 deletions

View File

@@ -0,0 +1,34 @@
name: Update channel domains
on:
workflow_dispatch:
schedule:
- cron: '30 17 * * *'
push:
branches:
- master
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@v2
with:
python-version: '3.7'
architecture: 'x64'
- 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
View File

0
.github/ISSUE_TEMPLATE/server-non-funzionante.md vendored Normal file → Executable file
View File

0
.github/ISSUE_TEMPLATE/test-canale.md vendored Normal file → Executable file
View File

13
.github/workflows/tests.yml vendored Normal file → Executable file
View File

@@ -1,28 +1,25 @@
name: Test Suite
on:
workflow_dispatch:
schedule:
- cron: '00 15 * * *'
jobs:
tests:
runs-on: ubuntu-latest
runs-on: macos-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v4.3.0
with:
python-version: 3.8
python-version: 3.9
- name: Run tests
run: |
export KODI_INTERACTIVE=0
./tests/run.sh
- name: Commit & Push changes
uses: dmnemec/copy_file_to_another_repo_action@v1.0.4
uses: dmnemec/copy_file_to_another_repo_action@main
env:
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
with:

0
.github/workflows/updateDomains.yml vendored Normal file → Executable file
View File

0
.github/workflows/updateDomainsStable.yml vendored Normal file → Executable file
View File

2
.gitignore vendored Normal file → Executable file
View File

@@ -9,3 +9,5 @@ __pycache__/
.vscode/settings.json
bin/
lib/abi
tests/home/
reports/

0
CONTRIBUTING.md Normal file → Executable file
View File

0
LICENSE Normal file → Executable file
View File

0
README.md Normal file → Executable file
View File

0
__init__.py Normal file → Executable file
View File

12
addon.xml Normal file → Executable file
View File

@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.kod" name="Kodi on Demand BETA" version="1.7.6" provider-name="KoD Team">
<addon id="plugin.video.kod" name="Kodi on Demand" version="1.7.7" provider-name="KoD Team">
<requires>
<!-- <import addon="script.module.libtorrent" optional="true"/> -->
<import addon="metadata.themoviedb.org"/>
<import addon="metadata.tvshows.themoviedb.org"/>
<import addon="metadata.themoviedb.org" optional="true"/>
<import addon="metadata.tvshows.themoviedb.org" optional="true"/>
<!-- <import addon="metadata.tvdb.com"/> -->
<import addon="script.module.web-pdb" />
</requires>
<extension point="xbmc.python.pluginsource" library="default.py">
<provides>video</provides>
@@ -29,9 +28,6 @@
<screenshot>resources/media/screenshot-3.png</screenshot>
</assets>
<news>- fix di routine ai canali/server
- disabilitati cb01anime e tantifilm
- aggiunta opzione "mostra server" nel menu contestuale della libreria
- più opzioni per quanto riguarda l'aggiornamento della videoteca
</news>
<description lang="it">Naviga velocemente sul web e guarda i contenuti presenti</description>
<disclaimer>[COLOR red]The owners and submitters to this addon do not host or distribute any of the content displayed by these addons nor do they have any affiliation with the content providers.[/COLOR]

44
channels.json Normal file → Executable file
View File

@@ -1,38 +1,38 @@
{
"direct": {
"altadefinizione01": "https://www.altadefinizione01.sbs",
"animealtadefinizione": "https://www.animealtadefinizione.it",
"altadefinizione01": "https://altadefinizione01.pet",
"animealtadefinizione": "http://ww38.animealtadefinizione.it",
"animeforce": "https://www.animeforce.it",
"animesaturn": "https://www.animesaturn.in",
"animesaturn": "https://www.animesaturn.cx",
"animeunity": "https://www.animeunity.tv",
"animeuniverse": "https://www.animeuniverse.it",
"animeworld": "https://www.animeworld.tv",
"aniplay": "https://aniplay.it",
"casacinema": "https://www.casacinema.lol",
"cb01anime": "https://www.cineblog01.red",
"animeworld": "https://www.animeworld.so",
"aniplay": "https://aniplay.co",
"casacinema": "https://casacinema.media",
"cb01anime": "https://cb01new.one",
"cinemalibero": "https://cinemalibero.cafe",
"cinetecadibologna": "http://cinestore.cinetecadibologna.it",
"dinostreaming": "https://dinostreaming.it",
"discoveryplus": "https://www.discoveryplus.com",
"dreamsub": "https://www.animeworld.tv",
"eurostreaming": "https://eurostreaming.party",
"eurostreaming_actor": "https://eurostreaming.actor",
"filmstreaming": "https://filmstreaming.media",
"guardaseriecam": "https://guardaserie.cam",
"dreamsub": "https://www.animeworld.so",
"eurostreaming": "https://eurostreaming.lifestyle",
"eurostreaming_actor": "https://eurostreaming.my",
"filmstreaming": "https://film-streaming-ita.cam",
"guardaseriecam": "https://guardaserie.kitchen",
"hd4me": "https://hd4me.net",
"ilcorsaronero": "https://ilcorsaronero.link",
"ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.sbs",
"ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.foo",
"italiafilm": "https://italia-film.biz",
"mediasetplay": "https://mediasetinfinity.mediaset.it",
"mondoserietv": "https://mondoserietv.club",
"mondoserietv": "http://ww25.mondoserietv.club/?subid1=20230304-0434-261c-9cb0-a0044930e0a9",
"paramount": "https://www.mtv.it",
"piratestreaming": "https://www.piratestreaming.design",
"piratestreaming": "https://piratestreaming.design",
"plutotv": "https://pluto.tv",
"raiplay": "https://www.raiplay.it",
"serietvu": "https://www.serietvu.live",
"streamingcommunity": "https://streamingcommunity.tech",
"streamingita": "https://www.streamingita.wtf",
"streamtime": "https://t.me/s/StreamTime",
"tantifilm": "https://www.tantifilm.yachts",
"toonitalia": "https://toonitalia.co"
"serietvu": "http://ww1.serietvu.live/?sub1=47fb879a-5325-11ee-94a7-cc35006f53d1",
"streamingcommunity": "https://streamingcommunity.ooo",
"streamingita": "https://streamingita.click",
"tantifilm": "https://tantifilm.name",
"toonitalia": "https://toonitalia.xyz"
},
"findhost": {
"altadefinizione": "https://altadefinizione.nuovo.live",

0
channels/0example.json.txt Normal file → Executable file
View File

0
channels/0example.py.txt Normal file → Executable file
View File

1
channels/1337x.json Normal file → Executable file
View File

@@ -6,6 +6,7 @@
"thumbnail": "1337x.png",
"banner": "1337x.png",
"categories": ["movie", "tvshow", "torrent"],
"not_active": ["include_in_newest"],
"settings": [
{
"id": "itaSearch",

4
channels/1337x.py Normal file → Executable file
View File

@@ -103,13 +103,13 @@ def peliculas(item):
data = ' '
else:
data = support.match(item).data
# debug = True
if item.args == 'search':
sceneTitle = 'undefined'
patron = r'<a href="(?P<url>[^"]+)">(?P<title>[^<]+)<(?:[^>]+>){3,7}(?P<seed>[^<]+)<(?:[^>]+>){6}(?P<size>[^<]+)<span'
patronNext = r'"([^"]+)">&gt;&gt;'
elif item.contentType == 'movie':
patron = r'<img alt="[^"]*" data-original="(?P<thumb>[^"]+)(?:[^>]+>){15}(?P<title>[^<]+)(?:[^>]+>){18,23}\s*<a href="(?P<url>[^"]+)'
patron = r'<img[^>]+data-original="(?P<thumb>[^"]+)(?:[^>]+>){15}(?P<title>[^<]+).*?<p>(?P<plot>[^<]+).*?<a href="(?P<url>[^"]+)'
patronNext = r'"([^"]+)">&gt;&gt;'
else:
action = 'seasons'

0
channels/__init__.py Normal file → Executable file
View File

0
channels/accuradio.json Normal file → Executable file
View File

3
channels/accuradio.py Normal file → Executable file
View File

@@ -35,8 +35,9 @@ def mainlist(item):
@support.scrape
def peliculas(item):
# debug=True
action = 'playradio'
patron = r'data-id="(?P<id>[^"]+)"\s*data-oldid="(?P<oldid>[^"]+)".*?data-name="(?P<title>[^"]+)(?:[^>]+>){5}<img class="[^"]+"\s*src="(?P<thumb>[^"]+)(?:[^>]+>){6}\s*(?P<plot>[^<]+)'
patron = r'data-id="(?P<id>[^"]+)"\s*data-oldid="(?P<oldid>[^"]+)".*?data-name="(?P<title>[^"]+)(?:[^>]+>){2}<img src="(?P<thumb>[^"]+)(?:[^>]+>){16}\s*(?P<plot>[^<]+)'
return locals()

3
channels/altadefinizione.json Normal file → Executable file
View File

@@ -6,5 +6,6 @@
"thumbnail": "altadefinizione.png",
"banner": "altadefinizione.png",
"categories": ["movie", "tvshow", "vos"],
"settings": []
"settings": [],
"not_active": ["include_in_newest"]
}

116
channels/altadefinizione.py Normal file → Executable file
View File

@@ -4,53 +4,59 @@
# ------------------------------------------------------------
from core import httptools, support
from core import httptools, support, tmdb, scrapertools
from platformcode import config, logger
import re
def findhost(url):
host = support.match(url, patron=r'<h2[^>]+><a href="([^"]+)').match.rstrip('/')
return host
permUrl = httptools.downloadpage(host, follow_redirects=False, only_headers=True).headers
if 'location' in permUrl.keys(): # handle redirection
return permUrl['location']
return host
host = config.get_channel_url(findhost)
headers = [['Referer', host]]
@support.menu
def mainlist(item):
film = ['/category/film/',
('Al Cinema', ['/al-cinema/', 'peliculas']),
('Generi', ['', 'genres']),
# ('Sub-ITA', ['/sub-ita/', 'peliculas'])
menu = [('Film',['/category/film/', 'peliculas', '', 'movie']),
('Film al cinema {submenu}',['/category/ora-al-cinema/', 'peliculas', '', 'movie']),
('Generi',['', 'genres', '', 'undefined']),
('Saghe',['', 'genres', 'saghe', 'undefined']),
('Serie TV',['/category/serie-tv/', 'peliculas', '', 'tvshow']),
#('Aggiornamenti Serie TV', ['/aggiornamenti-serie-tv/', 'peliculas']) da fixare
]
tvshow = ['/category/serie-tv/',
('Aggiornamenti Serie TV', ['/aggiornamenti-serie-tv/', 'peliculas']),]
search = ''
return locals()
@support.scrape
def genres(item):
action = 'peliculas'
blacklist = ['Scegli il Genere', 'Film', 'Serie TV', 'Sub-Ita', 'Anime']
patronMenu = r'<option value="(?P<url>[^"]+)">(?P<title>[^<]+)'
blacklist = ['Scegli il Genere', 'Film', 'Serie Tv', 'Sub-Ita', 'Anime', "Non reperibile", 'Anime Sub-ITA', 'Prossimamente',]
wantSaga = True if item.args == 'saghe' else False
patronBlock = r'<div class=\"categories-buttons-container\"(?P<block>.*?)</div>'
if not wantSaga: # se non richiedo le sage carico le icone in automatico
patronMenu = r'<a href=\"(?P<url>https:\/\/.*?)\".*?>(?P<title>.*?)</a>'
else: # mantengo l'icona del padre
patron = r'<a href=\"(?P<url>https:\/\/.*?)\".*?>(?P<title>.*?)</a>'
def itemlistHook(itemlist):
itl = []
for item in itemlist:
isSaga = item.fulltitle.startswith('Saga')
if len(item.fulltitle) != 3:
itl.append(item)
if (isSaga and wantSaga) or (not isSaga and not wantSaga):
itl.append(item)
return itl
return locals()
def search(item, text):
logger.debug(text)
item.url = "{}/search/{}/feed/rss2/".format(host, text)
item.url = "{}/?{}".format(host, support.urlencode({'s': text}))
item.args = 'search'
try:
@@ -62,33 +68,54 @@ def search(item, text):
logger.error("search except: %s" % line)
return []
@support.scrape
def peliculas(item):
n = '22' if '/?s=' in item.url else '8'
item.contentType = "undefined"
action = 'check'
patron = r'src="(?P<poster>http[^"]+)(?:[^>]+>){4}\s*<a href="(?P<url>[^"]+)[^>]+>\s*(?P<title>[^\[\(\<]+)(?:\[(?P<quality>[^\]]+)\])?\s*(?:\((?P<lang>[a-zA-z-]+)\))?\s*(?:\((?P<year>\d+)\))?\s*</a>\s*</h2>'
if item.args == 'search':
patron = r'<title>(?P<title>[^\[\(\<]+)(?:\[(?P<quality>[^\]]+)\])?\s*(?:\((?P<lang>[a-zA-z-]+)\))?\s*(?:\((?P<year>\d+)\))?\s*[^>]+>\s*<link>(?P<url>[^<]+)'
patronNext = r'href="([^"]+)[^>]+>Successivo'
if not item.args == 'search': # pagination not works
if not item.nextpage:
item.page = 1
else:
item.page = item.nextpage
if not item.parent_url:
item.parent_url = item.url
item.nextpage = item.page + 1
nextPageUrl = "{}/page/{}".format(item.parent_url, item.nextpage)
resp = httptools.downloadpage(nextPageUrl, only_headers = True)
if (resp.code > 399): # no more elements
nextPageUrl = ''
else:
action = 'check'
patron= r'<article class=\"elementor-post.*?(<img .*?src=\"(?P<thumb>[^\"]+).*?)?<h1 class=\"elementor-post__title\".*?<a href=\"(?P<url>[^\"]+)\" >\s*(?P<title>[^<]+?)\s*(\((?P<lang>Sub-[a-zA-Z]+)*\))?\s*(\[(?P<quality>[A-Z]*)\])?\s*(\((?P<year>[0-9]{4})\))?\s+<'
return locals()
@support.scrape
def episodios(item):
item.quality = ''
data = item.data
action='findvideos'
# debug=True
patronBlock = r'<span>\s*\w+\s*[Ss]tagione.*?(?P<lang>(?:[Ss][Uu][Bb][-]?)?[Ii][Tt][Aa])(?: in )?(?P<quality>[^<]*)?(?:[^>]+>){4}(?P<block>.*?)/p>'
patron = r'(?P<season>\d+)x(?P<episode>\d+)[^>]+>(?P<data>.*?)(?:</table)'
return locals()
data = item.data if item.data else httptools.downloadpage(item.url).data
itemlist = []
for it in support.match(data, patron=[r'div class=\"single-season.*?(?P<id>season_[0-9]+).*?>Stagione:\s(?P<season>[0-9]+).*?(\s-\s(?P<lang>[a-zA-z]+?))?<']).matches:
block = support.match(data, patron = r'div id=\"'+ it[0] +'\".*?</div').match
for ep in support.match(block, patron=[r'<li><a href=\"(?P<url>[^\"]+).*?img\" src=\"(?P<thumb>[^\"]+).*?title\">(?P<episode>[0-9]+)\.\s+(?P<title>.*?)</span>']).matches:
itemlist.append(item.clone(contentType = 'episode',
action='findvideos',
thumb = ep[1],
title = support.format_longtitle(support.cleantitle(ep[3]), season = it[1], episode = ep[2], lang= it[3]),
url = ep[0], data = '')
)
support.check_trakt(itemlist)
support.videolibrary(itemlist, item)
if (config.get_setting('downloadenabled')):
support.download(itemlist, item)
return itemlist
def check(item):
item.data = httptools.downloadpage(item.url).data
if 'Stagione' in item.data:
if 'season-details' in item.data.lower():
item.contentType = 'tvshow'
return episodios(item)
else:
@@ -96,7 +123,14 @@ def check(item):
def findvideos(item):
logger.debug()
if item.contentType == 'movie' and isinstance(item.data, str):
item.data = support.match(item.data, patron=r'data-id="([^"]+)').matches
return support.server(item, item.data)
video_url = item.url
if item.contentType == 'movie':
video_url = support.match(item, patron=[r'<div class="video-wrapper">.*?<iframe src=\"(https://.*?)\"',
r'window.open\(\'([^\']+).*?_blank']).match
if (video_url == ''):
return []
itemlist = [item.clone(action="play", url=srv) for srv in support.match(video_url, patron='<div class="megaButton" meta-type="v" meta-link="([^"]+).*?(?=>)>').matches]
itemlist = support.server(item,itemlist=itemlist)
return itemlist

0
channels/altadefinizione01.json Normal file → Executable file
View File

14
channels/altadefinizione01.py Normal file → Executable file
View File

@@ -141,13 +141,17 @@ def newest(categoria):
return itemlist
def findvideos(item):
support.info('findvideos', item)
data = httptools.downloadpage(item.url).data
iframe = support.match(data, patron='src="(http[^"]+)" frameborder').match
iframe = support.match(data, patron='src="(http[^"]+)" frameborder=\"0\" allow=\"accelerometer; autoplay;').match
if iframe:
item.url = iframe
return support.server(item)
else:
itemlist = [item.clone(action="play", url=srv[0], quality=srv[1]) for srv in support.match(item, patron='<a href="#" data-link="([^"]+).*?<span class="d">([^<]+)').matches]
return support.server(item, itemlist=itemlist, headers=headers)
return support.server(item)
# TODO: verificare se si puo' reinsierire il trailer youtube
#itemlist = [item.clone(action="play", url=srv[0], quality=srv[1]) for srv in support.match(item, patron='<a href="#" data-link="([^"]+).*?<span class="d">([^<]+)').matches]
#itemlist = support.server(item, itemlist=itemlist, headers=headers)
#return itemlist

0
channels/altadefinizioneclick.json Normal file → Executable file
View File

0
channels/altadefinizioneclick.py Normal file → Executable file
View File

0
channels/altadefinizionecommunity.json Normal file → Executable file
View File

0
channels/altadefinizionecommunity.py Normal file → Executable file
View File

2
channels/animealtadefinizione.json Normal file → Executable file
View File

@@ -1,7 +1,7 @@
{
"id": "animealtadefinizione",
"name": "AnimealtAdefinizione",
"active": true,
"active": false,
"language": ["ita", "sub-ita"],
"thumbnail": "animealtadefinizione.png",
"banner": "animealtadefinizione.png",

0
channels/animealtadefinizione.py Normal file → Executable file
View File

2
channels/animeforce.json Normal file → Executable file
View File

@@ -2,7 +2,7 @@
"id": "animeforce",
"name": "AnimeForce",
"language": ["ita"],
"active": true,
"active": false,
"thumbnail": "animeforce.png",
"banner": "animeforce.png",
"categories": ["anime"],

0
channels/animeforce.py Normal file → Executable file
View File

0
channels/animesaturn.json Normal file → Executable file
View File

5
channels/animesaturn.py Normal file → Executable file
View File

@@ -3,10 +3,7 @@
# Canale per AnimeSaturn
# ----------------------------------------------------------
from lib import js2py
from core import support
from platformcode import config
from platformcode.logger import debug
host = support.config.get_channel_url()
__channel__ = 'animesaturn'
@@ -146,7 +143,7 @@ def peliculas(item):
return itemlist
else:
pagination = ''
# pagination = ''
if item.args == 'incorso':
patron = r'<a href="(?P<url>[^"]+)"[^>]+>(?P<title>[^<(]+)(?:\s*\((?P<year>\d+)\))?(?:\s*\((?P<lang>[A-za-z-]+)\))?</a>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)"[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>(?P<plot>[^<]+)<'
else:

0
channels/animeunity.json Normal file → Executable file
View File

110
channels/animeunity.py Normal file → Executable file
View File

@@ -4,14 +4,13 @@
# ------------------------------------------------------------
import cloudscraper, json, copy, inspect
from core import support
from platformcode import autorenumber, logger
session = cloudscraper.create_scraper()
from core import jsontools, support, httptools, scrapertools
from platformcode import autorenumber
# support.dbg()
host = support.config.get_channel_url()
response = session.get(host + '/archivio')
csrf_token = support.match(response.text, patron='name="csrf-token" content="([^"]+)"').match
response = httptools.downloadpage(host + '/archivio')
csrf_token = support.match(response.data, patron='name="csrf-token" content="([^"]+)"').match
headers = {'content-type': 'application/json;charset=UTF-8',
'x-csrf-token': csrf_token,
'Cookie' : '; '.join([x.name + '=' + x.value for x in response.cookies])}
@@ -54,7 +53,7 @@ def genres(item):
# support.dbg()
itemlist = []
genres = json.loads(support.match(response.text, patron='genres="([^"]+)').match.replace('&quot;','"'))
genres = json.loads(support.match(response.data, patron='genres="([^"]+)').match.replace('&quot;','"'))
for genre in genres:
item.args['genres'] = [genre]
@@ -66,10 +65,10 @@ def years(item):
itemlist = []
from datetime import datetime
current_year = datetime.today().year
oldest_year = int(support.match(response.text, patron='anime_oldest_date="([^"]+)').match)
next_year = datetime.today().year + 1
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
itemlist.append(item.clone(title=support.typo(year,'bold'), action='peliculas'))
return itemlist
@@ -117,23 +116,34 @@ def news(item):
support.info()
item.contentType = 'episode'
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('&quot;','"'))
fullJs = json.loads(support.match(httptools.downloadpage(item.url).data, headers=headers, patron=r'items-json="([^"]+)"').match.replace('&quot;','"'))
js = fullJs['data']
for it in js:
itemlist.append(
item.clone(title= support.typo(it['anime']['title'] + ' - EP. ' + it['number'], 'bold'),
fulltitle=it['anime']['title'],
thumbnail=it['anime']['imageurl'],
forcethumb = True,
scws_id=it.get('scws_id', ''),
video_url=it.get('link', ''),
plot=it['anime']['plot'],
action='findvideos')
)
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(
item.clone(title = support.typo(title_name + full_episode, 'bold'),
fulltitle = it['anime']['title'],
thumbnail = it['anime']['imageurl'],
forcethumb = True,
scws_id = it.get('scws_id', ''),
url = '{}/anime/{}-{}'.format(item.url, it['anime']['id'],it['anime']['slug']),
plot = it['anime']['plot'],
action = 'findvideos')
)
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']))
return itemlist
@@ -152,21 +162,27 @@ def peliculas(item):
item.args['order'] = order_list[order]
payload = json.dumps(item.args)
records = session.post(host + '/archivio/get-animes', headers=headers, data=payload).json()['records']
records = httptools.downloadpage(host + '/archivio/get-animes', headers=headers, post=payload).json['records']
# support.dbg()
for it in records:
if not it['title']:
it['title'] = ''
lang = support.match(it['title'], patron=r'\(([It][Tt][Aa])\)').match
title = support.re.sub(r'\s*\([^\)]+\)', '', it['title'])
if 'ita' in lang.lower(): language = 'ITA'
else: language = 'Sub-ITA'
itm = item.clone(title=support.typo(title,'bold') + support.typo(language,'_ [] color kod') + (support.typo(it['title_eng'],'_ ()') if it['title_eng'] else ''))
if title:
itm = item.clone(title=support.typo(title,'bold') + support.typo(language,'_ [] color kod') + (support.typo(it['title_eng'],'_ ()') if it['title_eng'] else ''))
else:
itm = item.clone(title=support.typo(it['title_eng'],'bold') + support.typo(language,'_ [] color kod'))
itm.contentLanguage = language
itm.type = it['type']
itm.thumbnail = it['imageurl']
itm.plot = it['plot']
itm.url = item.url
itm.url = '{}/anime/{}-{}'.format(item.url, it.get('id'), it.get('slug'))
if it['episodes_count'] == 1:
itm.contentType = 'movie'
@@ -174,7 +190,7 @@ def peliculas(item):
itm.contentSerieName = ''
itm.action = 'findvideos'
itm.scws_id = it['episodes'][0].get('scws_id', '')
itm.video_url = it['episodes'][0].get('link', '')
# itm.video_url = it['episodes'][0].get('link', '')
else:
itm.contentType = 'tvshow'
@@ -194,11 +210,10 @@ def peliculas(item):
def episodios(item):
support.info()
itemlist = []
title = 'Parte ' if item.type.lower() == 'movie' else 'Episodio '
title = 'Parte' if item.type.lower() == 'movie' else 'Episodio'
for it in item.episodes:
itemlist.append(
item.clone(title=support.typo(title + it['number'], 'bold'),
item.clone(title=support.typo('{}. {} {}'.format(it['number'], title, it['number']), 'bold'),
episode = it['number'],
fulltitle=item.title,
show=item.title,
@@ -208,8 +223,10 @@ def episodios(item):
plot=item.plot,
action='findvideos',
contentType='episode',
scws_id=it.get('scws_id', ''),
video_url=it.get('link', '')))
url = '{}/{}'.format(item.url, it['id'])
)
# video_url=it.get('link', ''))
)
if inspect.stack(0)[1][3] not in ['find_episodes']:
autorenumber.start(itemlist, item)
@@ -219,6 +236,33 @@ def episodios(item):
def findvideos(item):
itemlist = [item.clone(title=support.config.get_localized_string(30137), server='streamingcommunityws', url=str(item.scws_id))]
# if item.scws_id:
# from time import time
# from base64 import b64encode
# from hashlib import md5
#
# client_ip = support.httptools.downloadpage('http://ip-api.com/json/').json.get('query')
#
# expires = int(time() + 172800)
# token = b64encode(md5('{}{} Yc8U6r8KjAKAepEA'.format(expires, client_ip).encode('utf-8')).digest()).decode('utf-8').replace('=', '').replace('+', '-').replace('/', '_')
#
# url = 'https://scws.work/master/{}?token={}&expires={}&n=1'.format(item.scws_id, token, expires)
#
# itemlist = [item.clone(title=support.config.get_localized_string(30137), url=url, server='directo', action='play')]
from core import channeltools
itemlist = [item.clone(title=channeltools.get_channel_parameters(item.channel)['title'],
url=item.url, server='streamingcommunityws')]
return support.server(item, itemlist=itemlist, referer=False)
# return support.server(item, itemlist=itemlist)
#
# def play(item):
# urls = list()
# info = support.match(item.url, patron=r'(http.*?rendition=(\d+)[^\s]+)').matches
#
# if info:
# for url, res in info:
# urls.append(['hls [{}]'.format(res), url])
# return urls

4
channels/animeuniverse.json Normal file → Executable file
View File

@@ -1,7 +1,7 @@
{
"id": "animeuniverse",
"name": "AnimeUniverse",
"active": true,
"name": "AnimeHDitalia",
"active": false,
"language": ["ita", "sub-ita"],
"thumbnail": "animeuniverse.png",
"banner": "animeuniverse.png",

3
channels/animeuniverse.py Normal file → Executable file
View File

@@ -10,7 +10,7 @@ headers = {}
perpage_list = ['20','30','40','50','60','70','80','90','100']
perpage = perpage_list[support.config.get_setting('perpage' , 'animeuniverse')]
epPatron = r'<td>\s*(?P<title>[^<]+)[^>]+>[^>]+>\s*<a href="(?P<url>[^"]+)"'
epPatron = r'<td>\s*(?P<title>[^<]+)[^>]+>[^>]+>\s*<a href="(?P<url>[^"]+)"[^>]+>\s*<img [^>]+Streaming'
@support.menu
@@ -103,6 +103,7 @@ def episodios(item):
anime = True
pagination = int(perpage)
patron = epPatron
# debug = True
return locals()

9
channels/animeworld.json Normal file → Executable file
View File

@@ -7,6 +7,15 @@
"banner": "animeworld.png",
"categories": ["anime", "vos"],
"settings": [
{
"id": "lang",
"type": "list",
"label": "Lingua di Ricerca",
"default": 0,
"enabled": true,
"visible": true,
"lvalues": [ "Tutte", "Ita", "Sub-Ita"]
},
{
"id": "order",
"type": "list",

29
channels/animeworld.py Normal file → Executable file
View File

@@ -4,7 +4,7 @@
# thanks to fatshotty
# ----------------------------------------------------------
from core import httptools, support, jsontools
from core import httptools, support, config, jsontools
host = support.config.get_channel_url()
__channel__ = 'animeworld'
@@ -23,7 +23,7 @@ def get_data(item):
# support.dbg()
url = httptools.downloadpage(item.url, headers=headers, follow_redirects=True, only_headers=True).url
data = support.match(url, headers=headers, follow_redirects=True).data
if 'AWCookieVerify' in data:
if 'SecurityAW' in data:
get_cookie(data)
data = get_data(item)
return data
@@ -37,8 +37,8 @@ def order():
@support.menu
def mainlist(item):
anime=['/filter?sort=',
('ITA',['/filter?dub=1&sort=', 'menu', '1']),
('SUB-ITA',['/filter?dub=0&sort=', 'menu', '0']),
('ITA',['/filter?dub=1&sort=', 'menu', 'dub=1']),
('SUB-ITA',['/filter?dub=0&sort=', 'menu', 'dub=0']),
('In Corso', ['/ongoing', 'peliculas','noorder']),
('Ultimi Episodi', ['/updated', 'peliculas', 'updated']),
('Nuove Aggiunte',['/newest', 'peliculas','noorder' ]),
@@ -50,6 +50,7 @@ def mainlist(item):
def genres(item):
action = 'peliculas'
data = get_data(item)
patronBlock = r'dropdown[^>]*>\s*Generi\s*<span.[^>]+>(?P<block>.*?)</ul>'
patronMenu = r'<input.*?name="(?P<name>[^"]+)" value="(?P<value>[^"]+)"\s*>[^>]+>(?P<title>[^<]+)</label>'
@@ -75,9 +76,10 @@ def menu(item):
def submenu(item):
action = 'peliculas'
data = item.other
# debug=True
patronMenu = r'<input.*?name="(?P<name>[^"]+)" value="(?P<value>[^"]+)"\s*>[^>]+>(?P<title>[^<]+)<\/label>'
def itemHook(item):
item.url = host + '/filter?' + item.name + '=' + item.value + '&dub=' + item.args + ('&sort=' if item.name != 'sort' else '')
item.url = '{}/filter?{}={}&{}{}'.format(host, item.name, item.value, item.args, ('&sort=' if item.name != 'sort' else ''))
return item
return locals()
@@ -85,9 +87,10 @@ def submenu(item):
def newest(categoria):
support.info(categoria)
item = support.Item()
lang = config.get_setting('lang', channel=item.channel)
try:
if categoria == "anime":
item.url = host + '/updated'
item.url = host
item.args = "updated"
return peliculas(item)
# Continua la ricerca in caso di errore
@@ -98,13 +101,13 @@ def newest(categoria):
return []
def search(item, texto):
support.info(texto)
def search(item, text):
support.info(text)
if item.search:
item.url = host + '/filter?dub=' + item.args + '&keyword=' + texto + '&sort='
item.url = '{}/filter?{}&keyword={}&sort='.format(host, item.args, text)
else:
item.args = 'noorder'
item.url = host + '/search?keyword=' + texto
lang = ['?', '?dub=1&', '?dub=0&'][config.get_setting('lang', channel=item.channel)]
item.url = '{}/filter{}&keyword={}&sort='.format(host, lang, text)
item.contentType = 'tvshow'
try:
return peliculas(item)
@@ -118,8 +121,8 @@ def search(item, texto):
@support.scrape
def peliculas(item):
data = get_data(item)
anime = True
# debug = True
if item.args not in ['noorder', 'updated'] and not item.url[-1].isdigit(): item.url += order() # usa l'ordinamento di configura canale
data = get_data(item)
@@ -185,7 +188,9 @@ def findvideos(item):
else:
dataJson = support.match(host + '/api/episode/info?id=' + epID + '&alt=0', headers=headers).data
json = jsontools.load(dataJson)
title = support.match(json['grabber'], patron=r'server\d+.([^.]+)', string=True).match
if title: itemlist.append(item.clone(action="play", title=title, url=json['grabber'].split('=')[-1], server='directo'))
else: urls.append(json['grabber'])
# support.info(urls)
return support.server(item, urls, itemlist)

4
channels/aniplay.json Normal file → Executable file
View File

@@ -1,7 +1,7 @@
{
"id": "aniplay",
"name": "AniPlay",
"active": true,
"active": false,
"language": ["ita", "sub-ita"],
"thumbnail": "aniplay.png",
"banner": "aniplay.png",
@@ -34,4 +34,4 @@
"lvalues": ["10", "20", "30", "40", "50", "60", "80", "90"]
}
]
}
}

70
channels/aniplay.py Normal file → Executable file
View File

@@ -1,5 +1,5 @@
from platformcode import config, logger, autorenumber
from core import httptools, scrapertools, support, tmdb
from core import httptools, scrapertools, support, tmdb, jsontools
from inspect import stack
import sys
@@ -34,6 +34,7 @@ def submenu_az(item):
thumbnail=support.thumb('az')))
return itemlist
def submenu_year(item):
itemlist = []
from datetime import date
@@ -46,6 +47,7 @@ def submenu_year(item):
thumbnail=support.thumb('year')))
return itemlist
def submenu_top(item):
itemlist = []
links = {'Top del giorno':'daily-top', 'Top della settimana':'weekly-top', 'Top del mese':'monthly-top'}
@@ -56,6 +58,7 @@ def submenu_top(item):
variable= link))
return itemlist
def submenu_season(item):
itemlist = []
seasons = {'winter':'Inverno', 'spring':'Primavera', 'summer':'Estate', 'fall':'Autunno'}
@@ -65,12 +68,13 @@ def submenu_season(item):
s = season['season'].split('.')[-1]
title = seasons[s]
itemlist.append(item.clone(title=title,
url = '{}/api/seasonal-view/{}-{}'.format(host, s, item.variable),
thumbnail = support.thumb(s),
action = 'peliculas',
variable=''))
url = '{}/api/seasonal-view/{}-{}'.format(host, s, item.variable),
thumbnail = support.thumb(s),
action = 'peliculas',
variable=''))
return itemlist
def submenu_top_of(item):
itemlist = []
url= '{}/api/home/{}'.format(host, item.variable)
@@ -83,15 +87,14 @@ def submenu_top_of(item):
long_title = support.typo(title, 'bold') + support.typo(lang, '_ [] color kod')
itemlist.append(item.clone(title=long_title,
id=anime['animeId'],
url = '{}/api/anime/{}'.format(host, anime['animeId']),
thumbnail = get_thumbnail(anime, 'animeHorizontalImages'),
action = 'episodios',
variable=anime['animeId']))
url = '{}/anime/{}'.format(host, anime['animeId']),
video_url = '{}/api/anime/{}'.format(host, anime['animeId']),
thumbnail = get_thumbnail(anime, 'animeHorizontalImages'),
action = 'episodios',
variable=anime['animeId']))
return itemlist
def search(item, texto):
support.info(texto)
item.url = host + '/api/anime/advanced-search'
@@ -136,15 +139,14 @@ def latest_added(item):
itemlist.append(item.clone(title=long_title,
fulltitle=title,
animeId = episode['animeId'],
id=episode['id'],
url='{}/play/{}'.format(host, episode['id']),
contentType = 'episode',
contentTitle = title,
contentSerieName = animeTitle,
contentLanguage = lang,
quality = quality,
contentEpisodeNumber = int(float(episode['episodeNumber'])),
animeUrl = '{}/api/anime/{}'.format(host, episode['animeId']),
video_url = '{}/api/episode/{}'.format(host, episode['id']),
thumbnail = image,
fanart = image,
action = 'findvideos'))
@@ -163,6 +165,7 @@ def peliculas(item):
js = httptools.downloadpage('{}?page={}&size={}{}&sort={},{}&sort=id'.format(item.url, page, perpage, item.variable, sort, order)).json
for it in js:
logger.debug(jsontools.dump(js))
title, lang = get_lang(it['title'])
long_title = support.typo(title, 'bold') + support.typo(lang, '_ [] color kod')
@@ -174,10 +177,10 @@ def peliculas(item):
contentType = 'movie' if it['type'] == 'Movie' else 'tvshow',
contentTitle = title,
contentSerieName = title if it['type'] == 'Serie' else '',
action ='findvideos' if it['type'] == 'Movie' else 'episodios',# '' if not active else 'findvideos' if it['type'] == 'Movie' else 'episodios',
action ='findvideos' if it['type'] == 'Movie' else 'episodios',
plot = it['storyline'],
# year = it['startDate'].split('-')[0],
url = '{}/api/anime/{}'.format(host, it['id']),
url = '{}/anime/{}'.format(host, it['id']),
video_url = '{}/api/anime/{}'.format(host, it.get('animeId', it.get('id'))),
thumbnail = get_thumbnail(it),
fanart = get_thumbnail(it, 'horizontalImages')))
@@ -192,9 +195,10 @@ def peliculas(item):
def episodios(item):
logger.debug()
itemlist = []
if not item.video_url:
item.video_url = item.url.replace('/anime/', '/api/anime/')
# url = '{}/api/anime/{}'.format(host, item.id)
json = httptools.downloadpage(item.url, CF=False ).json
json = httptools.downloadpage(item.video_url, CF=False ).json
if type(json) == list:
item.show_renumber = False
@@ -208,7 +212,7 @@ def episodios(item):
title = it['name']
itemlist.append(item.clone(title = title,
id= '{}/season/{}'.format(it['animeId'], it['id']),
video_url = '{}/api/anime/{}/season/{}'.format(host, it['animeId'], it['id']),
contentType = 'season',
action = 'list_episodes',
plot = json['storyline'],
@@ -245,8 +249,7 @@ def list_episodes(item, json=None):
itemlist = []
if not json:
url = '{}/api/anime/{}'.format(host, item.id)
json = httptools.downloadpage(url, CF=False ).json
json = httptools.downloadpage(item.video_url, CF=False ).json
episodes = json['episodes'] if 'episodes' in json else json
episodes.sort(key=lambda ep: int(ep['episodeNumber'].split('.')[0]))
@@ -263,8 +266,8 @@ def list_episodes(item, json=None):
image = get_thumbnail(it, 'episodeImages')
itemlist.append(item.clone(title = title,
id= it['id'],
url= 'api/episode/{}'.format(it['id']),
url= '{}/play/{}'.format(host, it['id']),
video_url= '{}/api/episode/{}'.format(host, it['id']),
contentType = 'episode',
contentEpisodeNumber = int(it['episodeNumber'].split('.')[0]),
contentSeason = item.contentSeason if item.contentSeason else '',
@@ -283,21 +286,18 @@ def list_episodes(item, json=None):
def findvideos(item):
logger.debug()
url = '{}/api/{}/{}'.format(host, 'episode' if item.contentType == 'episode' else 'anime', item.id)
res = httptools.downloadpage(item.video_url, CF=False ).json
json = httptools.downloadpage(url, CF=False ).json
if res.get('episodes', []):
res = httptools.downloadpage('{}/api/episode/{}'.format(host, res['episodes'][0]['id'])).json
if json.get('episodes', []):
json = httptools.downloadpage('{}/api/episode/{}'.format(host, json['episodes'][0]['id'])).json
# logger.debug(json)
item.url = res['videoUrl']
item.server = 'directo'
videourl = json['videoUrl']
if '.m3u' in item.url:
item.manifest = 'hls'
itemlist = [item.clone(title=config.get_localized_string(30137),
url=videourl,
server='directo')]
return support.server(item, itemlist=itemlist)
return support.server(item, itemlist=[item])
def get_thumbnail(data, prop = 'verticalImages', key = 'full'):

2
channels/casacinema.json Normal file → Executable file
View File

@@ -2,7 +2,7 @@
"id": "casacinema",
"name": "Casacinema",
"language": ["ita", "sub-ita"],
"active": true,
"active": false,
"thumbnail": "casacinema.png",
"banner": "casacinema.png",
"categories": ["tvshow", "movie","vos"],

33
channels/casacinema.py Normal file → Executable file
View File

@@ -36,20 +36,20 @@ def genres(item):
def check(item):
item.data = support.match(item).data
if 'continua con il video' in item.data.lower():
support.info('select = ### è un film ###')
item.contentType = 'movie'
return findvideos(item)
else:
if 'episodi e stagioni' in item.data.lower():
support.info('select = ### è una serie ###')
item.contentType = 'tvshow'
return episodios(item)
else:
support.info('select = ### è un film ###')
item.contentType = 'movie'
return findvideos(item)
def search(item, text):
support.info(text)
text = text.replace(' ', '+')
item.url = host + '/?s=' + text
item.url = host + '/?a=b&s=' + text
item.args = 'search'
try:
return peliculas(item)
@@ -93,7 +93,6 @@ def newest(categoria):
@support.scrape
def peliculas(item):
# debug = True
if item.contentType == 'movie':
action = 'findvideos'
elif item.contentType == 'tvshow':
@@ -105,11 +104,10 @@ def peliculas(item):
if item.args == 'newest':
patron = r'<li><a href="(?P<url>[^"]+)"[^=]+="(?P<thumb>[^"]+)"><div>\s*?<div[^>]+>(?P<title>[^\(\[<]+)(?:\[(?P<quality1>HD)\])?[ ]?(?:\(|\[)?(?P<lang>[sS]ub-[iI][tT][aA])?(?:\)|\])?[ ]?(?:\[(?P<quality>.+?)\])?[ ]?(?:\((?P<year>\d+)\))?<(?:[^>]+>.+?(?:title="Nuovi episodi">(?P<episode>\d+x\d+)[ ]?(?P<lang2>Sub-Ita)?|title="IMDb">(?P<rating>[^<]+)))?'
else:
# patron = r'<li><a href="(?P<url>[^"]+)"[^=]+="(?P<thumb>[^"]+)"><div>\s*?<div[^>]+>(?P<title>[^\(\[<]+)(?:\[(?P<quality1>HD)\])?\s?(?:[\(\[])?(?P<lang>[sS]ub-[iI][tT][aA])?(?:[\)\]])?\s?(?:\[(?P<quality>.+?)\])?\s?(?:\((?P<year>\d+)\))?<'
patron = r'<li><a href="(?P<url>[^"]+)"[^=]+="(?P<thumb>[^"]+)"><div>\s*?<div[^>]+>(?P<title>[^\(\[<]+)(?P<title2>\([\D*]+\))?(?:\[(?P<quality1>HD)\])?\s?(?:[\(\[])?(?P<lang>[sS]ub-[iI][tT][aA])?(?:[\)\]])?\s?(?:\[(?P<quality>.+?)\])?\s?(?:\((?P<year>\d+)\))?(?:\(\D{2}\s\d{4}\))?<'
patronNext = r'<a href="([^"]+)"\s*>Pagina'
# debug = True
def itemHook(item):
if item.quality1:
@@ -120,8 +118,7 @@ def peliculas(item):
item.title += support.typo(item.lang2, '_ [] color kod')
if item.args == 'novita':
item.title = item.title
# if 'wp-content' in item.thumbnail and not item.infoLabels['year']:
# item.infoLabels['year'] = item.thumbnail.split('/')[5]
return item
return locals()
@@ -133,11 +130,8 @@ def episodios(item):
action = 'findvideos'
item.contentType = 'tvshow'
blacklist = ['']
# debug = True
patron = r'"season-no">(?P<season>\d+)x(?P<episode>\d+)(?:[^>]+>){5}\s*(?P<title>[^<]+)(?P<data>.*?)</table>'
# patron = r'(?P<episode>\d+(?:&#215;|×)?\d+\-\d+|\d+(?:&#215;|×)\d+)[;]?(?:(?P<title>[^<]+)<(?P<data>.*?)|(\2[ ])(?:<(\3.*?)))(?:<br />|</p>)'
patronBlock = r'<span>(?:.+?Stagione*.+?(?P<lang>[Ii][Tt][Aa]|[Ss][Uu][Bb][\-]?[iI][tT][aA]))?.*?</span>.*?class="content(?P<block>.*?)(?:"accordion-item|<script>)'
# patronBlock = r'<strong>(?P<block>(?:.+?Stagione*.+?(?P<lang>[Ii][Tt][Aa]|[Ss][Uu][Bb][\-]?[iI][tT][aA]))?(?:.+?|</strong>)(/?:</span>)?</p>.*?</p>)'
return locals()
@@ -145,10 +139,7 @@ def findvideos(item):
if item.contentType != 'movie':
links = support.match(item.data, patron=r'href="([^"]+)"').matches
else:
matchData = item.data if item.data else item
links = support.match(matchData, patron=r'(?:SRC|href)="([^"]+)"', patronBlock=r'<div class="col-md-10">(.+?)<div class="ads">').matches
data = ''
for link in links:
support.info('URL=',link)
data += link + '\n'
return support.server(item, data)
matchData = item.data if item.data else support.match(item.url, headers=headers).data
links = support.match(matchData, patron=r'data-id="([^"]+)"').matches
return support.server(item, links)

0
channels/cb01anime.json Normal file → Executable file
View File

0
channels/cb01anime.py Normal file → Executable file
View File

0
channels/cineblog01.json Normal file → Executable file
View File

31
channels/cineblog01.py Normal file → Executable file
View File

@@ -2,7 +2,6 @@
# ------------------------------------------------------------
# Canale per cineblog01
# ------------------------------------------------------------
import datetime
import re
from core import scrapertools, httptools, servertools, support
@@ -24,17 +23,19 @@ headers = [['Referer', host]]
def mainlist(item):
film = [
('HD', ['', 'menu', 'Film HD Streaming']),
('Generi', ['', 'menu', 'Film per Genere']),
('Genere', ['', 'menu', 'Film per Genere']),
('Anni', ['', 'menu', 'Film per Anno']),
('Paese', ['', 'menu', 'Film per Paese']),
('Ultimi Aggiornati', ['/ultimi-100-film-aggiornati/', 'peliculas', 'newest']),
('Ultimi Aggiunti', ['/lista-film-ultimi-100-film-aggiunti/', 'peliculas', 'newest'])
('Popolari per Genere', ['', 'menu', 'Film Popolari']),
('Ultimi Aggiunti', ['/ultimi-100-film-aggiunti/', 'peliculas', 'newest']),
('Popolari', ['/category/film-popolari/']),
('Italiani', ['/category/nazione/italia/'])
# ('Film in Lista', ['/lista-film/', 'peliculas', 'newest'])
]
tvshow = ['/serietv/',
('Per Lettera', ['/serietv/', 'menu', 'Serie-Tv per Lettera']),
('Per Genere', ['/serietv/', 'menu', 'Serie-Tv per Genere']),
('Per anno', ['/serietv/', 'menu', 'Serie-Tv per Anno']),
('Ultime Aggiornate', ['/serietv/ultime-100-serie-tv-aggiornate/', 'peliculas', 'newest'])
('Per Lettera', ['/serietv/', 'menu', 'Serie-TV x Lettera']),
('Per Genere', ['/serietv/', 'menu', 'Serie-TV x Genere']),
('Per anno', ['/serietv/', 'menu', 'Serie-TV x Anno']),
('Ultime Aggiunte', ['/serietv/ultime-100-serie-tv-aggiunte/', 'peliculas', 'newest'])
]
docu = [('Documentari {bullet bold}', ['/category/documentario/', 'peliculas']),
('HD {submenu} {documentari}', ['/category/hd-alta-definizione/documentario-hd/', 'peliculas'])
@@ -45,9 +46,9 @@ def mainlist(item):
@support.scrape
def menu(item):
# debug=True
# debug = True
patronBlock = item.args + r'<span.*?><\/span>.*?<ul.*?>(?P<block>.*?)<\/ul>'
patronMenu = r'href="?(?P<url>[^">]+)"?>(?P<title>[^<»]+)'
patronMenu = r'href="?(?P<url>[^">]+)"?[^>]+>(?P<title>[^<»]+)'
action = 'peliculas'
return locals()
@@ -63,7 +64,7 @@ def newest(categoria):
item.url = host + '/serietv/' # aggiornamento-quotidiano-serie-tv/'
else:
item.contentType = 'movie'
item.url = host + '/lista-film-ultimi-100-film-aggiunti/'
item.url = host + '/ultimi-100-film-aggiunti/'
item.args = "newest"
return peliculas(item)
# Continua la ricerca in caso di errore
@@ -92,7 +93,7 @@ def search(item, text):
@support.scrape
def peliculas(item):
# debug = True
#debug = True
# esclusione degli articoli 'di servizio'
# curYear = datetime.date.today().year
# blacklist = ['BENVENUTI', 'Richieste Serie TV', 'CB01.UNO &#x25b6; TROVA L&#8217;INDIRIZZO UFFICIALE ',
@@ -112,7 +113,7 @@ def peliculas(item):
action = 'episodios'
elif '/serietv/' not in item.url:
patron = r'(?<!sticky )hentry.*?<div class="card-image">\s*<a[^>]+>\s*<img src="(?P<thumb>[^" ]+)" alt[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+><a href="?(?P<url>[^" >]+)(?:\/|"|\s+)>(?P<title>[^<[(]+)(?:\[(?P<quality>[a-zA-Z]+(?:[/]?3D)?)\]\s*)?(?:\[(?P<lang>Sub-ITA|ITA)\]\s*)?(?:\[(?P<quality2>[a-zA-Z/]+)\]\s*)? (?:\((?P<year>[0-9]{4})\))?[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>(?P<genre>[^<>&‖“]+)(?:[^ ]+\s*DURATA\s*(?P<duration>[0-9]+)[^>]+>[^>]+>[^>]+>(?P<plot>[^<>]+))?'
patron = r'(?<!sticky )hentry.*?<div class="card-image">\s*<a[^>]+>\s*<img src="(?P<thumb>[^" ]+)" alt[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+><a href="?(?P<url>[^" >]+)(?:\/|"|\s+)>(?P<title>[^<[(]+)(?:\[(?P<quality>[a-zA-Z]+(?:[/]?3D)?)\]\s*)?(?:\[(?P<lang>Sub-ITA|ITA)\]\s*)?(?:\[(?P<quality2>[a-zA-Z/]+)\]\s*)? (?:\((?P<year>[0-9]{4})\))?[^>]+>[^>]+>[^>]+>[^>]+>(?P<genre>[^<>&‖“]+)(?:[^ ]+\s*DURATA\s*(?P<duration>[0-9]+)[^>]+>[^>]+>[^>]+>(?P<plot>[^<>]+))?'
action = 'findvideos'
else:
@@ -144,7 +145,7 @@ def episodios(item):
addVideolibrary = False
downloadEnabled = False
patron = r'<td>(?P<title>[^<]+)<td><a [^>]+href="(?P<url>[^"]+)[^>]+>'
patron = r'<tr><td>(?P<title>[^<]+)<td><span [^>].+?><a [^>]+href="(?P<url>[^"]+)[^>]+>'
sceneTitle = True
# debug = True

2
channels/cinemalibero.json Normal file → Executable file
View File

@@ -2,7 +2,7 @@
"id": "cinemalibero",
"name": "Cinemalibero",
"language": ["ita"],
"active": true,
"active": false,
"thumbnail": "cinemalibero.png",
"banner": "cinemalibero.png",
"categories": ["movie","tvshow","anime"],

74
channels/cinemalibero.py Normal file → Executable file
View File

@@ -97,10 +97,11 @@ def peliculas(item):
@support.scrape
def episodios(item):
data = item.data
# debug=True
if item.args == 'anime':
logger.debug("Anime :", item)
patron = r'<a target=(?P<url>[^>]+>(?P<title>Episodio\s(?P<episode>\d+))(?::)?(?:(?P<title2>[^<]+))?.*?(?:<br|</p))'
patron = r'<a target=(?P<url>[^>]+>(?P<title>Episodio\s(?P<episode>\d+))(?::)?(?:(?P<title2>[^<]+))?.*?(?:<br|</p))|(?P<data>.+)'
patronBlock = r'(?:Stagione (?P<season>\d+))?(?:</span><br />|</span></p>|strong></p>)(?P<block>.*?)(?:<div style="margin-left|<span class="txt_dow">)'
item.contentType = 'tvshow'
elif item.args == 'sport':
@@ -110,7 +111,6 @@ def episodios(item):
item.contentType = 'tvshow'
elif item.args == 'serie' or item.contentType == 'tvshow':
logger.debug("Serie :", item)
# debug=True
patron = r'(?:/>|<p>)\s*(?:(?P<episode>\d+(?:x|×|&#215;)\d+|Puntata \d+)(?:-(?P<episode2>\d+))?[;]?[ ]?(?P<title>[^<-]+))?(?P<data>.*?)(?:<br|</p)'
patronBlock = r'Stagione\s(?:[Uu]nica)?(?:(?P<lang>iTA|ITA|Sub-ITA|Sub-iTA))?.*?</strong>(?P<block>.+?)(?:strong>|<div class="at-below)'
item.contentType = 'tvshow'
@@ -130,28 +130,38 @@ def episodios(item):
for it in itl:
ep = scrapertools.find_single_match(it.title, r'(\d+x\d+)')
if not ep and 'http' in it.data: # stagione intera
from lib import unshortenit
data = unshortenit.findlinks(it.data)
# from lib import unshortenit
# data = unshortenit.findlinks(it.data)
episodes = {}
def get_ep(s):
srv_mod = __import__('servers.%s' % s.server, None, None, ["servers.%s" % s.server])
if hasattr(srv_mod, 'get_filename'):
title = srv_mod.get_filename(s.url)
ep = scrapertools.get_season_and_episode(title)
if item.args == 'anime':
ep = title
else:
ep = scrapertools.get_season_and_episode(title)
if ep:
if ep not in episodes:
episodes[ep] = []
episodes[ep].append(s)
servers = support.server(item, data, CheckLinks=False, Download=False, Videolibrary=False)
episodes = {}
for s in servers:
get_ep(s)
servers = support.server(item, it.data, CheckLinks=False, Download=False, Videolibrary=False)
# for s in servers:
# get_ep(s)
# ottengo l'episodio dal nome del file
# with futures.ThreadPoolExecutor() as executor:
# for s in servers:
# executor.submit(get_ep, s)
with futures.ThreadPoolExecutor() as executor:
for s in servers:
executor.submit(get_ep, s)
# logger.debug(it.contentLanguage)
ret.extend([it.clone(title=typo(ep, 'bold')+typo(it.contentLanguage, '_ [] color kod bold'), contentSeason=int(ep.split('x')[0]), contentEpisodeNumber=int(ep.split('x')[1]), servers=[srv.tourl() for srv in episodes[ep]]) for ep in episodes])
if item.args != 'anime':
for ep in episodes:
ret.append(it.clone(title=typo(ep, 'bold') + typo(it.contentLanguage, '_ [] color kod bold'),
servers=[srv.tourl() for srv in episodes[ep]], contentSeason=int(ep.split('x')[0]), contentEpisodeNumber=int(ep.split('x')[1])))
else:
ret.extend([it.clone(title=typo(ep, 'bold') + typo(it.contentLanguage, '_ [] color kod bold'),
servers=[srv.tourl() for srv in episodes[ep]]) for ep in episodes])
elif ep:
ret.append(it)
return sorted(ret, key=lambda i: i.title)
@@ -206,16 +216,15 @@ def newest(categoria):
def check(item):
logger.debug()
data = support.match(item.url, headers=headers).data
# support.dbg()
if data:
ck = str(support.match(data, patronBlock=r'Genere:(.*?)</span>', patron=r'tag">([^<]+)').matches).lower()
if 'serie tv' in ck or 'anime' in ck:# in ['serie tv', 'wrestling wwe', 'anime']:
if 'serie tv' in ck or 'anime' in ck or 'wrestling wwe' in ck :# in ['serie tv', 'wrestling wwe', 'anime']:
if 'anime' in ck:
item.args = 'anime'
elif 'sport' in ck:
elif 'sport' in ck or 'wrestling' in ck:
item.args = 'sport'
else:
item.args = 'serie'
@@ -249,26 +258,25 @@ def findvideos(item):
return support.server(item, itemlist=[Item().fromurl(s) for s in item.servers])
if not item.data:
item.data = httptools.downloadpage(item.url)
data = scrapertools.find_single_match(item.data, '<div class="at-above-post addthis_tool"(.*?)<div class="at-below-post')
data = scrapertools.find_single_match(item.data, '<div class="at-above-post addthis_tool"(.*?)(?:<div class="at-below-post|[dD][oO][wW][nN][lL][oO][aA][dD])')
if data:
item.data = data
servers = []
if item.args == 'anime':
if item.urls: # this is a episode
return support.server(item, itemlist=[Item(url=support.unshortenit.FileCrypt().unshorten(u)) for u in item.urls])
itemlist = []
episodes = {}
# support.dbg()
for uri in support.unshortenit.FileCrypt().find(item.data):
for ep in support.unshortenit.FileCrypt(uri).list_files():
ep = ('.'.join(ep[0].split('.')[:-1]), ep[1]) # remove extension
if not ep[0] in episodes:
episodes[ep[0]] = []
episodes[ep[0]].append(ep[1])
for ep in episodes.keys():
itemlist.append(item.clone(title=ep, urls=episodes[ep], action='findvideos', data=''))
return itemlist
# if item.args == 'anime':
# if item.urls: # this is a episode
# return support.server(item, itemlist=[Item(url=support.unshortenit.FileCrypt().unshorten(u)) for u in item.urls])
# itemlist = []
# episodes = {}
# for uri in support.unshortenit.FileCrypt().find(item.data):
# for ep in support.unshortenit.FileCrypt(uri).list_files():
# ep = ('.'.join(ep[0].split('.')[:-1]), ep[1]) # remove extension
# if not ep[0] in episodes:
# episodes[ep[0]] = []
# episodes[ep[0]].append(ep[1])
# for ep in episodes.keys():
# itemlist.append(item.clone(title=ep, urls=episodes[ep], action='findvideos', data=''))
# return itemlist
total_servers = support.server(item, data=item.data)
if item.contentType == 'episode' and len(set([srv.server for srv in total_servers])) < len([srv.server for srv in total_servers]):

0
channels/cinetecadibologna.json Normal file → Executable file
View File

0
channels/cinetecadibologna.py Normal file → Executable file
View File

11
channels/dinostreaming.json Executable file
View File

@@ -0,0 +1,11 @@
{
"id": "dinostreaming",
"name": "DinoStreaming",
"language": ["ita"],
"active": true,
"thumbnail": "dinostreaming.png",
"banner": "dinostreaming.png",
"categories": ["movie"],
"settings": [],
"not_active": ["include_in_newest"]
}

77
channels/dinostreaming.py Executable file
View File

@@ -0,0 +1,77 @@
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# Canale per Dinostreaming
# by ilmich
# ------------------------------------------------------------
from core import httptools, support
from core.item import Item
from platformcode import logger
host = support.config.get_channel_url()
headers = [['Referer', host]]
@support.menu
def mainlist(item):
film = [('Film al cinema',['/film-category/al-cinema/', 'peliculas']),
('Generi',['', 'genres']),
]
search = ''
return locals()
@support.scrape
def genres(item):
action = 'peliculas'
blacklist = ['Seguici su Telegram',]
patronMenu = r'<li class="elementor-icon-list-item">.*?href="(?P<url>.*?)".*?text">(?P<title>.*?)</span>'
return locals()
@support.scrape
def peliculas(item):
if not item.args == 'search': # pagination not works
if not item.nextpage:
item.page = 1
else:
item.page = item.nextpage
if not item.parent_url:
item.parent_url = item.url
item.nextpage = item.page + 1
nextPageUrl = "{}/page/{}".format(item.parent_url, item.nextpage)
resp = httptools.downloadpage(nextPageUrl, only_headers = True)
if (resp.code > 399): # no more elements
nextPageUrl = ''
patron = r'<div data-elementor-type="loop-item".*?<a.*?url="(?P<thumb>[^"]+).*?<a href=\"(?P<url>[^"]+)\">(?P<title>.*?)</a>.*?<span class="elementor-heading-title elementor-size-default">(?P<year>.*?)</span>'
def itemlistHook(itemlist):
return itemlist[:-1:]
return locals()
def search(item, text):
item.url = "{}/?{}".format(host, support.urlencode({'s': 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):
support.info()
data = httptools.downloadpage(item.url).data
video_url = support.match(data, patron=r'<a href="([^"]+)" rel="nofollow" title="Guarda il film in streaming">' ).match
if (video_url == ''):
return []
item.url = video_url
itemlist = support.server(item)
return itemlist

0
channels/discoveryplus.json Normal file → Executable file
View File

77
channels/discoveryplus.py Normal file → Executable file
View File

@@ -6,7 +6,7 @@ import functools
import requests, uuid
from core import jsontools, support, httptools
from platformcode import logger
from platformcode import logger, config
typo = support.typo
@@ -18,11 +18,12 @@ deviceId = uuid.uuid4().hex
# domain = 'https://eu1-prod-direct.discoveryplus.com'
domain = 'https://' + session.get("https://prod-realmservice.mercury.dnitv.com/realm-config/www.discoveryplus.com%2Fit%2Fepg").json()["domain"]
token = session.get('{}/token?deviceId={}&realm=dplay&shortlived=true'.format(domain, deviceId)).json()['data']['attributes']['token']
session.headers = {'User-Agent': 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0',
session.headers = {'User-Agent': httptools.get_user_agent(), #'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0',
'Referer': host,
'Origin': host,
'Cookie': 'st={}'.format(token),
'content-type': 'application/json',
'x-disco-client': 'WEB:UNKNOWN:dplus_us:2.46.0',
'x-disco-params': 'realm=dplay,siteLookupKey=dplus_it'}
@support.menu
@@ -54,7 +55,8 @@ def live(item):
logger.debug()
itemlist =[]
data = session.get(domain + '/cms/routes/epg?include=default').json()['included']
# data = session.get(domain + '/cms/routes/epg?include=default').json()['included']
data = session.get(domain + '/cms/routes/home?include=default&decorators=playbackAllowed').json()['included']
for key in data:
@@ -166,7 +168,7 @@ def seasons(item):
data = session.get('{}/cms/routes/show/{}?include=default'.format(domain, item.programid)).json()['included']
for key in data:
if key['type'] == 'collection':
if key['type'] == 'collection' and 'filters' in key['attributes']['component']:
for option in key['attributes']['component']['filters'][0]['options']:
itemlist.append(item.clone(title="Stagione {}".format(option['value']),
season=int(option['value']),
@@ -177,6 +179,15 @@ def seasons(item):
action='episodios'))
break
if key['type'] == 'collection' and 'title' in key['attributes']:
itemlist.append(
item.clone(title=typo(key['attributes']['title'],'bold'),
plot=key['attributes'].get('description',''),
programid=key['attributes']['alias'],
id=key['id'],
action='episodios',
contentType='season'))
return itemlist
@@ -189,13 +200,21 @@ def episodios(item):
for key in data:
if key['type'] == 'video' and 'Free' in str(key.get('relationships',{}).get('contentPackages',{}).get('data',[])):
itemlist.append(item.clone(title = "{}x{:02d} - {}".format(item.season, key['attributes']['episodeNumber'], key['attributes']['name']),
if item.season:
itemlist.append(item.clone(title = "{}x{:02d} - {}".format(item.season, key['attributes']['episodeNumber'], key['attributes']['name']),
plot = key['attributes']['description'],
episode = key['attributes']['episodeNumber'],
contentType = 'episode',
action = 'findvideos',
thumbnail = images[key['relationships']['images']['data'][0]['id']],
id=key['id']))
else:
itemlist.append(item.clone(title = key['attributes']['name'],
plot = key['attributes']['longDescription'],
contentType = 'episode',
action = 'findvideos',
thumbnail = images[key['relationships']['images']['data'][0]['id']],
id=key['id']))
itemlist.sort(key=lambda it: it.episode)
@@ -210,16 +229,52 @@ def findvideos(item):
logger.debug()
content = 'video' if item.contentType == 'episode' else 'channel'
post = {content + 'Id': item.id, 'deviceInfo': {'adBlocker': False,'drmSupported': True}}
post = {content + 'Id': item.id,
'deviceInfo': {
'adBlocker': 'true',
'drmSupported': 'true',
'hwDecodingCapabilities': [],
'screen':{
'width':1920,
'height':1080
},
'player':{
'width':1920,
'height':1080
}
},
'wisteriaProperties':{
'advertiser': {
'firstPlay': 0,
'fwIsLat': 0
},
'device':{
'browser':{
'name': 'chrome',
'version': config.get_setting("chrome_ua_version")
},
'type': 'desktop'
},
'platform': 'desktop',
'product': 'dplus_emea',
'sessionId': deviceId,
'streamProvider': {
'suspendBeaconing': 0,
'hlsVersion': 6,
'pingConfig': 1
}
}
}
data = session.post('{}/playback/v3/{}PlaybackInfo'.format(domain, content), json=post).json().get('data',{}).get('attributes',{})
if data.get('protection', {}).get('drmEnabled',False):
item.url = data['streaming']['dash']['url']
if data.get('streaming', [{}])[0].get('protection', {}).get('drmEnabled',False):
item.url = data['streaming'][0]['url']
item.drm = 'com.widevine.alpha'
item.license ="{}|PreAuthorization={}|R{{SSM}}|".format(data['protection']['schemes']['widevine']['licenseUrl'], data['protection']['drmToken'])
item.license ="{}|PreAuthorization={}|R{{SSM}}|".format(data['streaming'][0]['protection']['schemes']['widevine']['licenseUrl'],
data['streaming'][0]['protection']['drmToken'])
else:
item.url = data['streaming'][0]['url']
item.manifest = 'hls'
return support.server(item, itemlist=[item], Download=False, Videolibrary=False)
return support.server(item, itemlist=[item], Download=False, Videolibrary=False)

0
channels/dreamsub.json Normal file → Executable file
View File

0
channels/dreamsub.py Normal file → Executable file
View File

6
channels/eurostreaming.json Normal file → Executable file
View File

@@ -1,10 +1,10 @@
{
"id": "eurostreaming",
"name": "Eurostreaming",
"active": true,
"language": ["ita","sub-ita"],
"active": false,
"language": ["ita", "sub-ita"],
"thumbnail": "eurostreaming.png",
"banner": "eurostreaming.png",
"categories": ["tvshow","anime","vos"],
"categories": ["tvshow", "anime", "vos"],
"settings": []
}

7
channels/eurostreaming.py Normal file → Executable file
View File

@@ -31,7 +31,7 @@ def mainlist(item):
def peliculas(item):
# debug = True
action = 'episodios'
if item.args == 'newest':
item.contentType = 'episode'
patron = r'<span class="serieTitle" style="font-size:20px">(?P<title>[^<]+) \s*<a href="(?P<url>[^"]+)"[^>]*>\s+?(?P<episode>\d+[×x]\d+-\d+|\d+[×x]\d+) (?P<title2>[^<\(]+)\s?\(?(?P<lang>SUB ITA)?\)?</a>'
@@ -49,8 +49,9 @@ def episodios(item):
data = support.match(item, headers=headers).data
if 'clicca qui per aprire' in data.lower(): data = support.match(support.match(data, patron=r'"go_to":"([^"]+)"').match.replace('\\',''), headers=headers).data
elif 'clicca qui</span>' in data.lower(): data = support.match(support.match(data, patron=r'<h2 style="text-align: center;"><a href="([^"]+)">').match, headers=headers).data
patronBlock = r'</span>(?P<block>[a-zA-Z\s]+\d+(.+?)?(?:\()?(?P<lang>ITA|SUB ITA)(?:\))?.*?)</div></div>'
patron = r'(?P<season>\d+)&#\d+;(?P<episode>\d+(?:-\d+)?)\s*(?:</strong>|<em>)?\s*(?P<title>.*?)(?:–|-.+?-|–.+?–|–|em|.)?(?:/em.*?)?(?:<a (?P<other>.*?))?<br />'
patron = r'(?P<season>\d+)&#215;(?P<episode>\d+)(</strong>)*(?P<title>.*?)<(?P<other>.*?br/>)'
def itemHook(i):
i.url = item.url
@@ -84,7 +85,7 @@ def newest(categoria):
item.contentType = 'tvshow'
item.args = 'newest'
try:
item.url = "%s/aggiornamento-nuovi-episodi/" % host
item.url = "%s/aggiornamento-episodi-nuovi/" % host
item.action = "peliculas"
itemlist = peliculas(item)
# Continua la ricerca in caso di errore

0
channels/eurostreaming_actor.json Normal file → Executable file
View File

6
channels/eurostreaming_actor.py Normal file → Executable file
View File

@@ -31,9 +31,9 @@ def peliculas(item):
patronNext = r'class="next".*?"(.+?)"'
else:
patron = r'<div class="post-thumb">.*?<img src="(?P<thumb>[^"]+)".*?><a href="(?P<url>[^"]+)"[^>]+>(?P<title>.+?)[\<]?[/(](?P<year>.*?)[\)|a]'
patron = r'<div class="post-thumb">.*?<img src="(?P<thumb>[^"]+)".*?><a href="(?P<url>[^"]+)"[^>]+>(?P<title>.+?)[\<]'
patronNext = r'next.*?href="(.*?)"'
# debug = True
return locals()
@@ -48,7 +48,7 @@ def episodios(item):
data = support.match(support.match(data, patron=r'<h2 style="text-align: center;"><a href="([^"]+)">').match, headers=headers).data
patronBlock = r'tab-content(?P<block>.*?)serie-player'
patron = r'data-link="(?P<url>http.*?)".*?data.num..(?P<season>\d+)x(?P<episode>\d+)" data-title="(?P<title>[^"]+)'
patron = r'data.num..(?P<season>\d+)x(?P<episode>\d+)" data-title="(?P<title>[^"]+).*?data-link="(?P<url>http.*?)</li>'
return locals()

2
channels/filmpertutti.json Normal file → Executable file
View File

@@ -5,6 +5,6 @@
"language": ["ita", "sub-ita"],
"thumbnail": "filmpertutti.png",
"banner": "filmpertutti.png",
"categories": ["tvshow","movie"],
"categories": ["anime", "tvshow","movie"],
"settings": []
}

168
channels/filmpertutti.py Normal file → Executable file
View File

@@ -3,9 +3,9 @@
# Canale per filmpertutti.py
# ------------------------------------------------------------
from core import httptools, support
from core import httptools, support, scrapertools
from core.item import Item
from platformcode import config
from platformcode import config, logger
def findhost(url):
page = httptools.downloadpage(url).data
@@ -15,17 +15,20 @@ def findhost(url):
host = config.get_channel_url(findhost)
headers = [['Referer', host]]
@support.menu
def mainlist(item):
film = ['/category/film/',
('Generi', ['/category/film/', 'genres', 'lettersF'])
film = ['/category/film/feed/',
('Film al cinema', ['/category/ora-al-cinema/feed/', 'peliculas']),
('Generi', ['/', 'genres']),
('Saghe', ['/', 'genres', 'saghe']),
]
tvshow = ['/category/serie-tv/',
('Aggiornamenti', ['/aggiornamenti-serie-tv/', 'peliculas', 'newest']),
('Per Lettera', ['/category/serie-tv/', 'genres', 'lettersS'])
tvshow = ['/category/serie-tv/feed/',
]
anime = ['/category/anime/feed/',
('SUB-ITA',['/category/anime-sub-ita/feed/', 'peliculas']),
]
search = ''
@@ -34,94 +37,107 @@ def mainlist(item):
@support.scrape
def peliculas(item):
support.info()
# debug = True
#debugBlock = True
# support.dbg()
if not item.args == 'search': # pagination not works
if not item.nextpage:
item.page = 1
else:
item.page = item.nextpage
if item.args != 'newest':
patronBlock = r'<ul class="posts">(?P<block>.*)<\/ul>'
patron = r'<li><a href="(?P<url>[^"]+)" data-thumbnail="(?P<thumb>[^"]+)">.*?<div class="title[^"]*">(?P<title>.+?)(?:\[(?P<lang>Sub-ITA)\])?(?:[ ]\[?(?P<quality>[HD]+)?\])?(?:[ ]\((?P<year>\d+)\)?)?<\/div>'
patronNext = r'<a href="([^"]+)[^>]+>Pagina'
else:
patronBlock = r'<ul class="posts">(?P<block>.*)<div class="clear[^"]*">'
patron = r'<li>\s?<a href="(?P<url>[^"]+)" data-thumbnail="(?P<thumb>[^"]+)">.*?<div class="title[^"]*">(?P<title>.+?)(?:\s\[(?P<quality>HD)\])?<\/div>\s*<div class="episode[^"]*"[^>]+>(?P<episode>[^<(]+)(?:\((?P<lang>[a-zA-Z\-]+)\))?'
if not item.parent_url:
item.parent_url = item.url
if item.args == 'search':
action = 'check'
elif item.contentType == 'tvshow':
action = 'episodios'
elif item.contentType == 'movie':
action ='findvideos'
if item.args == 'genres':
action = 'check'
item.nextpage = item.page + 1
nextPageUrl = "{}/?paged={}".format(item.parent_url, item.nextpage)
patron= r'<item>\s<title>(?P<title>[^<]+?)\s*(\((?P<lang>Sub-[a-zA-Z]+)*\))?\s*(\[(?P<quality>[A-Z]*)\])?\s*(\((?P<year>[0-9]{4})\))?</title>.*?<link>(?P<url>.*?)</link>'
def fullItemlistHook(itemlist):
if len(itemlist) < 10:
return itemlist[:-1:]
else:
return itemlist
else:
action = 'check'
def itemHook(item):
item.title = item.title.replace(' - La Serie', '')
return item
patron= r'<article class=\"elementor-post.*?(<img .*?src=\"(?P<thumb>[^\"]+).*?)?<h3 class=\"elementor-post__title\".*?<a href=\"(?P<url>[^\"]+)\" >\s*(?P<title>[^<]+?)\s*(\((?P<lang>Sub-[a-zA-Z]+)*\))?\s*(\[(?P<quality>[A-Z]*)\])?\s*(\((?P<year>[0-9]{4})\))?\s+<'
return locals()
@support.scrape
def episodios(item):
# debug = True
data = support.match(item.url, headers=headers).data
if 'accordion-item' in data:
patronBlock = r'<span class="season[^>]*>\d+[^>]+>[^>]+>[^>]+>[^>]+>\D*(?:STAGIONE|Stagione)[ -]+(?P<lang>[a-zA-Z\- ]+)[^<]*</span>(?P<block>.*?)<div id="(?:season|disqus)'
patron = r'<img src="(?P<thumb>[^"]+)"(?:[^>]*>){4}\s*<li class="season-no">(?P<season>\d+)(?:&#215;|×|x)(?P<episode>\d+)[^<0-9]*<\/li>(?P<data>.*?javascript:;">(?P<title>[^<]+).*?</tbody>)'
else:
patronBlock = r'(?:STAGIONE|Stagione)(?:<[^>]+>)?\s*(?:(?P<lang>[A-Za-z- ]+))?(?P<block>.*?)(?:&nbsp;|<strong>|<div class="addtoany)'
patron = r'(?:/>|p>)\s*(?P<season>\d+)(?:&#215;|×|x)(?P<episode>\d+)[^<]+(?P<data>.*?)(?:<br|</p)'
item.quality = ''
data = item.data if item.data else httptools.downloadpage(item.url).data
itemlist = []
def itemHook(i):
i.url = item.url
i.title.replace('&#215;','x')
if not i.contentLanguage:
i.contentLanguage = 'ITA'
return i
return locals()
for it in support.match(data, patron=[r'div class=\"single-season.*?(?P<id>season_[0-9]+).*?>Stagione:\s(?P<season>[0-9]+).*?(\s-\s(?P<lang>[a-zA-z]+?))?<']).matches:
block = support.match(data, patron = r'div id=\"'+ it[0] +'\".*?</div').match
for ep in support.match(block, patron=[r'<li><a href=\"(?P<url>[^\"]+).*?img\" src=\"(?P<thumb>[^\"]+).*?title\">(?P<episode>[0-9]+)\.\s+(?P<title>.*?)</span>']).matches:
itemlist.append(item.clone(contentType = 'episode',
action='findvideos',
thumb=ep[1],
episode=ep[2],
season=it[1],
contentSeason=it[1],
contentEpisodeNumber=ep[2],
title = support.format_longtitle(support.cleantitle(ep[3]), season = it[1], episode = ep[2], lang= it[3]),
url = scrapertools.unescape(ep[0]), data = '')
)
if config.get_setting('episode_info') and not support.stackCheck(['add_tvshow', 'get_newest']):
support.tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
support.check_trakt(itemlist)
support.videolibrary(itemlist, item)
if (config.get_setting('downloadenabled')):
support.download(itemlist, item)
return itemlist
@support.scrape
def genres(item):
if item.args == 'lettersF':
item.contentType = 'movie'
else:
item.contentType = 'tvshow'
action = 'peliculas'
patronBlock = r'<select class="cats">(?P<block>.*?)<\/select>'
patronMenu = r'<option data-src="(?P<url>[^"]+)">(?P<title>[^<]+)<\/option>'
blacklist = ['Tutti i film',]
wantSaga = True if item.args == 'saghe' else False
item.args = 'genres'
patronBlock = r'<nav class="elementor-nav-menu--main (?P<block>.*?)</nav>'
patronMenu = r'<li class="menu-item.*?<a href="(?P<url>https:\/\/.*?)".*?>(?P<title>.*?)</a></li>'
def itemHook(item):
item.url = "{}/feed/".format(item.url)
return item
def itemlistHook(itemlist):
itl = []
for item in itemlist:
isSaga = item.fulltitle.startswith('Saga')
if len(item.fulltitle) != 3:
if (isSaga and wantSaga) or (not isSaga and not wantSaga):
itl.append(item)
return itl
return locals()
def check(item):
support.info()
patron=r'class="taxonomy category"\s*><span property="name">([^>]+)</span></a><meta property="position" content="2">'
block = support.match(item.url, patron=patron,headers=headers).match
if block.lower() != 'film':
support.info('select = ### è una serie ###')
item.contentType='tvshow'
item.data = httptools.downloadpage(item.url).data
if 'season-details' in item.data.lower():
item.contentType = 'tvshow'
return episodios(item)
else:
support.info('select = ### è un movie ###')
item.contentType='movie'
item.contentType = 'movie'
return findvideos(item)
def search(item, texto):
support.info()
item.url = host + "/search/" + texto
def search(item, text):
item.url = "{}/?{}".format(host, support.urlencode({'s': text}))
item.args = 'search'
try:
return peliculas(item)
# Continua la ricerca in caso di errore
except:
import sys
for line in sys.exc_info():
support.info("%s" % line)
logger.error("search except: %s" % line)
return []
@@ -131,13 +147,13 @@ def newest(categoria):
item = Item()
try:
if categoria == "peliculas":
item.url = host + "/category/film/"
item.url = host + "/category/film/feed/"
item.action = "peliculas"
item.extra = "movie"
item.contentType = 'movie'
itemlist = peliculas(item)
else:
item.url = host + "/aggiornamenti-serie-tv/"
item.url = host + "/category/serie-tv/feed/"
item.action = "peliculas"
item.args = "newest"
item.contentType = 'tvshow'
@@ -154,8 +170,16 @@ def newest(categoria):
def findvideos(item):
video_url = item.url
if item.contentType == 'movie':
data = support.match(item.url, patron=r'<a target="_blank" rel="nofollow" href="([^"]+)">').matches
return support.server(item, data=data, patronTag='Versione: <[^>]+>([^<]+)')
else:
return support.server(item, item.data)
video_url = support.match(item.url, patron=r'<a href="([^"]+)" rel="nofollow">').match
video_url = support.match(video_url, patron=r'<iframe src=\"(https://.*?)\"').match
if (video_url == ''):
return []
itemlist = [item.clone(action="play", url=srv) for srv in support.match(video_url, patron='<div class=\"megaButton\" meta-type=\"v\" meta-link=\"([^\"]+).*?(?=>)>').matches]
itemlist = support.server(item,itemlist=itemlist)
return itemlist

2
channels/filmstreaming.json Normal file → Executable file
View File

@@ -2,7 +2,7 @@
"id": "filmstreaming",
"name": "Film Streaming",
"language": ["ita"],
"active": true,
"active": false,
"thumbnail": "filmstreaming.png",
"banner": "filmstreaming.png",
"categories": ["movie"],

0
channels/filmstreaming.py Normal file → Executable file
View File

0
channels/guardaseriecam.json Normal file → Executable file
View File

8
channels/guardaseriecam.py Normal file → Executable file
View File

@@ -36,7 +36,7 @@ def list(item):
@support.scrape
def peliculas(item):
# debug = True
patron = r'<div class="mlnh-thumb"><a href="(?P<url>[^"]+).*?title="(?P<title>[^"]+).*?src="(?P<thumb>[^"]+).*?hdn">(?P<year>[0-9]{4})'
patron = r'<div class="mlnh-thumb"><a href="(?P<url>[^"]+)[^>]+title="(?P<title>[^"]+).*?<img src="(?P<thumb>[^"]+).*?hdn">[^<]*(?P<year>[0-9]{4})'
patronNext = 'pagenavi.*?<a href="([^"]+)">\d+'
action = 'episodios'
return locals()
@@ -45,9 +45,9 @@ def peliculas(item):
@support.scrape
def episodios(item):
patronBlock = r'<div class="tab-pane fade" id="season-(?P<season>.)"(?P<block>.*?)</ul>\s*</div>'
patron = r'<a href="#" allowfullscreen data-link="(?P<url>[^"]+).*?title="(?P<title>[^"]+)(?P<lang>[sS][uU][bB]-?[iI][tT][aA])?\s*">(?P<episode>[^<]+)'
patron = r'(?P<data><a href="#" allowfullscreen data-link="[^"]+.*?title="(?P<title>[^"]+)(?P<lang>[sS][uU][bB]-?[iI][tT][aA])?\s*">(?P<episode>[^<]+).*?</li>)'
action = 'findvideos'
# debugBlock = True
# debug = True
return locals()
@@ -68,4 +68,4 @@ def search(item, text):
def findvideos(item):
logger.debug()
return support.server(item, item.url)
return support.server(item, item.data)

0
channels/guardaserieclick.json Normal file → Executable file
View File

0
channels/guardaserieclick.py Normal file → Executable file
View File

0
channels/guardaserieicu.json Normal file → Executable file
View File

0
channels/guardaserieicu.py Normal file → Executable file
View File

0
channels/hd4me.json Normal file → Executable file
View File

2
channels/hd4me.py Normal file → Executable file
View File

@@ -57,5 +57,7 @@ def search(item, text):
def findvideos(item):
url = support.match(item, patron=r'<a class=["]?bot1["]? href="([^"]+)"').match
if not url.startswith('http'):
url = host + url
url = support.httptools.downloadpage(url, followredirect=True).url
return support.server(item, url)

0
channels/ilcorsaronero.json Normal file → Executable file
View File

71
channels/ilcorsaronero.py Normal file → Executable file
View File

@@ -3,90 +3,59 @@
# Canale per ilcorsaronero
# ------------------------------------------------------------
from core import support
# 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
from core import support, httptools
host = support.config.get_channel_url()
support.info('HOST',host)
# host = 'https://ilcorsaronero.xyz'
headers = [['Referer', host]]
@support.menu
def mainlist(item):
menu = [
('BDRiP {film}', ['/categoria.php?active=0&category=1&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
('Cerca BDRiP... {submenu} {film}', ['/torrent-ita/1/', 'search', ['search', 'movie', True], 'movie']),
('DVD {film}', ['/categoria.php?active=0&category=20&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
('Cerca DVD... {submenu} {film}', ['/torrent-ita/20/', 'search', ['search', 'movie', True], 'movie']),
('Screener {film}', ['/categoria.php?active=0&category=19&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
('Cerca Screener.. {submenu} {film}', ['/torrent-ita/19/', 'search', ['search', 'movie', True], 'movie']),
('Serie TV', ['/categoria.php?active=0&category=15&order=data&by=DES&page=', 'peliculas', [0 , 'tvshow', True], 'tvshow']),
('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]])
('Film {film}', ['/cat/film', 'peliculas', [0, 'movie', True], 'undefined']),
('Serie TV', ['/cat/serie-tv', 'peliculas', [0 , 'tvshow', True], 'undefined']),
('Animazione', ['/cat/animazione', 'peliculas', [0 , 'anime', True], 'undefined']),
('Documentari', ['/cat/altro/documentari', 'peliculas', [0 , 'documentary', True], 'undefined']),
('Programmi TV', ['/cat/altro/programmi-tv', 'peliculas', [0 , 'tvshow', True], 'tvshow']),
('Video Musica', ['/cat/musica/video-musicali', 'peliculas', [0 , 'music', False], 'undefined']),
('Videocorsi', ['/cat/altro/videocorsi', 'peliculas', [0 , 'music', False], 'undefined'])
]
search = ''
return locals()
@support.scrape
def peliculas(item):
# debug = True
debug = False
action = 'findvideos'
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>[^<]+)'
sceneTitle = item.args[2]
def itemHook(item):
if not sceneTitle:
item.title = item.title.replace('_', ' ')
item.fulltitle = item.fulltitle.replace('_', ' ')
item.title = support.scrapertools.decodeHtmlentities(support.urlparse.unquote(item.title))
return item
if 'search' not in item.args:
item.url += str(item.args[0])
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
patron = r'<a class="hover:underline line-clamp-1.*?href="(?P<url>[^"]+)"\s*>(?P<title>.*?)</a>[^>]+>[^>]+>[^>]+>(?P<seed>.*?)<'
patronNext = r'<a href="(?P<url>[^"]+)".*?Next</span>'
return locals()
def search(item, text):
support.info(item, text)
if 'all' in item.args:
item.url += text
else:
item.url += text + '.html'
item.url = "{}/search?{}".format(host, support.urlencode({'q': text}))
item.args = 'search'
try:
return peliculas(item)
# Cattura la eccezione così non interrompe la ricerca globle se il canale si rompe!
except:
import sys
for line in sys.exc_info():
support.logger.error("search except: %s" % line)
logger.error("search except: %s" % line)
return []
def findvideos(item):
if item.contentType == 'tvshow': item.contentType = 'episode'
Videolibrary = True if 'movie' in item.args else False

0
channels/ilgeniodellostreaming.json Normal file → Executable file
View File

0
channels/ilgeniodellostreaming.py Normal file → Executable file
View File

0
channels/ilgeniodellostreaming_cam.json Normal file → Executable file
View File

0
channels/ilgeniodellostreaming_cam.py Normal file → Executable file
View File

11
channels/italiafilm.json Executable file
View File

@@ -0,0 +1,11 @@
{
"id": "italiafilm",
"name": "ItaliaFilm",
"language": ["ita", "sub-ita"],
"active": true,
"thumbnail": "italiafilm.png",
"banner": "",
"categories": ["movie"],
"not_active": ["include_in_newest"],
"settings": []
}

90
channels/italiafilm.py Executable file
View File

@@ -0,0 +1,90 @@
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# Canale per 'italifilm'
# ------------------------------------------------------------
from core import support, httptools, scrapertools, tmdb
from platformcode import config, logger
host = config.get_channel_url()
headers = [['Referer', host]]
@support.menu
def mainlist(item):
menu = [
('Film', ['/film/', 'list', 'film']),
('Per Genere', ['', 'list', 'genere']),
('Al Cinema', ['/cinema/', 'list', 'film']),
('Sub-ITA', ['/sub-ita/', 'list', 'film']),
('Top del Mese', ['/top-del-mese.html', 'list', 'film'])
]
search = ''
return locals()
@support.scrape
def list(item):
actLike = 'peliculas'
if item.args == 'genere':
patronBlock = r'<ul class="sub-menu">(?P<block>.*?)</ul>'
patronMenu = r'<li><a href="(?P<url>[^"]+)">(?P<title>[^<]+)'
action = 'peliculas'
elif item.args == 'film':
patron = r'<div class="entry-summary.*?<a href="(?P<url>[^"]+)" title="(?P<title>[^\("]+)(?:\((?P<year>\d+)\))" class="[^"]+"><img class="lazyload" data-src="(?P<thumb>[^"]+)" alt="[^"]+".*?></a>'
patronNext = r'<a href="([^"]+)">(?:&rarr|→)'
return locals()
def peliculas(item):
data = httptools.downloadpage(item.url).data
itemlist = []
for it in support.match(data, patron=[r'<div class="entry-summary.*?<a href="(?P<url>[^"]+)" title="(?P<title>[^"]+)(?:\((?P<year>\d+)\))" class="[^"]+"><img class="lazyload" data-src="(?P<thumb>[^"]+)" alt="[^"]+".*?></a>']).matches:
infoLabels = dict()
infoLabels['title'] = it[1]
infoLabels['mediatype'] = 'movie'
infoLabels['year'] = it[2]
itemlist.append(item.clone(action='findvideos', thumbnail = host + it[3].replace(' ','%20'), title = support.cleantitle(it[1]), url= it[0], infoLabels=infoLabels))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
if item.args == 'search':
next = support.match(data, patron=['<a name="nextlink".*list_submit\((\d+)\);.*(?:&rarr|→)']).matches
else:
next = support.match(data, patron=['<a href="([^"]+)">(?:&rarr|→)']).matches
if next:
if item.args == 'search':
item.url = "{}/?{}".format(host, support.urlencode({"story": item.search_text,"do": "search","subaction": "search", "search_start": next[0]}))
else:
item.url = next[0]
support.nextPage(itemlist = itemlist, item = item, next_page=item.url)
return itemlist
def search(item, text):
item.args = 'search'
item.url = "{}/?{}".format(host, support.urlencode({"story": text,"do": "search","subaction": "search", "search_start": item.page}))
item.search_text = text
try:
return peliculas(item)
except:
import sys
for line in sys.exc_info():
logger.error("search except: %s" % line)
return []
#action di default
def findvideos(item):
support.info('findvideos')
urls = []
data = support.match(item).data
matches = support.match(data, patron=r'<iframe.*?src="([^"]+)').matches
for m in matches:
if 'youtube' not in m and not m.endswith('.js'):
urls += support.match(m, patron=r'data-link="([^"]+)').matches
return support.server(item, urls)

0
channels/italiaserie.json Normal file → Executable file
View File

0
channels/italiaserie.py Normal file → Executable file
View File

0
channels/la7.json Normal file → Executable file
View File

45
channels/la7.py Normal file → Executable file
View File

@@ -4,7 +4,8 @@
# ------------------------------------------------------------
import requests
from core import support
from core import support, httptools
from platformcode import logger
DRM = 'com.widevine.alpha'
key_widevine = "https://la7.prod.conax.cloud/widevine/license"
@@ -27,7 +28,7 @@ def mainlist(item):
('Replay {bold}', ['', 'replay_channels'])]
menu = [('Programmi TV {bullet bold}', ['/tutti-i-programmi', 'peliculas', '', 'tvshow']),
('Teche La7 {bullet bold}', ['/i-protagonisti', 'peliculas', '', 'tvshow'])]
('Teche La7 {bullet bold}', ['/la7teche', 'peliculas', '', 'tvshow'])]
search = ''
return locals()
@@ -83,13 +84,18 @@ def search(item, text):
@support.scrape
def peliculas(item):
search = item.search
action = 'episodios'
pagination = 20
disabletmdb = True
addVideolibrary = False
downloadEnabled = False
action = 'episodios'
patron = r'<a href="(?P<url>[^"]+)"[^>]+><div class="[^"]+" data-background-image="(?P<t>[^"]+)"></div><div class="titolo">\s*(?P<title>[^<]+)<'
if 'la7teche' in item.url:
patron = r'<a href="(?P<url>[^"]+)" title="(?P<title>[^"]+)" class="teche-i-img".*?url\(\'(?P<thumb>[^\']+)'
def itemHook(item):
item.thumbnail = 'http:' + item.t if item.t.startswith('//') else item.t if item.t else item.thumbnail
item.fanart = item.thumb
return item
return locals()
@@ -97,33 +103,18 @@ def peliculas(item):
@support.scrape
def episodios(item):
data = support.match(item).data
# debug = True
action = 'findvideos'
if '>puntate<' in data:
patronBlock = r'>puntate<(?P<block>.*?)home-block-outbrain'
url = support.match(data, patron=r'>puntate<[^>]+>[^>]+>[^>]+><a href="([^"]+)"').match
data += support.match(host + url).data
else:
item.url += '/video'
data = support.match(item).data
patron = r'(?:<a href="(?P<url>[^"]+)">[^>]+><div class="[^"]+" data-background-image="(?P<t>[^"]*)">[^>]+>[^>]+>[^>]+>(?:[^>]+>)?(?:[^>]+>){6}?)\s*(?P<title>[^<]+)<(?:[^>]+>[^>]+>[^>]+><div class="data">(?P<date>[^<]+))?|class="heading">[^>]+>(?P<Title>[^<]+).*?window.shareUrl = "(?P<Url>[^"]+)".*?poster:\s*"(?P<Thumb>[^"]+)", title: "(?P<desc>[^"]+)"'
patronNext = r'<a href="([^"]+)">'
addVideolibrary = False
downloadEnabled = False
def itemHook(item):
if item.Thumb: item.t = item.Thumb
item.thumbnail = 'http:' + item.t if item.t.startswith('//') else item.t if item.t else item.thumbnail
if item.Title: item.title = support.typo(item.Title, 'bold')
if item.date:
item.title = support.re.sub(r'[Pp]untata (?:del )?\d+/\d+/\d+', '', item.title)
item.title += support.typo(item.date, '_ [] bold')
if item.desc: item.plot = item.desc
item.forcethumb = True
item.fanart = item.thumbnail
return item
if 'la7teche' in item.url:
patron = r'<a href="(?P<url>[^"]+)">\s*<div class="holder-bg">.*?data-background-image="(?P<thumb>[^"]+)(?:[^>]+>){4}\s*(?P<title>[^<]+)(?:(?:[^>]+>){2}\s*(?P<plot>[^<]+))?'
else:
data = str(support.match(item.url, patron=r'"home-block home-block--oggi(.*?)</section>').matches)
data += httptools.downloadpage(item.url + '/video').data
patron = r'item[^>]+>\s*<a href="(?P<url>[^"]+)">.*?image="(?P<thumb>[^"]+)(?:[^>]+>){4,5}\s*(?P<title>[\d\w][^<]+)(?:(?:[^>]+>){7}\s*(?P<title2>[\d\w][^<]+))?'
patronNext = r'<a href="([^"]+)">'
return locals()

0
channels/mediasetplay.json Normal file → Executable file
View File

29
channels/mediasetplay.py Normal file → Executable file
View File

@@ -38,8 +38,8 @@ sid = res.json()['response']['sid']
session.headers.update({'authorization': 'Bearer ' + Token})
# sessione
sessionKey = session.get(sessionUrl.format(uuid=str(uuid.uuid4())), verify=False).json()['sessionKey']
session.headers.update({'x-session': sessionKey})
#sessionKey = session.get(sessionUrl.format(uuid=str(uuid.uuid4())), verify=False).json()['sessionKey']
#session.headers.update({'x-session': sessionKey})
pagination = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100][config.get_setting('pagination', 'mediasetplay')]
@@ -48,11 +48,20 @@ pagination = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100][config.get_setting('pagin
def mainlist(item):
top = [('Dirette {bold}', ['', 'live'])]
menu = [('Film {bullet bold}', ['/cinema', 'peliculas', {'uxReference':'filmUltimiArrivi'}, 'movie']),
('Fiction / Serie TV {bullet bold}', ['/fiction', 'menu', '5acfcb3c23eec6000d64a6a4', 'tvshow']),
('Programmi TV{ bullet bold}', ['/programmitv', 'menu', '5acfc8011de1c4000b6ec953', 'tvshow']),
('Documentari {bullet bold}', ['/documentari', 'menu', '5bfd17c423eec6001aec49f9', 'undefined']),
('Kids {bullet bold}', ['/kids', 'menu', '5acfcb8323eec6000d64a6b3', 'undefined'])]
menu = [('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']),
('Fiction e Serie Tv del momento {submenu}', ['/fiction', 'peliculas', {'uxReference':'fictionSerieTvDelMomento'}, 'tvshow']),
('Serie TV Piu Viste {submenu}', ['/fiction', 'peliculas', {'uxReference':'serieTvPiuViste24H'}, 'tvshow']),
('Soap del momento {submenu}', ['/cinema', 'peliculas', {'uxReference':'fictionSerieTvParamsGenre', 'params': 'genre≈Soap opera'}, 'tvshow']),
('Programmi TV Prima serata{ submenu}', ['/programmitv', 'peliculas', {'uxReference':'stagioniPrimaSerata'}, 'tvshow']),
('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 Cartoonito {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsCartoonito' }, 'undefined']),
('Documentari più visti {submenu}', ['/documentari', 'peliculas', {'uxReference': 'documentariPiuVisti24H'}, 'undefined']),
]
search = ''
return locals()
@@ -209,7 +218,7 @@ def episodios(item):
order = 'desc' if '/programmi-tv/' in item.url else 'asc'
itemlist = []
res = requests.get('https://feed.entertainment.tv.theplatform.eu/f/PR1GhC/mediaset-prod-all-programs-v2?byCustomValue={subBrandId}{' + item.subbrand +'}&sort=:publishInfo_lastPublished|' + order + ',tvSeasonEpisodeNumber').json()['entries']
res = requests.get('https://feed.entertainment.tv.theplatform.eu/f/PR1GhC/mediaset-prod-all-programs-v2?byCustomValue={subBrandId}{' + item.subbrand +'}&range=0-10000&sort=:publishInfo_lastPublished|' + order + ',tvSeasonEpisodeNumber').json()['entries']
for it in res:
thumb = ''
@@ -292,8 +301,8 @@ def findvideos(item):
def get_from_id(item):
sessionKey = session.get(sessionUrl.format(uuid=str(uuid.uuid4())), verify=False).json()['sessionKey']
session.headers.update({'x-session': sessionKey})
#sessionKey = session.get(sessionUrl.format(uuid=str(uuid.uuid4())), verify=False).json()['sessionKey']
#session.headers.update({'x-session': sessionKey})
res = session.get(entry.format(id=item.args)).json()
if 'components' in res:
id = quote(",".join(res["components"]))

0
channels/mediasetplay.py.old Normal file → Executable file
View File

2
channels/metalvideo.json Normal file → Executable file
View File

@@ -1,7 +1,7 @@
{
"id": "metalvideo",
"name": "Metal Video",
"active": true,
"active": false,
"language": ["*"],
"thumbnail": "metalvideo.png",
"banner": "metalvideo.png",

37
channels/metalvideo.py Normal file → Executable file
View File

@@ -9,37 +9,33 @@ host = 'https://metalvideo.com'
headers = {'X-Requested-With': 'XMLHttpRequest'}
@support.scrape
@support.menu
def mainlist(item):
menu = [('Generi',['', 'genres']),
('Ultimi Video',['/videos/latest', 'peliculas']),
('Top Video',['/videos/top', 'peliculas']),
('Cerca...',['','search',])]
return locals()
@support.scrape
def genres(item):
item.url = host
action = 'peliculas'
patronBlock = r'<ul class="dropdown-menu(?P<block>.*?)</ul>\s*</div'
patron = r'<a href="(?P<url>[^"]+)"(?: class="")?>(?P<title>[^<]+)<'
patronBlock = r'<div class="swiper-slide">(?P<block>.*?)<button'
patron = r'class="" href="(?P<url>[^"]+)[^>]+>(?P<title>[^<]+)<'
def itemHook(item):
item.thumbnail = support.thumb('music')
item.contentType = 'music'
return item
def itemlistHook(itemlist):
itemlist.pop(0)
itemlist.append(
support.Item(
channel=item.channel,
title=support.typo('Cerca...', 'bold'),
contentType='music',
url=item.url,
action='search',
thumbnail=support.thumb('search')))
support.channel_config(item, itemlist)
return itemlist
return locals()
@support.scrape
def peliculas(item):
# debug=True
action = 'findvideos'
patron= r'<img src="[^"]+" alt="(?P<title>[^"]+)" data-echo="(?P<thumb>[^"]+)"(?:[^>]+>){7}<a href="(?P<url>[^"]+)"'
patronNext = r'<a href="([^"]+)">(?:&raquo|»)'
patron= r'<a href="(?P<url>[^"]+)"[^>]+>\s*<img src="(?P<thumb>[^"]+)" alt="(?P<title>[^"]+)"[^>]*>'
patronNext = r'<a href="([^"]+)" data-load="[^"]+" class="[^"]+" title="Next'
typeContentDict = {'': 'music'}
def itemHook(item):
item.contentType = 'music'
@@ -49,12 +45,13 @@ def peliculas(item):
def findvideos(item):
return support.server(item, Videolibrary=False)
data = support.match(item, patron=r'<source src="[^"]+').match
return support.server(item, Videolibrary=False, data=data)
def search(item, text):
support.info(text)
item.url = host + '/search.php?keywords=' + text + '&video-id='
item.url = host + '/search?keyword=' + text
try:
return peliculas(item)
# Continua la ricerca in caso di errore

0
channels/mondoserietv.json Normal file → Executable file
View File

0
channels/mondoserietv.py Normal file → Executable file
View File

0
channels/paramount.json Normal file → Executable file
View File

0
channels/paramount.py Normal file → Executable file
View File

0
channels/piratestreaming.json Normal file → Executable file
View File

0
channels/piratestreaming.py Normal file → Executable file
View File

0
channels/plutotv.json Normal file → Executable file
View File

12
channels/plutotv.py Normal file → Executable file
View File

@@ -6,7 +6,7 @@
import uuid, datetime
from platformcode import logger, config
from core.item import Item
from core import support, httptools
from core import jsontools, support, httptools
host = support.config.get_channel_url()
@@ -14,17 +14,20 @@ api = 'https://api.pluto.tv'
UUID = 'sid={}&deviceId={}'.format(uuid.uuid1().hex, uuid.uuid4().hex)
vod_url = '{}/v3/vod/categories?includeItems=true&deviceType=web&'.format(api, UUID)
@support.menu
def mainlist(item):
top = [('Dirette {bold}', ['/it/live-tv/', 'live'])]
menu = sorted([(it['name'], ['/it/on-demand', 'peliculas', it['items']]) for it in httptools.downloadpage(vod_url).json['categories'][1:]])
menu = [('Categorie', ['', 'category'])]
search = ''
return locals()
@support.menu
def category(item):
menu = sorted([(it['name'], ['/it/on-demand', 'peliculas', it['items']]) for it in httptools.downloadpage(vod_url).json['categories'][1:]])
return locals()
def live(item):
logger.debug()
@@ -75,6 +78,7 @@ def peliculas(item):
logger.debug()
itemlist = []
recordlist = []
for i, it in enumerate(item.args):
if item.search in it['name'].lower():
itm = Item(channel=item.channel,
@@ -88,7 +92,7 @@ def peliculas(item):
thumbnail= it['covers'][0]['url'],
fanart= it['covers'][2]['url'] if len(it['covers']) > 2 else '',
id= it['_id'],
videourl= it['stitched']['urls'][0]['url'].split('?')[0])
videourl= it.get('stitched', {}).get('urls', [{}])[0].get('url','').split('?')[0])
if i < 20 or item.search:
itemlist.append(itm)

Some files were not shown because too many files have changed in this diff Show More