プロジェクト

全般

プロフィール

バグ #1285

ツイート引用URLを含むツイートをStream受信したときに引用URLおよび引用ツイートが表示されない

Izumi Tsutsui8ヶ月前に追加. 15日前に更新.

ステータス:
実装待ち
優先度:
通常
担当者:
-
対象バージョン:
プラグイン名:
ブランチ:
クラッシュする:
いいえ

説明

どちらかというと従来の「環境対応」ですが、

題名の通りで、ツイート引用URLを含むツイートをStream受信したときに
引用URLおよび引用ツイートが表示されなくなっています。


具体的には、 stream response で full_text にツイート引用URLが含まれなくなったようです。
https://social.mikutter.hachune.net/@tsutsuii/100452831249626952
https://social.mikutter.hachune.net/@tsutsuii/100452981401628790
https://gist.github.com/tsutsui/c8e5b7d6e259e91a3743e04856aadce9

rest の response だと full_text にツイート引用URLは含まれます。
https://social.mikutter.hachune.net/@tsutsuii/100453025697122706
https://gist.github.com/tsutsui/48f4534c23079e9870981395177f2f8f

さらに、ツイートURL引用 + 画像添付 の場合は full_text にツイート引用URLが含まれます。
https://social.mikutter.hachune.net/@tsutsuii/100453227224311163
https://gist.github.com/tsutsui/a2abed9f8a5e14b0402ea4b0f2031684

画像2枚目以降のURL同様に entity を見て追加および quited_tweet の処理を追加してやる必要がある?

https://m6n.onsen.tech/@tmyt/100453065054284061

@tsutsuii quoted_status_perma_link にdisplay_urlとexpanded_urlあたりの相当が含まれてるのでそれを各自末尾に足してねって感じですかね…

なお、この現象に最初に気づいたのは 7/22 未明です。
https://social.mikutter.hachune.net/@tsutsuii/100413637323751904


ファイル


再現手順

  • 引用ツイートURLを含むツイートを投稿する
  • そのツイートを userstream で受信する
    →引用ツイートURLが本文に表示されず、 quoted_tweet の引用ツイート表示もされない
    • REST で受信した場合はどちらも表示される

履歴

#1

toshi_a 初音8ヶ月前に更新

  • ステータス分類待ち から 実装待ち に変更

UserStream限定の問題ですね。

今の所、あと半月でUserStreamは廃止されると発表されているので、残りの期間を快適に過ごすためにも最優先で対応したいところです。

#2

Izumi Tsutsui6ヶ月前に更新

userstream 廃止から久しいですが、 filterstream でも同様の現象になるようです
(≒今の mikutter でもまだ対策が必要?)

#3

Izumi Tsutsui20日前に更新


いまさらですが json はこんな感じです
(by https://github.com/toshia/debug_tools )


{:created_at=>"Wed Mar 06 14:05:55 +0000 2019",
 :id=>1103295647304708096,
 :id_str=>"1103295647304708096",
 :full_text=>"う。",
 :truncated=>false,
 :display_text_range=>[0, 2],
 :entities=>{:hashtags=>[], :symbols=>[], :user_mentions=>[], :urls=>[]},
 :source=>"mikutter alternative",
 :in_reply_to_status_id=>nil,
 :in_reply_to_status_id_str=>nil,
 :in_reply_to_user_id=>nil,
 :in_reply_to_user_id_str=>nil,
 :in_reply_to_screen_name=>nil,
 :user=>TwitterUser(@tsutsuii),
 :geo=>nil,
 :coordinates=>nil,
 :place=>nil,
 :contributors=>nil,
 :is_quote_status=>true,
 :quoted_status_id=>1103291265918087171,
 :quoted_status_id_str=>"1103291265918087171",
 :quoted_status_permalink=>
  {:url=>"https://t.co/zZb2oZ1QUs",
   :expanded=>"https://twitter.com/PkgsrcChanges/status/1103291265918087171",
   :display=>"twitter.com/PkgsrcChanges/…"},
 :quoted_status=>
  {:created_at=>"Wed Mar 06 13:48:30 +0000 2019",
   :id=>1103291265918087171,
   :id_str=>"1103291265918087171",
   :full_text=>
    "www/webkit-gtk [pkgsrc-2018Q4]: Makefile PLIST distinfo
" +
    "www/webkit-gtk/patches [pkgsrc-2018Q4]:
" +
    "...
" +
    " 
" +
    "bsiegert: www/webkit-gtk: security fix (remote code execution)
" +
    " 
" +
    "https://t.co/SrGebOSkiz
" +
    "https://t.co/ng2rjkze4f
" +
    "https://t.co/kabngZo54V
" +
    "https://t.co/crOy3b2EBK",
   :truncated=>false,
   :display_text_range=>[0, 260],
   :entities=>
    {:hashtags=>[],
     :symbols=>[],
     :user_mentions=>[],
     :urls=>
      [{:url=>"https://t.co/SrGebOSkiz",
        :expanded_url=>
         "http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/webkit-gtk/Makefile.diff?r1=1.155&r2=1.155.2.1",
        :display_url=>"cvsweb.netbsd.org/bsdweb.cgi/pkg…",
        :indices=>[165, 188]},
       {:url=>"https://t.co/ng2rjkze4f",
        :expanded_url=>
         "http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/webkit-gtk/PLIST.diff?r1=1.45&r2=1.45.2.1",
        :display_url=>"cvsweb.netbsd.org/bsdweb.cgi/pkg…",
        :indices=>[189, 212]},
       {:url=>"https://t.co/kabngZo54V",
        :expanded_url=>
         "http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/webkit-gtk/distinfo.diff?r1=1.114&r2=1.114.2.1",
        :display_url=>"cvsweb.netbsd.org/bsdweb.cgi/pkg…",
        :indices=>[213, 236]},
       {:url=>"https://t.co/crOy3b2EBK",
        :expanded_url=>
         "http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/webkit-gtk/patches/patch-Source_JavaScriptCore_dfg_DFGDoesGC.cpp?rev=1.1",
        :display_url=>"cvsweb.netbsd.org/bsdweb.cgi/pkg…",
        :indices=>[237, 260]}]},
   :source=>
    "<a href="http://www.netmeister.org/apps/tweet/" rel="nofollow">very-simple-tweet</a>",
   :in_reply_to_status_id=>nil,
   :in_reply_to_status_id_str=>nil,
   :in_reply_to_user_id=>nil,
   :in_reply_to_user_id_str=>nil,
   :in_reply_to_screen_name=>nil,
   :user=>
    {:id=>2437851661,
     :id_str=>"2437851661",
     :name=>"Pkgsrc Changes",
     :screen_name=>"PkgsrcChanges",
     :location=>"The Internet",
     :description=>
      "Pkgsrc commit messages as tweets. See @netbsdsrc for NetBSD commit messages.
" +
      "Run by @jschauma.",
     :url=>"http://t.co/Ve3OJR7Mjy",
     :entities=>
      {:url=>
        {:urls=>
          [{:url=>"http://t.co/Ve3OJR7Mjy",
            :expanded_url=>"http://mail-index.netbsd.org/pkgsrc-changes/",
            :display_url=>"mail-index.netbsd.org/pkgsrc-changes/",
            :indices=>[0, 22]}]},
       :description=>{:urls=>[]}},
     :protected=>false,
     :followers_count=>136,
     :friends_count=>1,
     :listed_count=>13,
     :created_at=>"Fri Apr 11 03:01:16 +0000 2014",
     :favourites_count=>0,
     :utc_offset=>nil,
     :time_zone=>nil,
     :geo_enabled=>false,
     :verified=>false,
     :statuses_count=>81623,
     :lang=>"en",
     :contributors_enabled=>false,
     :is_translator=>false,
     :is_translation_enabled=>false,
     :profile_background_color=>"FFFFFF",
     :profile_background_image_url=>
      "http://abs.twimg.com/images/themes/theme1/bg.png",
     :profile_background_image_url_https=>
      "https://abs.twimg.com/images/themes/theme1/bg.png",
     :profile_background_tile=>false,
     :profile_image_url=>
      "http://pbs.twimg.com/profile_images/454454797442113536/ijZroPXp_normal.png",
     :profile_image_url_https=>
      "https://pbs.twimg.com/profile_images/454454797442113536/ijZroPXp_normal.png",
     :profile_banner_url=>
      "https://pbs.twimg.com/profile_banners/2437851661/1397185556",
     :profile_link_color=>"B84E0D",
     :profile_sidebar_border_color=>"FFFFFF",
     :profile_sidebar_fill_color=>"DDEEF6",
     :profile_text_color=>"333333",
     :profile_use_background_image=>false,
     :has_extended_profile=>false,
     :default_profile=>false,
     :default_profile_image=>false,
     :following=>false,
     :follow_request_sent=>false,
     :notifications=>false,
     :translator_type=>"none"},
   :geo=>nil,
   :coordinates=>nil,
   :place=>nil,
   :contributors=>nil,
   :is_quote_status=>false,
   :retweet_count=>0,
   :favorite_count=>0,
   :favorited=>false,
   :retweeted=>false,
   :possibly_sensitive=>false,
   :lang=>"ro"},
 :retweet_count=>0,
 :favorite_count=>0,
 :favorited=>false,
 :retweeted=>false,
 :lang=>"ja",
 :message=>"う。",
 :created=>2019-03-06 23:05:55 +0900,
 :exact=>false,
 :receiver=>nil,
 :replyto=>nil,
 :retweet=>nil,
 :modified=>2019-03-06 23:05:55 +0900}

:is_quote_status=>true を見るべきかどうかはともかく
:quoted_status_permalink=> :display
を見るようにすればいいんですかね。

#4

Izumi Tsutsui16日前に更新

とりあえず以下の方針で全然わからないまま雰囲気でコピペしたところ、
最低限の要件としての
「filterstreamで受信したツイートの引用RTのURL表示」
はされるようになりました。

  • quoted_status_permalink から url を取り出す
  • filterstream の場合は :full_text がないようなので、full_text が無い場合は quoted_status_permalink から取り出した url を本文の score に追加する
  • 仮に full_text があった場合でも quoted_status_permalink から取り出した url が full_text に含まれない場合も本文の score に追加する
    (これのテストができていない)

0001-Filterstream-RT-quoted_status_permalink.patch

#5

Izumi Tsutsui16日前に更新

  • 仮に full_text があった場合でも quoted_status_permalink から取り出した url が full_text に含まれない場合も本文の score に追加する
    (これのテストができていない)

引用RTのURLを含めると 140文字を超えるツイートの filterstream 受信の場合、
full_text が付与されるがその中に引用RTのURLは含まれない、という応答のようです。
この場合でも意図(?)通り引用URLツイートは表示されました。

#6

Izumi Tsutsui16日前に更新

filterstream 受信と full_text まとめ

なお、いずれの場合も message の要素が存在し、それには引用URLを含まない本文が含まれている。

#8

Izumi Tsutsui15日前に更新

反例

ツイート本文が ja_JP.UTF-8 かつ 140文字以下で rest 受信した場合 にもかかわらず
text あり full_text なし text は引用RTのURLを 含む
entities の urls に引用RTのURLを 含む
という事案が観測されたので、今のパッチではダメで修正が必要になりました……

https://twitter.com/n_soda/status/1105112522196049921

https://gist.github.com/tsutsui/04921a03c6821b0b4042da8ad7fcb453

#9

Izumi Tsutsui15日前に更新

雑に
!(textがある && textに引用RT URLが含まれる) && !(full_textがある && full_textに引用RT URLが含まれる)
という判定で書き直してみた(対処療法)
0001-Filterstream-RT-quoted_status_permalink-3.patch

他の形式にエクスポート: Atom PDF