バグ #1285 » 0001-Filterstream-RT-quoted_status_permalink.patch
core/plugin/twitter/twitter.rb | ||
---|---|---|
# Twitter Entity情報を元にScoreをあれする
|
||
filter_score_filter do |message, note, yielder|
|
||
if message == note && %i<twitter_tweet twitter_direct_message>.include?(message.class.slug)
|
||
score = score_by_entity(message) + extended_entity_media(message)
|
||
score = score_by_entity(message) + quoted_status_permalink(message) + extended_entity_media(message)
|
||
if !score.all?{|n| n.class.slug == :score_text }
|
||
yielder << score
|
||
end
|
||
... | ... | |
score
|
||
end
|
||
# filterstream では引用RTの URLが本文に付与されないので quoted_status_permalink から取り出す
|
||
def quoted_status_permalink(tweet)
|
||
score = Array.new
|
||
permalink = (tweet[:quoted_status_permalink] rescue nil)
|
||
if permalink
|
||
uri = Diva::URI.new(permalink[:expanded] || permalink[:url])
|
||
uri.freeze
|
||
result = Diva::Model(:score_hyperlink).new(
|
||
description: permalink[:display] || permalink[:expanded] || permalink[:url],
|
||
uri: uri)
|
||
# filterstream で流れてくる tweet には :full_text がないのでとりあえずそれで判定
|
||
# filterstream で本文にすでに URL が含まれている場合があるのかどうかわからないけど
|
||
# それもとりあえず除外
|
||
full_text = (tweet[:full_text] rescue nil)
|
||
if !full_text || !full_text.include?(permalink[:url])
|
||
score << text_note(description: ' ')
|
||
score << result
|
||
end
|
||
end
|
||
score
|
||
end
|
||
def extended_entity_media(tweet)
|
||
extended_entities = (tweet[:extended_entities][:media] rescue nil)
|
||
if extended_entities
|