Skip to content

Commit

Permalink
文字数上限を無視して強制的に投稿する機能を追加
Browse files Browse the repository at this point in the history
誤カウントやTwitterが正しくないDM上限文字数を返している場合の対策
末尾カット機能は残すと投稿時の質問が長くなるので削除
  • Loading branch information
upsilon committed Sep 5, 2015
1 parent 095a066 commit dc995cb
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 49 deletions.
11 changes: 1 addition & 10 deletions OpenTween/Properties/Resources.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 2 additions & 5 deletions OpenTween/Properties/Resources.en.resx
Original file line number Diff line number Diff line change
Expand Up @@ -634,10 +634,10 @@
<value>Done!</value>
</data>
<data name="PostLengthOverMessage1" xml:space="preserve">
<value>The length of tweet is over 140 characters. Do you want to cut down automatically and to do post?</value>
<value>The length of the tweet exceeds the limit. Are you sure you want to force the post?</value>
</data>
<data name="PostLengthOverMessage2" xml:space="preserve">
<value>Over the limit length of tweet</value>
<value>Tweet length exceeded</value>
</data>
<data name="RetweetQuestion1" xml:space="preserve">
<value>Retweet this tweet?</value>
Expand Down Expand Up @@ -877,9 +877,6 @@ Do you want to upload the {1} selected media file(s)?</value>
<data name="MyLists1" xml:space="preserve">
<value> : Manage Lists</value>
</data>
<data name="PostLengthOverMessage3" xml:space="preserve">
<value>Abort to posting status because @id may be rounded down.</value>
</data>
<data name="FavstarUrl" xml:space="preserve">
<value>http://favstar.fm/</value>
</data>
Expand Down
5 changes: 1 addition & 4 deletions OpenTween/Properties/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@
<value>完了!</value>
</data>
<data name="PostLengthOverMessage1" xml:space="preserve">
<value>140文字を越えています。URL短縮、フッタ除去、末尾カットを行って投稿しますか?</value>
<value>投稿できる文字数の上限を越えています。強制的に投稿しますか?</value>
</data>
<data name="PostLengthOverMessage2" xml:space="preserve">
<value>文字数制限オーバー</value>
Expand Down Expand Up @@ -962,9 +962,6 @@
<data name="MyLists1" xml:space="preserve">
<value>を含むリストの管理</value>
</data>
<data name="PostLengthOverMessage3" xml:space="preserve">
<value>文末の@ユーザー名が切り捨てられた可能性があるため、投稿をキャンセルします。</value>
</data>
<data name="FavstarUrl" xml:space="preserve">
<value>http://ja.favstar.fm/</value>
</data>
Expand Down
6 changes: 0 additions & 6 deletions OpenTween/Properties/Resources.zh-CHS.resx
Original file line number Diff line number Diff line change
Expand Up @@ -636,9 +636,6 @@
<data name="FRMessage3" xml:space="preserve">
<value>完成!</value>
</data>
<data name="PostLengthOverMessage1" xml:space="preserve">
<value>该消息已经超出140个字符,要把URL缩短、去掉脚注等,裁剪到140字以内发送吗?</value>
</data>
<data name="PostLengthOverMessage2" xml:space="preserve">
<value>消息文本长度超出限制</value>
</data>
Expand Down Expand Up @@ -916,9 +913,6 @@ Do you want to upload the {1} selected media file(s)?</value>
<data name="RtCountText1" xml:space="preserve">
<value>人锐推了该消息</value>
</data>
<data name="PostLengthOverMessage3" xml:space="preserve">
<value>Abort to posting status because @id may be rounded down.</value>
</data>
<data name="FavstarUrl" xml:space="preserve">
<value>http://favstar.fm/</value>
</data>
Expand Down
4 changes: 4 additions & 0 deletions OpenTween/Resources/ChangeLog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
* NEW: サムネイル画像が複数枚ある場合に、マウスホイールでも画像を切り替えられるようにしました
* NEW: サムネイル画像のメニューに「類似画像検索 (SauceNAO)」を追加しました
- Google画像検索でヒットしないpixivのイラストからも類似画像を検索できます
* NEW: 文字数上限を超えている状態であっても強制的に投稿を実行できるようにしました
- クライアント側の文字数の誤カウントやTwitterが正しくないDM上限文字数を返すような状況が起きた場合の回避策です
- 普通は強制的に投稿してもエラーで失敗します
* CHG: 文字数上限を超えているときに自動で末尾をカットして投稿する機能を削除しました
* FIX: 上下キーなどで選択ツイートを移動した直後に左右キーなどによる関連ツイートの移動が正しく動作しない不具合を修正
* FIX: DM投稿時の「D (スクリーン名)」が文字数のカウントに余分に含まれていた不具合を修正
* FIX: 絵文字入力時に文字数が1文字多くカウントされていた不具合を修正
Expand Down
27 changes: 3 additions & 24 deletions OpenTween/Tween.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2045,40 +2045,19 @@ private async void PostButton_Click(object sender, EventArgs e)
StatusText.SelectionStart = StatusText.Text.Length;
CheckReplyTo(StatusText.Text);

var isCutOff = false;
var statusText = this.FormatStatusText(this.StatusText.Text);

if (this.GetRestStatusCount(statusText) < 0)
{
if (MessageBox.Show(Properties.Resources.PostLengthOverMessage1, Properties.Resources.PostLengthOverMessage2, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
isCutOff = true;
}
else
{
// 文字数制限を超えているが強制的に投稿するか
var ret = MessageBox.Show(Properties.Resources.PostLengthOverMessage1, Properties.Resources.PostLengthOverMessage2, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
if (ret != DialogResult.OK)
return;
}
}

var status = new PostingStatus();
status.status = statusText;

if (isCutOff)
{
status.status = status.status.Substring(0, 140);
string AtId = @"(@|@)[a-z0-9_/]+$";
string HashTag = @"(^|[^0-9A-Z&\/\?]+)(#|#)([0-9A-Z_]*[A-Z_]+)$";
string Url = @"https?:\/\/[a-z0-9!\*'\(\);:&=\+\$\/%#\[\]\-_\.,~?]+$"; //簡易判定
string pattern = string.Format("({0})|({1})|({2})", AtId, HashTag, Url);
Match mc = Regex.Match(status.status, pattern, RegexOptions.IgnoreCase);
if (mc.Success)
{
//さらに@ID、ハッシュタグ、URLと推測される文字列をカットする
status.status = status.status.Substring(0, 140 - mc.Value.Length);
}
if (MessageBox.Show(status.status, "Post or Cancel?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) return;
}

status.inReplyToId = this.inReplyTo?.Item1;
status.inReplyToName = this.inReplyTo?.Item2;
if (ImageSelector.Visible)
Expand Down

0 comments on commit dc995cb

Please sign in to comment.