replicate alt-text of images
This commit is contained in:
parent
4def11c2f9
commit
d956d49b34
5 changed files with 30 additions and 5 deletions
|
@ -1,9 +1,14 @@
|
||||||
namespace BirdsiteLive.ActivityPub
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace BirdsiteLive.ActivityPub
|
||||||
{
|
{
|
||||||
public class Attachment
|
public class Attachment
|
||||||
{
|
{
|
||||||
public string type { get; set; }
|
public string type { get; set; }
|
||||||
public string mediaType { get; set; }
|
public string mediaType { get; set; }
|
||||||
public string url { get; set; }
|
public string url { get; set; }
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||||
|
public string name { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -137,7 +137,8 @@ namespace BirdsiteLive.Domain
|
||||||
{
|
{
|
||||||
type = "Document",
|
type = "Document",
|
||||||
url = x.Url,
|
url = x.Url,
|
||||||
mediaType = x.MediaType
|
mediaType = x.MediaType,
|
||||||
|
name = x.AltText
|
||||||
};
|
};
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,6 @@
|
||||||
{
|
{
|
||||||
public string MediaType { get; set; }
|
public string MediaType { get; set; }
|
||||||
public string Url { get; set; }
|
public string Url { get; set; }
|
||||||
|
public string AltText { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -272,7 +272,8 @@ namespace BirdsiteLive.Twitter
|
||||||
{
|
{
|
||||||
var type = media.GetProperty("type").GetString();
|
var type = media.GetProperty("type").GetString();
|
||||||
string url = "";
|
string url = "";
|
||||||
if (type == "video" || type == "animated_gif")
|
string altText = null;
|
||||||
|
if (media.TryGetProperty("video_info", out _))
|
||||||
{
|
{
|
||||||
var bitrate = -1;
|
var bitrate = -1;
|
||||||
foreach (JsonElement v in media.GetProperty("video_info").GetProperty("variants").EnumerateArray())
|
foreach (JsonElement v in media.GetProperty("video_info").GetProperty("variants").EnumerateArray())
|
||||||
|
@ -291,10 +292,16 @@ namespace BirdsiteLive.Twitter
|
||||||
{
|
{
|
||||||
url = media.GetProperty("media_url_https").GetString();
|
url = media.GetProperty("media_url_https").GetString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (media.TryGetProperty("ext_alt_text", out JsonElement altNode))
|
||||||
|
{
|
||||||
|
altText = altNode.GetString();
|
||||||
|
}
|
||||||
var m = new ExtractedMedia
|
var m = new ExtractedMedia
|
||||||
{
|
{
|
||||||
MediaType = GetMediaType(type, media.GetProperty("media_url_https").GetString()),
|
MediaType = GetMediaType(type, url),
|
||||||
Url = url,
|
Url = url,
|
||||||
|
AltText = altText
|
||||||
};
|
};
|
||||||
Media.Add(m);
|
Media.Add(m);
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace BirdsiteLive.ActivityPub.Tests
|
||||||
|
|
||||||
Assert.AreEqual(tweet.Media[0].MediaType, "image/jpeg");
|
Assert.AreEqual(tweet.Media[0].MediaType, "image/jpeg");
|
||||||
Assert.AreEqual(tweet.Media.Length, 1);
|
Assert.AreEqual(tweet.Media.Length, 1);
|
||||||
// TODO test alt-text of images
|
Assert.AreEqual(tweet.Media[0].AltText, "President Obama with Speaker Nancy Pelosi in DC.");
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -75,7 +75,18 @@ namespace BirdsiteLive.ActivityPub.Tests
|
||||||
|
|
||||||
Assert.AreEqual(tweet.Media.Length, 1);
|
Assert.AreEqual(tweet.Media.Length, 1);
|
||||||
Assert.AreEqual(tweet.Media[0].MediaType, "video/mp4");
|
Assert.AreEqual(tweet.Media[0].MediaType, "video/mp4");
|
||||||
|
Assert.IsNull(tweet.Media[0].AltText);
|
||||||
Assert.IsTrue(tweet.Media[0].Url.StartsWith("https://video.twimg.com/"));
|
Assert.IsTrue(tweet.Media[0].Url.StartsWith("https://video.twimg.com/"));
|
||||||
|
|
||||||
|
|
||||||
|
var tweet2 = await _tweetService.GetTweetAsync(1657913781006258178);
|
||||||
|
Assert.AreEqual(tweet2.MessageContent,
|
||||||
|
"Coinbase has big international expansion plans\n\nTom Duff Gordon (@tomduffgordon), VP of International Policy @coinbase has the deets");
|
||||||
|
|
||||||
|
Assert.AreEqual(tweet2.Media.Length, 1);
|
||||||
|
Assert.AreEqual(tweet2.Media[0].MediaType, "video/mp4");
|
||||||
|
Assert.IsNull(tweet2.Media[0].AltText);
|
||||||
|
Assert.IsTrue(tweet2.Media[0].Url.StartsWith("https://video.twimg.com/"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
|
Loading…
Add table
Reference in a new issue