diff options
-rw-r--r-- | app/assets/images/protected_profile_image.png | bin | 9350 -> 0 bytes | |||
-rw-r--r-- | app/controllers/search_controller.rb | 28 | ||||
-rw-r--r-- | app/views/main/about.html.haml | 1 | ||||
-rw-r--r-- | app/views/main/api.html.haml | 1 | ||||
-rw-r--r-- | app/views/main/index.html.haml | 7 | ||||
-rw-r--r-- | config/routes.rb | 9 |
6 files changed, 29 insertions, 17 deletions
diff --git a/app/assets/images/protected_profile_image.png b/app/assets/images/protected_profile_image.png Binary files differdeleted file mode 100644 index 3d1e0f9..0000000 --- a/app/assets/images/protected_profile_image.png +++ /dev/null diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index b5933d7..2777c0a 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -4,12 +4,14 @@ require "shellwords" class SearchController < ApplicationController def search @show_search = true + # TODO: OR とか () とか対応したいよね unless params[:query] render_tweets(Tweet.where(:id => -1)) return end - p words = Shellwords.shellwords(params[:query]) + words = Shellwords.shellwords(params[:query]) + dateformat = "(20[0-9]{2})([-_\/]?)([0-9]{2})\\2([0-9]{2})" # $1: year, $3: month, $4: day result = words.inject(Tweet.order_by_id) do |tweets, word| case word @@ -17,9 +19,13 @@ class SearchController < ApplicationController # 特殊 key, value = word.split(":", 2) case key.downcase - when /^user$/ + when /^-?user$/ user = User.cached(value) - tweets.where(:user_id => user ? user.id : -1) + if key[0] == "-" + tweets.where("user_id != ?", user ? user.id : -1) + else + tweets.where(:user_id => user ? user.id : -1) + end when /^-?fav/ search_unless_zero(tweets, "favorites_count", key[0], value) when /^-?re?t/ @@ -39,7 +45,7 @@ class SearchController < ApplicationController else tweets end - when "text" + when /^-?text$/ sourcetext = word.split(":", 2).last.gsub("%", "\\%").gsub("*", "%") sourcetext = "%#{sourcetext}%".gsub(/%+/, "%") op = key[0] == "-" ? " NOT LIKE " : " LIKE " @@ -52,12 +58,16 @@ class SearchController < ApplicationController # unknown command tweets end - when /^20[0-9]{6}\.\.20[0-9]{6}$/ - since, to = word.split(/\.\./) - since = Time.utc(since[0...4].to_i, since[4...6].to_i, since[6...8].to_i) - 9 * 60 * 60 - to = Time.utc(to[0...4].to_i, to[4...6].to_i, to[6...8].to_i + 1) - 9 * 60 * 60 + when /^-?#{dateformat}\.\.#{dateformat}$/ - tweets.where(:id => first_id_of_time(since)...first_id_of_time(to)) + since = Time.utc($1.to_i, $3.to_i, $4.to_i) - 9 * 60 * 60 + to = Time.utc($5.to_i, $7.to_i, $8.to_i + 1) - 9 * 60 * 60 + + if word[0] == "-" + tweets.where("id < ? OR id >= ?", first_id_of_time(since), first_id_of_time(to)) + else + tweets.where(:id => first_id_of_time(since)...first_id_of_time(to)) + end else # TODO: ツイート検索 tweets diff --git a/app/views/main/about.html.haml b/app/views/main/about.html.haml index 660a511..5d2f964 100644 --- a/app/views/main/about.html.haml +++ b/app/views/main/about.html.haml @@ -1,4 +1,3 @@ -%h1 aclog について %p = link_to "@re4k", "https://twitter.com/re4k" が Favstar BAN されたので仕方なく代わりを作りました。 diff --git a/app/views/main/api.html.haml b/app/views/main/api.html.haml index 8a42042..a4c1e81 100644 --- a/app/views/main/api.html.haml +++ b/app/views/main/api.html.haml @@ -1,4 +1,3 @@ -%h1 API %p ドキュメントは今度もっとわかりやすく書き直しますね %p diff --git a/app/views/main/index.html.haml b/app/views/main/index.html.haml index c5b5446..1d273dc 100644 --- a/app/views/main/index.html.haml +++ b/app/views/main/index.html.haml @@ -34,10 +34,11 @@ %p Favstar のパスにアクセスされた場合リダイレクトするようになっているはず… %h3 検索クエリ -半角スペース区切りで、すべて AND 検索になります。 +%p 半角スペース区切りで、すべて AND 検索になります。OR 検索付けたいけどまだ使えません。 +%p order 以外は先頭に - を付けることで否定になります。 %dl %dt ユーザーの - %dt user:sg4k + %dd user:sg4k %dt 反応数 〜〜以上 %dd reaction:30 %dd favorite:30 @@ -49,4 +50,4 @@ %dd order:retweet %dt 期間 %dd 20130328..20130330 - %dt ツイート本文の検索はできません。付けるかはわかんない + %dt ツイート本文・クライアント名での検索はできません。クライアント名での検索は付けたいけれど… diff --git a/config/routes.rb b/config/routes.rb index 09e0b43..7faac83 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -65,7 +65,10 @@ Aclog::Application.routes.draw do get "/users/:screen_name/most_retweeted" => redirect("/%{screen_name}/retweet"), :constraints => constraints get "/users/:screen_name/discovered" => redirect("/%{screen_name}/discovered"), :constraints => constraints get "/users/:screen_name/recent" => redirect("/%{screen_name}/timeline"), :constraints => constraints - get "/users/:screen_name/favs_from(/:screen_name_b)" => redirect("/%{screen_name}/favorited_by/%{screen_name_b}"), :constraints => constraints - get "/users/:screen_name/retweeted_by(/:screen_name_b)" => redirect("/%{screen_name}/retweeted_by/%{screen_name_b}"), :constraints => constraints - get "/users/:screen_name/given_to(/:screen_name_b)" => redirect("/%{screen_name}/given_favorites_to/%{screen_name_b}"), :constraints => constraints + get "/users/:screen_name/favs_from" => redirect("/%{screen_name}/favorited_by"), :constraints => constraints + get "/users/:screen_name/favs_from/:screen_name_b" => redirect("/%{screen_name}/favorited_by/%{screen_name_b}"), :constraints => constraints + get "/users/:screen_name/retweeted_by" => redirect("/%{screen_name}/retweeted_by"), :constraints => constraints + get "/users/:screen_name/retweeted_by/:screen_name_b" => redirect("/%{screen_name}/retweeted_by/%{screen_name_b}"), :constraints => constraints + get "/users/:screen_name/given_to" => redirect("/%{screen_name}/given_favorites_to"), :constraints => constraints + get "/users/:screen_name/given_to/:screen_name_b" => redirect("/%{screen_name}/given_favorites_to/%{screen_name_b}"), :constraints => constraints end |