Created
October 26, 2015 20:02
-
-
Save six7zero9/2c5da8812f1087bf42b0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'mysql' | |
require 'openssl' | |
require 'net/https' | |
require "uri" | |
require 'json' | |
# require 'sidekiq' | |
# class KeywordHarvestWorker | |
# include Sidekiq::Worker | |
# def perform | |
def getkeyword(keyword) | |
puts "*******************" | |
puts keyword | |
puts "*******************\n\n" | |
#keyword = 'keyword' (test) | |
encoded_url = URI.encode("http://api.keywordtool.io/v1/search/google?apikey=2657d99a11396cf65fca38ac465ef1509fb617b1&metrics=true&language=en&country=us&keyword=#{keyword}") | |
puts uri = URI.parse(encoded_url) | |
puts "\n" | |
begin | |
http = Net::HTTP.new(uri.host, uri.port) | |
http.use_ssl = false | |
http.verify_mode = OpenSSL::SSL::VERIFY_NONE | |
request = Net::HTTP::Get.new(uri.request_uri) | |
# success or failure responses (failure response is not functioning) | |
response = http.request(request) | |
if response["error"] && response["error"]["code"] == (7) | |
# Wait a minute before trying again. | |
sleep 60 | |
raise "Rate limited by api, retrying...\n" | |
else | |
puts "Success generating #{keyword}\n" | |
end | |
return response.body | |
rescue Net::ReadTimeout | |
puts "#ERROR timeout updating #{keyword}\n" | |
end | |
end | |
con = Mysql.new('lyricstats.cq4or1mqby26.us-west-2.rds.amazonaws.com', 'lyricmaster', 'lscreds888', 'keywords') | |
con.set_server_option Mysql::OPTION_MULTI_STATEMENTS_ON | |
rs = con.query "SELECT name FROM seed WHERE id < 10" | |
i = 0 | |
while r = rs.fetch_row | |
sleep(5) if i != 0 | |
i += 1 | |
response = getkeyword(r) | |
# parse json response | |
json = JSON.parse(response) | |
json.keys.each do |string| | |
json[string].keys.each do |ii| | |
begin | |
row = json[string][ii].first rescue nil | |
next unless row | |
keyword = row["string"] | |
volume = row["volume"] || 0 | |
cpc = row["cpc"] || 0 | |
cmp = row["cmp"] || 0 | |
puts "-------------------------------------------" | |
puts esc = Mysql.escape_string(keyword) | |
puts "\n" | |
con.query "INSERT INTO keyword (keyword, volume, cpc, cmp, keyword_source, language, country, type) VALUES ('#{esc}', #{volume}, #{cpc}, #{cmp}, 'Google', 'en', 'us', 1)" | |
puts "Success updating: #{esc}" | |
puts "\n\n" | |
rescue Mysql::Error => er | |
puts er.errno | |
puts er.error | |
end | |
end | |
end | |
end | |
# end | |
# end | |
#end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment