Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.85 KB | None | 0 0
  1. require "httparty"
  2. require "json"
  3. require 'fileutils'
  4.  
  5. $WCLogsKey="ec2448bf160a7b23b16c2f0b4561c6ea"
  6. $NHBosses = [1849, 1865, 1867, 1872, 1866, 1842, 1871, 1886, 1863, 1862]
  7.  
  8.  
  9. class Guild
  10.     attr_reader :realm
  11.     attr_reader :world_rank
  12.     attr_reader :realm_rank
  13.        
  14.     def initialize(name,realm,region)
  15.         @name = name
  16.         @realm = realm
  17.         @region = region       
  18.         load_jsons
  19.     end
  20.     def inst_file_path; Dir.pwd << "/data/" << "#{@name}-#{@realm}-#{@region}".gsub!(/ /, "_").downcase! << "/" end
  21.     def load_jsons
  22.         @trydata = {reports: {}, }
  23.         Dir.foreach(inst_file_path) {|v| if (v and v.include? ".json")
  24.             file = File.read(inst_file_path + v)
  25.             @trydata[:reports][v.gsub(/.json/,"").to_sym] = JSON.parse(file)
  26.         end
  27.         }
  28.         puts @trydata
  29.     end
  30.     def get_wp_rank
  31.         rspns = HTTParty.get("http://www.wowprogress.com/guild/#{@region}/" << format_realm(@realm,"wp") << "/" << format_gname(@name,"wp") << "/json_rank", verify: false)
  32.         rspns_hash = JSON.parse(rspns)
  33.         @world_rank = rspns_hash["world_rank"]
  34.         @realm_rank = rspns_hash["realm_rank"]
  35.     end
  36.     def get_wcl_report_list
  37.         @report_list = HTTParty.get("http://www.warcraftlogs.com/v1/reports/guild/" << format_gname(@name,"wcl") << "/" << format_realm(@realm,"wcl") <<"/#{@region}?api_key=#$WCLogsKey", verify: false)
  38.         parse_report_list("nh").each{|v| parse_report_for_bosses(v["id"]) unless File.file?(inst_file_path << v["id"] << ".json")}
  39.     end
  40.     def parse_report_list(str)
  41.         case str       
  42.         when "nh"
  43.             nh_reports = @report_list.select{|k,v| k["zone"] == 11}
  44.             return nh_reports
  45.         when "tos"
  46.  
  47.         end
  48.     end
  49.     def parse_report_for_bosses(rid)
  50.         rspns = HTTParty.get("http://www.warcraftlogs.com/v1/report/fights/"<< rid << "?translate=true&api_key=#$WCLogsKey", verify: false)
  51.         fights_table ||= rspns["fights"]
  52.         fights_table.select!{|v| v["difficulty"]} # ==5 for mythic
  53.         save_hash = {fights: fights_table, start: rspns["start"], end: rspns["end"]}
  54.         save_json(@name,@realm,@region,rid,save_hash)
  55.     end
  56. end
  57.  
  58. def format_realm(s,site)
  59.     case site.downcase
  60.     when "wcl"
  61.         return s.gsub(/ /, "-")
  62.     when "wp"
  63.         return s.gsub(/ /, "-")
  64.     end
  65. end
  66. def format_gname(s,site)
  67.     case site.downcase
  68.     when "wcl"
  69.         return s.gsub(/ /, "%20")
  70.     when "wp"
  71.         return s.gsub(/ /, "+")
  72.     end
  73. end
  74. def create_file(path, extension)
  75.   dir = File.dirname(path)
  76.  
  77.   unless File.directory?(dir)
  78.     FileUtils.mkdir_p(dir)
  79.   end
  80.  
  81.   path << ".#{extension}"
  82.   File.new(path, 'w')
  83. end
  84. def save_json(name,realm,region,filename,thash)
  85.     create_file(Dir.pwd << "/data/" << "#{name}-#{realm}-#{region}".gsub!(/ /, "_").downcase! << "/#{filename}", "json")
  86.     File.open(Dir.pwd << "/data/" << "#{name}-#{realm}-#{region}".gsub!(/ /, "_").downcase! << "/#{filename}.json","w") do |f|
  87.   f.write(JSON.pretty_generate(thash))
  88. end
  89.  
  90. end
  91.  
  92.  
  93. guilds = {dmtn: Guild.new("Deadly Momentum","twisting nether","eu")}
  94. guilds[:dmtn].get_wcl_report_list
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement