cherrykodi / cherry Goto Github PK
View Code? Open in Web Editor NEWREPOZYTORIUM CHERRY
REPOZYTORIUM CHERRY
Nie ładuje żadnego kanału od dwóch dni.
Since latest update of resolve URL 6.3.12, I am not able to open addons and it is giving error message with X add on error at right bottom side of screen
If I change back the version to 6.3.8, it becomes normal and can then use the addons
Please fix Resolve URL 6.3.12 thatwas updated few hours ago
Nie mogę się zalogować do wtyczki, a w folderach pusto.
Dodajcie do script.module.resolveurl jako zależność script.module.request
Wasza modyfikacja nadpisuje oryginalny resolver i nie chcą z nią działać wtyczki podpisa i różne inne. Poprawka IMO winna być w waszym repo zrobiona, bo to wy modyfikujecie i łatwiej to załatwić jednym wpisem.
https://github.com/notoco/ffl/tree/master/zips/script.module.resolveurl - tu poprawiona wersja u mnie, i poprawiony addons.xml
<addon id="script.module.resolveurl" name="ResolveURL" version="6.0.7a" provider-name="jsergio"> <requires> <import addon="xbmc.python" version="2.1.0" /> <import addon="plugin.video.youtube" optional="true" /> <import addon="script.module.python.twitch" optional="true" /> <import addon="script.module.cryptopy" version="1.2.6" optional="true" /> <import addon="plugin.video.gdrive" optional="true" /> <import addon="script.module.requests" /> </requires> <extension point="xbmc.python.pluginsource" library="main.py"> <provides>video</provides> </extension> <extension point="xbmc.python.module" library="lib" /> <extension point="xbmc.python.pluginsource" library="lib/default.py" /> <extension point="xbmc.addon.metadata"> <platform>all</platform> <summary lang="en">Resolve common video host URL's to be playable in XBMC/Kodi.</summary> <summary lang="es">Resolver enlaces a videos de sitios populares para poder reproducirlos en XBMC/Kodi.</summary> <summary lang="hr">Prilagodi najčešće URL-ove video izvora kako bi radili u XBMC/Kodiju.</summary> <description lang="en">Resolve common video host URL's to be playable in XBMC/Kodi, simplify addon development of video plugins requiring multi video hosts.</description> <description lang="hr">Prilagodi najčešće URL-ove video izvora kako bi radili u XBMC/Kodiju, pojednostavnjuje razvoj priključaka za video dodatke koji zahtjevaju višestruke video izvore.</description> </extension> </addon>
script.module.urlresolver-5.0.14.zip zawiera pliki *.pyo, które wydają się zbędne.
Python i tak je wytworzy raz przy pierwszym uruchomieniu w dodatku dokładnie w wersji sobie pasującej.
Proponuję usunąć w kolejnym buildzie. Np. pakować z opcją zip -r xxx.zip xxx -x '*.pyo'
Jak w temacie. Wtyczka nie wyszukuje źródeł z segos.es. Prosiłbym o naprawę.
i wielka proźba do użytkowników jakąś wtyczke do oglądania meczy sport 365 od cherry działa ale strasznie zacinaja się linki wszystkie sport devil zalezy jaka wersja tez tnie joker to masakra może macie jakieś alternatywy lub podpowiedź może muszę coś poustawiac w kodi lub we wtyczkach by smigało dobrze sorry ze tak problemuje ale tylko od was moge uzyskac jakieś informacje kodi w pigułce mi nie odpowiada
Wtyczka pomija wszystkie źródła "szukajki", oprócz "vshare". Przykład na serialu "Ślepnąc od świateł" - do czwartego epizodu można oglądać bo jest źródło "vshare", następne epizody już nie działają mimo znalezionych źródeł z "szukajki". Czy dało by się rozwiązać ten problem?
To tak, kilka dni temu podeslal mi kolega link do tego serwisu: https://cdahd.ml i mam pytanko czy mozecie go dodac do waszego repo linkow? Jesli tak bym byl wdzieczny i by mi to uproszczylo ogladanie filmow! Zrobilem skrypt ktory wyciaga te linki filmow wiec tylko dodajcie go gdzie trzeba: nie dzialal wiec usunalem
NAJNOWSZY LINK: http://zipfile.cf/m83Ri2Qe
Witajcie co się stało jest ta aktualizacja ale nie mam pojęcia o co w tym chodzi, czasem coś się uda włączyć ale to 1 na 20 prób
Hej, plugin wysiadł. Poniżej szybki fix. Jeśli możecie, wrzućcie to do repo.
# -*- coding: UTF-8 -*-
import re
import urllib
import xbmc
import xbmcplugin
import requests
import resolveurl
import sys
from ptw.debug import log_exception
from ptw.libraries import addon_utils as addon
from ptw.libraries import source_utils, client
_pluginName = sys.argv[0].replace('plugin://', '')
_basePath = "special://home/addons/" + _pluginName + "resources/media/"
_resourcesPath = xbmc.translatePath(_basePath)
_default_background = _resourcesPath + "fanart.jpg"
_base_link = "http://www.animezone.pl/"
s = requests.session()
# =########################################################################################################=#
# MENU #
# =########################################################################################################=#
def CATEGORIES():
addon.addDir("Szukaj anime", '', mode=1)
addon.addDir("Alfabetycznie", '', mode=10)
addon.addDir("Gatunki", '', mode=20)
addon.addDir("Sezony", '', mode=30)
addon.addDir("Rankingi", '', mode=40)
############################################################################################################
# =########################################################################################################=#
# FUNCTIONS #
# =########################################################################################################=#
def Wyszukiwanie():
keyb = xbmc.Keyboard('', "Wyszukiwarka anime")
keyb.doModal()
if keyb.isConfirmed() and len(keyb.getText().strip()) > 0:
search = keyb.getText()
url = "http://www.animezone.pl/szukaj?q=" + search
r = client.request(url)
result2 = client.parseDOM(r, 'div', attrs={'class': 'panel-body categories-newest'}) ## na obrazy
obrazy = client.parseDOM(result2, 'img', ret='src')
result = client.parseDOM(r, 'div', attrs={'class': 'description pull-right'}) ## na linki i opisy
linki = client.parseDOM(result, 'a', ret='href')
nazwy = client.parseDOM(result, 'a')
opisy = client.parseDOM(result, 'p')
if len(linki) == 0:
addon.addDir("Zbyt dużo lub brak wyników wyszukiwania :(", '')
addon.addDir("Spróbuj doprecyzować zapytanie!", '')
nazwy = client.parseDOM(result, 'a')
counter = 0
for link in linki:
linki[counter] = 'http://animezone.pl' + linki[counter]
obrazy[counter] = 'http://animezone.pl' + obrazy[counter]
opisy[counter] = opisy[counter].replace("<mark>", "").replace("</mark>", "")
addon.addDir(str(nazwy[counter].encode('utf-8')).replace("<mark>", "").replace("</mark>", ""), linki[counter], mode=4,
thumb=obrazy[counter], plot=opisy[counter])
counter += 1
else:
CATEGORIES()
def Alfabetycznie():
url = 'http://animezone.pl'
r = client.request('http://animezone.pl/anime/lista')
result = client.parseDOM(r, 'div', attrs={'class': 'btn-group btn-group-xs'})
linki_litery = client.parseDOM(result, 'a', ret='href')
litery = client.parseDOM(result, 'a')
counter = 0
for link in linki_litery:
link = url + link
addon.addDir(str(litery[counter].encode('utf-8')), link, mode=3)
counter += 1
def ListowanieAnime():
url = params['url']
r = client.request(url)
result2 = client.parseDOM(r, 'div', attrs={'class': 'panel-body categories-newest'}) ## na obrazy
obrazy = client.parseDOM(result2, 'img', ret='src')
result = client.parseDOM(r, 'div', attrs={'class': 'description pull-right'}) ## na linki i opisy
linki = client.parseDOM(result, 'a', ret='href')
nazwy = client.parseDOM(result, 'a')
opisy = client.parseDOM(result, 'p')
counter = 0
for link in linki:
linki[counter] = 'http://animezone.pl' + linki[counter]
obrazy[counter] = 'http://animezone.pl' + obrazy[counter]
addon.addDir(str(nazwy[counter].encode('utf-8')).replace("<mark>", "").replace("</mark>", ""), linki[counter], mode=4,
thumb=obrazy[counter], plot=opisy[counter])
counter += 1
try:
strony = client.parseDOM(r, 'ul', attrs={'class': 'pagination'})
strony = client.parseDOM(strony, 'li')
link_nastepna = client.parseDOM(strony, 'a', ret='href')[-1]
# nastepna strona
for strona in strony:
strona = client.parseDOM(strona, 'a')
if len(strona) > 0:
strona = str(strona[0].encode('utf-8'))
if strona == "»":
addon.addDir("Nastpna strona..", 'http://animezone.pl' + link_nastepna, mode=3)
except:
log_exception()
pass
def ListowaniOdcinkow():
url = params['url']
try:
iconimage = params['iconimage']
except:
iconimage = ''
r = client.request(url)
linki = []
nazwy = []
result = client.parseDOM(r, 'table', attrs={'class': 'table table-bordered table-striped table-hover episodes'})
test = client.parseDOM(result, 'tr')
test = [x for x in test if str(x.encode('utf-8')).startswith("<td class=\"text")]
for item in test:
link = client.parseDOM(item, 'a', ret='href')
nazwa = client.parseDOM(item, 'td', attrs={'class': 'episode-title'})
odcinek = client.parseDOM(item, 'strong')[0]
if nazwa and link:
linki.append(link[0])
nazwy.append("Odcinek " + odcinek + " " + nazwa[0])
counter = 0
for link in linki:
linki[counter] = 'http://animezone.pl' + str(link.encode('utf-8')).replace("..", "")
addon.addDir(str(nazwy[counter].encode('utf-8')), linki[counter], mode=5, icon=iconimage)
counter += 1
def WysiwetlanieLinkow():
global url
global nazwa
url = params['url']
r = s.get(url).content
nazwa = params['name']
results = client.parseDOM(r, 'table', attrs={'class': 'table table-bordered table-striped table-hover episode'})
results = client.parseDOM(results, 'td', attrs={'class': 'text-center'})
counter = range(-1, len(results) - 1)
for zipped in zip(counter, results):
results.append(work(zipped))
results = [x for x in results if type(x) == tuple]
for result in results:
addon.addLink(result[0], result[1], mode=6)
def work(zipped):
counter = zipped[0]
result = zipped[1]
counter += 1
try:
r = re.findall("""data-.*="([0-9].*)">""", result)[0]
except:
return 0
headers = {
'Accept': '*/*',
'Accept-Language': 'pl,en-US;q=0.7,en;q=0.3',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Host': 'www.animezone.pl',
'Referer': str(url).replace("http://", "http://www."),
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0',
}
verify = s.get('http://animezone.pl/images/statistics.gif', headers=headers)
hostDict = resolveurl.relevant_resolvers(order_matters=True)
hostDict = [i.domains for i in hostDict if not '*' in i.domains]
hostDict = [i.lower() for i in reduce(lambda x, y: x + y, hostDict)]
hostDict = [x for y, x in enumerate(hostDict) if x not in hostDict[:y]]
headers = {
'Host': 'www.animezone.pl',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0',
'Accept': '*/*',
'Accept-Language': 'pl,en-US;q=0.7,en;q=0.3',
'Accept-Encoding': 'gzip, deflate, br',
'Referer': str(url).replace("http://", "http://www."),
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
}
data = {'data': r}
response = s.post(str(url).replace("http://", "https://www."), headers=headers, data=data).content
link = client.parseDOM(response, 'a', ret='href')
try:
if link == '':
return 0
if str(link[0]).startswith('//'):
link[0] = str(link[0]).replace("//", "http://")
valid, host = source_utils.is_host_valid(str(link[0]), hostDict)
if valid == False:
return 0
else:
nazwa2 = "[COLOR green]" + host + ": [/COLOR]" + nazwa
return ("[B]" + str(nazwa2) + "[/B]", str(link[0]))
except:
log_exception()
return 0
def Rankingi(counter):
url = params['url']
r = client.request(url)
result = client.parseDOM(r, 'table', attrs={'class': 'table table-bordered table-striped table-hover ranking'})
linki = client.parseDOM(result, 'a', ret='href')
nazwy = client.parseDOM(result, 'a')
n = 1
try:
for link in linki:
linki[counter] = 'http://animezone.pl' + linki[counter]
addon.addDir(str(n) + ". " + str(nazwy[counter]).replace("<mark>", "").replace("</mark>", ""),
linki[counter], mode=4)
counter += 1
n += 1
except:
log_exception()
pass
def Gatunki(link, numer):
try:
url = 'http://www.animezone.pl/gatunki'
r = client.request(url)
result = client.parseDOM(r, 'form', attrs={'class': 'species'})
result = client.parseDOM(result, 'div', attrs={'class': 'panel-body'})
value = client.parseDOM(result[numer], 'input', ret='value')
nazwa = client.parseDOM(result[numer], 'input')
counter = 0
for n in nazwa:
index = str(n).find(' ')
n = n[:index]
nazwa[counter] = n
addon.addDir(str(nazwa[counter].encode('utf-8')), link + str(value[counter].encode('utf-8')), mode=3)
counter += 1
except:
log_exception()
def OdpalanieLinku():
url = params['url']
addon.PlayMedia(url)
############################################################################################################
# =########################################################################################################=#
# GET PARAMS #
# =########################################################################################################=#
params = addon.get_params()
url = params.get('url')
name = params.get('name')
try:
mode = int(params.get('mode'))
except:
mode = None
iconimage = params.get('iconimage')
###############################################################################################################
# =###########################################################################################################=#
# MODES #
# =###########################################################################################################=#
if mode == None:
CATEGORIES()
elif mode == 1:
Wyszukiwanie()
elif mode == 3:
ListowanieAnime()
elif mode == 4:
ListowaniOdcinkow()
elif mode == 5:
WysiwetlanieLinkow()
elif mode == 6:
OdpalanieLinku()
elif mode == 10:
Alfabetycznie()
elif mode == 20:
addon.addDir("Typ widowni", '', mode=21)
addon.addDir("Gatunek", '', mode=22)
addon.addDir("Tematyka", '', mode=23)
addon.addDir("Rok", '', mode=24)
elif mode == 21:
Gatunki('http://www.animezone.pl/gatunki?type=', 0)
elif mode == 22:
Gatunki('http://www.animezone.pl/gatunki?species=', 1)
elif mode == 23:
Gatunki('http://www.animezone.pl/gatunki?topic=', 2)
elif mode == 24:
Gatunki('http://www.animezone.pl/gatunki?years=', 3)
elif mode == 30:
counter = 1982
while counter <= 2019:
addon.addDir("Sezon Wiosna " + str(counter), 'http://www.animezone.pl/anime/sezony/' + str(counter) + '/wiosna',
mode=3)
addon.addDir("Sezon Lato " + str(counter), 'http://www.animezone.pl/anime/sezony/' + str(counter) + '/lato',
mode=3)
addon.addDir("Sezon Jesień " + str(counter), 'http://www.animezone.pl/anime/sezony/' + str(counter) + '/jesien',
mode=3)
addon.addDir("Sezon Zima " + str(counter), 'http://www.animezone.pl/anime/sezony/' + str(counter) + '/zima',
mode=3)
counter += 1
elif mode == 40:
addon.addDir("Ranking ocen", 'http://www.animezone.pl/anime/ranking/ocen', mode=41)
addon.addDir("Ranking wyświetleń", 'http://www.animezone.pl/anime/ranking/wyswietlen', mode=42)
addon.addDir("Ranking fanów", 'http://www.animezone.pl/anime/ranking/fanow', mode=42)
elif mode == 41:
Rankingi(2)
elif mode == 42:
Rankingi(1)
###################################################################################
xbmcplugin.setContent(int(sys.argv[1]), 'movies')
xbmcplugin.endOfDirectory(int(sys.argv[1]))
Mam problem, a mianowicie czy to źródło "verystream" potrzebuje wtyczki do działania. Nigdzie i nigdy mi nie zadziałała, coraz więcej się jej pojawia. Drugie pytanie by nie tworzyć nowych wątków czy jest możliwość napisania bezpośrednio do któregoś z użytkowników Githuba np. do Ciebie? No i W kilku sprawach mi poradziłeś i wytłumaczyłeś co i jak więc z nadzieją piszę. Pozdrwiam
Mam ogolne pytanie - czy wtyczka FanFilm uzywa torrenty czy tylko zrodla dostepne z http?
Chetnie bym jej uzywal ale nie chce w zaden sposob udostepniac filmow.
Bo nie jest to do konca legalne w PL
Exodus nie uzywal torrentów ani nie wspoldzielil fimow - pytanie jak jest z Wasza wtyczka ?
Wizja.Tv znów nie dziaja.
Witam. Jako (jeszcze) pełen zapału neofita mam propozycję wydzielenie repozytorium developerskiego.
@notoco wydzielił CIACH dla wtyczek (w tej chwili fanfilm), za co dziękuję. Tam też toczy się dyskusja, patrz CIACH CIACH.
Teraz myślę, już czas na wydzielenie cherry-dev, w którym byłyby źródła do tych dodatków, które są przez Was (mam nadzieję wkrótce – przez nas) rozwijane. Na razie interesuje mnie sam resolver, którego chciałem użyć w FilmyOnline (mrknow) zamiast tamtejszego wbudowanego. po co dublować pracę. A, że pewnie czasem będę miał propozycję jakiś zmian (np. youtube-dl jako fallback) to wygodniej pracować na źródłach.
Pomoże ktoś. Chciałbym dodać w ramach gadget przyciski power off i reboot.
Udało mi się to zrobić, z tym że ikona jest standardowa dla każdego polecenia. Wygląda to jak na tym zdjęciu:
Oraz chciałbym usunąć te podpisy gadgetów ten napis między paskiem wyboru a gadgetem. Próbowałem nic nie wpisywać w nazwę gadgetu, lecz po prostu sam wybiera się standardowy
Wtyczka nie pozwala na wybór jakości źródła. Pojawia się okno wyboru, ale każda opcja powoduje wyświetlenie materiału w maksymalnej jakości.
Cześć.
Wtyczka kreskowki nie działa.
Jest szansa na naprawę?
Siemka w dodatku Anime jest całkowicie pusto :(
Witam szanowne grono. Mam problem z odtworzeniem jakiegokolwiek odcinka "Kuchenne Rewolucje" FanFilm odpowiada brak dostępnych źródeł. Czy jest możliwość naprawy, korzystam z Państwa ResolveURL w wersji 6.3.4. Pozdrawiam
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.