Autor Tema: DownloadEpaperEdh pequeño programa Java para descargar la version epaper de EDH  (Leído 24465 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Belcboo

  • The Communiter-
  • *
  • Mensajes: 1338
  • ¦ॠ¦ вεłсвφφ ¦ॠ¦
Lo acabo de probar en mac, y solo lo ejecutas y ya.... te esperas a que descargue y haga la compilación del PDF y ya!..

Gracias nuevamente! :thumbsup:

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
Posteo mi codigo, es un script en Groovy

Código: [Seleccionar]
import com.itextpdf.text.pdf.*

def today = new Date().format("yyyyMMd");
def url = 'http://www.elsalvador.com/mwedh/epaper/'+today+'/pagedata35.xml';
def urlDownload = 'http://www.elsalvador.com/mwedh/epaper/'
def con = new URL(url).openConnection()
def xml = new XmlSlurper().parse(con.responseCode == 200 ? con.inputStream : con.errorStream)
def pages = xml.PageOrder.PageData

PdfCopyFields finalCopy = new PdfCopyFields(new FileOutputStream("EDH"+today+".pdf"));
finalCopy.open();
pages.each(){
def t = urlDownload + it.@LargeFile.text()
t = t.replace('SWF','pdf')
println "Descargando --> " + t
finalCopy.addDocument(new PdfReader(t));
}
finalCopy.close();

Como pueden ver hago uso de la url http://www.elsalvador.com/mwedh/epaper/20110423/pagedata35.xml
y la parte variable de la fecha la predefino  al dia de ahora, ademas como bien menciona ~ hago uso de la libreria Java iText para hacer el merge de cada uno de los archivos.

La logica es simple leer la url http://www.elsalvador.com/mwedh/epaper/20110423/pagedata35.xml
, parsear el xml, extraer el nombre de los archivos SWF y con esos nombres construir las url donde se encuentran los PDF, por ultimo todos esos PDF unirlos en uno solo.

Creo que el proposito del post de ~ es explicar como se extraen las url, porque para un usuario normal y corriente, andar bajando todos los pdf uno por uno, como que no es muy amigable x_x

Tal vez con la logica detras del script alguien pueda hacerse un programita con una interfaz grafica mas lograda, que a mi me da weba hacerla x_x
« Última Modificación: abril 23, 2011, 06:36:06 pm por hkadejo »

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
Para La Prensa Gráfica es exactamente el mismo concepto. Los archivos sí están en formato SWF (nada de PDFs).

Ahora la diferencia es que tenemos que buscar los campos Path="...." del XML en:

http://epaper.laprensagrafica.com/20110423/files/info.xml

Entonces cambiamos la extensión .GIF por .SWF y le agregamos la URL http://epaper.laprensagrafica.com/ y le agrega automáticamente la parte variable images/page1.swf, page2.swf, etc.

http://devel.no-ip.org/tmp/diario.lpg.html
http://devel.no-ip.org/tmp/diario.lpg.html

Código: [Seleccionar]
<html>
 <head>
  <title>DownloadEpaperLPG</title>
 </head>


 <body>
  <textarea id="xxml" cols="80" rows="25"></textarea><br />

  <button onclick="getLPG();void(0);">Obtener links actuales</button><br /><br />

<script>
// alert(document.getElementById("seo").src);



 function getLPG()
 {
  var xxml=document.getElementById("xxml");
  var ret="";

  if(xxml.value.length==0){alert("Por favor visite el archivo XML en el link de arriba y copie/pegue el contenido en el cuadro de texto de esta página, y despues presione \"Obtener links actuales\".");return;}

  //Con esta expresión regular buscamos todos los campos
  //PageFile="..........."
  //y su contenido:
  ///
  var docs=xxml.value.match(/Path="[0-9/.A-Za-z]*"/g);



  for(var dl=0;dl<docs.length;dl++)
  {
   //Ahora que tenemos un arreglo con todas las páginas, tenemos que deshacernos
   //de las comillas y del PageFile=
   //y reemplazar la extensión .GIF por .PDF:
   ///
    docs[dl]=docs[dl].replace("Path=","").replace(/"/g,"").replace(/.gif/gi,".swf");

   //Acumulamos todos los links a mostrar:
   ///
    ret+=("<a target=\"_blank\" href='"+datevar+"/"+docs[dl]+"'>"+docs[dl].replace(/[0-9a-zA-Z]*\//,"")+"</a><br />");
  }

  //Escribimos todos los links en la página HTML actual:
  ///
   document.body.innerHTML+=ret;
  return;
 }






 //Obtener los año, mes y día y convertirlos a cadena, y también
 //asegurarse de que el mes y el día sean de 2 cifras rellenando
 //con un cero a la izquierda si es necesario:
 ///
 var LocalYear=new Date().getFullYear()+"";
 var LocalMonth=(new Date().getMonth()+1)+"";
     if(LocalMonth.length==1)LocalMonth="0"+LocalMonth;

 var LocalDay=new Date().getDate()+"";
     if(LocalDay.length==1)LocalDay="0"+LocalDay;

 var datevar="http://epaper.laprensagrafica.com/"+(LocalYear)+(LocalMonth)+(LocalDay);


 //Escribir el link al XML del día de hoy al principio de la página:
 ///
 document.body.innerHTML="XML de hoy: <a target=\"_blank\" href=\""+datevar+"/files/info.xml"+"\">"+datevar+"/files/info.xml"+"</a>"+document.body.innerHTML;
</script>
 </body>
</html>




y convertir estos SWF a PDF?? Todo esto que explicas ya lo tengo, solo me falta esa conversion.

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
La otra opción es estudiar la especificación del formato SWF del archivo spec_swf_V7.pdf y también la especificación ZLIB (http://www.ietf.org/rfc/rfc1950.txt) e implementar una interfaz de interpretación.

x_x bueno ahi esta el llamado a alguien con mas tiempo libre que se haga el estudio de esto, seria buenisimo implementarlo.

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
Hoy intente descargar el epaper y me dio un error x_x, despues de un ratito viendo porque me di cuenta que es porque varios archivos de este dia tenian en su nombre un caracter especial, asi que cuando intentaba invocar esa direccion desde el programa me decia que era invalida. Asi que tuve que hacer un encode al nombre del archivo.

Codigo con el cambio
Código: [Seleccionar]
import com.itextpdf.text.pdf.*

def today = new Date().format("yyyyMMd");
def url = 'http://www.elsalvador.com/mwedh/epaper/'+today+'/pagedata35.xml';
def urlDownload = 'http://www.elsalvador.com/mwedh/epaper/'
def con = new URL(url).openConnection()
def xml = new XmlSlurper().parse(con.responseCode == 200 ? con.inputStream : con.errorStream)
def pages = xml.PageOrder.PageData

PdfCopyFields finalCopy = new PdfCopyFields(new FileOutputStream("EDH"+today+".pdf"));
finalCopy.open();
pages.each(){
def t = urlDownload + URLEncoder.encode(it.@LargeFile.text(),"UTF-8") //<-- CAMBIO AQUI,AGREGANDO ENCODE
t = t.replace('SWF','pdf')
println "Descargando --> " + t
finalCopy.addDocument(new PdfReader(t));
}
finalCopy.close();

La version corregida del programa pueden descargarla aqui: http://hkadejo.com/DownloadEpaperEdh.jar

Desconectado =SV=Mike

  • The Communiter-
  • *
  • Mensajes: 1669
ummm en windows xp, corro el archivo Bat junto al archivo jar que hizo el communiter, y todo bien, pero al tratar de hacerlo en windows 7 no logra descargar nada.

solo se abre el msdos y se cierra, joder como bajarlo en windows 7 alguien que me ilumine  :thumbsup:

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
ummm en windows xp, corro el archivo Bat junto al archivo jar que hizo el communiter, y todo bien, pero al tratar de hacerlo en windows 7 no logra descargar nada.

solo se abre el msdos y se cierra, joder como bajarlo en windows 7 alguien que me ilumine  :thumbsup:

Y tenes java instalado en tu windows 7??? Podes abrir una consola y digitar java -version para ver si en realidad esta instalado o no.

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
Hice una interfaz grafica sencilla, la componen unas cajitas de texto (elegir fecha, el nombre del archivo, y el path donde se guardara el archivo) si los dejan en blanco tienen valores por defecto (la fecha de ahora, el nombre seria "EDH"+fechadeahora, y el path es el directorio home del usuario).
De ahi solo le dan en descargar y listo.  :thumbsup:

No hay validaciones ni formato en la fecha y la app es fea (visualmente), mejoras las dejare para una version posterior.

La instalacion es simple, descomprimen el archivo y ejecutan el .bat.

Descargar aqui: http://hkadejo.com/JDownloaderEDH.zip

x_x lo probe en windows dejando los valores por defecto y no me funciono, asi que por el momento ahi no le dejen las cosas en blanco x_x
« Última Modificación: abril 24, 2011, 09:58:32 pm por hkadejo »

Desconectado Belcboo

  • The Communiter-
  • *
  • Mensajes: 1338
  • ¦ॠ¦ вεłсвφφ ¦ॠ¦
Yo lo probé en mac sin poner nada, y si funciono.






« Última Modificación: abril 24, 2011, 10:05:51 pm por Belcboo »

Desconectado =SV=Mike

  • The Communiter-
  • *
  • Mensajes: 1669
que shit, al correr el run.bat pues se abre una consola y luego se cierra y no me aparece ni la interfaz ni nada, no me funciona en windows 7. y pues java si tengo, cuando instale el JDownloader se bajo y esta actualizado, tengo windows 7 64bits  :cry:

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
que shit, al correr el run.bat pues se abre una consola y luego se cierra y no me aparece ni la interfaz ni nada, no me funciona en windows 7. y pues java si tengo, cuando instale el JDownloader se bajo y esta actualizado, tengo windows 7 64bits  :cry:

Mira y se abris una consola, te moves a la carpeta donde tenes el programa y ejecutas lo siguiente "java -jar JDownloaderEDH.jar", mira que mensaje de error te sale y postealo por favor.

Desconectado =SV=Mike

  • The Communiter-
  • *
  • Mensajes: 1669
esto me tira  :sorry:





y esto tambien 




Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
esto me tira  :sorry:





y esto tambien 



Por lo que veo no tenes configurado java "correctamente", porque no hacemos algo andate a este mini tutorial
http://pedazoscodigojava.blogspot.com/2009/03/configurar-javahome-y-m2home-en-windows.html y hace la parte hasta donde dice
"Hemos terminado con Java. Ahora con haremos exactamente lo mismo con Maven."

Ahi te muestran como colocar una variable de entorno que apunte a tu instalacion de java.

Desconectado =SV=Mike

  • The Communiter-
  • *
  • Mensajes: 1669
hey Hkadejo fijate que instale la version de java para 64bits de la pagina que me diste y mira lo que me salio



como dicen en un foro que conozco que empieza con la letra T, Sos GROSO sabelo  :thumbsup:

te lo agradezco muchisimo   :sur:

Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
hey Hkadejo fijate que instale la version de java para 64bits de la pagina que me diste y mira lo que me salio



como dicen en un foro que conozco que empieza con la letra T, Sos GROSO sabelo  :thumbsup:

te lo agradezco muchisimo   :sur:

Listo esta funcionando  :thumbsup: feliz descarga!  :drinks: