private string GetContent(INiconicoIchibaInfo niconicoIchibaInfo, bool isXml) { var info = new MarketInformation(); foreach (var item in niconicoIchibaInfo.IchibaItems) { var marketItem = new MarketItem() { Category = item.Category, LinkUrl = item.LinkUrl, Price = item.Price, Name = item.Name, ThumbUrl = item.ThumbUrl, }; info.Items.Add(marketItem); } string serialized; if (isXml) { serialized = Xmlparser.Serialize(info); } else { serialized = JsonParser.Serialize(info); } return(serialized); }
/// <summary> /// XML文字列を取得する /// </summary> /// <param name="info"></param> /// <returns></returns> public string GetXmlContent(IDmcInfo info) { var data = new Xml::GetThumbInfoApiResponse(); data.Thumb.VideoId = info.Id; data.Thumb.Title = info.Title; data.Thumb.Description = info.Description; data.Thumb.ThumbnailUrl = info.ThumbInfo.GetSpecifiedThumbnail(ThumbSize.Large); data.Thumb.FirstRetrieve = new DateTimeOffset(info.UploadedOn, TimeSpan.FromHours(9)).ToString("yyyy-MM-ddTHH:mm:sszzz"); data.Thumb.Length = $"{Math.Floor((double)info.Duration / 60).ToString().PadLeft(2, '0')}:{info.Duration % 60}"; data.Thumb.ViewCounter = info.ViewCount; data.Thumb.CommentNum = info.CommentCount; data.Thumb.LikeCounter = info.LikeCount; data.Thumb.MylistCounter = info.MylistCount; data.Thumb.WatchUrl = Const::NetConstant.NiconicoWatchUrl + info.Id; data.Thumb.Tags.Tag.AddRange(info.Tags.Select(t => new Xml::Tag() { Text = t })); data.Thumb.UserId = info.ChannelName.IsNullOrEmpty() ? info.OwnerID.ToString() : null; data.Thumb.UserNickname = info.ChannelName.IsNullOrEmpty() ? info.Owner : null; data.Thumb.ChName = info.ChannelName.IsNullOrEmpty() ? null : info.ChannelName; data.Thumb.ChId = info.ChannelName.IsNullOrEmpty() ? null : info.ChannelID; return(Xmlparser.Serialize(data)); }
/// <summary> /// コメントを書き込む /// </summary> private void WriteComments(Xml::Packet comments, string targetPath) { string content = Xmlparser.Serialize(comments); IOUtils.CreateDirectoryIfNotExist(targetPath); using var fs = new StreamWriter(targetPath); fs.Write(content); }
public IAttemptResult WriteComment(IEnumerable <Core::IComment> comments, Core::IThreadInfo threadInfo, CommentWriterOption option) { string content; var data = new V2::PacketElement() { VideoID = option.VideoID }; data.Chat.AddRange(comments.Select(c => this._converter.ConvertCoreCommentToChat(c))); data.Thread = this._converter.ConvertCoreThreadInfoToThread(threadInfo); try { content = Xmlparser.Serialize(data, new XmlWriterSettings() { OmitXmlDeclaration = option.OmitXmlDeclaration, Indent = true }); } catch (Exception ex) { this._logger.Error("コメントのシリアライズに失敗しました。", ex); return(AttemptResult.Fail($"コメントのシリアライズに失敗しました。(詳細:{ex})")); } try { this._fileIO.Write(option.Path, content); } catch (Exception ex) { this._logger.Error("コメントの書き込みに失敗しました。", ex); return(AttemptResult.Fail($"コメントの書き込みに失敗しました。(詳細:{ex})")); } return(AttemptResult.Succeeded()); }