C# 获取Google Chrome的书签
其实这个很简单,就是读取一个在用户目录里面的一个Bookmarks文件就好了。
先建立几个实体类
public class GoogleChrome_bookMark_meta_info
{
public string last_visited_desktop { get; set; }
} public class GoogleChrome_BookMark_children
{
public string date_added { get; set; }
public string id { get; set; }
public GoogleChrome_bookMark_meta_info meta_info { get; set; }
public string name { get; set; }
public string type { get; set; }
public string url { get; set; }
public List<GoogleChrome_BookMark_children> children { get; set; } } public class GoogleChrome_BookMark_bookmark_bar_other_synced
{
public string date_added { get; set; }
public string date_modified { get; set; }
public string id { get; set; }
public string name { get; set; }
public string type { get; set; }
public List<GoogleChrome_BookMark_children> children { get; set; }
} public class GoogleChrome_BookMark_roots
{
public GoogleChrome_BookMark_bookmark_bar_other_synced bookmark_bar { get; set; }
public GoogleChrome_BookMark_bookmark_bar_other_synced other { get; set; }
public GoogleChrome_BookMark_bookmark_bar_other_synced synced { get; set; }
} public class GoogleChrome_BookMarkAllModel
{
public string checksum { get; set; }
public GoogleChrome_BookMark_roots roots { get; set;}
public string version { get; set; }
}
具体实现
static void Main(string[] args)
{
///建几个Bookmarks 的实体类(Model)用来承载数据
//获取由指定枚举标识的系统特殊文件夹的路径 ,, 其实就是读取用户目录下的Google Chrome 的Bookmarks 文件。
string ChromeDatePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+@"\Google\Chrome\User Data\Default";
string ChromeBookMarksPath = ChromeDatePath + @"\Bookmarks";
if (File.Exists(ChromeBookMarksPath))
{
Console.WriteLine("Chrome浏览器书签文件存在");
}
else
Console.WriteLine("未找到Chrome浏览器书签");
Console.WriteLine(ChromeBookMarksPath);
StreamReader sr = new StreamReader(ChromeBookMarksPath);
string str = "";
while (!sr.EndOfStream)
{
str += sr.ReadLine();
}
sr.Close();
string str2 = System.Text.RegularExpressions.Regex.Replace(str, "\\s*|\t|\r|\n", ""); //去空格、回车符
Console.WriteLine(str2);
//转为JSON格式
var obj = JsonConvert.DeserializeObject<GoogleChrome_BookMarkAllModel>(str2);
if (obj.roots.bookmark_bar != null)
ShowChildren(, obj.roots.bookmark_bar.children);
Console.ReadKey(); } /// <summary>
/// 输出书签节点
/// </summary>
/// <param name="index">其实是没有用的,为了好看</param>
/// <param name="children">书签集合</param>
public static void ShowChildren(int index, List<GoogleChrome_BookMark_children> children)
{
foreach (var l in children)
{
Console.WriteLine("");
Console.WriteLine(GetTreeStr(index) + "书签ID:" + l.id);
Console.WriteLine(GetTreeStr(index) + "书签名称:" + l.name);
Console.WriteLine(GetTreeStr(index) + "书签类型:" + l.type);
if (l.type == "folder")
{
Console.WriteLine(GetTreeStr(index) + l.name + "是文件夹,文件夹下标签数量为:" + l.children.Where(w => w.type == "url").Count()
+ "文件夹数量为:" + l.children.Where(w => w.type == "folder").Count());
Console.WriteLine(GetTreeStr(index) + l.name + "目录下内容");
}
else
Console.WriteLine(GetTreeStr(index) + "书签url:" + l.url);
}
} /// <summary>
/// 为了好看
/// </summary>
/// <param name="index">随便什么int数</param>
/// <returns></returns>
public static string GetTreeStr(int index)
{
string str = "";
for (int i = ; i < index; i++)
{
str += "...";
}
str += "L";
return str;
}
C# 获取Google Chrome的书签的更多相关文章
- google chrome 浏览器书签丢失问题
在一次新打开标签页时,电脑卡死,强制重启后打开google chrome 浏览器,发现历史什么的都在,但书签栏全部丢失了 找到 系统盘:\Users\用户名\AppData\Local\Google\ ...
- 一个获取google chrome扩展crx文件信息的PHP操作类
此类中实现了从crx文件获取扩展的Appid.获取manifest.json文件内容.将crx文件转换为一般zip文件 代码如下: <?php class CrxParserException ...
- [C#]Google Chrome 书签导出并生成 MHTML 文件
目的 因为某些原因需要将存放在 Google Chrome 内的书签导出到本地,所幸 Google Chrome 提供了导出书签的功能. 分析 首先在 Google Chrome 浏览器当中输入 ch ...
- Google Chrome 书签导出并生成 MHTML 文件
目的 因为某些原因需要将存放在 Google Chrome 内的书签导出到本地,所幸 Google Chrome 提供了导出书签的功能. 分析 首先在 Google Chrome 浏览器当中输入 ch ...
- google chrome 删除重复的书签 about sync
之前 由于 谷歌 同步的不智能,且不询问用户同步方法和细节,导致我的书签包括了大量重复的书签,想去除重复的书签. 由于谷歌书签文件 存储在:C:\Documents and Settings\Admi ...
- 15个你不知道的杀手级Google Chrome功能
之前写过一篇我为什么使用Google Chrome浏览器,算是在使用了一段时间的Google Chrome后的一点粗浅认识,最近读到一篇文章15 Killer Google Chrome Featur ...
- 浅谈Google Chrome浏览器(理论篇)
注解:各位读者,经博客园工作人员反馈,hosts涉及违规问题,我暂时屏蔽了最新hosts,若已经获取最新hosts的朋友们,注意保密,不要外传.给大家带来麻烦,对此非常抱歉!!! 开篇概述 1.详解g ...
- 详解google Chrome浏览器(理论篇)
注解:各位读者,经博客园工作人员反馈,hosts涉及违规问题,我暂时屏蔽了最新hosts,若已经获取最新hosts的朋友们,注意保密,不要外传.给大家带来麻烦,对此非常抱歉!!! 开篇概述 1.详解g ...
- Google Chrome 浏览器的备用(离线)安装程序
Google Chrome 浏览器的备用(离线)安装程序(适用于 Windows) 如果您在使用 http://www.google.com/chrome 上的标准安装程序下载 Chrome 浏览器时 ...
随机推荐
- day5字典作业详解
1.day5题目 1.有如下变量(tu是个元祖),请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2&q ...
- Luogu P2257 YY的GCD 莫比乌斯反演
第一道莫比乌斯反演...$qwq$ 设$f(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]$ $F(n)=\sum_{n|d}f(d)=\lfloor \frac{N ...
- Ubuntu 16.04 LTS安装Docker
一.安装Docker的先决条件 1.运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU.2.运行Linux 3.8或更高版本内核.一些老版本 ...
- 基于.NetCore2.1。服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务
基于.NetCore2.1.服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务 https://www.cnblogs.com/ibeisha/p/weixinServ ...
- .NET Core中Circuit Breaker
谈谈Circuit Breaker在.NET Core中的简单应用 前言 由于微服务的盛行,不少公司都将原来细粒度比较大的服务拆分成多个小的服务,让每个小服务做好自己的事即可. 经过拆分之后,就避免不 ...
- Ubuntu新服务器安装lnmp
版本: nginx(无要求,最新) mysql(5.6.xx) php(5.6.xx) ubuntu(16.04,其他版本也并无过多差异) 准备: #apt-get update #apt-get i ...
- HDU 1029 一道微软面试题
http://acm.hdu.edu.cn/showproblem.php?pid=1029 给定一个数组,其中有一个相同的数字是出现了大于等于(n + 1) / 2次的.要求找出来. 1.明显排序后 ...
- MapReduce编程入门实例之WordCount:分别在Eclipse和Hadoop集群上运行
上一篇博文如何在Eclipse下搭建Hadoop开发环境,今天给大家介绍一下如何分别分别在Eclipse和Hadoop集群上运行我们的MapReduce程序! 1. 在Eclipse环境下运行MapR ...
- 【转载】Ubuntu16.04安装最新版nodejs
安装最新版nodejs 更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties softw ...
- 下一代的前端构建工具:parcel打包react
1. parcel很受欢迎,webpack太慢了,试试Parcel下一代的前端构建工具 2.Parcel很快,但缺少好多插件,没有base64,没有办法拆分打包文件.... 3.总结:适合小项目 4. ...