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 <LocalCommentInfo> LoadComment(string folderPath, string niconicoID) { string?path = this.GetCommentFilePath(folderPath, niconicoID); if (path is null) { return(AttemptResult <LocalCommentInfo> .Fail("コメントファイルが存在しません。")); } string content; try { content = this._fileIO.OpenRead(path); } catch (Exception ex) { this._logger.Error("コメントファイルの読み込みに失敗しました。", ex); return(AttemptResult <LocalCommentInfo> .Fail($"コメントファイルの読み込みに失敗しました。(詳細:{ex.Message})")); } V2::PacketElement?data; try { data = Xmlparser.Deserialize <V2::PacketElement>(content); } catch (Exception ex) { this._logger.Error("コメントファイルの解析に失敗しました。", ex); return(AttemptResult <LocalCommentInfo> .Fail($"コメントファイルの解析に失敗しました。(詳細:{ ex.Message})")); } if (data is null) { return(AttemptResult <LocalCommentInfo> .Fail("コメントファイルの解析に失敗しました。")); } DateTime lastUpdatedTime; try { var info = new FileInfo(path); lastUpdatedTime = info.LastWriteTime; } catch (Exception ex) { this._logger.Error("コメントファイル情報の取得に失敗しました。", ex); return(AttemptResult <LocalCommentInfo> .Fail($"コメントファイル情報の取得に失敗しました。(詳細:{ex.Message})")); } var converted = data.Chat.Select(c => this._converter.ConvertChatToCoreComment(c)); return(AttemptResult <LocalCommentInfo> .Succeeded(new LocalCommentInfo(lastUpdatedTime, converted))); }
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()); }