Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /