metallum-cli 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.gitignore +12 -0
 - data/Gemfile +4 -0
 - data/README.md +37 -0
 - data/Rakefile +1 -0
 - data/bin/metallum-cli +8 -0
 - data/lib/metallum-cli.rb +9 -0
 - data/lib/metallum-cli/app.rb +128 -0
 - data/lib/metallum-cli/configuration.rb +24 -0
 - data/lib/metallum-cli/helpers/album.rb +63 -0
 - data/lib/metallum-cli/helpers/artist.rb +54 -0
 - data/lib/metallum-cli/helpers/band.rb +125 -0
 - data/lib/metallum-cli/helpers/client.rb +62 -0
 - data/lib/metallum-cli/helpers/url.rb +20 -0
 - data/lib/metallum-cli/version.rb +3 -0
 - data/metallum-cli.gemspec +38 -0
 - metadata +131 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8584b27cfece9e7a35e1478575dbcf0039d00065
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f2a39ec7d6bc1dd136c6e55eb8afcc3de84a2660
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a101a606d234f04f6fa0a4d3c1a1d6b1526826c8fa41dd2cf2da9afce8de638c2298291664c27e95217be7f0db52a9abaab328d6ec018a57fa4363d80ad11917
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a8f1808ecec2fbdc0fb54c463672b9f19ba524ecd5d2d13fca6c2cd02eb18ce9a554e3f9bc1a01be8f59533679ac37005aed04e4697e672e2e95732dbabc401c
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Metallum-CLI
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            A simple gem to search for artists, albums and get more info about any content at [Metal Archives](http://www.metal-archives.com)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            This script allows you to perform basic searches at metal-archives.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            To show basic infor about a band:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ```
         
     | 
| 
      
 12 
     | 
    
         
            +
            metallum-cli BAND
         
     | 
| 
      
 13 
     | 
    
         
            +
            ```
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            To show its discography:
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ```
         
     | 
| 
      
 18 
     | 
    
         
            +
            metallum-cli BAND --discography all|main|demos|lives|misc
         
     | 
| 
      
 19 
     | 
    
         
            +
            ```
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            For band mambers:
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            ```
         
     | 
| 
      
 24 
     | 
    
         
            +
            metallum-cli BAND --members
         
     | 
| 
      
 25 
     | 
    
         
            +
            ```
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            To show similar bands:
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
| 
      
 30 
     | 
    
         
            +
            metallum-cli BAND --similar
         
     | 
| 
      
 31 
     | 
    
         
            +
            ```
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            To output band's related links: (passing w/o parameters show all links)
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            ```
         
     | 
| 
      
 36 
     | 
    
         
            +
            metallum-cli BAND --links official|merchandise|unofficial|labels|tablatures
         
     | 
| 
      
 37 
     | 
    
         
            +
            ```
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "bundler/gem_tasks"
         
     | 
    
        data/bin/metallum-cli
    ADDED
    
    
    
        data/lib/metallum-cli.rb
    ADDED
    
    
| 
         @@ -0,0 +1,128 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'base64'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'metallum-cli/helpers/album'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'metallum-cli/helpers/artist'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'metallum-cli/helpers/band'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'metallum-cli/helpers/client'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'metallum-cli/helpers/url'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'nokogiri'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'thor'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            module MetallumCli
         
     | 
| 
      
 11 
     | 
    
         
            +
              class App < Thor
         
     | 
| 
      
 12 
     | 
    
         
            +
            		package_name 'metallum-cli'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                desc "config", "Create config and edit with $EDITOR"
         
     | 
| 
      
 15 
     | 
    
         
            +
                def config
         
     | 
| 
      
 16 
     | 
    
         
            +
                  Configuration.save
         
     | 
| 
      
 17 
     | 
    
         
            +
                  if !ENV['EDITOR'].to_s.empty? && !ENV['EDITOR'].nil?
         
     | 
| 
      
 18 
     | 
    
         
            +
                    exec "$EDITOR #{ENV['HOME']}/.metallumcli"
         
     | 
| 
      
 19 
     | 
    
         
            +
                  else
         
     | 
| 
      
 20 
     | 
    
         
            +
                    puts "$EDITOR is not set. Please type your editor:"
         
     | 
| 
      
 21 
     | 
    
         
            +
                    editor = STDIN.gets.chomp
         
     | 
| 
      
 22 
     | 
    
         
            +
                    exec "#{editor} #{ENV['HOME']}/.metallumcli"
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                desc "album", "Search for an album"
         
     | 
| 
      
 27 
     | 
    
         
            +
                option :reviews, :type => :boolean
         
     | 
| 
      
 28 
     | 
    
         
            +
                def album(*album)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  result = Client.get_json Url.ALBUM album.join "_"
         
     | 
| 
      
 30 
     | 
    
         
            +
                  if result["aaData"].length > 1
         
     | 
| 
      
 31 
     | 
    
         
            +
                    puts "Your search returned the following albums:\n"
         
     | 
| 
      
 32 
     | 
    
         
            +
                    result["aaData"].each_with_index do |r, i|
         
     | 
| 
      
 33 
     | 
    
         
            +
                      album = Nokogiri::HTML(r[0]).css('a').inner_html
         
     | 
| 
      
 34 
     | 
    
         
            +
                      puts "#{i+1} -> #{album} | #{r[2]}\n"
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                    puts "Select a album number:"
         
     | 
| 
      
 37 
     | 
    
         
            +
                    choice = STDIN.gets.chomp
         
     | 
| 
      
 38 
     | 
    
         
            +
                    album = Nokogiri::HTML(result["aaData"][choice.to_i - 1][1]).css('a')
         
     | 
| 
      
 39 
     | 
    
         
            +
                    album.map{ |link|
         
     | 
| 
      
 40 
     | 
    
         
            +
                      Album.show_album_page(Client.get_url(link['href']), options[:reviews])
         
     | 
| 
      
 41 
     | 
    
         
            +
                    }
         
     | 
| 
      
 42 
     | 
    
         
            +
                    # Client.get_url album
         
     | 
| 
      
 43 
     | 
    
         
            +
                  elsif result["aaData"].length == 1
         
     | 
| 
      
 44 
     | 
    
         
            +
                    album = Nokogiri::HTML(result["aaData"][0][1]).css('a')
         
     | 
| 
      
 45 
     | 
    
         
            +
                    album.map{ |link|
         
     | 
| 
      
 46 
     | 
    
         
            +
                      Album.show_album_page(Client.get_url(link['href']), options[:reviews])
         
     | 
| 
      
 47 
     | 
    
         
            +
                    }
         
     | 
| 
      
 48 
     | 
    
         
            +
                  else
         
     | 
| 
      
 49 
     | 
    
         
            +
                    puts "No reults found"
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                desc "artist", "Search for an artist"
         
     | 
| 
      
 54 
     | 
    
         
            +
                option :band
         
     | 
| 
      
 55 
     | 
    
         
            +
                def artist(*artist)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  result = Client.get_json Url.ARTIST artist.join "_"
         
     | 
| 
      
 57 
     | 
    
         
            +
                  if result["aaData"].length > 1
         
     | 
| 
      
 58 
     | 
    
         
            +
                    puts "Your search returned the following artists:\n"
         
     | 
| 
      
 59 
     | 
    
         
            +
                    result["aaData"].each_with_index do |r, i|
         
     | 
| 
      
 60 
     | 
    
         
            +
                      artist = Nokogiri::HTML(r[0]).css('a').inner_html
         
     | 
| 
      
 61 
     | 
    
         
            +
                      puts "#{i+1} -> #{artist} | #{r[2]} | #{r[1]}\n"
         
     | 
| 
      
 62 
     | 
    
         
            +
                    end
         
     | 
| 
      
 63 
     | 
    
         
            +
                    puts "Select a artist number:"
         
     | 
| 
      
 64 
     | 
    
         
            +
                    choice = STDIN.gets.chomp
         
     | 
| 
      
 65 
     | 
    
         
            +
                    artist = Nokogiri::HTML(result["aaData"][choice.to_i - 1][0]).css('a')
         
     | 
| 
      
 66 
     | 
    
         
            +
                    artist.map{ |link|
         
     | 
| 
      
 67 
     | 
    
         
            +
                      Artist.show_artist_page(Client.get_url(link['href']), options[:band])
         
     | 
| 
      
 68 
     | 
    
         
            +
                    }
         
     | 
| 
      
 69 
     | 
    
         
            +
                    # Client.get_url artist
         
     | 
| 
      
 70 
     | 
    
         
            +
                  elsif result["aaData"].length == 1
         
     | 
| 
      
 71 
     | 
    
         
            +
                    artist = Nokogiri::HTML(result["aaData"][0][0]).css('a')
         
     | 
| 
      
 72 
     | 
    
         
            +
                    artist.map{ |link|
         
     | 
| 
      
 73 
     | 
    
         
            +
                      Artist.show_artist_page(Client.get_url(link['href']), options[:band])
         
     | 
| 
      
 74 
     | 
    
         
            +
                    }
         
     | 
| 
      
 75 
     | 
    
         
            +
                  else
         
     | 
| 
      
 76 
     | 
    
         
            +
                    puts "No reults found"
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                desc "band BAND NAME", "Search for a band"
         
     | 
| 
      
 81 
     | 
    
         
            +
                option :discography
         
     | 
| 
      
 82 
     | 
    
         
            +
                option :members
         
     | 
| 
      
 83 
     | 
    
         
            +
                option :similar, :type => :boolean
         
     | 
| 
      
 84 
     | 
    
         
            +
                option :links
         
     | 
| 
      
 85 
     | 
    
         
            +
                def band(*band)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  result = Client.get_json Url.BAND band.join "_"
         
     | 
| 
      
 87 
     | 
    
         
            +
                  if result["aaData"].length > 1
         
     | 
| 
      
 88 
     | 
    
         
            +
                    puts "Your search returned the following bands:\n"
         
     | 
| 
      
 89 
     | 
    
         
            +
                    result["aaData"].each_with_index do |r, i|
         
     | 
| 
      
 90 
     | 
    
         
            +
                      band = Nokogiri::HTML(r[0]).css('a').inner_html
         
     | 
| 
      
 91 
     | 
    
         
            +
                      puts "#{i+1} -> #{band} | #{r[2]} | #{r[1]}\n"
         
     | 
| 
      
 92 
     | 
    
         
            +
                    end
         
     | 
| 
      
 93 
     | 
    
         
            +
                    puts "Select a band number:"
         
     | 
| 
      
 94 
     | 
    
         
            +
                    choice = STDIN.gets.chomp
         
     | 
| 
      
 95 
     | 
    
         
            +
                    band = Nokogiri::HTML(result["aaData"][choice.to_i - 1][0]).css('a')
         
     | 
| 
      
 96 
     | 
    
         
            +
                    band.map{ |link|
         
     | 
| 
      
 97 
     | 
    
         
            +
                      Band.show_band_page(Client.get_url(link['href']), options[:discography], options[:members], options[:similar], options[:links])
         
     | 
| 
      
 98 
     | 
    
         
            +
                    }
         
     | 
| 
      
 99 
     | 
    
         
            +
                    # Client.get_url band
         
     | 
| 
      
 100 
     | 
    
         
            +
                  elsif result["aaData"].length == 1
         
     | 
| 
      
 101 
     | 
    
         
            +
                    band = Nokogiri::HTML(result["aaData"][0][0]).css('a')
         
     | 
| 
      
 102 
     | 
    
         
            +
                    band.map{ |link|
         
     | 
| 
      
 103 
     | 
    
         
            +
                      Band.show_band_page(Client.get_url(link['href']), options[:discography], options[:members], options[:similar], options[:links])
         
     | 
| 
      
 104 
     | 
    
         
            +
                    }
         
     | 
| 
      
 105 
     | 
    
         
            +
                  else
         
     | 
| 
      
 106 
     | 
    
         
            +
                    puts "No reults found"
         
     | 
| 
      
 107 
     | 
    
         
            +
                  end
         
     | 
| 
      
 108 
     | 
    
         
            +
                end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                desc "additions", "Latest additions"
         
     | 
| 
      
 111 
     | 
    
         
            +
                def created
         
     | 
| 
      
 112 
     | 
    
         
            +
                  result = Client.get_json Url.CREATED
         
     | 
| 
      
 113 
     | 
    
         
            +
                  # File.write "out.json", result
         
     | 
| 
      
 114 
     | 
    
         
            +
                  result["aaData"].each do |r|
         
     | 
| 
      
 115 
     | 
    
         
            +
                    band = Nokogiri::HTML(r[1]).css('a').inner_html
         
     | 
| 
      
 116 
     | 
    
         
            +
                    country = Nokogiri::HTML(r[2]).css('a').inner_html
         
     | 
| 
      
 117 
     | 
    
         
            +
                    user = Nokogiri::HTML(r[5]).css('a').inner_html
         
     | 
| 
      
 118 
     | 
    
         
            +
                    puts "Band: #{band}"
         
     | 
| 
      
 119 
     | 
    
         
            +
                    puts "Country: #{country}"
         
     | 
| 
      
 120 
     | 
    
         
            +
                    puts "Genre: #{r[3]}"
         
     | 
| 
      
 121 
     | 
    
         
            +
                    puts "Added by user #{user} at #{r[4]}"
         
     | 
| 
      
 122 
     | 
    
         
            +
                    puts "\n"
         
     | 
| 
      
 123 
     | 
    
         
            +
                  end
         
     | 
| 
      
 124 
     | 
    
         
            +
                  puts "Total results: #{result["iTotalDisplayRecords"]}"
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
              end
         
     | 
| 
      
 128 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 2 
     | 
    
         
            +
            module MetallumCli
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Configuration
         
     | 
| 
      
 4 
     | 
    
         
            +
                attr_accessor :lang
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                CONFIG_FILE = "#{ENV['HOME']}/.metallumcli"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                def defaults
         
     | 
| 
      
 9 
     | 
    
         
            +
                  self.lang ||= 'en'
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def self.instance
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @instance ||= File.exists?(CONFIG_FILE) ? load_yml() : new.tap(&:defaults)
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def self.load_yml
         
     | 
| 
      
 17 
     | 
    
         
            +
                  YAML.load_file(CONFIG_FILE)
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def self.save
         
     | 
| 
      
 21 
     | 
    
         
            +
                  File.open(CONFIG_FILE, 'w+') { |f| f.write(instance.to_yaml) }
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,63 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module MetallumCli
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Album
         
     | 
| 
      
 3 
     | 
    
         
            +
                
         
     | 
| 
      
 4 
     | 
    
         
            +
                def self.show_album_page(html, reviews)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  # File.write 'out.html', html
         
     | 
| 
      
 6 
     | 
    
         
            +
                  page = Nokogiri::HTML(html)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  album_values = {}
         
     | 
| 
      
 8 
     | 
    
         
            +
                  album_keys = {0 => "Type", 1 => "Release date", 2 => "Catalog ID", 3 => "Label", 4 => "Format", 5 => "Reviews"}
         
     | 
| 
      
 9 
     | 
    
         
            +
                  page.css('div#album_info dd').each_with_index do |item, index|
         
     | 
| 
      
 10 
     | 
    
         
            +
                    album_values[album_keys[index]] = item.content.strip.split.join " "
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  puts "\n\n////#{page.css('h1.album_name').first.content}\\\\\\\\"
         
     | 
| 
      
 13 
     | 
    
         
            +
                  album_values.each do |k, v|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    puts "#{k}: #{v}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                  if reviews
         
     | 
| 
      
 17 
     | 
    
         
            +
                    show_album_reviews page.css('table#review_list')
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def self.show_album_reviews(res)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  reviews = []
         
     | 
| 
      
 23 
     | 
    
         
            +
                  single_review = []
         
     | 
| 
      
 24 
     | 
    
         
            +
                  links = []
         
     | 
| 
      
 25 
     | 
    
         
            +
                  album_keys = {0 => "Year", 1 => "Name", 2 => "Role"}
         
     | 
| 
      
 26 
     | 
    
         
            +
                  a = 0
         
     | 
| 
      
 27 
     | 
    
         
            +
                  res.css("td[nowrap=nowrap] a").each do |link|
         
     | 
| 
      
 28 
     | 
    
         
            +
                    links.push link['href']
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  res.css("td[nowrap=nowrap]").remove
         
     | 
| 
      
 31 
     | 
    
         
            +
                  res.css("td").each_with_index do |review, index|
         
     | 
| 
      
 32 
     | 
    
         
            +
                    i = (index + 4) % 4
         
     | 
| 
      
 33 
     | 
    
         
            +
                    single_review.push review.content.strip.split.join " "
         
     | 
| 
      
 34 
     | 
    
         
            +
                    if i == 3
         
     | 
| 
      
 35 
     | 
    
         
            +
                      reviews.push single_review
         
     | 
| 
      
 36 
     | 
    
         
            +
                      single_review = []
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  p reviews
         
     | 
| 
      
 40 
     | 
    
         
            +
                  puts "\n\n////Bands\\\\\\\\"
         
     | 
| 
      
 41 
     | 
    
         
            +
                  reviews.each_with_index do |review,i|
         
     | 
| 
      
 42 
     | 
    
         
            +
                    puts "#{i + 1} -> #{review.join " - "}"
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  print "Select the review of your choice, or press any other key to exit: "
         
     | 
| 
      
 45 
     | 
    
         
            +
                  choice = STDIN.gets.chomp
         
     | 
| 
      
 46 
     | 
    
         
            +
                  if choice.to_i > 0
         
     | 
| 
      
 47 
     | 
    
         
            +
                    show_album_review links[choice.to_i - 1]
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
                
         
     | 
| 
      
 51 
     | 
    
         
            +
                def self.show_album_review(url)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  page = Nokogiri::HTML Client.get_url url
         
     | 
| 
      
 53 
     | 
    
         
            +
                  puts "\n"
         
     | 
| 
      
 54 
     | 
    
         
            +
                  puts page.css('h3.reviewTitle').first.content.strip.split.join " "
         
     | 
| 
      
 55 
     | 
    
         
            +
                  puts "\n"
         
     | 
| 
      
 56 
     | 
    
         
            +
                  puts page.css('a.profileMenu').first.parent.content.strip.split.join " "
         
     | 
| 
      
 57 
     | 
    
         
            +
                  puts "\n"
         
     | 
| 
      
 58 
     | 
    
         
            +
                  puts page.css('div.reviewContent').first.content.strip.split.join " "
         
     | 
| 
      
 59 
     | 
    
         
            +
                  puts "\n"
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
              
         
     | 
| 
      
 63 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,54 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module MetallumCli
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Artist
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def self.show_artist_page(html, band)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  # File.write 'out.html', html
         
     | 
| 
      
 6 
     | 
    
         
            +
                  page = Nokogiri::HTML(html)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  artist_values = {}
         
     | 
| 
      
 8 
     | 
    
         
            +
                  biography = []
         
     | 
| 
      
 9 
     | 
    
         
            +
                  artist_keys = {0 => "Location", 1 => "Age", 2 => "Place of origin", 3 => "Gender"}
         
     | 
| 
      
 10 
     | 
    
         
            +
                  page.css('div#member_info dl dd').each_with_index do |item, index|
         
     | 
| 
      
 11 
     | 
    
         
            +
                    artist_values[artist_keys[index]] = item.content.strip.split.join " "
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                  page.css('div.band_comment').css(".title_comment").remove
         
     | 
| 
      
 14 
     | 
    
         
            +
                  page.css('div.band_comment').each do |item|
         
     | 
| 
      
 15 
     | 
    
         
            +
                    biography.push item.content.strip.split.join " "
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  puts "\n\n////#{page.css('h1.band_member_name').first.content}\\\\\\\\"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  artist_values.each do |k, v|
         
     | 
| 
      
 19 
     | 
    
         
            +
                    puts "#{k}: #{v}"
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  biography.each do |bio|
         
     | 
| 
      
 22 
     | 
    
         
            +
                    puts bio
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                  if band
         
     | 
| 
      
 25 
     | 
    
         
            +
                    show_artist_bands page, band
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                def self.show_artist_bands(res, param)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  bands = []
         
     | 
| 
      
 31 
     | 
    
         
            +
                  album = []
         
     | 
| 
      
 32 
     | 
    
         
            +
                  album_keys = {0 => "Year", 1 => "Name", 2 => "Role"}
         
     | 
| 
      
 33 
     | 
    
         
            +
                  a = 0
         
     | 
| 
      
 34 
     | 
    
         
            +
                  res.css("div#artist_tab_#{param} div.ui-tabs-panel-content div.member_in_band").each do |band|
         
     | 
| 
      
 35 
     | 
    
         
            +
                    bands.push band.css("h3.member_in_band_name").inner_text
         
     | 
| 
      
 36 
     | 
    
         
            +
                    band.css('table tr td').each_with_index do |item, index|
         
     | 
| 
      
 37 
     | 
    
         
            +
                      i = (index + 3) % 3
         
     | 
| 
      
 38 
     | 
    
         
            +
                      album.push "#{album_keys[i]}: #{item.content.strip.split.join " "}"
         
     | 
| 
      
 39 
     | 
    
         
            +
                      if i == 2
         
     | 
| 
      
 40 
     | 
    
         
            +
                        bands.push album
         
     | 
| 
      
 41 
     | 
    
         
            +
                        album = []
         
     | 
| 
      
 42 
     | 
    
         
            +
                        a += 1
         
     | 
| 
      
 43 
     | 
    
         
            +
                      end
         
     | 
| 
      
 44 
     | 
    
         
            +
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  puts "\n\n////Bands\\\\\\\\"
         
     | 
| 
      
 47 
     | 
    
         
            +
                  bands.each do |band|
         
     | 
| 
      
 48 
     | 
    
         
            +
                    puts band
         
     | 
| 
      
 49 
     | 
    
         
            +
                    puts "\n"
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
                
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,125 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module MetallumCli
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Band
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def self.show_band_page(html, discography, members, similar, links)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  # File.write 'out.html', html
         
     | 
| 
      
 6 
     | 
    
         
            +
                  page = Nokogiri::HTML(html)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  band_values = {}
         
     | 
| 
      
 8 
     | 
    
         
            +
                  band_keys = {0 => "Country", 1 => "Location", 2 => "Status", 3 => "Active since", 4 => "Genre", 5 => "Theme", 6 => "Label", 7 => "Years active"}
         
     | 
| 
      
 9 
     | 
    
         
            +
                  page.css('div#band_stats dd').each_with_index do |item, index|
         
     | 
| 
      
 10 
     | 
    
         
            +
                    band_values[band_keys[index]] = item.content.strip.split.join " "
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  puts "\n\n////#{page.css('h1.band_name').first.content}\\\\\\\\"
         
     | 
| 
      
 13 
     | 
    
         
            +
                  band_values.each do |k, v|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    puts "#{k}: #{v}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                  if discography
         
     | 
| 
      
 17 
     | 
    
         
            +
                    sel = 0
         
     | 
| 
      
 18 
     | 
    
         
            +
                    case discography
         
     | 
| 
      
 19 
     | 
    
         
            +
                      when 'all' then sel = 1
         
     | 
| 
      
 20 
     | 
    
         
            +
                      when 'main' then sel = 2
         
     | 
| 
      
 21 
     | 
    
         
            +
                      when 'lives' then sel = 3
         
     | 
| 
      
 22 
     | 
    
         
            +
                      when 'demos' then sel = 4
         
     | 
| 
      
 23 
     | 
    
         
            +
                      when 'misc' then sel = 5
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                    page.css("div#band_disco ul li:eq(#{sel}) a").map { |link|
         
     | 
| 
      
 26 
     | 
    
         
            +
                      show_band_discography link['href']
         
     | 
| 
      
 27 
     | 
    
         
            +
                    }
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                  if members
         
     | 
| 
      
 30 
     | 
    
         
            +
                    show_band_members page, members
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  if similar
         
     | 
| 
      
 33 
     | 
    
         
            +
                    page.css("div#band_tab_discography").map do |prev_elem|
         
     | 
| 
      
 34 
     | 
    
         
            +
                      prev_elem.previous_element.css('li:eq(4) a').map do |link|
         
     | 
| 
      
 35 
     | 
    
         
            +
                        show_similar_bands "#{link['href']}?showMoreSimilar=1#Similar_artists"
         
     | 
| 
      
 36 
     | 
    
         
            +
                      end
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  if links
         
     | 
| 
      
 40 
     | 
    
         
            +
                    sel = ''
         
     | 
| 
      
 41 
     | 
    
         
            +
                    case links
         
     | 
| 
      
 42 
     | 
    
         
            +
                      when 'official' then sel = 'Official'
         
     | 
| 
      
 43 
     | 
    
         
            +
                      when 'merchandise' then sel = 'Official_merchandise'
         
     | 
| 
      
 44 
     | 
    
         
            +
                      when 'unofficial' then sel = 'Unofficial'
         
     | 
| 
      
 45 
     | 
    
         
            +
                      when 'labels' then sel = 'Labels'
         
     | 
| 
      
 46 
     | 
    
         
            +
                      when 'tablatures' then sel = 'Tablatures'
         
     | 
| 
      
 47 
     | 
    
         
            +
                    end
         
     | 
| 
      
 48 
     | 
    
         
            +
                    page.css("div#band_tab_discography").map do |prev_elem|
         
     | 
| 
      
 49 
     | 
    
         
            +
                      prev_elem.previous_element.css('li:eq(5) a').map do |link|
         
     | 
| 
      
 50 
     | 
    
         
            +
                        show_band_links link['href'], sel
         
     | 
| 
      
 51 
     | 
    
         
            +
                      end
         
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                def self.show_band_discography(url)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  res = Nokogiri::HTML Client.get_url url
         
     | 
| 
      
 58 
     | 
    
         
            +
                  discography = []
         
     | 
| 
      
 59 
     | 
    
         
            +
                  discog_keys = {0 => "Name", 1 => "Type", 2 => "Year", 3 => "Reviews"}
         
     | 
| 
      
 60 
     | 
    
         
            +
                  res.css('tbody tr').each do |album|
         
     | 
| 
      
 61 
     | 
    
         
            +
                    album.css('td').map.with_index do |item, index|
         
     | 
| 
      
 62 
     | 
    
         
            +
                      discography.push "#{discog_keys[index]}: #{item.content.strip.split.join " "}"
         
     | 
| 
      
 63 
     | 
    
         
            +
                    end
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                  puts "\n\n////Albums\\\\\\\\"
         
     | 
| 
      
 66 
     | 
    
         
            +
                  discography = Client.format_array discography, discog_keys
         
     | 
| 
      
 67 
     | 
    
         
            +
                  discography.each do |album|
         
     | 
| 
      
 68 
     | 
    
         
            +
                    puts album
         
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
                  # discography.each_with_index do |album, i|
         
     | 
| 
      
 71 
     | 
    
         
            +
                  #   i += 1
         
     | 
| 
      
 72 
     | 
    
         
            +
                  #   puts "#{album}"
         
     | 
| 
      
 73 
     | 
    
         
            +
                  #   puts "\n" if i % 4 == 0
         
     | 
| 
      
 74 
     | 
    
         
            +
                  # end
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                def self.show_band_members(page, param)
         
     | 
| 
      
 78 
     | 
    
         
            +
                  members = [[],[],[]]
         
     | 
| 
      
 79 
     | 
    
         
            +
                  member_keys = {0 => "Name", 1 => "Instrument", 2 => "Bands"}
         
     | 
| 
      
 80 
     | 
    
         
            +
                  page.css("div#band_tab_members_#{param} div table tr td").each_with_index do |member, i|
         
     | 
| 
      
 81 
     | 
    
         
            +
                    members[i] = member.content.strip.split.join " "
         
     | 
| 
      
 82 
     | 
    
         
            +
                  end
         
     | 
| 
      
 83 
     | 
    
         
            +
                  puts "\n\n////Members\\\\\\\\"
         
     | 
| 
      
 84 
     | 
    
         
            +
                  members = Client.format_array members, member_keys
         
     | 
| 
      
 85 
     | 
    
         
            +
                  members.each do |member|
         
     | 
| 
      
 86 
     | 
    
         
            +
                    puts member
         
     | 
| 
      
 87 
     | 
    
         
            +
                  end
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
                
         
     | 
| 
      
 90 
     | 
    
         
            +
                def self.show_similar_bands(url)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  res = Nokogiri::HTML Client.get_url url
         
     | 
| 
      
 92 
     | 
    
         
            +
                  bands = []
         
     | 
| 
      
 93 
     | 
    
         
            +
                  band_keys = {0 => "Name", 1 => "Country", 2 => "Genre"}
         
     | 
| 
      
 94 
     | 
    
         
            +
                  res.css('tbody tr td').each do |band|
         
     | 
| 
      
 95 
     | 
    
         
            +
                    bands.push band.content.strip.split.join " "
         
     | 
| 
      
 96 
     | 
    
         
            +
                  end
         
     | 
| 
      
 97 
     | 
    
         
            +
                  puts "\n\n////Similar bands\\\\\\\\"
         
     | 
| 
      
 98 
     | 
    
         
            +
                  bands = Client.format_array bands, band_keys
         
     | 
| 
      
 99 
     | 
    
         
            +
                  bands.each do |band|
         
     | 
| 
      
 100 
     | 
    
         
            +
                    puts band
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
                
         
     | 
| 
      
 104 
     | 
    
         
            +
                def self.show_band_links(url, param)
         
     | 
| 
      
 105 
     | 
    
         
            +
                  res = Nokogiri::HTML Client.get_url url
         
     | 
| 
      
 106 
     | 
    
         
            +
                  links = []
         
     | 
| 
      
 107 
     | 
    
         
            +
                  link_keys = {0 => "Name", 1 => "Country", 2 => "Genre"}
         
     | 
| 
      
 108 
     | 
    
         
            +
                  if param.eql? ""
         
     | 
| 
      
 109 
     | 
    
         
            +
                    res.css("table tr td a").each do |link|
         
     | 
| 
      
 110 
     | 
    
         
            +
                      links.push "#{link['title'].sub("Go to: ","")}: #{link['href']}"
         
     | 
| 
      
 111 
     | 
    
         
            +
                    end
         
     | 
| 
      
 112 
     | 
    
         
            +
                  else
         
     | 
| 
      
 113 
     | 
    
         
            +
                    res.css("table#linksTable#{param.capitalize} tr td a").each do |link|
         
     | 
| 
      
 114 
     | 
    
         
            +
                      links.push "#{link['title'].sub("Go to: ","")}: #{link['href']}"
         
     | 
| 
      
 115 
     | 
    
         
            +
                    end
         
     | 
| 
      
 116 
     | 
    
         
            +
                  end
         
     | 
| 
      
 117 
     | 
    
         
            +
                  puts "\n\n////Links\\\\\\\\"
         
     | 
| 
      
 118 
     | 
    
         
            +
                  links = Client.format_array links, link_keys
         
     | 
| 
      
 119 
     | 
    
         
            +
                  links.each do |link|
         
     | 
| 
      
 120 
     | 
    
         
            +
                    puts link
         
     | 
| 
      
 121 
     | 
    
         
            +
                  end
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
                
         
     | 
| 
      
 124 
     | 
    
         
            +
              end
         
     | 
| 
      
 125 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'metallum-cli/configuration'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'net/http'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'json'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module MetallumCli
         
     | 
| 
      
 6 
     | 
    
         
            +
              class Client
         
     | 
| 
      
 7 
     | 
    
         
            +
                SITE_URL = "http://www.metal-archives.com"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def self.lang
         
     | 
| 
      
 10 
     | 
    
         
            +
                  Configuration.instance.lang
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def self.get(path)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  uri = URI("#{SITE_URL}/#{path}")
         
     | 
| 
      
 15 
     | 
    
         
            +
                  req = Net::HTTP::Get.new(uri)
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  res = Net::HTTP.start(uri.hostname, uri.port) {|http|
         
     | 
| 
      
 18 
     | 
    
         
            +
                    http.request(req)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  }
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  res
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def self.get_url(path)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  uri = URI(path)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  req = Net::HTTP::Get.new(uri)
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  res = Net::HTTP.start(uri.hostname, uri.port) {|http|
         
     | 
| 
      
 29 
     | 
    
         
            +
                    http.request(req)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  }
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  res.body
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def self.get_json(path)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # puts "#{SITE_URL}/#{path}"
         
     | 
| 
      
 37 
     | 
    
         
            +
                  json_results "#{SITE_URL}/#{path}"
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                def self.json_results(url)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  response = Net::HTTP.get_response(URI.parse(url))
         
     | 
| 
      
 42 
     | 
    
         
            +
                  data = response.body
         
     | 
| 
      
 43 
     | 
    
         
            +
                  JSON.parse(data)
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
                
         
     | 
| 
      
 46 
     | 
    
         
            +
                def self.format_array(arr, indexes)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  unique = indexes.length
         
     | 
| 
      
 48 
     | 
    
         
            +
                  formatted = []
         
     | 
| 
      
 49 
     | 
    
         
            +
                  aux = []
         
     | 
| 
      
 50 
     | 
    
         
            +
                  arr.each_with_index do |e, i|
         
     | 
| 
      
 51 
     | 
    
         
            +
                    aux.push e
         
     | 
| 
      
 52 
     | 
    
         
            +
                    if(i > 0 && i % unique == unique-1)
         
     | 
| 
      
 53 
     | 
    
         
            +
                      # aux[-1] += "\n\n"
         
     | 
| 
      
 54 
     | 
    
         
            +
                      formatted.push aux
         
     | 
| 
      
 55 
     | 
    
         
            +
                      aux = []
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                  formatted
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module MetallumCli
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Url
         
     | 
| 
      
 3 
     | 
    
         
            +
                
         
     | 
| 
      
 4 
     | 
    
         
            +
                def self.CREATED
         
     | 
| 
      
 5 
     | 
    
         
            +
                  "archives/ajax-band-list/selection/#{Time.now.year}-#{Time.now.month.to_s.rjust(2,'0')}/by/created//json/1?sEcho=1&iColumns=6&sColumns=&iDisplayStart=0&iDisplayLength=200&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2&mDataProp_3=3&mDataProp_4=4&mDataProp_5=5&iSortCol_0=4&sSortDir_0=desc&iSortingCols=1&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true"
         
     | 
| 
      
 6 
     | 
    
         
            +
                end
         
     | 
| 
      
 7 
     | 
    
         
            +
                
         
     | 
| 
      
 8 
     | 
    
         
            +
                def self.BAND(band)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  "search/ajax-band-search/?field=name&query=#{band}&sEcho=1&iColumns=3&sColumns=&iDisplayStart=0&iDisplayLength=200&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2"
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
                
         
     | 
| 
      
 12 
     | 
    
         
            +
                def self.ARTIST(artist)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  "search/ajax-artist-search/?field=alias&query=#{artist}&sEcho=1&iColumns=4&sColumns=&iDisplayStart=0"
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
                
         
     | 
| 
      
 16 
     | 
    
         
            +
                def self.ALBUM(album)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  "search/ajax-album-search/?field=title&query=#{album}&sEcho=1&iColumns=4&sColumns=&iDisplayStart=0"
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            lib = File.expand_path("../lib", __FILE__)
         
     | 
| 
      
 2 
     | 
    
         
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'metallum-cli/version'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Gem::Specification.new do |spec|
         
     | 
| 
      
 6 
     | 
    
         
            +
              spec.name          = "metallum-cli"
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.version       = MetallumCli::VERSION
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.authors       = ["Rodrigo Muniz"]
         
     | 
| 
      
 9 
     | 
    
         
            +
              spec.email         = ["rodrigo.temiski1995@gmail.com"]
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              spec.summary       = %q{CLI interface for Metal Archives searches}
         
     | 
| 
      
 12 
     | 
    
         
            +
              spec.description   = %q{find any information about any artist, band, song, album, whatever at Metal Archives}
         
     | 
| 
      
 13 
     | 
    
         
            +
              spec.homepage      = "https://github.com/muniz95/metallum-cli"
         
     | 
| 
      
 14 
     | 
    
         
            +
              spec.license       = "MIT"
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
         
     | 
| 
      
 17 
     | 
    
         
            +
              # delete this section to allow pushing this gem to any host.
         
     | 
| 
      
 18 
     | 
    
         
            +
              if spec.respond_to?(:metadata)
         
     | 
| 
      
 19 
     | 
    
         
            +
                # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
         
     | 
| 
      
 20 
     | 
    
         
            +
              else
         
     | 
| 
      
 21 
     | 
    
         
            +
                raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         
     | 
| 
      
 25 
     | 
    
         
            +
              spec.bindir        = "bin"
         
     | 
| 
      
 26 
     | 
    
         
            +
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         
     | 
| 
      
 27 
     | 
    
         
            +
              spec.require_paths = ["lib"]
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              # spec.add_dependency 'activesupport', '>= 3.2.0'
         
     | 
| 
      
 30 
     | 
    
         
            +
              # spec.add_dependency 'colored'
         
     | 
| 
      
 31 
     | 
    
         
            +
              spec.add_dependency 'thor'
         
     | 
| 
      
 32 
     | 
    
         
            +
              spec.add_dependency 'nokogiri'
         
     | 
| 
      
 33 
     | 
    
         
            +
              # spec.add_dependency 'hashie'
         
     | 
| 
      
 34 
     | 
    
         
            +
              # spec.add_dependency 'faraday'
         
     | 
| 
      
 35 
     | 
    
         
            +
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
      
 36 
     | 
    
         
            +
              spec.add_development_dependency "bundler", "~> 1.10"
         
     | 
| 
      
 37 
     | 
    
         
            +
              spec.add_development_dependency 'pry'
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,131 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: metallum-cli
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.5
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Rodrigo Muniz
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-01-15 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: thor
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: nokogiri
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
      
 55 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 56 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '1.10'
         
     | 
| 
      
 62 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 68 
     | 
    
         
            +
                    version: '1.10'
         
     | 
| 
      
 69 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 70 
     | 
    
         
            +
              name: pry
         
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 72 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 73 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 74 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 75 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 76 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 77 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 78 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 79 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 80 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 81 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 82 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 83 
     | 
    
         
            +
            description: find any information about any artist, band, song, album, whatever at
         
     | 
| 
      
 84 
     | 
    
         
            +
              Metal Archives
         
     | 
| 
      
 85 
     | 
    
         
            +
            email:
         
     | 
| 
      
 86 
     | 
    
         
            +
            - rodrigo.temiski1995@gmail.com
         
     | 
| 
      
 87 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 88 
     | 
    
         
            +
            - metallum-cli
         
     | 
| 
      
 89 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 90 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 91 
     | 
    
         
            +
            files:
         
     | 
| 
      
 92 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
      
 93 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 94 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 95 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 96 
     | 
    
         
            +
            - bin/metallum-cli
         
     | 
| 
      
 97 
     | 
    
         
            +
            - lib/metallum-cli.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - lib/metallum-cli/app.rb
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib/metallum-cli/configuration.rb
         
     | 
| 
      
 100 
     | 
    
         
            +
            - lib/metallum-cli/helpers/album.rb
         
     | 
| 
      
 101 
     | 
    
         
            +
            - lib/metallum-cli/helpers/artist.rb
         
     | 
| 
      
 102 
     | 
    
         
            +
            - lib/metallum-cli/helpers/band.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - lib/metallum-cli/helpers/client.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - lib/metallum-cli/helpers/url.rb
         
     | 
| 
      
 105 
     | 
    
         
            +
            - lib/metallum-cli/version.rb
         
     | 
| 
      
 106 
     | 
    
         
            +
            - metallum-cli.gemspec
         
     | 
| 
      
 107 
     | 
    
         
            +
            homepage: https://github.com/muniz95/metallum-cli
         
     | 
| 
      
 108 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 109 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 110 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 111 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 112 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 113 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 114 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 115 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 116 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 117 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 118 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 119 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 120 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 121 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 122 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 123 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 124 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 125 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 126 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 127 
     | 
    
         
            +
            rubygems_version: 2.4.6
         
     | 
| 
      
 128 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 129 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 130 
     | 
    
         
            +
            summary: CLI interface for Metal Archives searches
         
     | 
| 
      
 131 
     | 
    
         
            +
            test_files: []
         
     |