JMiur [E]

El hecho que Blogger no disponga de un alojamiento de archivos mínimo para sus usuarios nos provoca más de un problema; sobre todo, porque si bien existen otros servicios que pueden usarse, estos suelen tener problemas, circunstanciales o permanentes y, más de una vez, nos hemos visto en la necesidad de trasladar información de un lado a otro como nómadas 2.0.

Editar algunos posts es molesto, editar cien una tortura; si hay más ... garantía segura de internación en un neuropsiquiátrico.

Cuando elegimos un servicio para alojar archivos, sería bueno que verificáramos que tipo de dirección URL nos dará para esos archivos ya que, dependiendo de eso, podremos redireccionarlos de uno a otro servidor de manera sencilla, sin tener que editar cada entrada.

No importa tanto la dirección en si misma, puede ser larga o corta, lo importante es que podamos identificarlas fácilmente y que contenga el nombre del archivo.

Unos ejemplos.

esta es la dirección que provee Fileden:
http://www.fileden.com/files/XXXX/X/XX/XXXXXX/nombrearchivo

esta es la dirección que provee Google Sites:
https://sites.google.com/site/XXXXXXX/Home/nombrearchivo

esta es la que nos da el no-sabe-si-difunto Google Pages Creator:
http://XXXXXXX.googlepages.com/nombrearchivo

Lo mismo pasa con los servicios que alojan imágenes como Photobucket:
http://XXX.photobucket.com/albums/XXX/XXXXXXX/nombrearchivo

o las carpetas de SkyDrive:
http://XXXXXXX.skydrive.live.com/browse.aspx/CARPETA

Por el contrario, en el caso de SkyDrive, Picasa o el mismo Blogger, las URLs a los archivos varian aún cuando estén en "la misma carpeta" de la misma cuenta o, como en el caso de ImageShack, se le agregan caracteres aleatorios al final del nombre del archivo. Peor aún, sitios como DivShare o TynyPic generan direcciones crípticas:
http://www.divshare.com/playlist/611439-da0
http://XXX.tinypic.com/2m0adu.jpg

Siempre que tengamos alojados los archivos en servidores que nos brinden direcciones amigables como las primeras, podremos redireccionar esos archivos de manera sencilla utilizando JavaScript. Por ejemplo, imaginemos que (tal como ocurrió) mis archivos de descarga estuvieran en esta dirección:
http://XXXXXXX.googlepages.com/nombrearchivo
y luego de algún colpaso los hubiera subido a este otro servicio:
http://www.fileden.com/files/XXXX/XX/X/XXXXXXX/nombrearchivo

Para redireccionarlos, debería cambiar la primera parte de la URL y mantener el nombre intacto así que podría crear una función y colocarla antes de </head>:
<script type='text/javascript'>
//<![CDATA[
function redirArchivos(idPOST) {
var divVerificar = "post-" + idPOST;
var contenido = document.getElementById(divVerificar);
if(contenido!=null) {
var listaEnlaces = contenido.getElementsByTagName("a");
if(listaEnlaces.length>0){
for(var i=0; i<listaEnlaces.length; ++i) {
enlace = listaEnlaces[i].href;
// leo los primeros 31 caracteres de cada enlace
if(enlace.substring(0,31)=="http://XXXXXXX.googlepages.com/"){
// cambio la dirección y dejo el mismo archivo
enlace = "http://www.fileden.com/files/XXXX/XX/X/XXXXXXX/" + enlace.substring(31);
// y re-escribo la nueva dirección en el enlace        
listaEnlaces[i].href = enlace;
}
}
}
}
}
//]]>
</script>
Sólo faltaría llamar a la función y eso lo podemos hacer en el LOOP de Blogger:
<div class='post-body' expr:id='&quot;post-&quot; + data:post.id'>
<p><data:post.body/></p>
<div style='clear: both;'/> <!-- clear for photos floats -->
</div>
<script type='text/javascript'>redirArchivos(&#39;<data:post.id/>&#39;);</script>
Claro, la vida sería más sencilla si Blogger nos diera unos miserables megas para alojar archivos ...

Con el mismo criterio, podríamos resolver más cosas, problemas como el que se hablaba en la última entrada con el reproductor de Goear. Allí, el tema no pasaba por cambair al dirección URL sino adosarle un parámetro extra. Cambiar esto:

http://www.goear.com/files/external.swf?file=357e31b

por esto:

http://www.goear.com/files/external.swf?file=357e31b&autoplay=0

Usamos una función nueva para detectar, ya no el enlace sino la etiqueta EMBED y adosarle al parámetro SRC, el dato que falta:
<script type='text/javascript'>
//<![CDATA[
// ADOSAR &AUTOPLAY A GOEAR
function rewriteGOEAR(idPOST) {
var divVerificar = "post-" + idPOST;
var contenido = document.getElementById(divVerificar);
var listaObjetos = contenido.getElementsByTagName("embed");
if(listaObjetos.length>0){
for(var i=0; i<listaObjetos.length; ++i) {
url = listaObjetos[i].src;
url = url + "&autoplay=0";
listaObjetos[i].src = url;
}
}
}

//]]>
</script>
Ahora, nos falta que se ejecute la función y al igual que en los casos anteriores, buscamos las entradas y la llamamos:
<div class='post-body' expr:id='&quot;post-&quot; + data:post.id'>
<p><data:post.body/></p>
<div style='clear: both;'/> <!-- clear for photos floats -->
</div>
<script type='text/javascript'>rewriteGOEAR(&#39;<data:post.id/>&#39;);</script>
De este modo, los códigos de los posts se modificarán de manera dinámica sin que tengamos que editarlos uno por uno.

19 comentarios:

Admin  

Hola JM, ya lo probaste? Digo lo de Goear? Funciona solo con poner todo ese código y no se autoejecutan los reproductores en IE?
Supongo que si, que lo probaste algo leí por ahí, la primer parte la tengo bastante clara se pone el primer código antes de /head, pero la llamada que va en el Loop, no me quedó muy claro... a pesar que me leí todo el otro post sobre loop :O
Podrías ser mas específico sobre el sitio donde ponemos la llamada? En que parte del Loop?
Y mil gracias por las molestias!! ;)

Responder
JMiur  

Si, lo probé ... hasta donde pude :D

Para la llamada, expande los artilugios y busca esta parte:

<div class='post-body' expr:id='"post-" + data:post.id'>
<p><data:post.body/></p>
<div style='clear: both;'/> <!-- clear for photos floats -->
</div>

Va justo debajo de eso pero no es necesariamente igual a eso que he escrito; ya sabes, varía levemente con las plantillas. Pero, si busca class='post-body' lo vas a encontrar.

Cualquier problema, me mandás un mail. Ojo, si creés que no funciona, no lo saques así lo miro.

Responder
Unknown  

Paso a saludarte ayer no lo hice! :D
Hoy no puedo pensar, veré si mañana...chauuuu

Responder
Analía Alvado  

Para un garabato fundamentalista nada mejor que tener su propio servidor… estoy trabajando en ello, je, hoy me vine vestida de túnica azul soberbia. (Juro que digo la verdad)

Te admiro JMiur, sos un verdadero Maestro y yo, fiel a mi naturaleza, seguiré siendo una pésima alumna. Me amonesto y expulso del espacio virtual por unos días.

Adiós : )

Responder
José Luis Avila Herrera  

Qué tal,
Me gustaría invitarte a un concurso que estoy organizando para Bloggers y Webmasters. El premio, son $250 dólares americanos. Se trata de encontrar y resolver un problema que hay en mi blog.
En el siguiente link, todos los detalles. http://goo.gl/Zlns
Saludos.

Responder
JMiur  

Está usando las nuevas plantillas de Draft. Allí hay un detalle que no me gusta en absoluto y que es un invento de Blogger; se declara el documento así:

<!DOCTYPE html PUBLIC "null" "null">

Lo que hará que muchas cosas no funcionen.

Como lo que ocurre es que el navegador colapsa, La respuesta está en algún script porque es lo único que puede producir eso así que lo razonable es eliminar todos, inlcuyendo los de Adsense e irlos agregando de a uno hasta dar con el que produce el problema.

Responder
Gem@  

Me llevo la entrada, tenía tiempo detrás de ella :)

Responder
JMiur  

Alguna vez creo que hablamos de algo así :D Son esos recursos a los que nos obligan esos colapsos en los servicios que usamos :D

Responder
Admin  

Hola JM, lo voy a hacer mañana sin falta, pero tengo una duda, debajo de esa parte que me dijiste va el código de arriba?
O a esa parte tengo que agregarle lo que pusiste en letras lilas? Cuando digo arriba me refiero a la parte de la llamada no al script ehh, eso lo tengo claro, al menos en teoría :o
Abrazo ;)

Responder
JMiur  

En esa parte, hay dos cosas que están en lila; la superior creo que ya la tiene tu blog, si no está, la ponés; la inferior es lo que llama a al función del script.

El script en si mismo, claro, va antes de </head>

Responder
Felipe Calvo Cepeda  
Este comentario ha sido eliminado por el autor.
Responder
JMiur  

Lo conocía pero, nunca lo usé, Felipe. Será cuestión de probar.

Responder
paconle  

Se podria cambiar un link por otro?? Es decir, tengo un link en todas las entradas con una imagen de tinypic que me han borrado, y quiero sustituir 1200 entradas con ese link por la misma imagen que ya he subido a otro servidor.

Sería un simple cambio, link por link, pero de forma automatica. Se podria hacer??

Responder
JMiur  

Sí. Se podría hacer. En ese caso, más que cambair el enlace imagino que lo que quieres cambiar es la imagen para que apunte a la nueva

function redirImagen(idPOST) {
var divVerificar = "post-" + idPOST;
var contenido = document.getElementById(divVerificar);
if(contenido!=null) {
var listaImagenes = contenido.getElementsByTagName("img");
if(listaImagenes.length>0){
for(var i=0; iredirImagen(&#amp;39;<data:post.id/>&#39;);</script>

Todo esto dicho un poco en el aire ya que no sé cuál es el ejemplo concreto.

Lo que sí te aconsejo es, para evitar esos problemas, usar el CSS. Por ejemplo si estás colcoando algo así:

<a href="xxxxxxxxxxxx">
<img src="MI_IMAGEN">
</a>

en el fututo, puedes cambairlo así:

<a class="ejempo" href="xxxxxxxxxxxx"></a>

y usar este tipo de regla de estilo en la palntilla:

a.ejemplo {
display:block;
background: transparent url(MI_IMAGEN) no-repeat left top;
width: ANCHOpx;
height; ALTOpx;
}

y de ese modo, cualquier cambio, sólo deberías hacerlo en la platilla una vez para que se aplicara a todas las entradas donde usaras ese tipo de enlaces.

Responder
paconle  

A ver, te cuento...

El blog es de descarga de videos. En cada entrada tenia una imagen con el icono de Megaupload y otra imagen con el logo de Rapidshare. Cada entrada suele ser un video, por lo que la gente si pincha el logo de cada hosting se descarga el video. El problema es que esas imagenes estaban en tinypic, y al borrarlas, ahora aparece un logo con la imagen de tinypic dicendo que han borrado la imagen.

He subido los logos directamente al blog, y lo que iba haciendo es editando cada entrada, y en modo html cambiando el link de tinypic por el de blogger. El problema es que hay mas de 1200 entradas.

Seria algo asi como cambiar este enlace: http://i35.tinypic.com/okn03b.jpg que es el que me han borrado y aparece en cada entrada, por este: http://2.bp.blogspot.com/_s0fiGBcEJ1k/TRtbgpYWduI/AAAAAAAAGlM/S8m2hvqMDAM/s400/MU.jpg

Si se puede hacer automaticamente me evitarias entrar en el neuropsiquiátrico ;)

Responder
JMiur  

OK. Es l oque me imaginaba así que puedes usar esa variante de la función que puse en el comentario anterior y aplciarla del mismo modo. Lo que hace es justamente eso, lee el post y cambia el atributo SRC de las imágenes que tengan una URL (la vieja) por otra URL (la nueva): Basta que coloques ambos datos y debería funcionar.

Cualquier cosa, unavez que hagas eso, i hay un problema, me dices donde verlo y me fijo pero, no deberías tener haber problemas.

Responder
paconle  

Pues nada, no he conseguido hacerlo funcionar.

Mira, este es un ejemplo:

http://capturasyvideosdefamosas.blogspot.com/search/label/Cristina%20Pedroche?updated-max=2011-01-13T00%3A48%3A00%2B01%3A00&max-results=20

Tendria que cambiar el icono que ahora aparece el logo de tinypic por el logo que he subido a mi cuenta de blogger.

El link de tinypic que me han borrado es: http://i35.tinypic.com/okn03b.jpg

Y tendría que sustituirlo por: http://2.bp.blogspot.com/_s0fiGBcEJ1k/TRtbgpYWduI/AAAAAAAAGlM/S8m2hvqMDAM/s400/MU.jpg

Hay 2 iconos más que tendria que cambiar automaticamente, pero imagino que viendo como se cambia este, a los otros habría que hacerles lo mismo.

Responder
JMiur  

Yo veo estos dos íconos:
http://2.bp.blogspot.com/_s0fiGBcEJ1k/TRtbgpYWduI/AAAAAAAAGlM/S8m2hvqMDAM/s400/MU.jpg
http://1.bp.blogspot.com/_s0fiGBcEJ1k/TRim0Hj-8wI/AAAAAAAAGh0/9_ZGOM3QZSY/s400/logoFS.jpg
no veo colocado ningún script.

Responder
Arsenio Lupín  

Al final, luchando logré que funcionara.

Resulta que de un día para el otro, mediafire cambio algo dentro de sus links y lo que antes era válido con: "http://www.mediafire.com/file/" ahora lo es con "http://www.mediafire.com/?" por lo que muchísimos links de muchos post dejaron de funcionar.

Dejo como modifiqué la función por si alguno le sirve:

function redirArchivos(idPOST) {
var divVerificar = "post-" + idPOST;
var contenido = document.getElementById(divVerificar);
if(contenido!=null) {
var listaEnlaces = contenido.getElementsByTagName("a");
if(listaEnlaces.length>0){
for(var i=0; i

Con eso me funcionó, muchas gracias!

Responder

¿Quiere dejar un comentario?

recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...

Nota: sólo los miembros de este blog pueden publicar comentarios.

Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.

Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...

 
CERRAR