def main(): if len(sys.argv) < 2: sys.exit('Usage: %s xml archive' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion newDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion handler = XGH.xmlGenericHandler(sys.argv[1]) #inicializa el handler de la base de datos newDB.dropTable()#borra la tabla newDB.createTable()#crea nuevamente la tabla tags = ("name","url","feed","saveas","savedb","root","primary_id","tag") #arma los tags para insertar en la tabla generica values = handler.getBody('site',tags) #obtiene los datos del XML generico if len(values)!=1: #En caso de que generic-handler.xml este vacio finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join(values[i:z]) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #print valor_bd newDB.insertItem(tags,valor_bd) #inserta en la tabla hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + (values_add) + "','" + values[x] + "'" + ')' #print valor_bd,'\n' newDB.insertItem(tags,valor_bd) #inserta en la tabla el otro <tag> x+=1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True
def main(): if len(sys.argv) < 2: sys.exit('Usage: %s savedb field' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion genericDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion specificDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), table=sys.argv[1] ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion root_tag = genericDB.readRoot(sys.argv[1]) saveas_tag = genericDB.readSaveas(sys.argv[1]) print root_tag[0][0] print saveas_tag[0][0] handler = XGH.xmlGenericHandler( pathtofile=os.path.dirname(os.path.realpath(__file__)) + '/' + saveas_tag[0][0] ) #inicializa el handler de la base de datos--> se pasa la ruta absoluta tags = [] aux_tags = genericDB.readTags( sys.argv[1] ) #arma los tags para insertar en la tabla correspondiente a la fuente for tag in aux_tags: tags.append(tag[0]) print tags values = handler.getBody(root_tag[0][0], tags) #obtiene los datos del XML especifico finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join( values[i:z] ) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #valor_bd.decode('utf8') #print MySQLdb.escape_string(valor_bd) if ( values[x] <> 'finarbol' ): #agregado para corregir bug en algunos feeds donde se incluye el finarbol specificDB.insertItemDistinct( tags, valor_bd) #inserta en la base de datos hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + ( values_add) + "','" + values[x] + "'" + ')' #valor_bd.decode('utf8') if ( values[x] <> 'finito' ): #agregado para corregir bug en algunos feeds donde se incluye el finito specificDB.insertItemDistinct( tags, valor_bd) #inserta en la tabla el otro <tag> x += 1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True
def main(): if len(sys.argv) < 2: sys.exit('Usage: %s savedb field' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta a manager.py dirname = os.path.dirname(full_path) #se obtiene el directorio config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection('Database') #se obtienen los valores del archivo de configuracion genericDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),options.get('table')) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion specificDB = DB.databaseHandlerTable(options.get('host'),options.get('user'),options.get('pass'),options.get('db'),table=sys.argv[1]) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion root_tag = genericDB.readRoot(sys.argv[1]) saveas_tag = genericDB.readSaveas(sys.argv[1]) print root_tag[0][0] print saveas_tag[0][0] handler = XGH.xmlGenericHandler(pathtofile = os.path.dirname(os.path.realpath(__file__)) + '/' + saveas_tag[0][0]) #inicializa el handler de la base de datos--> se pasa la ruta absoluta tags=[] aux_tags = genericDB.readTags(sys.argv[1]) #arma los tags para insertar en la tabla correspondiente a la fuente for tag in aux_tags: tags.append(tag[0]) print tags values = handler.getBody(root_tag[0][0],tags) #obtiene los datos del XML especifico finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join(values[i:z]) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #valor_bd.decode('utf8') #print MySQLdb.escape_string(valor_bd) if (values[x] <> 'finarbol'): #agregado para corregir bug en algunos feeds donde se incluye el finarbol specificDB.insertItemDistinct(tags,valor_bd) #inserta en la base de datos hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + (values_add) + "','" + values[x] + "'" + ')' #valor_bd.decode('utf8') if (values[x] <> 'finito'): #agregado para corregir bug en algunos feeds donde se incluye el finito specificDB.insertItemDistinct(tags,valor_bd) #inserta en la tabla el otro <tag> x+=1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True
def main(): if len(sys.argv) < 2: sys.exit('Usage: %s xml archive' % sys.argv[0] + '\n') full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio ####Carga de la configuracion#### config = configuration.configuration(dirname + '/Resources/timantti.conf') options = config.configSection( 'Database') #se obtienen los valores del archivo de configuracion newDB = DB.databaseHandlerTable( options.get('host'), options.get('user'), options.get('pass'), options.get('db'), options.get('table') ) #crea la conexion a la base de datos leyendo los datos desde el archivo de configuracion handler = XGH.xmlGenericHandler( sys.argv[1]) #inicializa el handler de la base de datos newDB.dropTable() #borra la tabla newDB.createTable() #crea nuevamente la tabla tags = ("name", "url", "feed", "saveas", "savedb", "root", "primary_id", "tag") #arma los tags para insertar en la tabla generica values = handler.getBody('site', tags) #obtiene los datos del XML generico if len(values) != 1: #En caso de que generic-handler.xml este vacio finish = False x = len(tags) - 1 i = 0 z = len(tags) while not finish: valor_bd = '(' + "'" + "','".join( values[i:z] ) + "'" + ')' #arma la cadena para insertar los valores y el primer campo <tag> #print valor_bd newDB.insertItem( tags, valor_bd) #inserta en la tabla hasta el primer <tag> x += 1 if len(values) > len(tags): #comprueba si hay mas de un tag while ((values[x] <> 'finarbol')): #quedan mas tags values_add = "','".join(values[i:z - 1]) valor_bd = '(' + "'" + ( values_add) + "','" + values[x] + "'" + ')' #print valor_bd,'\n' newDB.insertItem( tags, valor_bd) #inserta en la tabla el otro <tag> x += 1 if (values[x + 1] == 'finito'): finish = True else: i = x + 1 z = i + len(tags) x = z - 1 else: finish = True
def writeGenericXML(self,nametag,urltag,feedtag,saveastag,savedbtag,roottag,primary_idtag,tagtag): #agrega la nueva entrada al archivo generic-handler.xml ##Falta agregar parametros para agragar al archivo full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio handler = XGH.xmlGenericHandler(dirname + '/Resources/generic-handler.xml') tags = ['name','url','feed','saveas','savedb','root','primary_id','tag'] resultado = handler.getBody('site',tags) #recuperamos el archivo original computado = [] computado.append(nametag) computado.append(urltag) computado.append(feedtag) computado.append('Resources/Feeds/' + str(saveastag)) ## Se agrega el directorio para que no se especifique desde la consola computado.append(savedbtag) computado.append(roottag) computado.append(primary_idtag) print tagtag for elementtag in tagtag: computado.append(elementtag) computado.append('finito') x = 0 for element in resultado: #Se cuentan la cantidad de elementos que hay en la lista if str(element) == 'finarbol': x+=1 if (len(resultado) == 0): resultadofinal = resultado + computado #sumamos el nuevo tag else: resultadofinal = resultado [:-1] + computado #print resultadofinal doc = minxml.Document() sites = doc.createElement("sites") doc.appendChild(sites) j=0 #indice para manejar el arreglo for i in range(0,x+1): site = doc.createElement("site") sites.appendChild(site) name = doc.createElement("name") site.appendChild(name) ptext = doc.createTextNode(resultadofinal[j]) name.appendChild(ptext) j+=1 url = doc.createElement("url") site.appendChild(url) ptext = doc.createTextNode(resultadofinal[j]) url.appendChild(ptext) j+=1 feed = doc.createElement("feed") site.appendChild(feed) ptext = doc.createTextNode(resultadofinal[j]) feed.appendChild(ptext) j+=1 saveas = doc.createElement("saveas") site.appendChild(saveas) ptext = doc.createTextNode(resultadofinal[j]) saveas.appendChild(ptext) j+=1 savedb = doc.createElement("savedb") site.appendChild(savedb) ptext = doc.createTextNode(resultadofinal[j]) savedb.appendChild(ptext) j+=1 root = doc.createElement("root") site.appendChild(root) ptext =doc.createTextNode(resultadofinal[j]) root.appendChild(ptext) j+=1 primary_id = doc.createElement("primary_id") site.appendChild(primary_id) ptext = doc.createTextNode(resultadofinal[j]) primary_id.appendChild(ptext) j+=1 tag = doc.createElement("tag") site.appendChild(tag) ptext = doc.createTextNode(resultadofinal[j]) tag.appendChild(ptext) j+=1 existen_mas_tag = True while existen_mas_tag: if (resultadofinal[j] != 'finarbol' and resultadofinal [j] != 'finito'): tag = doc.createElement("tag") site.appendChild(tag) ptext = doc.createTextNode(resultadofinal[j]) tag.appendChild(ptext) j+=1 else: existen_mas_tag = False j+=1 print resultadofinal; inputstring = doc.toxml() savexml = self.prettyxml(inputstring) output = open(dirname + '/Resources/generic-handler.xml','w') output.write(savexml) output.close()
def deletefromGenericXML(self,savedb): full_path = os.path.realpath(__file__) #Se averigua la ruta dirname = os.path.dirname(full_path) #se obtiene el directorio handler = XGH.xmlGenericHandler(dirname + '/Resources/generic-handler.xml') tags = ['name','url','feed','saveas','savedb','root','primary_id','tag'] resultado = handler.getBody('site',tags) #recuperamos el archivo original resultadofinal = [] auxiliar = [] found = False x = 0 for element in resultado: auxiliar.append(element) if len(auxiliar) == 5: if (str(auxiliar[4]) == str(savedb)): found = True if str(element) == 'finarbol':#Se cuentan la cantidad de elementos que hay en la lista if not found: for i in range(0,len(auxiliar)-1): resultadofinal.append(auxiliar[i]) resultadofinal.append('finarbol') x+=1 auxiliar = [] else: found = False auxiliar = [] resultadofinal=resultadofinal[0:-1] #removemos el ultimo finarbol resultadofinal.append('finito') print resultadofinal #print resultadofinal doc = minxml.Document() sites = doc.createElement("sites") doc.appendChild(sites) j=0 #indice para manejar el arreglo for i in range(0,x): site = doc.createElement("site") sites.appendChild(site) name = doc.createElement("name") site.appendChild(name) ptext = doc.createTextNode(resultadofinal[j]) name.appendChild(ptext) j+=1 url = doc.createElement("url") site.appendChild(url) ptext = doc.createTextNode(resultadofinal[j]) url.appendChild(ptext) j+=1 feed = doc.createElement("feed") site.appendChild(feed) ptext = doc.createTextNode(resultadofinal[j]) feed.appendChild(ptext) j+=1 saveas = doc.createElement("saveas") site.appendChild(saveas) ptext = doc.createTextNode(resultadofinal[j]) saveas.appendChild(ptext) j+=1 savedb = doc.createElement("savedb") site.appendChild(savedb) ptext = doc.createTextNode(resultadofinal[j]) savedb.appendChild(ptext) j+=1 root = doc.createElement("root") site.appendChild(root) ptext =doc.createTextNode(resultadofinal[j]) root.appendChild(ptext) j+=1 primary_id = doc.createElement("primary_id") site.appendChild(primary_id) ptext = doc.createTextNode(resultadofinal[j]) primary_id.appendChild(ptext) j+=1 tag = doc.createElement("tag") site.appendChild(tag) ptext = doc.createTextNode(resultadofinal[j]) tag.appendChild(ptext) j+=1 existen_mas_tag = True while existen_mas_tag: if (resultadofinal[j] != 'finarbol' and resultadofinal [j] != 'finito'): tag = doc.createElement("tag") site.appendChild(tag) ptext = doc.createTextNode(resultadofinal[j]) tag.appendChild(ptext) j+=1 else: existen_mas_tag = False j+=1 inputstring = doc.toxml() savexml = self.prettyxml(inputstring) output = open(dirname + '/Resources/generic-handler.xml','w') output.write(savexml) output.close()