13-03-2021, 11:19 AM
Pare dni temu chcialem obejrzec X-Men'ów przy uzyciu wtyczki FanFilm, niestety pokazywalo ze nie znajduje zadnych zrodel, po sprawdzeniu stron z ktorych scrape'uje FanFilm, okazuje sie ze zrodla są dostepne, ale musi byc jakis blad we wtyczce FanFilm.
Problem we wtyczce polega na tym ze gdy robi query do roznych stron z tytułem filmu, to wtyczka korzysta z roznych sposobów zeby pozbyc sie specjalnych znaków jak n.p. w pliku ekinotv.py jest
a jak zmienimy to query na
moje rozwiazanie jest banalnie proste.
w folderze Kodi\addons\plugin.video.fanfilm\resources\lib\sources\pl
edytujemy plik hdseans.py i w funkcji search ktora wyglada jak ponizej
podmieniamy linijke na ktorej znajduje sie
Problem we wtyczce polega na tym ze gdy robi query do roznych stron z tytułem filmu, to wtyczka korzysta z roznych sposobów zeby pozbyc sie specjalnych znaków jak n.p. w pliku ekinotv.py jest
local_found = client.parseDOM(str(title_found).replace("Å ", "ń"), 'a')[0]
local_found = local_found.replace(' ', '')
local_found = local_found.replace('ENG', '')
local_found = local_found.replace('CAM', '')
local_found = local_found.replace('HD', '')
local_found = local_found.replace('-', '')
local_found = local_found.replace(' ', '')
a w hdseans.pyCytat:query = self.search_link % urllib.quote_plus(title)gdzie funkcja urllib.quote_plus(title) pozbywa sie z specjalnych znakow i podmienia je na czytelne dla tego query. i wynik jest taki że
https://hdseans.pl/autocomplete?query=xmen
nie ma zadnego wyniku.a jak zmienimy to query na
https://hdseans.pl/autocomplete?query=x-men
to znajduje wszystkie częsci ktore są dostepne na hdseans.moje rozwiazanie jest banalnie proste.
w folderze Kodi\addons\plugin.video.fanfilm\resources\lib\sources\pl
edytujemy plik hdseans.py i w funkcji search ktora wyglada jak ponizej
def search(self, title, localtitle, year):
try:
titles = []
titles.append(cleantitle.normalize(cleantitle.getsearch(title)))
titles.append(cleantitle.normalize(cleantitle.getsearch(localtitle)))
for title in titles:
try:
query = self.search_link % urllib.quote_plus(title)
url = urlparse.urljoin(self.base_link, query)
result = client.request(url)
results = json.loads(result)
except:
continue
for result in results:
try:
segosurl = result['video_url']
segostitle = result['title']
rok = result['release_year']
except:
continue
try:
simply_name = title.replace(" ", " ")
words = simply_name.split(" ")
if self.contains_all_words(cleantitle.normalize(cleantitle.getsearch(segostitle)), words) and year == rok:
return segosurl
continue
except:
continue
except Exception as e:
print(str(e))
return
podmieniamy linijke na ktorej znajduje sie
query = self.search_link % urllib.quote_plus(title)
na if "xmen" in title:
query = self.search_link % "x-men"
else:
query = self.search_link % urllib.quote_plus(title)
i wtedy funkcja search wyglada tak def search(self, title, localtitle, year):
try:
titles = []
titles.append(cleantitle.normalize(cleantitle.getsearch(title)))
titles.append(cleantitle.normalize(cleantitle.getsearch(localtitle)))
for title in titles:
try:
if "xmen" in title:
query = self.search_link % "x-men"
else:
query = self.search_link % urllib.quote_plus(title)
url = urlparse.urljoin(self.base_link, query)
result = client.request(url)
results = json.loads(result)
except:
continue
for result in results:
try:
segosurl = result['video_url']
segostitle = result['title']
rok = result['release_year']
except:
continue
try:
simply_name = title.replace(" ", " ")
words = simply_name.split(" ")
if self.contains_all_words(cleantitle.normalize(cleantitle.getsearch(segostitle)), words) and year == rok:
return segosurl
continue
except:
continue
except Exception as e:
print(str(e))
return
Na pewno są lepsze rozwiazania, bo moje naprawia tylko wszystkie filmy X-Men'ów i tylko jednego provider'a.