; Vince y el mundo del software

miércoles, 25 de diciembre de 2013

Descargar cursos de coursera y dejarlos como a mi me gusta

Tras encontrar el script para descargar cursos de edx, encontré otro para cursos de coursera. Dejo acá el link a la página, recuerden instalarlo con pip, que es más fácil; ahí mismo sale la info.
Para usarlo basta con leer la información; pero para no dejar tan pelado este post, les doy una ayuda en español:
Para descargar un curso:
$ coursera-dl -u <correo electrónico> -p <password> -n "txt" <dirección curso>
el -n "txt" es para ignorar los txt, es opcional, pero yo lo uso porque no quiero que me descargue los txt.
La dirección del curso es la última parte de la url. La url de un curso es de la forma:
https://class.coursera.org/<dirección curso>
por ejemplo:
https://class.coursera.org/insidetheinternet-003
entonces la "dirección curso" es: insidetheinternet-003
Más información y para ayuda:
$ coursera-dl -h

Todo bien ahí. Pero el problema es que descarga cada video en una carpeta separada, junto a los subtitulos, ppt, pdf, etc. Pero personalmente me gusta tener todos los videos de una semana juntos, junto a su subtitulo correspondiente.
Para lograr eso, creé un script en bash, que mueve los .mp4 y .srt a la carpeta anterior.
Para ilustrarlos, al usar el script "coursera-dl" queda de la siguiente forma:

dirección curso
├── Semana 1
│   ├── Video 1 Semana 1
│   │   ├── Diapos Video1 Semana 1.pdf
│   │   ├── Diapos Video1 Semana 1.ppt
│   │   ├── Video1 Semana1.mp4
│   │   └── Video1 Semana1.srt
│   ├── Video 2 Semana 1
│   │   ├── Diapos Video2 Semana 1.pdf
│   │   ├── Diapos Video2 Semana 1.ppt
│   │   ├── Video2 Semana1.mp4
│   │   └── Video2 Semana1.srt
├── Semana 2
│   ├── Video 1 Semana 2
│   │   ├── Diapos Video1 Semana 2.pdf
│   │   ├── Diapos Video1 Semana 2.ppt
│   │   ├── Video1 Semana2.mp4
│   │   └── Video1 Semana2.srt
 etc...

 Luego de usar mi script, queda así:

dirección curso
├── Semana 1
│   ├── Video 1 Semana 1
│   │   ├── Diapos Video1 Semana 1.pdf
│   │   └── Diapos Video1 Semana 1.ppt
│   ├── Video 2 Semana 1
│   │   ├── Diapos Video2 Semana 1.pdf
│   │   └── Diapos Video2 Semana 1.ppt
│   ├── Video1 Semana1.mp4
│   ├── Video1 Semana1.srt
│   ├── Video2 Semana1.mp4
│   └── Video2 Semana1.srt
├── Semana 2
│   ├── Video 1 Semana 2
│   │   ├── Diapos Video1 Semana 2.pdf
│   │   └── Diapos Video1 Semana 2.ppt
│   ├── Video1 Semana2.mp4
│   └── Video1 Semana2.srt
 etc...

El script es bastante sencillo, y se los dejo En este link. Además, lo dejo acá para que lo vean. Pueden modificarlo para sus propósitos personales:

#!/bin/bash
IFS=$'\x0A'$'\x0D'
salida=$(ls -F | grep /)
for carpetai in $salida
do
 cd $carpetai
 find -regextype posix-egrep -regex ".*(mp4|srt)$" |xargs -I{lecciones} mv "{lecciones}" .
 cd ..
done

sábado, 21 de diciembre de 2013

Ver la duración total de una lista de reproducción en linux con VLC

Hola nuevamente, hoy es por partida doble!
Resulta que quería poder saber la duración total de un conjunto de videos sin tener que sumarlos uno a uno, ya que eran muchos (más de cien descargados con edx-dl.py, vean la entrada anterior).
Busqué y busqué y lo único que encontraba era que en el nuevo Windows Media player se podía... ¡Pero yo uso Linux! Intenté instalar el WMP pero fue peor, ni con crossover ni con wine pude hacerlo.
Así que busqué en inglés en google, y me encontré con un addon para el vlc que da justamente esa funcionalidad.
El link está en esta dirección. Y acá el link de respaldo (arreglado) (por si viene un tornado y destruye los servidores de vlc).
Para hacerlo funcionar deben hacer lo siguiente:
-Copiar el texto y pegarlo en un documento de texto con el nombre "playlistduration.lua" (sin el ".txt"). Si lo hacen desde pastebin, recordar copiarlo desde el "RAW Paste Data".
-Luego, si están en linux, copian el archivo a:
/home/<usuario>/.local/share/vlc/lua/extensions/
A mi me quedó así:
/home/vincegeratorix/.local/share/vlc/lua/extensions/playlistduration.lua
Y violá. Luego lo único que tienen que hacer es en una lista de reproducción, clickar el menú "Ver" y luego en  "Playlist Duration", y verán la duración total.

Descargar videos de edx y más

Alerta: El script de edx-downloader ha sido actualizado y no es compatible con la versión mostrada acá, por lo que la versión de acá no funciona ahora. Este post tiene sólo fines históricos. No me he dado el tiempo de modificar el script nuevo, y nada presagia que lo haga, al menos en el futuro cercano.

Hola, dejé botado este blog un tiempo, y es que no había mucho que contar. Pero acá estoy de vuelta.
El tema de ahora es simple: Resulta que soy un ávido seguidor de los moocs (Cuando me queda tiempo libre), dígase coursera, udacity, edx, y en español, miríadax.
En Coursera se puede descargar el material fácilmente, lo cual me sirve para verlo en mi tablet mientras viajo, o cuando no tengo internet o lo estoy usando para otra cosa. Sin embargo, el resto de páginas no tiene una forma fácil de descargar el material, al menos no a simple vista. Eso hasta que me encontré con el edx-dl.py, un script en python para descargar vídeos con sus subtitulos respectivos, de los cursos que uno está inscrito, y las semanas que uno escoga (Poniéndole números consecutivos de dos dígitos). Dejo el script en Este Link, y como respaldo, Acá también en pastebin; aunque recomiendo usar el link original para darle más descargas al autor. Para descargarlo de la web del autor deben hacer un clone al git del autor, para ello, pon en la consola (en linux):
git clone https://github.com/shk3/edx-downloader.git
Debes tener instalado git.
El script es muy bueno, pero le encontré cosas que no me gustaron:
Cuando uno está descargando, y de repente falla, se apaga el pc, se corta la conexión, etc, hay que empezar de nuevo el script, poniendo el usuario, contraseña, y esperar que cargue toda la información (si son muchas lecciones puede tardar varios minutos). Claro que los vídeos y subtítulos descargados no los descarga nuevamente, pero sí que los revisa uno por uno (al igual que mi script).
¿Mi solución? Pues estuve metiéndole mano al script y logré lo siguiente:
-Un script para descargar los subtítulos solamente, ya sea de youtube como de edx, con los números consecutivos de 3 dígitos. Además muestra en consola todos los links de youtube.
-Otro script que toma un archivo con los links de youtube y los descarga con las opciones que uno le especifique, y con los correspondientes números consecutivos de 3 dígitos.
Dejo En Este Link el script para los subtitulos con los números consecutivos.
Y En Este Otro Link el otro script para descargar de youtube los videos con los números consecutivos.
Para ejecutar cualquiera, deben tipear en la consola:
python "nombre del script"
En "nombre del script" basta arrastrar el script si es que usan un emulador de consola que permita el drag and drop.
Espero les sirva, saludos!

jueves, 1 de agosto de 2013

Cómo cambiar la dirección MAC en linux fácilmente

Bueno, hace un tiempo que no escribía acá, y qué mejor que con un minituto. Espero más adelante en otro artículo contar mis andanzas con python y kivy durante el tiempo de paro de actividades en mi universidad.
Pero vamos a lo que nos concierne:

¿Qué es una dirección MAC?
En palabras sencillas (lo cual es tónica de este blog), es una dirección formada por 48 bits que identifica a la tarjeta de red. La dirección MAC es única para cada tarjeta de red, y está grabada por hardware, de manera que nunca habrán dos tarjetas de red con la misma dirección MAC.
Eso a nivel de hardware, porque en software todo se puede cambiar; y eso veremos ahora, pero primero:

¿Por qué cambiar la dirección MAC?
Pues porque con ella te identificas en la red, y cambiándola te puedes hacer pasar por otro quedando tú en el anonimato.
Otra razón es para pasar por alto los filtros de bloqueo por dirección MAC. Esto es cuando en un router te bloquean la dirección para que no accedas a internet desde ese punto. Esto puede ser una realidad cuando accedes a una red wifi que no es tuya. Con esto quiero decir que estoy totalmente en contra de usar puntos de acceso a internet en los que no estás autorizado.

Bueno, vamos a los pasos:
Lo primero es saber a cuál interfaz le quieres cambiar la dirección MAC, para lo cual basta con introducir el siguiente comando:
$ ifconfig
El cual te listará las interfaces. Yo personalmente tengo 3, las cuales son: "eth0" que es la conexión por cable (el cable rj45, cable de red); luego está "lo" que es la red local de linux; y luego "wlan0" la cual es la interfaz de wifi.
A un lado del nombre aparecen tabuladas las características de la interfaz tales como la ip, lo subido y bajado, y en la primera verás: "direcciónHW" y a un lado una serie de números y letras.
En realidad las letras también son números, ya que están codificados en base 16, pero eso es tema aparte. El asunto es que esos números son tu dirección MAC, y eso son los que cambiaremos (por software). Recuerda que cada vez que reinicies el pc volverá la dirección MAC de fábrica; punto a tener en consideración.

Lo primero que tienes que hacer es apagar la interfaz; esto se hace como root (recordad que el signo peso representa comandos en modo usuario y el gato en modo root), y es el siguiente comando:
# ifconfig <interfaz> down
ejemplo:
# ifconfig wlan0 down

Luego de apagarla procedes a cambiarle la MAC address. para ello basta con el siguiente comando:
# ifconfig <interfaz> hw ether <dirección>
 un ejemplo sería:
# ifconfig wlan0 hw ether 03:a0:04:d3:00:11

Sin embargo uno comúnmente va a querer cambiarle a una dirección MAC aleatoria, para lo cual estar variando siempre los números no tiene mucho sentido. Para hacer ésto vamos a usar el programa "macchanger"
Primero instala el programa con tu gestor de paquetes preferido, en ubuntu sería algo como:
# apt-get install macchanger
si quieres instalar la versión en gtk (personalmente no me gusta, además si tienes un error te lo mostrará en consola y no en interfaz por lo que no tiene mucho sentido instalarla) puedes instalar también  el paquete "macchanger-gtk"

Bien, una vez instalado el programa macchanger, y apagada la interfaz, procedemos a cambiarle la mac address; para lo cual basta con:
# macchanger -r <interfaz>
ejemplo:
# macchanger -r wlan0
Así de simple.

Ahora procedemos a prender nuestra interfaz con:
# ifconfig <interfaz> up

¡Y es todo!
Apéndice:
Si usas una tarjeta wifi Ralink (como la que yo uso), asegúrate de no estar usando el kernel 3.8.0, porque -al menos en ubuntu- en el módulo viene desactivada la función de cambiar la mac address, a lo cual te mandará un error de "argumento inválido". Personalmente me pasé a la versión 3.10 y no tengo problema.

Recuerda que si no quieres pasar de usuario a cada rato, puedes usar el comando "sudo" antes de los comandos especificados en este tutorial para los casos en que se requiera ser root (donde sale el gato o almohadilla).

¡Y eso es todo! Recuerda comentar ante cualquier duda o comentario (gracias capitán obvio).

sábado, 15 de junio de 2013

Experiencia en linux, mi hermano, y ArchLinux

Yo empecé a usar Linux por allá en el año 2009, en marzo precisamente, justo al empezar mi tercero medio (son 4 años la enseñanza media y luego la universidad).
Lo conocí a través de un chat, donde decía que quería ser lammer, y me recomendaron linux.
Tras varios meses de investigación, y luego de convencerlo e instalarle ubuntu a mi hermano cuando se iba a la universidad, decidí yo emprender en Linux. Y la "distro" elegida fue "Debian".
Estuve alrededor de un año usando debian, para luego cambiarme a ubuntu y luego fedora.
Después, a mediados de mi cuarto medio, decidí emprender en ArchLinux, la distro que seguía como "natural" al proceso de mi adopción linuxera.
Me demoré 3 dias en instalarlo y dejarlo "usable" con interfaz gráfica, programas, etc. No sin antes haber pasado varias semanas leyendo completamente todos los manuales habidos y por haber y videos para instalar y configurar ArchLinux.
Pero cuando entré a la universidad a estudiar informática, pensé que no iba a tener suficiente tiempo para "mantenerlo", y decidí cambiarme a Fedora.
Eso hasta un par de meses, donde volví a ubuntu, el que uso actualmente con Mate.
Pero quedémonos en ArchLinux...
Esta distro, cuando yo la instalé, venía con un instalador en ncurses, es decir sin usar nunca un mouse y sin "ventanas" tal como las conocemos; sino que texto y colores.
Luego de instalarla, te enfrentas a una consola, nada más que una pantalla negra con letras blancas donde dice "login" invitándote a ingresar. Sin embargo sólo viene con usuario "root" o administrador, con el cual debemos crear un usuario nosotros.
Después de crear el usuario viene la parte dura: Instalar y configurar todo el sistema gráfico, todo a mano.
Después de tener todo configurado y listo para usar,  hay que preocuparse de actualizar; y es que con Arch tendrás muchas actualizaciones diarias.
Con cada paquete actualizado, vienen "comentarios" en la terminal. Algunos dicen dependencias opcionales, como plugins y cosas por el estilo para darle más funcionalidad; otros en cambio, dicen cosas como "debes cambiarle el nombre al archivo <archivo> a <archivo2>" (en inglés obviamente). Ignorar aquellas advertencias puede ser fatal para tu computador, y es que ignorarlas puede recaer en que la aplicación no funcione (como pasa la mayoría de las veces), o funcionar mal. Eso no sería tan trágico si fuera el juego de buscaminas o ajedrez, pero si es un programa inherente al sistema operativo, como por ejemplo el núcleo, puede ser fatal, al punto de no poder volver a entrar.
Y eso es porque la filosofía de Arch se podría resumir en "para qué hacer parches si lo pueden hacer los mismos usuarios".
A veces, las menos, se les olvida poner el mensaje o se dan cuenta de un error después de publicado el programa en la base de datos. En esos casos NUNCA hay que hacer lo que a uno se le ocurra, sino hay que buscar en los foros de Arch por una solución.
Uno de esos errores se enfrentó mi hermano, y lo que hizo fue forzar la instalación, a pesar de errores. ¿Qué le pasó? Le quedó inutilizable.
De eso pasó mucho tiempo, donde sólo usaba windows; por flojera. Ahora que tiene tiempo libre se puso a repararlo. ¿Resultado? Noches en vela, y error tras error. Apoyado en su tablet para buscar soluciones y manuales.

Con todo esto no quiero decir que Arch es un mal sistema operativo, y creo firmemente que quien quiera aprender realmente a usar linux, y a conocerlo "por dentro", lo más recomendable y "rápido" es usar ArchLinux.
En ArchLinux te obligan a tener "buenas costumbres" al momento de usar un pc. Éstas son leer la documentacion, los manuales, las advertencias, y todo aquello que un usuario común le da a "siguiente" sin leer. Y te lo enseña de la manera más cruda que puede haber: dejándote inutilizable el programa, y con una solución muchas veces muy difícil que  pasa por -comunmente- reinstalarlo (cosa difícil si es un programa necesario para el funcionamiento del sistema operativo).
Considero que cualquiera que quiera aprender realmente a usar linux, y saber administrarlo, debería usar Arch -o tal vez gentoo- y saber cómo funcionan las cosas por dentro, no depender de las interfaces gráficas, y manejarse fluidamente en un entorno Linux.

Mi hermano no lo instaló por eso, sino por su -a mi parecer, a lo menos "raro" y "con poco sentido"- afán de poder modificar y configurar todo. Y ahí está, modificándolo y configurándolo todo.

En todo caso, insisto encarecidamente a no usar Arch si no se tiene una experiencia más o menos acabada en linux, sin manejarse en la consola, o sin haber leído los manuales y tenerlos impresos, o una fuente fácil y rápida de accederlos.

sábado, 18 de mayo de 2013

Montar fácilmente tablets y celulares que usan mtpfs

Me regalaron un tablet, y lo primero que quise hacer fue conectarlo al pc para poder copiarle archivos.
En windows 7 no tuve mayor problema, el sistema encontró y descargó automáticamente los controladores y todo funcionó bien (salvo que cuando copio un formato "no soportado" pregunta si quiero copiarlo, pero lo copia al fin y al cabo).
En linux -fedora- no hubo caso. Me lo montó automáticamente como monta cualquier cosa, y me quedó una carpeta que referenciaba a la misma (¿Carpeta-ception?).
Busqué manuales, y encontré éste, el cual era para la tablet que yo tenía (acer a500). Al principio me funcionó, aunque me preguntaba cuando intentaba copiar un formato "no soportado", le ponía que copie y listo.
El problema vino cuando después de una actualización ya no me dejaba copiar los archivos no soportados. Simplemente daba error y paraba.
Busqué y busqué y encontré el gmtp y programas parecidos. Funcionaban bien y uno podía hacer de todo; el gran problema fue su lentitud. Y es que demoraba varios minutos en responder, en los foros decían que era propio de mtp.
Buscando y buscando, llegué a la solución. Fue simple, acá os explico:
Primero instalan el programa "simple-mtpfs" de los repos. Si no está, buscan el adecuado a su distro (como me cambié a ubuntu, y en ubuntu no estaba, lo encontré en launchpad).
Luego conectan el tablet y arrancan el siguiente comando:

$ simple-mtpfs CARPETA

donde "CARPETA" es la carpeta que ustedes elegirán como punto de montaje, puede ser cualquiera, yo uso una en home y listo.
Luego para desmontar corren el comando:

$ fusermount -u CARPETA

Eso es si conectan un solo dispositivo que use mtp, en caso de usar más dispositivos conectados, tienen que especificar cuál conectarán, para ello recomiendo leerse la ayuda del comando;

$ simple-mtpfs -h

Eso es todo, y así pueden copiar/mover/eliminar/etc cualquier tipo de archivo, de cualquier extensión, y sin largas esperas.
Como dice el nombre, el "simple-mtpfs" no es más que una configuración típica del programa mtpfs, si quieres usar configuraciones "no típicas" tendrían que meterse a usar mtpfs y fuse; pero para uso cotidiano, esto estaría bien.
Recordar que si lo instalan no de los repos en distros debian-based, luego del "dpkg -i paquete", corren "apt-get -f install" para solucionar las dependencias.

sábado, 11 de mayo de 2013

Transformar mp4 a mp3 en masa en Linux

Buenas. Me he encontrado con un pequeño problema. Y es que tenía que convertir unos archivos de video MP4 a formato MP3 (extraer el audio y convertirlo a mp3 básicamente).
Lo primero que pensé fue usar ffmpeg, pero me encontré que estaba "deprecated" (descontinuado), así que busqué en google.
Me encontré con este post, pero sólo resolvía el problema de convertir 1 solo archivo; y yo necesitaba convertir una carpeta llena de muchos archivos mp4 a mp3.
Luego me encontré con este otro post, el cual convierte los mp4 a mp3, pero usa ffmpeg, el cual ya no sirve.
Así que lo que hice fue "combinar" ambos scripts en uno solo. El cual les dejo en este link de pastebin.
Para ejecutarlo, lo guardan en un archivo de texto, le ponen extensión .sh y lo ejecutan en la carpeta que contiene los archivos .mp4.
El algoritmo NO es recursivo (no entra a las subcarpetas).
Eso, y ojalá les sirva.
Si tiene un problema, miren los comentarios en los posts originales, ahí se dedican a solucionar posibles problemas.
este script deja los mp3 en la misma carpeta, para moverlos fácilmente ejecuten:
$ mv *.mp3 /carpeta/destino
Saludos.