• Cómo publicar calendarios Owncloud en WordPress sin plugin premium

    En este artículo explico como me las he ingeniado para importar calendarios Owncloud, versión 9, hacia un WordPress 4.5 en un sistema GNU/Linux, aunque es probable que funcione en otros sistemas. Ningún pluguin gratuito de WordPress importa calendarios de Owncloud y los renderiza a día de hoy. Hasta hace poco lo hacía el pluguin All-in-one Event Calendar, pero una incompatibilidad con las últimas actualizaciones de WordPress han dejado tal característica fuera de combate. Sin embargo, este pluguin sí puede importar archivos ICS desde otro lugar de manera periódica y renderizarlos.

    Para importar los calendarios al mismo servidor donde tengo el WordPress, y mantenerlos actualizados y accesibles, he creado un script el cual Cron debe ejecutar cada cierto periodo de tiempo.

    En el script que publico, los calendarios importados estarán en la carpeta /uploads/calendarios de la instalación del WordPress, catalogados por usuario y el mismo nombre de calendario del Owncloud. En el plugin All-in-one Event Calendar, será necesario especificar la url de cada calendario importado, por ejemplo:

    http://miservidorwordpress.com/wp-contents/uploads/calendarios/usuario/calendario.ics

    Cada calendario es importado por el script al que llamo importICS.sh

    #!/bin/bash
    importICS () {
        URL="http://"$DOMAIN
        dest_dir_root="/var/www/wordpress/wp­-content/uploads/calendarios/"
        dir=$dest_dir_root$CALUSER
        [[ -d $dir ]] || mkdir $dir
        wget ­O $dir/$CALENDAR".ics" ­­auth­-no­-challenge ­­http­-user=$CALUSER ­­http­-password=$CALPASS $URL"/remote.php/dav/calendars/"$CALUSER"/"$CALENDAR"?export";
    }
    file=$1
    while IFS=, read CALUSER CALPASS CALENDAR DOMAIN
    do
        importICS
    done < $file

    El script lee un archivo CSV, delimtiado por comas, del que toma los datos del usuario y calendario a importar del owncloud. Tiene un formato como este:

    usuario1,123456,cal1,urlowncloudmidominio.com
    usuario1,123456,cal2,urlowncloudmidominio.com
    usuario2,123456,tres,urlowncloudmidominio.com

    El primer campo es el nombre del usuario del calendario, el segundo su password, el tercero el nombre del calendario y el cuarto el dominio del owncloud.

    Este archivo puede editarse fácilmente con una hoja de cálculo y exportarse como CSV delimitado por comas.

    Cron ejecuta el script periódicamente para mantener los calendarios actualizados y, en condiciones normales, sólo habrá que hacer cambios esporádicos en el archivo CSV, pero por si se quiere actualizar los calendarios a mano, el script se ha de lanzar con un sólo parámetro: el nombre del archivo CSV. Por ejemplo:

    $ sudo bash /opt/ICS/importICS.sh calendarios.csv

    Por último, tan sólo hay que añadir la tarea al Cron para que ejecute el script con la frecuencia deseada y con ello ya tenemos los calendarios accesibles para el pluguin All-in-one Event Calendar.

    No es imprescindible que los calendarios exportados desde Owncloud tengan como destino la misma máquina donde está instalado Worpress, sino que con algunas modificaciones al script pueden almacenarse en cualquier directorio al que tenga acceso el pluguin. También sería muy deseable añadir certificado SSL, aunque no lo he hecho pues ambas máquinas en mi caso se encuentran en el mismo segmento de red y no viajarán esos datos por Internet. Ténganse en cuenta también que en muchos casos los archivos ICS importados serán de acceso publico, por lo que el servidor donde estén alojados podría requerir configuraciones adicionales para limitar el acceso.

    Espero que este artículo sea de utilidad.

  • Cómo lanzar streaming Bittorrent desde Firefox

    Por viernes, 22 abril, 2016 0 , Permalink

    ¿Queréis ver una película en streaming tan sólo pulsando un enlace del navegador? ¿Queréis que, además, sea un streaming P2P en la red bittorrent?

    Muchas veces yo también he querido, por lo que he «inventado» una manera de hacerlo. Para ello utilizaremos la aplicación en javascript Peerflix, un binario que he hecho yo mismo con una explicación para su creación y el navegador Firefox.

    Preparativos

    La magia de todo la da Webtorrent, del que últimamente se está hablando mucho, sobretodo desde que comenzó a utilizarlo Netflix. Sin embargo, su primer commit fue a mediados del 2014 y hay algunas aplicaciones que lo utilizan como motor. Una de ellas es Peerflix, que permite hacer un streaming en línea de comandos pasándole algunos parámetros.

    Para este «invento» utilizo Peerflix, aunque cuando veáis la lógica de cómo monto el tema para lanzar el vídeo desde el navegador, bien podríais utilizar Webtorrent-cli e incluso un lanzador gráfico hecho por vosotros mismos.

    Otro de los artilugios que necesitaréis son los reproductores VLC o Mplayer, al menos uno de los dos.

    Peerflix es una aplicación en NodeJS, es decir, aplicaciones Javascript que para ejecutarse no necesitan un navegador, con las posibilidades que ello ofrece. Para lanzarlas necesitamos NodeJS instalado en nuestra máquina. La manera más rápida, y es válida en muchos casos, es instalarla desde los repositorios de nuetra distribución. Sería raro, raro, que no estuviera.

    sudo apt-get install nodejs

    o el equivalente en vuestra distribución.

    Ello también instalará la aplicación npm. Esta aplicación es un gestor de paquetes estilo apt, pero para aplicaciones en Nodejs. Esta será condicion si ne qua non para poder instalar Peerflix ya que ésta no existe, que yo sepa, en repositorios de distribución. Para instalarla:

    sudo npm install peerflix -g

    A partir de ahora, ya podríamos utilizarla en una línea de comandos. Yo lo he hecho mucho tiempo. Y seguiré haciéndolo cuando haga falta.

    Pero este post va de lanzarla desde un navegador, ¿No?

    Binarios para utilizarlos con Firefox

    Firefox no lanza scripts bash. Partiendo de ahí, si queremos asociar un tipo de archivo o de enlace a una aplicación, necesitamos un binario.

    Aquí he tenido que crear un script bash que cuando lo veáis al final de artículo, veréis que es muy poca cosa. Básicamente, lanza Peerflix con el magnet y abre VLC o Mplayer.

    Necesitaréis, al menos, unos de los dos archivos binarios que contiene este archivo: torrentstream.tar.gz.

    Una vez descomprimido, dispondréis de dos archivos:

    • torrentstream-vlc
    • torrentstream-mplayer

    No hace falta ser un pensador muy penetrante para darse cuenta de qué reproductor de vídeo lanzará cada uno de ellos. Estos archivos también podéis usarlos en la línea de comandos y quedaros aquí, pero me haría ilusión que lo utilicéis en el Firefox para ver las películas.

    Asociar tipo MIME en Firefox

    Lo que significa decirle a Firefox: cuando te digan que abras este archivo o este tipo de enlace, lanza la aplicación que te hayan dicho.

    Muchas de tales asociaciones ya vienen «de fábrica», pero lógicamente pueden cambiarse.

    Para asociar el tipo magnet a uno de los lanzadores que, supongo, ya os habéis descargado o estáis pensando en hacerlo, es sencillo. Si no tenéis el tipo magnet asociado a ninguna aplicación, a la hora de pulsar un enlace magnet, Firefox os preguntará si queréis asociarlo a una aplicación, en un cuadro de diálogo como éste:

    dialogo mime firefox

    En la imagen, ya tengo la aplicación torrentstream-vlc, aunque es probable que vosotros no la tengáis aún. Sobre otros clientes de Bittorrent que salen en la lista como los de Transmission, bueno; pecadores, pecadores… 🙂

    No olvidéis recordar decirle a Firefox que recuerde la elección, aunque puede cambiarse en la preferencias. Pues vale, pero ¿Cómo?

    Pues hay que ir a Preferencias -> Aplicaciones, buscáis el tipo magnet y os saldrá algo como esto:

    aplicaciones mime firefox

    La aplicación sería torrentstream-vlc o torrentstream-mplayer, a elegir.

    Y a partir de este momento, cuando hagáis un clic en un enlace magnet, se abrirá la aplicación de reproducción de vídeo de las dos que hayáis elegido. Recordad, también, que es streaming P2P, por lo que antes de empezar la reproducción habrá que esperar unos segundo hasta que tenga suficientes fuentes y llene un pequeño buffer.

    Con esto, y un apéndice, ya está hecho. Para aquellos que no se fíen de cargar cualquier binario, y por si alguien quiere hacerlo por sí o mismo o lanzar Peerflix con más opciones, a continuación explico cómo los he creado.

    Creación de binarios

    Los script bash que hecho me extrañaría mucho que sean estudiados por generaciones futuras. El de Mplayer:

    #!/bin/bash
    
    /usr/local/bin/peerflix $1 -m
    

    El de VLC:

    #!/bin/bash
    
    /usr/local/bin/peerflix $1 -v

    ¿Cómo convertirlos en binario?

    Yo he utilizado la aplicacion shc y los siguientes comandos:

    ./shc -v -r -T -f torrentstream-mplayer
    ./shc -v -r -T -f torrentstream-vlc

    Cada uno creará un archivo como torrentstream-mplayer.x que después puede ser renombrado y utilizado.

  • WebTorrent Desktop, una aplicación de streaming de vídeo y audio con Bittorrent

    Por domingo, 10 abril, 2016 0 Permalink

    De la mano del ya conocido por estos lares Feross Aboukhadijeh, nos llega Webtorrent Desktop, una aplicación Bittorrent muy sencilla para ver vídeos y escuchar audio en streaming.

    Aún está en fase beta y la interfaz es muy simple, aunque ligera y maja, en la que se deja sobre ella un archivo torrent o bien se copia un enlace magnet para comenzar la descarga.

    No depende de ningún servidor de archivos y éstos están distribuidos en la red. Tan sólo hay que pegar el enlace o el torrent y empieza la descarga.

    WebTorrent (BETA)_005

    Hace uso del módulo Webtorrent para Javascript y está embebida en Electron. Webtorrent hace conexiones en un navegador sólo través del protocolo WebRTC. Esta aplicación de escritorio puede, además, realizar conexiones TCP,  por lo que también puede hacer el streaming desde cualquier tracker público bittorrent.

    Webtorrent Desktop tiene incorporadas varias fuentes desde las que descargar películas o audio, según dice la web del proyecto:

    Whether it’s video from the Internet Archive, music from Creative Commons, or audiobooks from Librivox, you can play it right away. You don’t have to wait for it to finish downloading.

    Además de descargar a tu escritorio, también emite a través de Airplay, Chromecast y DLNA.

    fotograma bib bunny

    Para los que prefieran la línea de comandos, con Webtorrent puede utilizarse el comando webtorrent-cli o Peerflix como alternativa, para el que hice un script en Python.

    Instalación Linux Mint (y Ubuntu 64 bits)

    Una vez descargado el archivo de la aplicación, descomprimimos y lanzamos el binario Webtorrent. Y ya está.

    Es un proyecto abierto y en constante desarrollo, por lo que si quieres colaborar puedes hacerlo en su git.

     

  • Películas a la carta en línea de comandos

    Por martes, 1 diciembre, 2015 0 , Permalink

    Peerfilm es un script para ver vídeos en streaming en la red bittorrent. El script necesita Python 2.7 y depende del programa Peerflix, escrito en Nodejs. Para instalarlo:

    #npm install -g peerflix

    Una vez instalado y resueltas otras posibles dependencias, Peerfilm estará listo para utilizarse. A continuación comparto el script:

    """
       Peerfilm
    
       Author: Gustavo Moreno
       Email: gustavo@laenreadera.net
    
       Streaming P2P via bittorrent
    
       Depends on:
           - Peerflix
    
       Install Peerflix:
    
           - npm install -g peerflix
    
       This script streams films from bittorrent network. Using it is easy. Just
       enter a magnet uri in prompt or load a CSV file that contains magnet uris.
    
       CSV file is delimited by ';' and fields are:
            Title;Year;magnetURI
    
    """
    
    import subprocess
    
    class Films:
    
           def __init__(self):
              self.magnetList = []
              self.inputIsMagnetURI = False
    
    
           def selectTorrentSource(self):
              # Choose between single magnet or csv file
              sourceInput = raw_input("Enter path of CSV file or enter magnetURI: ")
    
              if 'magnet:?' in sourceInput:
                 self.inputIsMagnetURI == True
                 self.loadMangetURI(self.inputIsMagnetURI)
              else:
                 self.CSVFile = open(sourceInput,"r")
                 self.loadMagnetURI(self.inputIsMagnetURI)
    
    
           def loadMagnetURI(self, singleMagnet):
    
              if singleMagnet == True:
                 self.title = 'Streaming... '
                 self.magnetURI = source
              else:
                 self.buildListFromFile(self.CSVFile)
    
    
           def buildListFromFile(self, CSVFile):
    
              peli = []
    
              lineas = CSVFile.readlines()
              for linea in lineas:
                  peli = linea.split(";")
                  self.magnetList.append(peli)
    
    
           def userSelectFilmFromList(self):
              # Prompt user to choose a film from a given list of titles
    
              numerationOfAvailableFilms=0
              for row in self.magnetList:
                 print numerationOfAvailableFilms+1, " ", row[1], " ", row[0]
                 numerationOfAvailableFilms += 1
    
              num_peli = int(raw_input("What film do you want to watch? "))
              self.title = self.magnetList[num_peli-1][0]
              self.magnetURI = self.magnetList[num_peli-1][2]
    
    
           def streamFilm(self):
              # Launch peerflix to VLC
              # Type 'peerflix -h' in console to see available parameters
    
              print "\n\n\nStreaming... ", self.title, " \n\n\n"
              subprocess.call(['/usr/local/bin/peerflix', self.magnetURI, '-v', 'peliculas/%s'%self.title])
    
    
           def play(self):
    
              self.selectTorrentSource()
    
              if self.inputIsMagnetURI == True:
                  self.streamFilm()
              else:
                  self.userSelectFilmFromList()
                  self.streamFilm()
    
    
    film=Films()
    film.play()

    El archivo CSV está delimitado por ; y tiene los siguientes campos:

    Título;Año;Magnet

    Por ejemplo:

    EL corredor del Laberinto: Las Pruebas;2015;magnet:?xt=urn:btih:2813c7e559a98b8e11fd360c1af3773839bcc6dc&dn=El+corredor+del+laberinto-Las+pruebas+%282015%29.HDrip&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fexodus.desync.com%3A6969

    Este script lanza el reproductor VLC. Peerflix, el proceso al que llama subprocess, tiene otros parámetros como lanzar el vídeo en los reproductores omx o MPlayer.

    captura de peerflix y vlc¡Saludos!

  • Peersound

    Se acerca el Somero 2015 y ya está todo preparado. Nos esperan unos días de amistad, comidas en común, charlas y talleres. Por fin, voy a conocer a los buenos de los indianos y a otra gente de La Matriz, donde surgió la idea de alquilar un piso compartido en Gijón para esos días.

    También en La Matriz conocí a Carlos Sanmartín, un desarrollador de sistemas empotrados, músico y quién sabe qué más, e iniciamos el desarrollo de Peersound, una aplicación de intercambio P2P de archivos de tipo audio en Javascript sobre el protocolo de Bittorrent que funciona en los navegadores Firefox y Chromium y tiene un reproductor de música para escuchar las canciones.

    guitarra

    Nuestra idea es que sea útil a las productoras pequeñas y para intercambiar música efímera, como Jam Sessions. Queremos aportar a la revolución en la industria de la música distribuida.

    Peersound almacena los archivos descargados en formato blob en la base de datos del navegador IndexedDB para sembrar las semillas. Utiliza las bibliotecas Webtorrent, Localforage y Bootstrap, entre otras. Descarga canciones con un magnetlink y puede empezar a sembrar a partir de una canción que el usuario tenga en su disco diro. Guarda las listas de reproducción en un archivo .json para reproducirlas posteriormente. Si al cargar una lista de reproducción alguno de las archivos no está en la base de datos del navegador, la descarga automáticamente de otros pares, por lo que son listas idóneas para intercambiarlas entre oyentes.

    Peersound está en fase borrador. Es decir, no es una aplicación ni mucho menos terminada. La presentamos así porque la daremos a conocer informalmente en el Somero 2015 y para que os hagáis una idea de por dónde irán los tiros. Implementaremos más formatos de audio, un buscador de canciones, metadatos completos, portadas de discos y de ser posible un reproductor para conseguir el streaming sobre bittorrent, tarea nada desdeñable.

    Decir también que hace tres meses no tenía ni idea de Javascript. Para ser completamente honesto, en mi caso no soy un desarrollador profesional y la aplicación, además de los motivos mencionados más arriba, empezó siendo una excusa para iniciarme con la programación en el mundo real.

    Espero que os guste. Aquí os dejo el git, alojado en un servidor cortesía de Las Indias.

    http://bitujo.enkidu.coop/gustavo/PeerSound

    ¡Nos vemos!

  • Ciudades del compartir

    Por jueves, 24 septiembre, 2015 0 , , Permalink

    El Somero 2015 en Gijón, los próximos días del 7 al 12 de Octubre, reunirá a mentes tan preclaras y de tan alto nivel, con el nexo común de ser expertas en resiliencia, que es un evento que desafía a no ir.

    Quién, como yo, resulte perdedor del desafío, podrá escuchar charlas sobre Ostatus, desarrollo de plugins GNUSocial, movilidad y ubicuidad con Firefox OS, economía colaborativa para la reindustrialización en tiempos de crisis, el fin de la banca y alguna de sus alternativas , recuperación de ciudades en caso de desastre, entre otras, y un día dedicado al networking tomando unas sidras por la calles de Gijón, según los días que haya elegido ir.

    Si vivís por Asturias, estáis tardando en reservar entradas para ir a disfrutar de todo un evento hacker, en el sentido auténtico de la palabra. Si estáis un poco más lejos, los organizadores han conseguido interesantes descuentos en transportes. Están haciendo todo lo posible para ponéroslo difícil.

    ¿Os lo vais a perder?

    logo somero2015

  • Revolución productiva P2P

    El pasado 7 de febrero, @nat, de la Sociedad Cooperativa de las Indias Electrónicas, dio un charla TED sobre el modelo productivo P2P, o producción entre pares. Desde el Geeksphone hasta la vuvucela, se perfila un horizonte de reindustrialización apoyado en Internet y las redes distribuidas. Una exposición clara y concisa que espero no te deje indiferente.

  • Ofuscar el tráfico bittorrent: introducción breve

    El otro día un amigo, que regresó hace poco de Alemania, contó que le llegó un mensaje exigiéndole 735 euros por una descarga que realizó cuando se encontraba en aquel país. Aún no sabemos si la carta se trata de una estafa llana o de un intento de conciliación para no pasar por un juzgado cuando regrese a Alemania, pero todo apunta a que se trata de un texto jurídico. La noticia me ha hecho reafirmarme en que, quienes defendemos el intercambio libre de archivos, del contenido que sea, debemos tomar medidas para evitar que lleguen cartas como esa.

    Aunque en España las leyes vigentes no resultan demasiado invasivas contra el derecho al intercambio sin ánimo de lucro de material con copyright, pueden modificarse en cualquier momento y una acción como la de compartir, que hoy no es siquiera falta administrativa e incluso se considera virtuosa, mañana puede ser del tipo delito penal.

    Continuar Leyendo…

  • Por qué me gusta tanto GNUSocial

    Hace unas semanas leí en elbinario.net sobre una red social llamada GNUSocial. Sólo por el acrónimo recursivo de GNU, sabía de antemano que podía ser de lo más interesante, así que seguí unos enlaces e hice unas búsquedas para ver de qué va.

    Lo primero que vi: parecía una especie de Twitter libre. Pero la apariencia, como suele ocurrir, sólo era la superficie y pronto descubrí que llega más lejos y que aún puede hacerlo mucho más. Es decir, no sustituye a Twitter ni lo complementa, es otro mundo.

    Entre sus características más potentes:

    Continuar Leyendo…