热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#获取GoogleChrome的书签

其实这个很简单,就是读取一个在用户目录里面的一个Bookmarks文件就好了。先建立几个实体类1publicclassGoogleChrome_bookMark_meta_info

  其实这个很简单,就是读取一个在用户目录里面的一个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 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 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(str2);
25             if (obj.roots.bookmark_bar != null)
26                 ShowChildren(0, obj.roots.bookmark_bar.children);
27             Console.ReadKey();
28           
29         }
30 
31         /// 
32         /// 输出书签节点
33         /// 
34         /// 其实是没有用的,为了好看
35         /// 书签集合
36         public static void ShowChildren(int index, List 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         /// 
56         /// 为了好看
57         /// 
58         /// 随便什么int数
59         /// 
60         public static string GetTreeStr(int index)
61         {
62             string str = "";
63             for (int i = 0; i )
64             {
65                 str += "...";
66             }
67             str += "L";
68             return str;
69         }
70     
View Code

C# 获取Google Chrome的书签


推荐阅读
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
author-avatar
mobiledu2502895753
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有