Inside the box

y0no's blog

Découverte d'ODEM, Typescript et NodeJS

25 January 2013

Bien le bonjour,

Derrière ce titre un peu large se cache en fait un article fourre tout dans lequel je vais pouvoir vous présenter les quelques travaux que j'ai effectué récemment.

Présentation

Commençons par planter le décor, tout d'abord ODEM kézako ? Comme une vidéo vaut mieux que de longues phrases.

Il s'agit donc d'une démonstration lancé par google il y a quelques jours permettant d'interagir sur un profil google+ grâce à son téléphone.Vous pouvez d'ailleurs vous même tester cette interface à l'adresse odem.chromeexperiments.com (pas besoin de compte pour essayer).

Ensuite qu'est ce que TypeScript ? Il s'agit d'un langage créé par Microsoft permettant d'écrire du code qui sera ensuite "compilé" en JavaScript. Rien de bien nouveau, il s'agit d'un concurrent de CoffeeScript mais qui, à mon humble avis semble plus lisible. De plus c'est opensource, simple à apprendre, donc pourquoi s'en priver ? La documentation du langage est disponible ici.

Enfin Node.JS... Ai-je vraiment besoin de le présenter ? Il s'agit d'une technologie permettant de faire tourner du javascript côté serveur de façon légère, le tout supportant tout un tas de modules, tel que Socket.IO. Comme ce n'est pas vraiment l’intérêt de cet article de vous présenter Node.JS, je vous laisse visiter le site officiel.

Quel rapport entre ces trois technologies me dirai vous ? Et bien j'ai voulu voir comment fonctionnait ODEM et si il était possible pour un noob du développement web tel que moi de reproduire ce type de système. Comme je voulais apprendre le langage TypeScript à ce moment là, je me suis dis que ça me ferai une bonne occasion. Forcément pour pouvoir interfacer le mobile tactile avec l'écran de présentation, Node.JS me semblait un très bon choix, et ce serai encore une fois une bonne occasion de faire quelques lignes de plus en TypeScript.

... [Lire la suite]

Soundcloud Downloader

26 August 2012

Bien le bonsoir !

Ça commençait à faire un bout de temps que je n'avais pas poster sur ce site un petit script alakon permettant de jouer les vilains pirates voleurs de musique ! Je vais donc rectifier la chose ce soir en vous proposant un script python permettant de télécharger les sons d'une page soundcloud, c'est bien entendu largement améliorable, mais pour une chose pondue vite fait mal fait c'est déjà pas mal ;)

Le script récupère tout les titres disponibles sur une page soundcloud, les enregistre sur l'ordinateur au format auteur-titre.mp3 et la banane sur le kiwi, tag le mp3 pour qu'on puisse le retrouver facilement dans son lecteur multimédia préféré !

A noter que la librairie mutagen permettant le tag des mp3 à la volée n'est pas fournie avec python, donc pour que le script fonctionne sans soucis il suffit de commenter la partie tagging ;)

Voici donc le bousin :

# Name:    Soundcloud Download
# Version: 0.1
# Author:  y0no (Based on n0wz soundcloud Downloader)

import os
import sys
import urllib2
import re
import json

from mutagen.mp3 import EasyMP3
from urllib import urlretrieve

def affichemenu():
    print ("-----------------------(DOWNLOAD)-----------------------")
    print ("USAGE: %s [url]" % (sys.argv[0]))
    print ("EXEMPLE: %s http://soundcloud.com/dexisfeelingbad\n" % (sys.argv[0]))

def main(argv):

    if len(sys.argv) >= 2:
            sURL = sys.argv[1]
            oURL = urllib2.urlopen(sURL)
            sPage = oURL.read()
            sTracksList = re.findall("window.SC.bufferTracks.push\((.*?)\)", sPage)
            if sTracksList:
                for sTrack in sTracksList:
                    sTrack = json.loads(sTrack)
                    sName = sTrack['title']
                    sAuthor = sTrack['user']['username']
                    sLink = sTrack['streamUrl']
                    sFile = os.getcwd() + "/" + sAuthor + " - " + sName + ".mp3"

                    print("\nAuthor: %s"   % (sAuthor))
                    print("Name:   %s" % (sName))
                    print("Link:   %s"   % (sLink)) 
                    print("Download... :"),
                    urlretrieve(sLink, sFile)
                    print("Done")

                    ####### id3tag (optional) #######
                    song = EasyMP3(sFile)
                    song['title'] = sName
                    song['artist'] = sAuthor
                    song['album'] = "SoundCloud"
                    song.save()
                    ##################################
            else:
                print("\nNo track found...")
    else:
        affichemenu()


if __name__ == "__main__":
    main(sys.argv[1:])