def onGrabarSeleccion(self, button): ''' guarda los enlaces seleccionados de la lista en la base de datos lo normal es hacer uso de esta funcion cuando queramos grabar en la base de datos enlaces resultados de alguna busqueda ''' selection = self.treeview.get_selection() modelo,pathlist = selection.get_selected_rows() iters = [modelo.get_iter(path) for path in pathlist] if self.fromspider: if len(iters)!=0: if (self.preguntarOK("Grabar seleccionados, estas seguro ?",400)): basededatos = TorrentSpiderDB() for myiter in iters: veid = modelo.get_value(myiter,0) vtitulo = modelo.get_value(myiter,1) vcategoria = modelo.get_value(myiter,2) venlace = modelo.get_value(myiter,3) registro = [ veid, vtitulo, vcategoria, venlace] basededatos.insertaRegistro(registro,"db") basededatos.cierraBD() else: if len(iters)!=0: self.preguntarOK("Registros seleccionados ya estan en la BD!",400)
def onBorrarSeleccion(self,button): ''' borra enlaces de la lista, ademas si los enlaces son resultado de haberlos recuperado de la base de datos tambien los borra de la misma ''' selection = self.treeview.get_selection() modelo,pathlist = selection.get_selected_rows() iters = [modelo.get_iter(path) for path in pathlist] if self.fromspider: if len(iters)!=0: if (self.preguntarOK("estas seguro ?",250)): for myiter in iters: self.listmodel.remove(myiter) else: basededatos = TorrentSpiderDB() if len(iters)!=0: if (self.preguntarOK("esto eliminara tambien los registros de la BAse de DAtos, estas seguro?",600)): listaeid = [] for myiter in iters: listaeid.append(modelo.get_value(myiter,0)) for myiter in iters: self.listmodel.remove(myiter) for registro in listaeid: basededatos.borraRegistroEid(registro) basededatos.cierraBD() self.statusbar.push(0,"Visualizando "+str(len(self.listmodel))+" registros") if (len(self.listmodel)>0): self.habilitaTool(True) else: self.habilitaTool(False)
def run_spider(): ''' vacia la tabla temporal corre el spider y guarda los resultados en la tabla temporal ''' basededatos = TorrentSpiderDB() basededatos.vaciaTmp() basededatos.cierraBD() subprocess.call('scrapy crawl torrent -a destino=\"tmp\"',shell=True)
def onRecuperarDB(self,button): ''' carga en la lista los enlaces que tengamos guardados en la base de datos ''' self.fromspider = False basededatos = TorrentSpiderDB() global resultados resultados = basededatos.cargaDatos("db") basededatos.cierraBD() self.listmodel.clear() for i in range(len(resultados)): self.listmodel.append(resultados[i]) self.statusbar.push(0,"Cargados "+str(len(self.listmodel))+" registros") if (len(resultados)>0): self.habilitaTool(True) else: self.habilitaTool(False)
class Torrent2DB(object): def __init__(self): self.basededatos = TorrentSpiderDB() self.registro=[] def process_item(self, item, spider): self.spider = spider self.registro=[] self.registro.append(item['eid'][0]) self.registro.append(item['titulo'][0]) self.registro.append(item['categoria'][0]) self.registro.append(item['enlace'][0]) print self.spider.destino self.basededatos.insertaRegistro(self.registro,self.spider.destino) return item def close_spider(self, spider): self.basededatos.cierraBD()
def onRunSpider(self, button): ''' corre el spider, guarda los datos en la tabla temporal y los muestra en la lista ''' #del resultados[:] self.fromspider = True run_spider() self.listmodel.clear() resultados = [] basededatos = TorrentSpiderDB() resultados = basededatos.cargaDatos("tmp") basededatos.cierraBD() for i in range(len(resultados)): self.listmodel.append(resultados[i]) self.statusbar.push(0,"Cargados "+str(len(resultados))+" registros") if (len(resultados)>0): self.habilitaTool(True) else: self.habilitaTool(False)
def onBuscar(self,button): ''' Pasea el spider en la web usando la url de busqueda de la misma. asi lo que hacemos es cambiar la start_url del mismo para recuperar los enlaces resultados de la busqueda ''' texto = self.textoBusqueda.get_text() busqueda=texto.lstrip().rstrip() busqueda = 'http://www.elitetorrent.net/busqueda/'+busqueda.replace(' ','+') self.fromspider = True basededatos = TorrentSpiderDB() basededatos.vaciaTmp() subprocess.call('scrapy crawl torrent -a destino=\"tmp\" -a url=\"'+busqueda+'\"', shell=True) resultados = [] resultados = basededatos.cargaDatos("tmp") basededatos.cierraBD() self.listmodel.clear() for i in range(len(resultados)): self.listmodel.append(resultados[i]) self.statusbar.push(0,"Cargados "+str(len(resultados))+" registros") if (len(resultados)>0): self.habilitaTool(True) else: self.habilitaTool(False) self.preguntarOK("No se ha recuperado ningun resultado? Intenta buscar: \'horror story\'",600)
def __init__(self): self.basededatos = TorrentSpiderDB() self.registro=[]