Logo

C# 获取Google Chrome的书签

photo

2024年06月25日

  其实这个很简单,就是读取一个在用户目录里面的一个Bookmarks文件就好了。

  先建立几个实体类

  

 1 public class GoogleChrome_bookMark_meta_info
 2     {
 3         public string last_visited_desktop { get; set; }
 4     }
 5 
 6  public class GoogleChrome_BookMark_children
 7     {
 8         public string date_added { get; set; }
 9         public string id { get; set; }
10         public GoogleChrome_bookMark_meta_info meta_info { get; set; }
11         public string name { get; set; }
12         public string type { get; set; }
13         public string url { get; set; }
14         public List<GoogleChrome_BookMark_children> children { get; set; }
15 
16     }
17 
18 public class GoogleChrome_BookMark_bookmark_bar_other_synced
19     {
20         public string date_added { get; set; }
21         public string date_modified { get; set; }
22         public string id { get; set; }
23         public string name { get; set; }
24         public string type { get; set; }
25         public List<GoogleChrome_BookMark_children> children { get; set; }
26     }
27 
28 public class GoogleChrome_BookMark_roots
29     {
30         public GoogleChrome_BookMark_bookmark_bar_other_synced bookmark_bar { get; set; }
31         public GoogleChrome_BookMark_bookmark_bar_other_synced other { get; set; }
32         public GoogleChrome_BookMark_bookmark_bar_other_synced synced { get; set; }
33     }
34 
35  public class GoogleChrome_BookMarkAllModel
36     {
37         public string checksum { get; set; }
38         public GoogleChrome_BookMark_roots roots { get; set;}
39         public string version { get; set; }
40     }

View Code

 

  具体实现

 1 static void Main(string[] args)
 2         {
 3             ///建几个Bookmarks 的实体类(Model)用来承载数据
 4             //获取由指定枚举标识的系统特殊文件夹的路径 ,, 其实就是读取用户目录下的Google Chrome 的Bookmarks 文件。
 5             string ChromeDatePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+@"\Google\Chrome\User Data\Default";
 6             string ChromeBookMarksPath = ChromeDatePath + @"\Bookmarks";
 7             if (File.Exists(ChromeBookMarksPath))
 8             {
 9                 Console.WriteLine("Chrome浏览器书签文件存在");
10             }
11             else
12                 Console.WriteLine("未找到Chrome浏览器书签");
13             Console.WriteLine(ChromeBookMarksPath);
14             StreamReader sr = new StreamReader(ChromeBookMarksPath);
15             string str = "";
16             while (!sr.EndOfStream)
17             {
18                 str += sr.ReadLine();
19             }
20             sr.Close();
21             string str2 = System.Text.RegularExpressions.Regex.Replace(str, "\\s*|\t|\r|\n", "");  //去空格、回车符
22             Console.WriteLine(str2);
23             //转为JSON格式
24             var obj = JsonConvert.DeserializeObject<GoogleChrome_BookMarkAllModel>(str2);
25             if (obj.roots.bookmark_bar != null)
26                 ShowChildren(0, obj.roots.bookmark_bar.children);
27             Console.ReadKey();
28           
29         }
30 
31         /// <summary>
32         /// 输出书签节点
33         /// </summary>
34         /// <param name="index">其实是没有用的,为了好看</param>
35         /// <param name="children">书签集合</param>
36         public static void ShowChildren(int index, List<GoogleChrome_BookMark_children> children)
37         {
38             foreach (var l in children)
39             {
40                 Console.WriteLine("");
41                 Console.WriteLine(GetTreeStr(index) + "书签ID:" + l.id);
42                 Console.WriteLine(GetTreeStr(index) + "书签名称:" + l.name);
43                 Console.WriteLine(GetTreeStr(index) + "书签类型:" + l.type);
44                 if (l.type == "folder")
45                 {
46                     Console.WriteLine(GetTreeStr(index) + l.name + "是文件夹,文件夹下标签数量为:" + l.children.Where(w => w.type == "url").Count()
47                         + "文件夹数量为:" + l.children.Where(w => w.type == "folder").Count());
48                     Console.WriteLine(GetTreeStr(index) + l.name + "目录下内容");
49                 }
50                 else
51                     Console.WriteLine(GetTreeStr(index) + "书签url:" + l.url);
52             }
53         }
54         
55         /// <summary>
56         /// 为了好看
57         /// </summary>
58         /// <param name="index">随便什么int数</param>
59         /// <returns></returns>
60         public static string GetTreeStr(int index)
61         {
62             string str = "";
63             for (int i = 0; i < index; i++)
64             {
65                 str += "...";
66             }
67             str += "L";
68             return str;
69         }
70     

View Code

 

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

本文只针对NTFS格式化的磁盘文件快速检索,速度不是非常快,是让你震惊。一般用文件遍历的方法检索一...C#快速找出磁盘内的所有文件

热门文章

Windows Server IIS+ARR反向代理(配置反向代理服务器) 1.概念说明:反向代理反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相...WindowsServerIIS+ARR反向代理(配置反向代理服务器) 作者:Pastore Antonio
1581 浏览量
ffmpeg 生成水印 1:先要配置ffmpeg的滤镜:参考:https://www.jianshu.com/p/9d24...ffmpeg生成水印 作者:Pastore Antonio
1508 浏览量
C#中List的FindAll方法的正确打开方式 初略的介绍一种常见的List写法,这种写法在3.0以后其实是很简单的,但是在2.0左右的系统运用中还...C#中List的FindAll方法的正确打开方式 作者:Pastore Antonio
1467 浏览量
IntelliJ IDEA 代码字体大小的快捷键设置放大缩小(很实用)(图文详解) 这是在设置IntelliJIDEA...IntelliJIDEA代码字体大小的快捷键设置放大缩小(很实用)(图文详解) 作者:Pastore Antonio
1461 浏览量
Navicat Premium 12.0.22 安装与破解 一、安装  NavicatPremium12.0.22的下载链接:https://pan.ba...NavicatPremium12.0.22安装与破解 作者:Pastore Antonio
1447 浏览量