Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
                    }
                }
            }
        }