public static void SaveUserAnswers(string site, int userid) { string datadir = "..\\..\\..\\..\\data\\" + site + "\\"; string postsdir = Path.Combine(datadir, "posts\\"); string path; if (!Directory.Exists(postsdir)) { Directory.CreateDirectory(postsdir); } SeApiClient client = new SeApiClient(Archive.APIURL, site); Dictionary <int, object> answers = client.LoadUserAnswers(userid); Console.WriteLine("Saving {0} answers...", answers.Count); foreach (int key in answers.Keys) { path = Path.Combine(postsdir, "A" + key.ToString() + ".md"); string title = "Answer " + key.ToString(); //if answer is already saved, use title from existing file try { if (File.Exists(path)) { TextReader rd = new StreamReader(path, Encoding.UTF8); using (rd) { AnswerMarkdown prev = AnswerMarkdown.FromMarkdown(site, rd); if (!String.IsNullOrEmpty(prev.Title)) { title = prev.Title; } } } } catch (IOException ex) { Console.WriteLine("Error when trying to read existing answer data"); Console.WriteLine(ex.ToString()); } TextWriter wr = new StreamWriter(path, false, Encoding.UTF8); using (wr) { AnswerMarkdown post = AnswerMarkdown.FromJsonData(site, answers[key]); post.Title = title; //insert newlines before code blocks - fix for CommonMark string body = post.Body; post.Body = FixPostBody(body); post.ToMarkdown(wr); } } }
public static void SaveSingleAnswer(string site, int id) { string datadir = "..\\..\\..\\..\\data\\" + site + "\\"; string postsdir = Path.Combine(datadir, "posts\\"); string path; if (!Directory.Exists(postsdir)) { Directory.CreateDirectory(postsdir); } Console.WriteLine("Saving single answer {0} from {1}...", id, site); SeApiClient client = new SeApiClient(Archive.APIURL, site); string a = client.LoadSingleAnswer(id); if (a == null) { throw new Exception("Failed to load answer " + id.ToString() + " from " + site); } path = Path.Combine(postsdir, "A" + id.ToString() + ".md"); string title = "Answer " + id.ToString(); //if answer is already saved, use title from existing file try { if (File.Exists(path)) { TextReader rd = new StreamReader(path, Encoding.UTF8); using (rd) { AnswerMarkdown prev = AnswerMarkdown.FromMarkdown(site, rd); if (!String.IsNullOrEmpty(prev.Title)) { title = prev.Title; } } } } catch (IOException ex) { Console.WriteLine("Error when trying to read existing answer data"); Console.WriteLine(ex.ToString()); } TextWriter wr = new StreamWriter(path, false, Encoding.UTF8); using (wr) { dynamic data = JSON.Parse(a); AnswerMarkdown post = AnswerMarkdown.FromJsonData(site, data); post.Title = title; //insert newlines before code blocks - fix for CommonMark string body = post.Body; post.Body = FixPostBody(body); post.ToMarkdown(wr); } Console.WriteLine("Success"); }