Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
FanFilm nie znajduje zródel do filmu X-Men
#1
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
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.py
Cytat: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.    
Odpowiedz
REKLAMA:



#2
Super - dzięki.
Zerknąłem na to, i podejrzewam że rozwiążą to tak jak z wall-e więc poprawka może być globalna
"Mym sojusznikiem jest Moc, i potężnym sojusznikiem ona jest." -- Mistrz Yoda

Ze względu na prośbę jednego z Junior Member: nie odpowiadam na PW
Odpowiedz
#3
Nawet nie sprawdzałem "Wall-E" bo zapomniało mi się o tym filmie, ale jestem na 99% pewny że będzie ten sam problem.
Odpowiedz
#4
W obu wersjach jest to już naprawione z tego co widziałem
"Mym sojusznikiem jest Moc, i potężnym sojusznikiem ona jest." -- Mistrz Yoda

Ze względu na prośbę jednego z Junior Member: nie odpowiadam na PW
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości