Skip to content

Commit 1b6661d

Browse files
committed
Merge branch 'release'
2 parents feaa8c3 + f8970d5 commit 1b6661d

File tree

9 files changed

+180
-10
lines changed

9 files changed

+180
-10
lines changed

Common/Common.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
<PackageReference Include="SharpVectors" Version="1.7.6" />
4747
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.114.3" PrivateAssets="none" />
4848
<PackageReference Include="WebSocket4Net" Version="0.15.2" />
49+
<PackageReference Include="WpfAnimatedGif" Version="2.0.2" />
4950
</ItemGroup>
5051
<ItemGroup>
5152
<ProjectReference Include="..\ISitePlugin\SitePlugin.csproj" />

Common/Converter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public static InlineUIContainer RemoteImage2UiContainer(IMessageImage remoteIcon
5252
Height = remoteIcon.Height ?? bi.Height,
5353
Source = imageSource,
5454
};
55+
//これを入れるとアニメーションGIFが動く
56+
WpfAnimatedGif.ImageBehavior.SetAnimatedSource(image, imageSource);
57+
5558
if (!string.IsNullOrEmpty(remoteIcon.Alt))
5659
{
5760
image.ToolTip = remoteIcon.Alt;

MultiCommentViewer/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33

44
[assembly: InternalsVisibleTo("MultiCommentViewerTests")]
55

6-
[assembly: AssemblyVersion("0.6.27")]
6+
[assembly: AssemblyVersion("0.6.28")]

MultiCommentViewer/ViewModels/CommentViewModel/McvYouTubeLiveCommentViewModel.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,43 @@ public McvYouTubeLiveCommentViewModel(YouTubeLiveSitePlugin.IYouTubeLiveSupercha
138138
Id = comment.Id;
139139
PostTime = comment.PostedAt.ToString("HH:mm:ss");
140140
}
141+
public McvYouTubeLiveCommentViewModel(YouTubeLiveSitePlugin.IYouTubeLivePaidSticker sticker, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options)
142+
: this(metadata, methods, connectionStatus, options)
143+
{
144+
_message = sticker;
145+
146+
_nameItems = sticker.NameItems;
147+
148+
var list = new List<IMessagePart>();
149+
list.Add(MessagePartFactory.CreateMessageText(sticker.PurchaseAmount + Environment.NewLine));
150+
list.Add(new Common.MessageImage
151+
{
152+
Url = sticker.StickerUrl,
153+
Alt = sticker.StickerTooltip,
154+
Width = sticker.StickerWidth,
155+
Height = sticker.StickerHeight,
156+
});
157+
MessageItems = list;
158+
159+
Thumbnail = sticker.UserIcon;
160+
Id = sticker.Id;
161+
PostTime = sticker.PostedAt.ToString("HH:mm:ss");
162+
}
163+
public McvYouTubeLiveCommentViewModel(YouTubeLiveSitePlugin.IYouTubeLiveSponsorshipsGiftPurchaseAnnouncement sticker, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options)
164+
: this(metadata, methods, connectionStatus, options)
165+
{
166+
_message = sticker;
167+
168+
_nameItems = sticker.NameItems;
169+
170+
var list = new List<IMessagePart>();
171+
list.AddRange(sticker.MessageItems);
172+
MessageItems = list;
173+
174+
Thumbnail = sticker.UserIcon;
175+
Id = sticker.Id;
176+
PostTime = sticker.PostedAt.ToString("HH:mm:ss");
177+
}
141178
public McvYouTubeLiveCommentViewModel(YouTubeLiveSitePlugin.IYouTubeLiveMembership comment, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options)
142179
: this(metadata, methods, connectionStatus, options)
143180
{

MultiCommentViewer/ViewModels/MainViewModel.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,14 @@ private void AddComment(IMessageContext messageContext, IConnectionStatus connec
711711
{
712712
mcvCvm = new McvYouTubeLiveCommentViewModel(item, messageContext.Metadata, messageContext.Methods, connectionName, _options);
713713
}
714+
else if (youtubeMessage is YouTubeLiveSitePlugin.IYouTubeLivePaidSticker sticker)
715+
{
716+
mcvCvm = new McvYouTubeLiveCommentViewModel(sticker, messageContext.Metadata, messageContext.Methods, connectionName, _options);
717+
}
718+
else if (youtubeMessage is YouTubeLiveSitePlugin.IYouTubeLiveSponsorshipsGiftPurchaseAnnouncement GiftPurchaseAnnouncement)
719+
{
720+
mcvCvm = new McvYouTubeLiveCommentViewModel(GiftPurchaseAnnouncement, messageContext.Metadata, messageContext.Methods, connectionName, _options);
721+
}
714722
else if (youtubeMessage is YouTubeLiveSitePlugin.IYouTubeLiveMembership member)
715723
{
716724
mcvCvm = new McvYouTubeLiveCommentViewModel(member, messageContext.Metadata, messageContext.Methods, connectionName, _options);

YouTubeLiveIF/Message.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public enum YouTubeLiveMessageType
99
Unknown,
1010
Comment,
1111
Superchat,
12+
PaidSticker,
13+
SponsorshipsGiftPurchaseAnnouncement,
1214
Membership,
1315
Connected,
1416
Disconnected,
@@ -46,6 +48,28 @@ public interface IYouTubeLiveSuperchat : IYouTubeLiveMessage
4648
string UserId { get; }
4749
string PurchaseAmount { get; }
4850
}
51+
public interface IYouTubeLivePaidSticker : IYouTubeLiveMessage
52+
{
53+
IEnumerable<IMessagePart> NameItems { get; }
54+
IMessageImage UserIcon { get; }
55+
DateTime PostedAt { get; }
56+
string Id { get; }
57+
string UserId { get; }
58+
string PurchaseAmount { get; }
59+
string StickerUrl { get; }
60+
int StickerWidth { get; }
61+
int StickerHeight { get; }
62+
string StickerTooltip { get; }
63+
}
64+
public interface IYouTubeLiveSponsorshipsGiftPurchaseAnnouncement : IYouTubeLiveMessage
65+
{
66+
IEnumerable<IMessagePart> NameItems { get; }
67+
IEnumerable<IMessagePart> MessageItems { get; set; }
68+
IMessageImage UserIcon { get; }
69+
DateTime PostedAt { get; }
70+
string Id { get; }
71+
string UserId { get; }
72+
}
4973
public interface IYouTubeLiveMembership : IYouTubeLiveMessage
5074
{
5175
IEnumerable<IMessagePart> NameItems { get; }

YouTubeLiveSitePlugin/Message.cs

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Linq;
7+
using System.Security.Policy;
78

89
namespace YouTubeLiveSitePlugin
910
{
@@ -35,8 +36,8 @@ internal class YouTubeLiveMembership : MessageBase2, IYouTubeLiveMembership
3536
public string Id { get; set; }
3637
public IEnumerable<IMessagePart> NameItems { get; set; }
3738
public IEnumerable<IMessagePart> CommentItems { get; set; }
38-
public IEnumerable<IMessagePart> HeaderPrimaryTextItems { get; set; }
39-
public IEnumerable<IMessagePart> HeaderSubTextItems { get; set; }
39+
public IEnumerable<IMessagePart> HeaderPrimaryTextItems { get; set; }
40+
public IEnumerable<IMessagePart> HeaderSubTextItems { get; set; }
4041
//public string UserName { get; set; }
4142
public string UserId { get; set; }
4243
public DateTime PostedAt { get; set; }
@@ -90,6 +91,59 @@ public YouTubeLiveSuperchat(SuperChat text) : base("")
9091
PurchaseAmount = text.PurchaseAmount;
9192
}
9293
}
94+
internal class YouTubeLivePaidSticker : MessageBase2, IYouTubeLivePaidSticker
95+
{
96+
public override SiteType SiteType { get; } = SiteType.YouTubeLive;
97+
public YouTubeLiveMessageType YouTubeLiveMessageType { get; } = YouTubeLiveMessageType.PaidSticker;
98+
//public string Comment { get; set; }
99+
public string Id { get; set; }
100+
public IEnumerable<IMessagePart> NameItems { get; set; }
101+
//public IEnumerable<IMessagePart> CommentItems { get; set; }
102+
public string UserId { get; set; }
103+
public DateTime PostedAt { get; set; }
104+
public IMessageImage UserIcon { get; set; }
105+
public string PurchaseAmount { get; }
106+
public string StickerUrl { get; }
107+
public int StickerWidth { get; }
108+
public int StickerHeight { get; }
109+
public string StickerTooltip { get; }
110+
111+
public YouTubeLivePaidSticker(PaidSticker text) : base("")
112+
{
113+
UserId = text.ChannelId;
114+
Id = text.Id;
115+
//CommentItems = MessageBase.Convert(text.MessageItems);
116+
NameItems = MessageBase.Convert(text.AuthorName, text.AuthorBadges);
117+
UserIcon = MessageBase.Convert(text.AuthorPhoto);
118+
PostedAt = MessageBase.Convert(text.TimestampUsec);
119+
PurchaseAmount = text.PurchaseAmount;
120+
StickerUrl = text.StickerThumbnailUrl;
121+
StickerWidth = text.StickerThumbnailWidth;
122+
StickerHeight = text.StickerThumbnailHeight;
123+
StickerTooltip = text.StickerTooltip;
124+
}
125+
}
126+
internal class YouTubeLiveSponsorshipsGiftPurchaseAnnouncement : MessageBase2, IYouTubeLiveSponsorshipsGiftPurchaseAnnouncement
127+
{
128+
public override SiteType SiteType { get; } = SiteType.YouTubeLive;
129+
public YouTubeLiveMessageType YouTubeLiveMessageType { get; } = YouTubeLiveMessageType.SponsorshipsGiftPurchaseAnnouncement;
130+
public string Id { get; set; }
131+
public IEnumerable<IMessagePart> NameItems { get; set; }
132+
public IEnumerable<IMessagePart> MessageItems { get; set; }
133+
public string UserId { get; set; }
134+
public DateTime PostedAt { get; set; }
135+
public IMessageImage UserIcon { get; set; }
136+
137+
public YouTubeLiveSponsorshipsGiftPurchaseAnnouncement(SponsorshipsGiftPurchaseAnnouncement text) : base("")
138+
{
139+
UserId = text.ChannelId;
140+
Id = text.Id;
141+
MessageItems = MessageBase.Convert(text.HeaderPrimaryText);
142+
NameItems = MessageBase.Convert(text.AuthorName, text.AuthorBadges);
143+
UserIcon = MessageBase.Convert(text.AuthorPhoto);
144+
PostedAt = MessageBase.Convert(text.TimestampUsec);
145+
}
146+
}
93147
internal class YouTubeLiveComment : MessageBase2, IYouTubeLiveComment
94148
{
95149
public override SiteType SiteType { get; } = SiteType.YouTubeLive;

YouTubeLiveSitePlugin/Next/CommentProviderNext.cs

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -784,19 +784,31 @@ private void OnMessageReceived(IAction action, bool isInitialComment)
784784
RaiseMessageReceived(CreateMessageContext2(superChat, isInitialComment));
785785
}
786786
break;
787+
case PaidSticker paidSticker:
788+
{
789+
if (IsDuplicate(paidSticker.Id))
790+
{
791+
return;
792+
}
793+
RaiseMessageReceived(CreateMessageContext2(paidSticker, isInitialComment));
794+
}
795+
break;
796+
case SponsorshipsGiftPurchaseAnnouncement giftPurchase:
797+
{
798+
if (IsDuplicate(giftPurchase.Id))
799+
{
800+
return;
801+
}
802+
RaiseMessageReceived(CreateMessageContext2(giftPurchase, isInitialComment));
803+
}
804+
break;
787805
case ParseError parseError:
788806
{
789807
_logger.LogException(new Exception(), "ParseError", parseError.Raw);
790808
}
791809
break;
792810
case MemberShip memberShip:
793811
break;
794-
case TickerPaidMessage tickerPaidMessage:
795-
break;
796-
case TickerPaidSticker tickerPaidSticker:
797-
break;
798-
case TickerSponser tickerSponser:
799-
break;
800812
case IgnoredMessage ignoredMessage:
801813
break;
802814
default:
@@ -863,6 +875,29 @@ private YouTubeLiveMessageContext CreateMessageContext2(SuperChat text, bool isI
863875
metadata.User.Name = nameItems;
864876
return new YouTubeLiveMessageContext(message, metadata, methods);
865877
}
878+
private YouTubeLiveMessageContext CreateMessageContext2(PaidSticker text, bool isInitialComment)
879+
{
880+
//IYouTubeLiveMessage message;
881+
882+
var message = new YouTubeLivePaidSticker(text);
883+
//message = a;
884+
885+
var metadata = CreateMetadata(message, isInitialComment);
886+
var methods = new YouTubeLiveMessageMethods();
887+
888+
metadata.User.Name = message.NameItems;
889+
return new YouTubeLiveMessageContext(message, metadata, methods);
890+
}
891+
private YouTubeLiveMessageContext CreateMessageContext2(SponsorshipsGiftPurchaseAnnouncement text, bool isInitialComment)
892+
{
893+
var message = new YouTubeLiveSponsorshipsGiftPurchaseAnnouncement(text);
894+
895+
var metadata = CreateMetadata(message, isInitialComment);
896+
var methods = new YouTubeLiveMessageMethods();
897+
898+
metadata.User.Name = message.NameItems;
899+
return new YouTubeLiveMessageContext(message, metadata, methods);
900+
}
866901
//private void OnMessageReceived(IInternalMessage e, bool isInitialComment)
867902
//{
868903
// switch (e)
@@ -1035,6 +1070,14 @@ private YouTubeLiveMessageMetadata CreateMetadata(IYouTubeLiveMessage message, b
10351070
{
10361071
userId = membership.UserId;
10371072
}
1073+
else if (message is IYouTubeLivePaidSticker paidSticker)
1074+
{
1075+
userId = paidSticker.UserId;
1076+
}
1077+
else if (message is IYouTubeLiveSponsorshipsGiftPurchaseAnnouncement purchaseAnnouncement)
1078+
{
1079+
userId = purchaseAnnouncement.UserId;
1080+
}
10381081
bool isFirstComment;
10391082
IUser user;
10401083
if (userId != null)

0 commit comments

Comments
 (0)