ページ

title

告発\金沢地方検察庁\最高検察庁\法務省\石川県警察御中
弁護士と裁判官が共同で確定させた傷害・準強姦被告事件判決の再捜査要請に係る石川県警察珠洲警察署提出書面の情報公開

殺人未遂事件幇助の被告訴人: 木梨松嗣弁護士(金沢弁護士会)、岡田進弁護士(金沢弁護士会)、長谷川紘之弁護士(金沢弁護士会)、若杉幸平弁護士(金沢弁護士会)
名誉毀損罪の被告訴人: モトケンこと矢部善朗弁護士(京都弁護士会)、小倉秀夫弁護士(東京弁護士会)
市場急配センター株式会社 石川県金沢市駅西本町5丁目10番20所在
作成管理者: 石川県鳳珠郡能登町字宇出津 廣野秀樹
金沢地方検察庁御中

2020年10月26日月曜日

* Linux(Ubuntu)で,指定したアカウントのタイムライン200件ツイートを取得(CoreTweet)するC#のプログラム

* Linux(Ubuntu)で,指定したアカウントのタイムライン200件ツイートを取得(CoreTweet)するC#のプログラム

:CATEGORIES: C#

 元はWindows10のVisual Studioで,.NET Coreとかのコンソールとして作成したものでした。そちらはnamespaceがConsoleAppTwitterとなっていました。これがC#で作成した初めてのプログラムですが,Windows10では先にGUIでウィンドウ処理を行っていました。

```
using System;
using System.Collections.Generic;
using System.IO;

namespace ttt
{
class Program
{
static void Main(string[] args)
{
string tweetText = TweetsGet();
Console.WriteLine(tweetText);
}

static string TweetsGet()
{
//var screenName = cmb1.SelectedValue.ToString();
var screenName = "motoken_tw";
var str = "";

var tokens = CoreTweet.Tokens.Create(
("ConsumerKey",
"ConsumerSecret",
"AccessToken",
"AccessSecret");

// var session = CoreTweet.OAuth.Authorize(("ConsumerKey", "ConsumerSecret", "AccessToken", "AccessSecret");
// var url = session.AuthorizeUri; // -> user open in browser
// //get pin
// tokens = CoreTweet.OAuth.GetTokens(session, "PIN code");


var parm = new Dictionary();
parm["count"] = 200;
parm["screen_name"] = screenName;
parm["tweet_mode"] = "extended";

var tweets = tokens.Statuses.UserTimeline(parm);

int i = 1;

foreach (var tweet in tweets)
{
if (tweet.RetweetedStatus == null)
{
var tw_url = "";
tw_url = "https://twitter.com/" + tweet.User.ScreenName + "/status/" + tweet.Id;
str = str + string.Format("\n---------{0:D3}---------\n", i);
str = str + "TW " + tweet.User.Name + "(@" + tweet.User.ScreenName + ") 日時: " + tweet.CreatedAt.DateTime.AddHours(9) + " URL: " + tw_url + "\r\n" + System.Text.RegularExpressions.Regex.Replace(
tweet.FullText, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline) + "\r\n";

}
else
{
var tw_url = "https://twitter.com/" + tweet.User.ScreenName + "/status/" + tweet.Id;
var rt_url = "https://twitter.com/" + tweet.RetweetedStatus.User.ScreenName + "/status/" + tweet.RetweetedStatus.Id;
str = str + string.Format("\n---------{0:D3}---------\n", i);
str = str + "RT " + tweet.User.Name + "(@" + tweet.User.ScreenName + ") |" + tweet.RetweetedStatus.User.Name + "(@" + tweet.RetweetedStatus.User.ScreenName + ") 日時:" + tweet.CreatedAt.DateTime.AddHours(9) + "/" + tweet.RetweetedStatus.CreatedAt.DateTime.AddHours(9) + " URL: " + tw_url + " " + rt_url + "\r\n" + System.Text.RegularExpressions.Regex.Replace(
tweet.FullText, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline) + "\r\n";

}

i = i + 1;
}

return str;

}

}

}

```

 tweet.CreatedAt.DateTime.AddHours(9) という部分でツイートの時刻を日本時間に変更しています。

 よくみると改行コードが\r\nでWindowsのままになっていましたが,Linuxの環境でも問題はなさそうでした。

 他に簡潔な方法があるのかもしれないですが,System.Text.RegularExpressions.Regex.Replace(tweet.FullText, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline) は,行頭に引用符を付けるだけの処理です。

 Rubyだと#{tweet_text.gsub(/^/,'> ')} だけで終わる処理です。

```
using System.Text.RegularExpressions;
……省略……
bool result = Regex.IsMatch("{検査対象文字列}", "{正規表現パターン}");

[source:] 正規表現を使って文字列がパターンに一致するか調べるには?[C#/VB]:.NET TIPS - @IT https://www.atmarkit.co.jp/ait/articles/1701/25/news025.html
```

 やはり,ここでusingの出番があったようです。「using System.Text.RegularExpressions;」と宣言を行い,Regex.IsMatch("{検査対象文字列}", "{正規表現パターン}");と使う方法があるようです。

 次の方法の方がよさそうです。

```
using System.Text.RegularExpressions;
……省略……
var rx = new Regex("{正規表現パターン}", RegexOptions.Compiled);
bool result = rx.IsMatch("{検査対象文字列}" );

[source:] 正規表現を使って文字列がパターンに一致するか調べるには?[C#/VB]:.NET TIPS - @IT https://www.atmarkit.co.jp/ait/articles/1701/25/news025.html
```

 VBでは,C#のusingの部分が,Importsとなるようですが,Visual Basicでは見たことがなく,使った覚えがありません。

0 件のコメント:

コメントを投稿