MacOS 和 Mono 上的 TweetSharp SendTweetWithMedia
TweetSharp SendTweetWithMedia on MacOS and Mono
我现在试着在推特上发布一张图片几个小时,我开始怀疑它是否在 Mono 上不起作用?
我使用的代码是这样的:
public void SendMediaTweet(string Reply, string ImagePath)
{
if (File.Exists(ImagePath))
{
using (var stream = new FileStream(ImagePath, FileMode.Open))
{
Dictionary<string, Stream> images = new Dictionary<string, Stream> { { ImagePath, stream } };
var tweet = Service.SendTweetWithMedia(new SendTweetWithMediaOptions
{
Status = Reply,
Images = images
});
}
}
}
我已经在网上阅读了数十种 if 示例代码,它们都与我的非常相似。我是否漏掉了一些明显的东西?
没有上传图片,推文为空
编辑:
正如 Yort 指出的那样, API 调用已被弃用,Tweetsharp 不支持新方法。所以我转而使用 TweetMoaSharp。我使用 TweetMoaSharp 解决它的方法是:
public void SendMediaTweetReply(string Reply, long StatusId, string ImagePath)
{
if (File.Exists(ImagePath))
{
using (var stream = new FileStream(ImagePath, FileMode.Open))
{
var Media = Service.UploadMedia(new UploadMediaOptions() { Media = new MediaFile() { FileName = ImagePath, Content = stream } });
List<string> MediaIds = new List<string>();
MediaIds.Add(Media.Media_Id);
var Result = Service.SendTweet(new SendTweetOptions() { Status = Reply, InReplyToStatusId = StatusId, MediaIds = MediaIds });
}
}
}
请转到 https://apps.twitter.com/,登录您的帐户,然后转到 Keys and Access Tokens
选项卡并确保您已创建 api 密钥、令牌等
请确保您正确创建了推特服务→
TwitterService _ts = new TwitterService(consumerKey, consumerSecret, token, tokenSecret);
那么就可以正常使用了→
var bytes = File.ReadAllBytes(@"c:/tmp/a.bmp");
var d = new Dictionary<string, Stream> { { "x", new MemoryStream(bytes) } };
_ts.SendTweetWithMedia(new SendTweetWithMediaOptions { Images = d });
Twitter 对图片有很多限制。查看 Twitter.com 上的 API 文档。图像必须小于特定字节(文件)大小,并且每个维度的像素数必须小于特定值。此外,仅允许某些文件格式。
调用后还要检查 TwitterService 对象的响应 属性,看看它是否提供了错误的更多详细信息。
最后,Api 方法现已弃用。您应该使用 uploadmedia,然后使用带有媒体 ID 列表的 sendtweet 方法。原始 tweetsharp(现已废弃)不支持此功能,但 TweetMoaSharp 支持。
我现在试着在推特上发布一张图片几个小时,我开始怀疑它是否在 Mono 上不起作用?
我使用的代码是这样的:
public void SendMediaTweet(string Reply, string ImagePath)
{
if (File.Exists(ImagePath))
{
using (var stream = new FileStream(ImagePath, FileMode.Open))
{
Dictionary<string, Stream> images = new Dictionary<string, Stream> { { ImagePath, stream } };
var tweet = Service.SendTweetWithMedia(new SendTweetWithMediaOptions
{
Status = Reply,
Images = images
});
}
}
}
我已经在网上阅读了数十种 if 示例代码,它们都与我的非常相似。我是否漏掉了一些明显的东西?
没有上传图片,推文为空
编辑: 正如 Yort 指出的那样, API 调用已被弃用,Tweetsharp 不支持新方法。所以我转而使用 TweetMoaSharp。我使用 TweetMoaSharp 解决它的方法是:
public void SendMediaTweetReply(string Reply, long StatusId, string ImagePath)
{
if (File.Exists(ImagePath))
{
using (var stream = new FileStream(ImagePath, FileMode.Open))
{
var Media = Service.UploadMedia(new UploadMediaOptions() { Media = new MediaFile() { FileName = ImagePath, Content = stream } });
List<string> MediaIds = new List<string>();
MediaIds.Add(Media.Media_Id);
var Result = Service.SendTweet(new SendTweetOptions() { Status = Reply, InReplyToStatusId = StatusId, MediaIds = MediaIds });
}
}
}
请转到 https://apps.twitter.com/,登录您的帐户,然后转到 Keys and Access Tokens
选项卡并确保您已创建 api 密钥、令牌等
请确保您正确创建了推特服务→
TwitterService _ts = new TwitterService(consumerKey, consumerSecret, token, tokenSecret);
那么就可以正常使用了→
var bytes = File.ReadAllBytes(@"c:/tmp/a.bmp");
var d = new Dictionary<string, Stream> { { "x", new MemoryStream(bytes) } };
_ts.SendTweetWithMedia(new SendTweetWithMediaOptions { Images = d });
Twitter 对图片有很多限制。查看 Twitter.com 上的 API 文档。图像必须小于特定字节(文件)大小,并且每个维度的像素数必须小于特定值。此外,仅允许某些文件格式。
调用后还要检查 TwitterService 对象的响应 属性,看看它是否提供了错误的更多详细信息。
最后,Api 方法现已弃用。您应该使用 uploadmedia,然后使用带有媒体 ID 列表的 sendtweet 方法。原始 tweetsharp(现已废弃)不支持此功能,但 TweetMoaSharp 支持。