diff --git a/app/logical/reports/user_similarity.rb b/app/logical/reports/user_similarity.rb index 369740fe8..c59637bb9 100644 --- a/app/logical/reports/user_similarity.rb +++ b/app/logical/reports/user_similarity.rb @@ -2,7 +2,7 @@ module Reports class UserSimilarity NOT_READY_STRING = "not ready" - attr_reader :user_id + attr_reader :user_id, :result def initialize(user_id) @user_id = user_id @@ -12,9 +12,10 @@ module Reports User.find(user_id) end - def prime + def prime_similar_users(endpoint = "user_similarity") 10.times do - if fetch_similar_user_ids == NOT_READY_STRING + result = fetch_similar_user_ids(endpoint) + if result == NOT_READY_STRING sleep(60) else break @@ -22,14 +23,14 @@ module Reports end end - def fetch_similar_user_ids + def fetch_similar_user_ids(endpoint = "user_similarity") return NotImplementedError unless Danbooru.config.report_server params = { "key" => Danbooru.config.shared_remote_key, "user_id" => user_id } - uri = URI.parse("#{Danbooru.config.report_server}/reports/user_similarity") + uri = URI.parse("#{Danbooru.config.report_server}/reports/#{endpoint}") uri.query = URI.encode_www_form(params) Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.is_a?(URI::HTTPS)) do |http| diff --git a/app/models/super_voter.rb b/app/models/super_voter.rb index 11f5f342c..5a664dcc1 100644 --- a/app/models/super_voter.rb +++ b/app/models/super_voter.rb @@ -14,8 +14,9 @@ class SuperVoter < ActiveRecord::Base def self.init! prune! report = Reports::UserSimilarity.new(User.admins.first.id) - report.prime - report.fetch_similar_user_ids.scan(/\S+/).in_groups_of(2).each do |user_id, score| + report.prime_similar_users("post_vote_similarity") + + report.result.scan(/\S+/).in_groups_of(2).each do |user_id, score| unless where("user_id = ?", user_id.to_i).exists? create(:user_id => user_id) end