Herramienta conversión Pivot X a PM Wiki
Herramienta que me ha permitido recuperar mi antiguo BLOG PivotX, olvidado en un directorio del servidor, sin uso y lleno de polvo. De nuevo jugando con python para seguir experimentando.
- import os
- import re
- def listar_ficheros(directorio):
- """Devuelve una lista con todos los archivos de un directorio y sus subdirectorios."""
- lista_ficheros = []
- for raiz, _, archivos in os.walk(directorio):
- for archivo in archivos:
- lista_ficheros.append(os.path.join(raiz, archivo)) # Ruta completa del archivo
- return lista_ficheros
- def sanitizar(p_str):
- cx = p_str
- cx = cx.replace('</p>',"")
- cx = cx.replace('
- ',r'%0a')
- cx = cx.replace('\\
- ',r'%0a')
- cx = cx.replace('
- ! ','!')
- cx = cx.replace('<h2>','!!')
- cx = cx.replace('<h3>','!!!')
- cx = cx.replace('<h4>','!!!!')
- cx = cx.replace('
- ','')
- cx = cx.replace('</h2>','')
- cx = cx.replace('</h3>','')
- cx = cx.replace('</h4>','')
- cx = cx.replace('
- ! ','!')
- cx = cx.replace('<H2>','!!')
- cx = cx.replace('<H3>','!!!')
- cx = cx.replace('<H4>','!!!!')
- cx = cx.replace('
- ','')
- cx = cx.replace('</H2>','')
- cx = cx.replace('</H3>','')
- cx = cx.replace('</H4>','')
- cx = cx.replace(''''',"'''")
- cx = cx.replace(''''',"'''")
- cx = cx.replace(''''',"'''")
- cx = cx.replace(''''',"'''")
- cx = cx.replace('''',"''")
- cx = cx.replace('''',"''")
- cx = cx.replace(';s:8:"category','')
- cx = cx.replace(r'\n',r'%0a')
- pattern = r'<img[^>]*src=["\'](.*?)["\'][^>]*>'
- cx = re.sub(pattern, r" %width=50pct%\1 ", cx)
- cx = cx.replace('../images/','Path:/uploads/BLOG/')
- pattern = r'<a\s+href="([^"]+)"[^>]*>(.*?)</a>'
- cx = re.sub(pattern, r'[[\1|\2]]', cx)
- return cx
- def open_file(p_name):
- with open(p_name, "r", encoding="windows-1250") as archivo:
- return archivo.readlines()
- fin.close()
- return lineas
- files = listar_ficheros('pivot/')
- fmain = open('pm/BLOG.Main',"w",encoding='utf-8')
- fmaind = 'version=pmwiki-2.4.4 ordered=1 urlencoded=1' + os.linesep + \
- 'agent=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0' + os.linesep + \
- 'charset=UTF-8' + os.linesep + \
- 'name=BLOG.Main' + os.linesep + \
- 'text=(:title Listado de publicaciones:)'
- lista = []
- fmainl = ''
- files.sort( )
- for file in files:
- data = "".join( open_file(file) )
- patron = r's:\d+:"([\s\S]+?)";'
- resultado = re.findall(patron,data)
- ax = 0
- data_fecha = ''
- data_body = ''
- data_intro = ''
- data_title = ''
- for ii in resultado:
- if ii == 'publish_date':
- data_fecha = resultado[ax+1]
- if ii == 'body':
- data_body = resultado[ax+1]
- if ii == 'title':
- data_title = resultado[ax+1]
- data_title = data_title.replace('";s:8:"subtitle','')
- if ii == 'introduction':
- data_intro = resultado[ax+1]
- ax += 1
- #Ya tengo todo formado
- fname = 'BLOG.' + data_fecha.replace('-','')
- if data_fecha == '':
- fname = 'BLOG.ParaRevisar'+file.replace('pivot/','')
- fname = fname.replace(r'.php','')
- if data_title == '':
- data_title = fname
- fdata = 'version=pmwiki-2.4.4 ordered=1 urlencoded=1' + os.linesep + \
- 'agent=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0' + os.linesep + \
- 'charset=UTF-8' + os.linesep + \
- 'name=' + fname + os.linesep + \
- 'text=(:title '+ data_title +':)'
- lista.append( '[[' + fname +' | '+ data_fecha +' '+ data_title +']]')
- # fmainl = fmainl + os.linesep + '[[' + fname +' | '+ data_fecha +' '+ data_title +']]'
- final = os.linesep + os.linesep + '----' + os.linesep + 'Publicado en ' + data_fecha + os.linesep + 'Referencia: ' + file
- data_body = data_intro + data_body + final
- data_body = sanitizar(data_body)
- data_body = r'%0a' + data_body.replace(os.linesep,r'%0a')
- fdata = fdata + data_body
- fout = open('pm/'+fname,"w",encoding="utf-8")
- fout.write(fdata)
- fout.close()
- # break
- lista.sort()
- for al in lista:
- fmainl = fmainl + os.linesep + al
- fmainl = fmainl.replace(os.linesep,r'%0a')
- fmain.write(fmaind+fmainl)
- fmain.close()