public static async Task <GenerationReturn> SaveLinkToPinboard(LinkContent toSave, IProgress <string> progress) { if (string.IsNullOrWhiteSpace(UserSettingsSingleton.CurrentSettings().PinboardApiToken)) { return(await GenerationReturn.Success("No PinboardApiToken - skipping save to Pinboard", toSave.ContentId)); } var descriptionFragments = new List <string>(); if (!string.IsNullOrWhiteSpace(toSave.Site)) { descriptionFragments.Add($"Site: {toSave.Site}"); } if (toSave.LinkDate != null) { descriptionFragments.Add($"Date: {toSave.LinkDate.Value:g}"); } if (!string.IsNullOrWhiteSpace(toSave.Description)) { descriptionFragments.Add($"Description: {toSave.Description}"); } if (!string.IsNullOrWhiteSpace(toSave.Comments)) { descriptionFragments.Add($"Comments: {toSave.Comments}"); } if (!string.IsNullOrWhiteSpace(toSave.Author)) { descriptionFragments.Add($"Author: {toSave.Author}"); } var tagList = Db.TagListParse(toSave.Tags); tagList.Add(UserSettingsSingleton.CurrentSettings().SiteName); tagList = tagList.Select(x => x.Replace(" ", "-")).ToList(); progress?.Report("Setting up Pinboard"); var bookmark = new Bookmark { Url = toSave.Url, Description = toSave.Title, Extended = string.Join(" ;; ", descriptionFragments), Tags = tagList, CreatedDate = DateTime.Now, Shared = true, ToRead = false, Replace = true }; try { using var pb = new PinboardAPI(UserSettingsSingleton.CurrentSettings().PinboardApiToken); progress?.Report("Adding Pinboard Bookmark"); await pb.Posts.Add(bookmark); } catch (Exception e) { return(await GenerationReturn.Error("Trouble Saving to Pinboard", toSave.ContentId, e)); } progress?.Report("Pinboard Bookmark Complete"); return(await GenerationReturn.Success("Saved to Pinboard", toSave.ContentId)); }
static void Main(string[] args) { var onlyTags = false; var filter = new List <string>(); var textToFind = ""; if (args.Length > 0) { var parameters = args[0]; if (!string.IsNullOrEmpty(parameters)) { if (parameters == "-h" || parameters == "/?") { ShowHelp(); } if (parameters == "/tags" || parameters == "/t") { onlyTags = true; } else if (parameters == "/text") { textToFind = args[1].ToString().ToUpper(); } else { filter.AddRange(parameters.Split(",")); } } } else { ShowHelp(); } //get your api token from https://pinboard.in/settings/password and store in a file elsewhere string userPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); var apiToken = File.ReadAllText(Path.Combine(userPath, "pinboard.key")); using (var pb = new PinboardAPI(apiToken)) { if (onlyTags) { var tags = pb.Tags.Get().Result; foreach (var tag in tags) { Console.WriteLine(tag.Tag); } } else if (textToFind != "") { var posts = pb.Posts.All().Result; foreach (var post in posts.FindAll(p => p.Description.ToUpper().Contains(textToFind))) { Console.WriteLine(post.Description + " -> " + post.Href + Environment.NewLine); } } else { var posts = pb.Posts.All(filter).Result; foreach (var post in posts) { Console.WriteLine(post.Description + " -> " + post.Href + Environment.NewLine); } } } }