using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using WechatPCMsgBakTool.Interface; using WechatPCMsgBakTool.Model; namespace WechatPCMsgBakTool { public class HtmlExport : IExport { private string HtmlBody = ""; private WXSession? Session = null; public void InitTemplate(WXSession session) { Session = session; HtmlBody = "溯雪微信聊天记录备份工具"; HtmlBody += string.Format("

与 {0}({1}) 的聊天记录

", Session.NickName, Session.UserName); HtmlBody += string.Format("

导出时间:{0}


", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } public void Save(string path = "",bool append = false) { if (!append) { File.WriteAllText(path, HtmlBody); } else { File.AppendAllText(path, HtmlBody); HtmlBody = ""; } } public void SetEnd() { HtmlBody += ""; } public void SetMsg(WXReader reader, WXSession session) { List msgList = reader.GetMsgs(session.UserName); msgList.Sort((x, y) => x.CreateTime.CompareTo(y.CreateTime)); foreach (var msg in msgList) { if (Session == null) throw new Exception("请初始化模版:Not Use InitTemplate"); HtmlBody += string.Format("

{0} {1}

", msg.IsSender ? "我" : Session.NickName, TimeStampToDateTime(msg.CreateTime).ToString("yyyy-MM-dd HH:mm:ss")); if (msg.Type == 1) HtmlBody += string.Format("

{0}

", msg.StrContent); else if(msg.Type == 3) { string? path = reader.GetImage(msg); if (path == null) { HtmlBody += string.Format("

{0}

", "图片转换出现错误或文件不存在"); continue; } HtmlBody += string.Format("

", path); } else if(msg.Type == 43) { string? path = reader.GetVideo(msg); if (path == null) { HtmlBody += string.Format("

{0}

", "视频不存在"); continue; } HtmlBody += string.Format("

", path); } else { HtmlBody += string.Format("

{0}

", "暂未支持的消息"); } } } private static DateTime TimeStampToDateTime(long timeStamp, bool inMilli = false) { DateTimeOffset dateTimeOffset = inMilli ? DateTimeOffset.FromUnixTimeMilliseconds(timeStamp) : DateTimeOffset.FromUnixTimeSeconds(timeStamp); return dateTimeOffset.LocalDateTime; } } }