diff --git a/app/assets/javascripts/uploads.js b/app/assets/javascripts/uploads.js index 315191adb..2133f6bec 100644 --- a/app/assets/javascripts/uploads.js +++ b/app/assets/javascripts/uploads.js @@ -20,7 +20,7 @@ } Danbooru.Upload.initialize_iqdb_source = function() { - $.get("/iqdb/similar_by_source", {"source": $("#normalized_url").val()}).done(function(html) {$("#iqdb-similar").html(html)}); + $.post("/iqdb_queries", {"url": $("#normalized_url").val()}).done(function(html) {$("#iqdb-similar").html(html)}); } Danbooru.Upload.initialize_enter_on_tags = function() { diff --git a/app/controllers/iqdb_controller.rb b/app/controllers/iqdb_controller.rb deleted file mode 100644 index f1e63c5b3..000000000 --- a/app/controllers/iqdb_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -class IqdbController < ApplicationController - def similar_by_source - @download = Iqdb::Download.new(params[:source]) - @download.download_from_source - @download.find_similar - render :layout => false - end -end diff --git a/app/controllers/iqdb_queries_controller.rb b/app/controllers/iqdb_queries_controller.rb new file mode 100644 index 000000000..ac23a7ace --- /dev/null +++ b/app/controllers/iqdb_queries_controller.rb @@ -0,0 +1,30 @@ +class IqdbQueriesController < ApplicationController + before_filter :member_only + + def create + if !Danbooru.config.iqdb_hostname_and_port + render :nothing => true + return + end + + if params[:url] + create_by_url + elsif params[:post_id] + create_by_post + end + end + +protected + def create_by_url + @download = Iqdb::Download.new(params[:url]) + @download.download_from_source + @download.find_similar + render :layout => false, :action => "create_by_url" + end + + def create_by_post + @post = Post.find(params[:post_id]) + @results = Iqdb::Server.default.similar(@post.id, 3) + render :layout => false, :action => "create_by_post" + end +end \ No newline at end of file diff --git a/app/logical/iqdb/importer.rb b/app/logical/iqdb/importer.rb index 585d45710..8aad521b0 100644 --- a/app/logical/iqdb/importer.rb +++ b/app/logical/iqdb/importer.rb @@ -4,7 +4,6 @@ module Iqdb Post.find_each do |post| IO.popen("iqdb command #{Danbooru.config.iqdb_file}", "w+") do |io| if File.exists?(post.preview_file_path) - puts post.id hex = post.id.to_s(16) io.puts "add 0 #{hex}:#{post.preview_file_path}" end diff --git a/app/logical/iqdb/responses/collection.rb b/app/logical/iqdb/responses/collection.rb index a01ab2c8c..f8cd4915a 100644 --- a/app/logical/iqdb/responses/collection.rb +++ b/app/logical/iqdb/responses/collection.rb @@ -2,6 +2,7 @@ module Iqdb module Responses class Collection attr_reader :responses + delegate :each, :empty?, :any?, :to => :matches def initialize(response_string) @responses = response_string.split(/\n/).map do |string| @@ -13,10 +14,6 @@ module Iqdb @matches ||= responses.select {|x| x.is_a?(Iqdb::Responses::Response_200) && x.score >= 90} end - def empty? - matches.empty? - end - def errored? errors.any? end diff --git a/app/logical/iqdb/server.rb b/app/logical/iqdb/server.rb index efc2983e0..de39f04e7 100644 --- a/app/logical/iqdb/server.rb +++ b/app/logical/iqdb/server.rb @@ -7,6 +7,10 @@ module Iqdb attr_reader :hostname, :port, :socket + def self.default + new(*Danbooru.config.iqdb_hostname_and_port) + end + def initialize(hostname, port) @hostname = hostname @port = port @@ -45,6 +49,15 @@ module Iqdb end end + def similar(post_id, results, flags = FLAG_DISCARD_COMMON_COEFFS) + request do + hex_id = post_id.to_s(16) + socket.puts "sim 0 #{flags} #{results} #{hex_id}" + socket.puts "done" + responses = Responses::Collection.new(@socket.read) + end + end + def query(results, filename, flags = FLAG_DISCARD_COMMON_COEFFS) request do socket.puts "query 0 #{flags} #{results} #{filename}" diff --git a/app/views/iqdb_queries/create_by_post.html.erb b/app/views/iqdb_queries/create_by_post.html.erb new file mode 100644 index 000000000..f66fb5b58 --- /dev/null +++ b/app/views/iqdb_queries/create_by_post.html.erb @@ -0,0 +1,9 @@ +<% if @results.any? %> +
No matches found
+<% end %> diff --git a/app/views/iqdb/similar_by_source.html.erb b/app/views/iqdb_queries/create_by_url.html.erb similarity index 100% rename from app/views/iqdb/similar_by_source.html.erb rename to app/views/iqdb_queries/create_by_url.html.erb diff --git a/app/views/posts/partials/show/_options.html.erb b/app/views/posts/partials/show/_options.html.erb index b8ffaf9cc..18996f2ba 100644 --- a/app/views/posts/partials/show/_options.html.erb +++ b/app/views/posts/partials/show/_options.html.erb @@ -14,7 +14,7 @@ <% if CurrentUser.is_builder? && post.has_notes? %>