change super voter to look at recent votes instead

This commit is contained in:
r888888888
2016-09-08 17:21:46 -07:00
parent 1682196490
commit e56d71a7d2
2 changed files with 9 additions and 7 deletions

View File

@@ -2,7 +2,7 @@ module Reports
class UserSimilarity class UserSimilarity
NOT_READY_STRING = "not ready" NOT_READY_STRING = "not ready"
attr_reader :user_id attr_reader :user_id, :result
def initialize(user_id) def initialize(user_id)
@user_id = user_id @user_id = user_id
@@ -12,9 +12,10 @@ module Reports
User.find(user_id) User.find(user_id)
end end
def prime def prime_similar_users(endpoint = "user_similarity")
10.times do 10.times do
if fetch_similar_user_ids == NOT_READY_STRING result = fetch_similar_user_ids(endpoint)
if result == NOT_READY_STRING
sleep(60) sleep(60)
else else
break break
@@ -22,14 +23,14 @@ module Reports
end end
end end
def fetch_similar_user_ids def fetch_similar_user_ids(endpoint = "user_similarity")
return NotImplementedError unless Danbooru.config.report_server return NotImplementedError unless Danbooru.config.report_server
params = { params = {
"key" => Danbooru.config.shared_remote_key, "key" => Danbooru.config.shared_remote_key,
"user_id" => user_id "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) uri.query = URI.encode_www_form(params)
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.is_a?(URI::HTTPS)) do |http| Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.is_a?(URI::HTTPS)) do |http|

View File

@@ -14,8 +14,9 @@ class SuperVoter < ActiveRecord::Base
def self.init! def self.init!
prune! prune!
report = Reports::UserSimilarity.new(User.admins.first.id) report = Reports::UserSimilarity.new(User.admins.first.id)
report.prime report.prime_similar_users("post_vote_similarity")
report.fetch_similar_user_ids.scan(/\S+/).in_groups_of(2).each do |user_id, score|
report.result.scan(/\S+/).in_groups_of(2).each do |user_id, score|
unless where("user_id = ?", user_id.to_i).exists? unless where("user_id = ?", user_id.to_i).exists?
create(:user_id => user_id) create(:user_id => user_id)
end end