change super voter to look at recent votes instead
This commit is contained in:
@@ -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|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user