#c# #linq-to-twitter
#c# #linq-to-twitter
Вопрос:
Я использую Linqtotwitter версии 5. Приведенный ниже код иногда работает, иногда нет. Если я установлю точку останова там, где я указал, и подожду некоторое время, это почти всегда работает.
Когда это не работает, я получаю сообщение об исключении «Недопустимое видео».
Я разместил образец видео здесь, но они соответствуют требованиям, приведенным здесь, опубликованным Twitter. Размер видео 75 МБ, длительность 34 секунды. Практически любое видео действует одинаково.
Я основал этот код на приведенномздесь примере
Я извлек код и поместил его в консольное приложение, где оно ведет себя точно так же.
class Program
{
static void Main(string[] args)
{
Task.Run(async () =>
{
UploadMedia theMedia = new UploadMedia();
int theResult = await theMedia.doitAsync();
Console.Write("Return value =" theResult.ToString());
} ).GetAwaiter().GetResult();
}
}
public class UploadMedia {
public async Task<int> doitAsync()
{
TwitterContext twitterContext = getContext();
List<string> _theMedia = new List<string>();
_theMedia.Add(@"C:TempRecentMediaMOV_1963.mp4");
try
{
string lsMediaType = "video/mp4";
string lsMediaCat = "tweet_video";
var imageUploadTasks = new List<Task<Media>>();
Task<Media> lsoImageMedia;
foreach (var lsItem in _theMedia)
{
Console.Write("Sending " lsItem);
lsoImageMedia = twitterContext.UploadMediaAsync(System.IO.File.ReadAllBytes(lsItem), lsMediaType, lsMediaCat);
imageUploadTasks.Add(lsoImageMedia);
};
await Task.WhenAll(imageUploadTasks);
List<ulong> mediaIds =
(from tsk in imageUploadTasks
select tsk.Result.MediaID)
.ToList();
// PUT A BREAKPOINT HERE AND WAIT A WHILE, AND THE VIDEO WILL UPLOAD
Status tweet = await twitterContext.TweetAsync("This is an example video", mediaIds);
if (tweet != null)
{
Console.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") " Status returned: " "(" tweet.StatusID ")"
tweet.User.Name ", " tweet.Text);
}
return 0;
}
catch (Exception ex)
{
Console.Write("Exception whilst sending/processing media: " ex.Message " : " ex.ToString());
return -1;
}
}
static private TwitterContext getContext()
{
SingleUserAuthorizer authorizer = new SingleUserAuthorizer();
SingleUserInMemoryCredentialStore cred = new SingleUserInMemoryCredentialStore();
cred.ConsumerKey = TwitterConstants.sConsumerKey;
cred.ConsumerSecret = TwitterConstants.sConsumerKeySecret;
cred.AccessToken = TwitterConstants.sAccessToken;
cred.AccessTokenSecret = TwitterConstants.sAccessTokenSecret;
authorizer.CredentialStore = cred;
var twitterContext = new TwitterContext(authorizer);
return twitterContext;
}
}
Комментарии:
1. Ваш код вообще не соответствует этому примеру: github.com/JoeMayo/LinqToTwitter/wiki/Tweeting-with-Media