HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2022/04/14

.NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法 .NET C#の Tweetinviライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

(まるっと取得したかった!質問は受け付けない!)

Tags: [Windows], [無人インストール]




● 2022/05/07辺りから Twitterの認証系で 404エラー

 イーロン・マスクが原因?(勿論冗談)

 2022/05/11復活しました。(金返せ!)

RequestAuthenticationUrlAsync error #1162
Code : 404
Date : 08/05/2022 23:46:22 +02:00
URL : https://api.twitter.com/oauth/request_token
Twitter documentation description : Not Found - The URI requested is invalid or the resource requested, such as a user, does not exists. Also returned when the requested format is not supported by the requested method.

.Net apps getting 404’s for oauth endpoints 2022/05/08

POST oauth/request_token

 CoreTweetでも 404エラーになります。

CoreTweet


● .NET C#で Twitterの投稿内容を投稿画像込みで丸っと取得する方法

 まるっと取得したかった!質問は受け付けない!

 前回は Python3の tweepyライブラリで作りましたが、今回は .NET C#で作ります。

2022/04/10
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

・必要な物
 取得したい Twitterのアカウントの @マークの部分(URLでも良い)
 以上!


● Twitterの C#ライブラリ Tweetinviを使いました。

 Twitterの C#ライブラリは CoreTweetと Tweetinviが有りますが Tweetinviを選択しました。

CoreTweet 10 Oct 2018
Install-Package CoreTweet -Version 1.0.0.483
Last updated 2018/10/10

Tweetinvi 05 Oct 2020
 .NET 4.6.1

TweetinviAPI 5.0.4
 Last updated 2021/04/03

Install-Package TweetinviAPI -Version 5.0.4


● .NET C#で Twitterの投稿内容を投稿画像込みで丸っと取得する方法

 200件ずつ全部ゲットする方法。
Get all tweets from user #480

using System;
using System.Collections.Generic;
using System.Linq;
using Tweetinvi;
using Tweetinvi.Models;
using Tweetinvi.Parameters;

namespace TestApp
{

    class Program
    {
        // Twitter Key
        private static string CONSUMER_KEY = "xxxxxx";
        private static string CONSUMER_SECRET = "xxxxxx";
        private static string USER_NAME = "xxxxxx";

        static void Main(string[] args)
        {
            // var appCredentials = new TwitterCredentials(CONSUMER_KEY, CONSUMER_SECRET);
            // var appClient = new TwitterClient(appCredentials);
            var appClient = new TwitterClient(CONSUMER_KEY, CONSUMER_SECRET);

            // await appClient.Auth.InitializeClientBearerTokenAsync();
            var task1 = appClient.Auth.InitializeClientBearerTokenAsync();
            task1.Wait();

            // Get tweets from a specific user
            var task2 = appClient.Timelines.GetUserTimelineAsync(GetParms());
            var lastTweets = task2.Result;

            // Get All twwets
            var allTweets = new List<ITweet>(lastTweets);
            while (lastTweets.Length > 0)
            {
                var idOfOldestTweet = lastTweets.Select(x => x.Id).Min();

                var task3 = appClient.Timelines.GetUserTimelineAsync(GetParms(idOfOldestTweet - 1));
                lastTweets = task3.Result;
                allTweets.AddRange(lastTweets);
            }

            //   FullText "ほげほげったー" string
            //   Id 1511111111111111111 long
            //   IdStr "1511111111111111111" string
            //-  Media Count = 2 List<Tweetinvi.Models.Entities.IMediaEntity>
            //    IdStr "1501111111111111111" string
            //    MediaURLHttps "https://pbs.twimg.com/media/FPxxxxxxxxxxxxx.jpg" string

            // foreach loop All twwets
            foreach (var tl in allTweets)
            {
                Console.WriteLine("rem {0}, {1}", tl.CreatedAt, tl.FullText);
                foreach (var media in tl.Media)
                {
                    Console.WriteLine("curl \"{0}?format=jpg&name=4096x4096\" -o {1}_{2}.jpg -R", media.MediaURLHttps, tl.IdStr, media.IdStr);
                }
            }
        }

        // https://github.com/linvi/tweetinvi/issues/480
        private static GetUserTimelineParameters GetParms(long? maxId = null)
        {
            var timelineParms = new GetUserTimelineParameters(USER_NAME)
            {
                ExcludeReplies = true,
                TrimUser = true,
                MaxId = maxId
            };

            return timelineParms;
        }
    }
}
        static void Main(string[] args)
        {
            string username = USER_NAME;
            long? sinceId = null;

            if (args.Length >= 1)
            {
                username = args[0];
            }

            if (args.Length >= 2)
            {
                if (args[1].Contains("/") || args[1].Contains("-") || args[1].Contains(":"))
                {
                    try
                    {
                        var TWITTER_EPOCH_TIME = DateTime.Parse("2010-11-04 10:42:54.657");
                        var date = DateTime.Parse(args[1]);
                        sinceId = ((date.Ticks - TWITTER_EPOCH_TIME.Ticks) / 10000L) << 22;
                    }
                    catch (FormatException)
                    {
                        Console.WriteLine("文字列は有効な DateTime ではありませんでした。");
                    }
                }
                else
                {
                    try
                    {
                        sinceId = Convert.ToInt64(args[1]);
                    }
                    catch (FormatException)
                    {
                        Console.WriteLine("入力文字列の形式が正しくありません。");
                    }
                    catch (OverflowException)
                    {
                        Console.WriteLine("Int64 型の値が大きすぎるか、または小さすぎます。");
                    }
                }
            }
...
            // Get tweets from a specific user
            var task2 = appClient.Timelines.GetUserTimelineAsync(GetParms(username, null, sinceId));
...

            while (lastTweets.Length > 0)
            {
                var idOfOldestTweet = lastTweets.Select(x => x.Id).Min();

                var task3 = appClient.Timelines.GetUserTimelineAsync(GetParms(username, idOfOldestTweet - 1, sinceId));
...
        private static GetUserTimelineParameters GetParms(string username, long? maxId = null, long? sinceId = null)
        {
            var timelineParms = new GetUserTimelineParameters(username)
            {
                // ExcludeReplies = true,
                TrimUser = true,
                MaxId = maxId,
                SinceId = sinceId
            };

            return timelineParms;
        }


● curlでダウンロード時にタイムスタンプを保持する方法

 -Rオプションを付ける。
curl -R xxxx

2019/12/04
Windows 10の curlコマンドで Protocol
Windows 10の curlコマンドで Protocol "'https" not supported or disabled in libcurlの解決方法

  Windows 10の curlコマンドで Protocol https not supportedの解決方法、’を”にする



Tags: [Windows], [無人インストール]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠
Androidで DBのフレームワーク SQLDelightを使う方法、公式の手順だとエラーしか出ない罠

  SQLDelightを Androidで使う方法

Androidで Twitter4Jを使って Twitterのユーザー タイムラインを丸っと取得する方法
Androidで Twitter4Jを使って Twitterのユーザー タイムラインを丸っと取得する方法

  Twitter4Jの Java ラッパでまるっと取得!ユーザーアカウントでのログインが必要

Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法
Androidの公式 Twitterライブラリで Twitterのユーザー タイムラインを丸っと取得する方法

  Twitter Kit for Androidでまるっと取得!ユーザーアカウントでのログイン不要

Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法
Pythonの Tweepyライブラリで Twitterの投稿内容を投稿画像込みで丸っと取得する方法

  まるっと取得したかった!質問は受け付けない!

ちいかわの単行本を買ってみた!もちろん特装版!
ちいかわの単行本を買ってみた!もちろん特装版!

  特装版のカルタが怖いと話題のちいかわ単行本。

すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ
すみっコぐらし サンエックスの人気キャラクター お菓子のキッシュシュクレ(タルト)、フィナンシェ

  すみっコぐらしshop東京駅店 東京キャラクターストリート 東京駅一番街に行ってみた

【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】
【全集中の呼吸】鬼滅の刃の食玩お菓子を買ったら報告するスレ、オマケシール集め【鬼殺隊】

  【全買占め】「鬼滅の刃」ブームに乗っかって鬼滅のお菓子を根こそぎ買い占め、これは戦争だ【在庫滅殺】

【我が道を】遂にガチの食玩にも手を出してしまった。。。Re:ゼロから始める異世界生活ウエハース vol.3【突き進むのみ】
【我が道を】遂にガチの食玩にも手を出してしまった。。。Re:ゼロから始める異世界生活ウエハース vol.3【突き進むのみ】

  【レムは俺の嫁】レムが主役のアニメ、リゼロ【エミリアは脇役】

テレビアニメ ご注文はうさぎですか? 通称「ごちうさ」のフィギュアを買ったのでレビュー
テレビアニメ ご注文はうさぎですか? 通称「ごちうさ」のフィギュアを買ったのでレビュー

  ごちうさのスペシャル フィギュア チノ リゼ シャロを買ったのでレビュー、UFOキャッチャー景品




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/software/twitter_api_get_whole_tweet_cs/