aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/assets/images/protected_profile_image.pngbin9350 -> 0 bytes
-rw-r--r--app/controllers/search_controller.rb28
-rw-r--r--app/views/main/about.html.haml1
-rw-r--r--app/views/main/api.html.haml1
-rw-r--r--app/views/main/index.html.haml7
-rw-r--r--config/routes.rb9
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
deleted file mode 100644
index 3d1e0f9..0000000
--- a/app/assets/images/protected_profile_image.png
+++ /dev/null
Binary files differ
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