From: Ben Beltran Date: Sat, 6 Oct 2012 06:54:23 +0000 (-0500) Subject: Remove the old lyricly. X-Git-Url: https://git.r.bdr.sh/rbdr/lyricli.rb/commitdiff_plain/ad84791b951f4ebdfae9c6bf0a54244a8b5c8f16?hp=--cc Remove the old lyricly. --- ad84791b951f4ebdfae9c6bf0a54244a8b5c8f16 diff --git a/lrc.rb b/lrc.rb deleted file mode 100755 index 496d73b..0000000 --- a/lrc.rb +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/env ruby -w - -require 'rubygems' -require 'uri' -require 'net/http' -require 'multi_json' -require 'nokogiri' -require 'open-uri' - -# This shit causes a lot of warnings. Quick Hack. -original_verbosity = $VERBOSE -$VERBOSE = nil -require 'rdio' -$VERBOSE = original_verbosity - -class Lyricli - - def initialize - @artist = ARGV[0] - @song = ARGV[1] - - @rdio_key = "sddac5t8akqrzh5b6kg53jfm" - @rdio_secret = "PRcB8TggFr" - @token_path = File.expand_path("~/.rdio_token") - - #Expand the symlink and get the path - if File.symlink?(__FILE__) then - path = File.dirname(File.readlink(__FILE__)) - else - path = File.dirname(__FILE__) - end - - # Get the current rdio track - @rdio = init_rdio - rdio_track - - #Get the current iTunes track - current = `osascript #{path}/current_song.scpt` - if current and not current.empty? then - current = current.split("<-SEP->") - @artist ||= current[0] - @song ||= current[1] - end - end - - def init_rdio - - if File.exists?(@token_path) - f = File.new(@token_path, "r") - begin - token = MultiJson.decode(f.read) - rescue - token = create_rdio_token - end - else - token = create_rdio_token - end - - Rdio::SimpleRdio.new([@rdio_key, @rdio_secret], token) - end - - def rdio_track - u = @rdio.call('currentUser', {'extras' => "lastSongPlayed"}) - @artist ||= u["result"]["lastSongPlayed"]["artist"] - @song ||= u["result"]["lastSongPlayed"]["name"] - end - - def create_rdio_token - rdio = Rdio::SimpleRdio.new([@rdio_key, @rdio_secret]) - puts "Go To This URL To Authorize App:" - auth_url = rdio.begin_authentication('oob') - puts auth_url - `open #{auth_url}` - print "Please type the authorization code: " - auth_code = gets.chomp - token = rdio.complete_authentication(auth_code) - - f = File.new(@token_path, "w") - f.print(MultiJson.encode(token)) - f.close - - token - end - - def exit_with_error - abort "Usage: #{$0} artist song" - end - - def get_lyrics - - #Use the API to search - uri = URI("http://lyrics.wikia.com/api.php?artist=#{self.sanitize_param @artist}&song=#{self.sanitize_param @song}&fmt=realjson") - begin - res = Net::HTTP.get(uri) - res = MultiJson.decode(res) - - #Get the actual lyrics url - doc = Nokogiri::HTML(open(res['url'])) - node = doc.search(".lyricbox").first - rescue - abort "Lyrics not found :(" - end - - #Remove the rtMatcher nodes - node.search(".rtMatcher").each do |n| - n.remove - end - - #Maintain new lines - node.search("br").each do |br| - br.replace "\n" - end - - #Retrieve the lyrics - puts node.inner_text - end - - def check_params - self.exit_with_error if @artist.nil? or @artist.empty? - self.exit_with_error if @song.nil? or @song.empty? - end - - def sanitize_param(p) - URI.encode_www_form_component(p.gsub(/ /, "+")).gsub("%2B", "+") - end -end - - -lrc = Lyricli.new -lrc.check_params -lrc.get_lyrics