SpotifyAvalInFR – Mein erstes Dropzone-Skript
Ich habe mir neulich für 14$ (oder so) mal Dropzone gegönnt. Damit bekommt man unten im Mac-Dock ein paar Icons wo man Text oder Dateien draufziehen kann und dann wird damit irgendwas gemacht. Hochgeladen, entpackt, gezippt, versendet was auch immer. Dahinter stecken im Prinzip nur Ruby-Skripte. Also hab ich mich mal dran gesetzt eins zu schreiben. Nur erstmal brauchte ich ein Problem. Das war schnell gefunden (auch wenn es eher so eins meiner kleineren Probleme im Leben ist).
Meine Freundin hat einen funktionieren Spotify-Account der auf Frankreich gestellt ist. Das ist super. Weil ich habe einen schwedischen Account und zusammen Musik hören macht Spaß. Deshalb schick ich ihr gerne diese Spotify-Links. Nun gibt es aber lustigerweise auch für manche Titel eben Beschränkungen in welchen Ländern sie abgespielt werden können und manche Links von mir funktionieren deshalb nicht. Ich dachte mir das ist doch mal eine super Sache. Ein Ruby-Skript, was eben prüft ob dieser Spotify-Track auch in Frankreich abgespielt werden darf. Und hier ist mein Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/usr/bin/ruby # Dropzone Destination Info # Name: SpotifyAvalInFR # Description: Is this track available in france? This script tells you! # Handles: NSStringPboardType # Events: Dragged # Creator: Jakob Dorn # URL: http://jakobd.de # IconURL: http://blog.fruux.com/wp-content/uploads/icn_spotify_128.png require 'uri' require 'net/http' require 'rexml/document' url = $items[0] trackid = url[-22..-1]; url = URI.parse('http://ws.spotify.com/lookup/1/?uri=spotify:track:' + trackid) xml = Net::HTTP.get url xml = REXML::Document.new(xml) territories = xml.elements["//track/album/availability/territories"] if (territories.to_s.include? 'FR') $dz.finish("track is available in fr") else $dz.finish("track is NOT available in fr") end $dz.url($items[0]) |
Und was man noch dazu sagen kann. Ich komm ja nicht vom Ruby. Hab das eigentlich erstmal in PHP geschrieben und dann versucht irgendwie in Ruby umzusetzen. Also falls wer ne bessere Idee zur Umsetzung hat, einfach kurze Mail und wird verbessert :)
