domingo, marzo 29, 2009

Mostrar AdSense sólo cuando el usuario viene de Google en ASP.NET

Es bastante común hoy en día encontrarnos con sitios que muestran publicidad de AdSense sólo a los usuarios que llegan a través de Google.

Por eso se me ocurrió hacer esto mismo pero de la forma más sencilla posible. Nada de estilo refinado en este caso, simplemente lo más fácil de implementar.

Así nació este User WebControl llamado refererAdSense contenido todo en un solo archivo .ascx. Seguramente el código puede ser mejorado o escrito con un poco más de estilo, sin embargo esto es lo que hice:

El WebControl comienza con una propiedad “AdPosition” que usaremos para identificar el código de AdSense que se debe mostrar. Un método booleano “UserFromGoogle” que devuelve true si encuentra la cadena “.google.” en el referer del request.

Por último, un simple SWITCH donde pondremos todos los códigos AdSense de nuestro sitio.

Para poder usar este User WebControl, simplemente lo copiamos en una carpeta (por ejemplo “/controls”) y, donde queremos la publicidad ponemos el tag “register” al principio de la página:

<%@ Register Src="~/controls/refererAdSense.ascx" TagName="refererAdSense" TagPrefix="rad" %>

Y finalmente ponemos el TAG correspondiente donde queremos la publicidad de AdSense:

<rad:refererAdSense AdPosition="topBanner" runat="server" />

Como valor de la propiedad “AdPosition” ponemos el nombre que identifica al bloque de AdSense del archivo .ascx.

Les dejo el refererAdSense.asxc para que lo bajen.

Etiquetas:

miércoles, febrero 04, 2009

Simulando streaming de video Flash FLV con ASP.NET

Esta solución permite reproducir video Flash FLV tal como lo hace YouTube.com de forma que podemos adelantar el video aún cuando no se haya descargado la parte que queremos ver.

La verdadera solución se encuentra en kfra de donde podremos descargar la solución tanto para .NET 1.1 como 2.0.

Pero para los que no podemos hacer modificaciones en el servidor IIS o (como yo) son amantes de las soluciones sencillas, no intrusivas y contenidas en una sola página es que armé esta versión.

Se trata de una página ASPX llamada getFlv.aspx que simplemente copiamos en nuestro sitio web e invocamos desde Flash con 2 parametros:
- v: para el nombre del video. Si comienza con “/” será el path relativo al root del sitio. Si no comienza con “/” buscará a partir del lugar donde se encuentre esta página.
- start: para indicar el byte a partir del cual quieren reproducir el video. Si no le pasamos nada, entonces devolverá el video completo.

Ejemplos:
  • http://misitio.dominio.com/videos/getFlv.aspx?v=video.flv (simplemente traerá el video ubicado en la mísma carpeta que getFlv.aspx)
  • http://misitio.dominio.com/videos/getFlv.aspx?v=/video.flv (traerá el video desde el root del sitio)
  • http://misitio.dominio.com/videos/getFlv.aspx?v=nuevos/video.flv&start=580014 (traerá el video desde la carpeta "nuevos" ubicada en la misma carpeta que getFlv.aspx y lo entregará a partir del byte 580014)
Hay que tener en cuenta que esta página ASPX lo único que hace es devolver el video FLV a partir del byte indicado por parámetro. El resto dependerá del player.

En la el mismo post de kfra hay un player que pueden usar, pero si quieren desarrollar uno ustedes, deberán tener en cuenta que, para poder reproducir el video, deben pasar un start que coincida con un Key Frame. Para esto deben buscar en la metadata del streaming donde encontrarán dos arrays, Times y FilePositions. No todos los FLV contienen esta metadata y en estos casos deberán usar alguna aplicación para agregarla.

Aquí les dejo el link a getFlv.aspx.

Por supuesto que todo el crédito es de kfra. Yo sólo hice uso de la programación orientada al copy-paste.

Saludos

Etiquetas: , ,