• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

dev


Commit MetaInfo

Revision608c926714d7cc920b3b994e6e90054ce655050c (tree)
Time2013-04-14 21:41:32
AuthorKimura Youichi <kim.upsilon@bucy...>
CommiterKimura Youichi

Log Message

サードパーティ製サービスのパーマリンクURLからステータスIDを抽出して関連発言表示する

Change Summary

Incremental Difference

--- a/OpenTween.Tests/TwitterTest.cs
+++ b/OpenTween.Tests/TwitterTest.cs
@@ -47,5 +47,21 @@ namespace OpenTween
4747 return Twitter.StatusUrlRegex.Matches(url).Cast<Match>()
4848 .Select(x => x.Groups["StatusId"].Value).ToArray();
4949 }
50+
51+ [TestCase("http://favstar.fm/users/twitterapi/status/22634515958",
52+ Result = new[] { "22634515958" })]
53+ [TestCase("http://ja.favstar.fm/users/twitterapi/status/22634515958",
54+ Result = new[] { "22634515958" })]
55+ [TestCase("http://favstar.fm/t/22634515958",
56+ Result = new[] { "22634515958" })]
57+ [TestCase("http://aclog.koba789.com/i/312485321239564288",
58+ Result = new[] { "312485321239564288" })]
59+ [TestCase("http://frtrt.net/solo_status.php?status=263483634307198977",
60+ Result = new[] { "263483634307198977" })]
61+ public string[] ThirdPartyStatusUrlRegexTest(string url)
62+ {
63+ return Twitter.ThirdPartyStatusUrlRegex.Matches(url).Cast<Match>()
64+ .Select(x => x.Groups["StatusId"].Value).ToArray();
65+ }
5066 }
5167 }
--- a/OpenTween/Resources/ChangeLog.txt
+++ b/OpenTween/Resources/ChangeLog.txt
@@ -3,6 +3,7 @@
33 ==== Ver 1.1.0-beta1(2013/xx/xx)
44 * NEW: タブの表示位置を画面上部に変更可能に (thx @aokomoriuta!)
55 * NEW: mobile.twitter.com/<スクリーン名>/status/<ステータスID> のURLも関連発言表示の対象に追加
6+ * NEW: Favstarなどサードパーティ製サービスのパーマリンクURLも関連発言表示の対象に追加
67 * FIX: スペースが含まれているURLをブラウザで開こうとするとURLが分断されて複数のタブが開いてしまう問題を修正 (thx @5px!)
78 * FIX: 画面更新時にInvalidOperationExceptionのエラーが発生する不具合を修正
89
--- a/OpenTween/Twitter.cs
+++ b/OpenTween/Twitter.cs
@@ -122,6 +122,16 @@ namespace OpenTween
122122 /// </summary>
123123 public static readonly Regex StatusUrlRegex = new Regex(@"https?://([^.]+\.)?twitter\.com/(#!/)?(?<ScreenName>[a-zA-Z0-9_]+)/status(es)?/(?<StatusId>[0-9]+)(/photo)?", RegexOptions.IgnoreCase);
124124
125+ /// <summary>
126+ /// FavstarやaclogなどTwitter関連サービスのパーマリンクURLからステータスIDを抽出する正規表現
127+ /// </summary>
128+ public static readonly Regex ThirdPartyStatusUrlRegex = new Regex(@"https?://(?:[^.]+\.)?(?:
129+ favstar\.fm/users/[a-zA-Z0-9_]+/status/ # Favstar
130+| favstar\.fm/t/ # Favstar (short)
131+| aclog\.koba789\.com/i/ # aclog
132+| frtrt\.net/solo_status\.php\?status= # RtRT
133+)(?<StatusId>[0-9]+)", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
134+
125135 delegate void GetIconImageDelegate(PostClass post);
126136 private readonly object LockObj = new object();
127137 private List<long> followerId = new List<long>();
@@ -2622,8 +2632,10 @@ namespace OpenTween
26222632 //return rslt;
26232633
26242634 //MRTとかに対応のためツイート内にあるツイートを指すURLを取り込む
2625- var ma = Twitter.StatusUrlRegex.Matches(tab.RelationTargetPost.Text);
2626- foreach (Match _match in ma)
2635+ var text = tab.RelationTargetPost.Text;
2636+ var ma = Twitter.StatusUrlRegex.Matches(text).Cast<Match>()
2637+ .Concat(Twitter.ThirdPartyStatusUrlRegex.Matches(text).Cast<Match>());
2638+ foreach (var _match in ma)
26272639 {
26282640 Int64 _statusId;
26292641 if (Int64.TryParse(_match.Groups["StatusId"].Value, out _statusId))