Forum
>>
Programmazione Python
>>
Scripting
>>
ERRORE: "NameError: name 'self' is not defined"
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da o88onero |
2016-09-19 16:40:05 - ERRORE: "NameError: name 'self' is not defined"
|
Premetto che sono un neofita di python.
In rete ho trovato questo script: import requests,re,sys, os, threading, time import img2pdf # https://github.com/josch/img2pdf import PyPDF2 # https://github.com/mstamy2/PyPDF2 class downloader: def __init__(self): self.session = requests.Session() self.email = "" self.password = "" self.isbn = "" def login(self,email, password): print "Loggin in..." html=self.session.get("https://www.mondadorieducation.it/app/mondadorieducation/login/loginJsonp?username="+email+"&password="+password+"&format=json&jsoncallback=jsonp11").text if not '"result":"OK"' in html: sys.exit("Login failed, check your email/password!") print "Login successful." self.session.get("http://libropiuweb.mondadorieducation.it/mod_connect/login?urlRitorno=http%3A%2F%2Flibropiuweb.mondadorieducation.it%2F") return re.search('"username":"(.*?)"',html).group(1) def decrypt(self,data,page): data=data.replace('viewer._imgl('+str(page)+',"','').replace('");\nviewer._imgl('+str(page)+');','') data=data.decode('string_escape') m="fb69218f41737d7da84b1e39a949dbc2" arr=list(data) for j in range(3): for i in range(95,-1,-1): newpos=ord(m[i % 32]) % 96 f=arr s=arrnewpos arr=s arrnewpos = f data=''.join(arr) return data def get_npages(self,username,isbn): print "Getting page count..." html=self.session.get("http://iflipit.mondadorieducation.it/desktop/index.php?accesslevel=st-pl&usr="+username+"&iss="+isbn+"&fil=iss").text return int(re.search('"pagesCount" :(.*?),',html).group(1)) def download(self,username,isbn,pagen): sys.stdout.write("\rDownloading page n. "+str(pagen)+"...") sys.stdout.flush() pageid="0"*(3-len(str(pagen)))+str(pagen) f=open("/tmp/"+isbn+"_"+str(pagen)+".jpg","wb") try: content=self.session.get("http://iflipit.mondadorieducation.it/desktop/index.php?usr="+username+"&iss="+isbn+"&fld=sdf&id="+pageid+"&ext=js").content except: self.download(username,isbn,pagen) data=self.decrypt(content,pagen) f.write(data) f.close() def start(self): username=self.login(self.email,self.password) npages=self.get_npages(username,self.isbn) print "Starting downloading "+str(npages)+" pages." pagen=1 signal=1 while signal: for i in range(30-threading.activeCount()): if pagen==npages+1:signal=0;break; threading.Thread(target=self.download,args=(username,self.isbn,pagen,)).start() pagen+=1 time.sleep(1) while 1: if threading.activeCount()==1: print "\nDone, got all pages." break else: time.sleep(1) print("\nConverting images to PDF format...") for npage in range(1,npages+1): pdf_bytes=img2pdf.convert(["/tmp/"+self.isbn+"_"+str(npage)+".jpg"]) f = open("/tmp/"+self.isbn+"_"+str(npage)+".pdf","wb") f.write(pdf_bytes) f.close() sys.stdout.write("\rConverting page n. "+str(npage)+"...") sys.stdout.flush() merger = PyPDF2.PdfFileMerger() print("\nMerging everything...") for npage in range(1,npages+1): merger.append(PyPDF2.PdfFileReader(open("/tmp/"+self.isbn+"_"+str(npage)+'.pdf','rb'))) merger.write(self.isbn+".pdf") print("Well done! "+self.isbn+".pdf created!") Nelle istruzioni per l'utilizzo, l'autore dice di creare un file *.py con il suddetto script poi aprire la linea di comando di python e digitare "from *.py import downloader". Dopo aver digitato il comando mi appare il seguente errore: Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> from mebook import downloader File "mebook.py", line 88, in <module> print("Well done! "+self.isbn+".pdf created!") NameError: name 'self' is not defined Chi mi aiuta indicandomi l'esatta procedura da seguire per far funzionare il codice? --- Ultima modifica di o88onero in data 2016-09-20 08:29:57 --- --- Ultima modifica di o88onero in data 2016-09-20 08:31:45 --- |
|
Scritto da Daniele aka Palmux |
2016-09-20 00:04:25 - Re: ERRORE: "NameError: name 'self' is not defined"
|
Ciao o88onero, da buon neofita del Python prima di qualunque altra cosa fai subito un bell'esercizio di stile. Metti a posto il codice ed indentalo come Python comanda. Usa il pulsante in alto prima dei colori, in modo da dare la forma corretta allo script.
Fatto questo possiamo analizzare lo script. Cya |
|
Scritto da o88onero |
2016-09-20 17:06:55 - Re: ERRORE: "NameError: name 'self' is not defined"
|
Fatto.
|
|
Scritto da Daniele aka Palmux |
2016-09-20 17:41:48 - Re: ERRORE: "NameError: name 'self' is not defined"
|
Diciamo più o meno, vedo ancora diversi difetti di indentazione, controlla meglio. Ad esempio alla riga 13 (quella dopo print "Loggin in...") ed a tante successive, qualcosa non va, anzi più di qualcosa.
Con che versione di Python stai lavorando, dallo script immagino 2.7, e quali librerie hai installato? Te lo chiedo perché di default alcune delle librerie che importi sono alla versione 3.x, quindi non le userai mai col tuo script. Venendo al tuo problema, descrivimi con esattezza il procedimento che fai per lanciare quel comando o dammi il link così do un'occhiata direttamente, perché temo proprio che il grosso del problema stia proprio li. Cya |
|
Scritto da o88onero |
2016-09-20 20:44:24 - Re: ERRORE: "NameError: name 'self' is not defined"
|
@ Daniele aka Palmux, grazie per l'aiuto.
Voglio ottenere lo stesso risultato che viene mostrato in questo articolo dove c'è anche un video dimostrativo: http://ukesec.altervista.org/estrarre-i-pdf-da-mebook-attraverso-iflipit/ dato che non mi sono mai cimentato con linux, nè tantomeno con python, non riesco a capire il procedimento da seguire per raggiungere lo scopo e l'autore dell'articolo non risulta contattabile. |
|
Scritto da ㎝ |
2016-09-20 20:57:28 - Re: ERRORE: "NameError: name 'self' is not defined"
|
controlla che il tuo sorgente sia identico (indentazione compresa, in python è significativa!) a questo:
<https://raw.githubusercontent.com/MrUke/MEBook-Downloader/master/download.py> THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da o88onero |
2016-09-20 21:50:07 - Re: ERRORE: "NameError: name 'self' is not defined"
|
@ cm
Ho corretto in alcuni punti l'identazione, ora lo script è uguale a quello che hai postato tu ma quando lancio il comando mi da sempre lo stesso errore: Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> from mebook import downloader File "mebook.py", line 88, in <module> print("Well done! "+self.isbn+".pdf created!") NameError: name 'self' is not defined |
|
Scritto da ㎝ |
2016-09-20 21:53:57 - Re: ERRORE: "NameError: name 'self' is not defined"
|
non è possibile, perché allora dovrebbe darti lo stesso errore anche sulla riga precedente, che accede allo stesso simbolo. controlla meglio, ed attento a non mescolare spazi e tabulazioni...
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da o88onero |
2016-09-21 08:02:41 - Re: ERRORE: "NameError: name 'self' is not defined"
|
@cm
Sono riuscito a mettere a posto lo script però c'è ancora qualcosa che non va, quando cerco di fare il download mi si presentano questi messaggi: Loggin in... Login successful. Getting page count... Starting downloading 450 pages. Downloading page n. 1... Downloading page n. 2... Downloading page n. 3... Downloading page n. 4... Downloading page n. 5... Downloading page n. 6... Downloading page n. 7... Downloading page n. 8... Downloading page n. 9... Downloading page n. 10... Downloading page n. 11... Downloading page n. 12... Downloading page n. 13... Downloading page n. 14... Downloading page n. 15... Downloading page n. 16... Downloading page n. 17... Downloading page n. 18... Downloading page n. 19... Downloading page n. 20... Downloading page n. 21... Downloading page n. 22... Downloading page n. 23... Downloading page n. 24... Downloading page n. 25... Downloading page n. 26... Downloading page n. 27... Downloading page n. 28...Exception in thread Thread-1: Traceback (most recent call last): File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner self.run() File "C:\Python27\lib\threading.py", line 754, in run self.__target(*self.__args, **self.__kwargs) File "mebook.py", line 44, in download f=open("/tmp/"+isbn+"_"+str(pagen)+".jpg","wb") IOError: [Errno 2] No such file or directory: '/tmp/978882473968_1.jpg' Exception in thread Thread-2: Traceback (most recent call last): File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner self.run() File "C:\Python27\lib\threading.py", line 754, in run self.__target(*self.__args, **self.__kwargs) File "mebook.py", line 44, in download f=open("/tmp/"+isbn+"_"+str(pagen)+".jpg","wb") IOError: [Errno 2] No such file or directory: '/tmp/978882473968_2.jpg' Exception in thread Thread-3: ... Downloading page n. 449... Downloading page n. 450...Exception in thread Thread-449: Traceback (most recent call last): File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner self.run() File "C:\Python27\lib\threading.py", line 754, in run self.__target(*self.__args, **self.__kwargs) File "mebook.py", line 44, in download f=open("/tmp/"+isbn+"_"+str(pagen)+".jpg","wb") IOError: [Errno 2] No such file or directory: '/tmp/978882473968_449.jpg' Exception in thread Thread-450: Traceback (most recent call last): File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner self.run() File "C:\Python27\lib\threading.py", line 754, in run self.__target(*self.__args, **self.__kwargs) File "mebook.py", line 44, in download f=open("/tmp/"+isbn+"_"+str(pagen)+".jpg","wb") IOError: [Errno 2] No such file or directory: '/tmp/978882473968_450.jpg' Non riesco a capire se effettivamente avviene il download dei file, non ne trovo, oppure sia un problema di conversione in pdf. |
|
Scritto da didacus77 |
2018-03-13 23:07:52 - Re: ERRORE: "NameError: name 'self' is not defined"
|
Ciao o88onero, hai risolto il problema dello script?
|
Pagina: 1
Esegui il login per scrivere una risposta.