public void UploadPicture(string blogFilePath, bool testFlag) { Console.WriteLine($"[INFO]START UPLOAD PICTURE IN FILE:\n{blogFilePath}"); const string matchRule = @"!\[.*?\]\((.*?)\)"; var pictureList = MdHandler.RegexParser(blogFilePath, matchRule); var pictureUrlDic = new Dictionary <string, string>(); Client blogClient = null; if (!testFlag) { blogClient = new Client(_connectionInfo); } foreach (var picturePath in pictureList) { if (picturePath.StartsWith("http")) { Console.WriteLine($"[INFO]Jump picture:{picturePath}"); continue; } try { var pictureAbsPath = Path.Combine(new FileInfo(blogFilePath).DirectoryName, picturePath); if (File.Exists(pictureAbsPath)) { if (!testFlag) { var pictureUrl = blogClient.NewMediaObject(picturePath, _picFileTable[new FileInfo(picturePath).Extension.ToLower()], File.ReadAllBytes(pictureAbsPath)); if (!pictureUrlDic.ContainsKey(picturePath)) { pictureUrlDic.Add(picturePath, pictureUrl.URL); } Console.WriteLine($"[INFO]{picturePath} uploaded"); } else { Console.WriteLine($"[INFO]{picturePath} needs upload"); } } else { Console.WriteLine($"[ERROR]No such file:{picturePath}"); } } catch (Exception e) { Console.WriteLine("[ERROR]" + e.Message); } } if (!testFlag) { var blogContent = MdHandler.ReplaceContentWithUrl(blogFilePath, pictureUrlDic); MdHandler.WriteFile(blogFilePath, new FileInfo(blogFilePath).DirectoryName, "", blogContent); } Console.WriteLine("[INFO]END UPLOAD PICTURE\n"); }
public static void ReplaceBlogUrl(string blogFilePath, string inDirPath, string outDirPath, string jsonFilePath, string blogPlatform) { Console.WriteLine($"[INFO]START REPLACE BLOG URL:\n{blogFilePath}"); const string matchRule = @"\[.*?\]\((.*?\.md)\)"; var linkList = MdHandler.RegexParser(blogFilePath, matchRule); var blogUrlDic = new Dictionary <string, string>(); var blogJson = (JArray)JsonConvert.DeserializeObject(File.ReadAllText(jsonFilePath)); var blogJsonDic = new Dictionary <string, JObject>(); if (!(inDirPath.EndsWith("\\") || inDirPath.EndsWith("/"))) { inDirPath = inDirPath + '\\'; } foreach (var jToken in blogJson) { var blog = (JObject)jToken; blogJsonDic.Add( PathHandler.GetAbsPath(Path.Combine(inDirPath, blog.Properties().First().Name), false), blog); } foreach (var link in linkList) { if (link.StartsWith("http")) { Console.WriteLine($"[INFO]Jump Link:{link}"); continue; } try { var absLink = PathHandler.GetAbsPath(Path.Combine(new FileInfo(blogFilePath).DirectoryName, link), false); var blogUrl = blogJsonDic[absLink][blogJsonDic[absLink].Properties().First().Name][blogPlatform].ToString(); if (!blogUrlDic.ContainsKey(link)) { Console.WriteLine($"[INFO]Replace link {link} to {blogUrl}"); blogUrlDic.Add(link, blogUrl); } } catch (Exception e) { Console.WriteLine("[ERROR]" + e.Message); return; } } var blogContent = MdHandler.ReplaceContentWithUrl(blogFilePath, blogUrlDic); FileInfo outPutFile = new FileInfo(Path.Combine(outDirPath, ".\\output\\" + blogPlatform + "\\", blogFilePath.Replace(inDirPath, ".\\")//这里要改 )); if (!Directory.Exists(outPutFile.DirectoryName)) { Directory.CreateDirectory(outPutFile.DirectoryName); } File.WriteAllText(outPutFile.FullName, blogContent); Console.WriteLine("[INFO]END REPLACE BLOG URL"); }