批量下载google 字体小工具
需要最新源码,或技术提问,请加QQ群:538327407
我的各种github 开源项目和代码:https://github.com/linbin524
在项目开发中,我们经常用外国的框架,如bootstrap、nodejs、angularjs 时候经常要配套google 字体等资源,
但是由于国内网络原因,经常框架跑起来,网页在请求google 字体时候,由于得不到响应,导致页面挂掉了,这是很尴尬的事情。
解决方法:1、代理
2、写一个小软件,批量下载google 字体,应用到项目中,解决这个问题。
基于这个需求,写了一个小软件,只要把涉及到google 字体的js copy 软件Textbox中,点击请求,下载google 字体,放到自己的项目中, 批量修改 js中google字体路径,就解决。
使用步骤:1、将 js 文件放到Textbox 中,选择解析下载字体,提示解析完成
2、点击下载字体,字体自动下载bin 文件下
原理解析: 通过正则表达式对 js 代码 解析,提炼 字体 下载地址,将地址存放到队列中,在调用 http 请求 下载
备注:下载时候,本地网络环境需要有翻墙

using AOP.Common;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms; namespace DownLoadGoogleFonts
{
public partial class Form1 : Form
{ public static Queue<string> downUrlQueue;
public delegate void InvokeHandler();//多线程委托调用
public Form1()
{
downUrlQueue = new Queue<string>();
InitializeComponent();
}
public Thread t1; /// <summary>
/// 下载文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_downloadFont_Click(object sender, EventArgs e)
{
t1 = new Thread(new ThreadStart(() =>
{
while (true)
{
this.Invoke(new InvokeHandler(() =>
{ if (downUrlQueue.Count() > )
{
string url = downUrlQueue.Dequeue();
string[] tempArray = url.Split('/');
string fileName = tempArray[tempArray.Length - ];
HttpRequestHelper.DownloadFile(url, System.Environment.CurrentDirectory + "/font/" + fileName);
tb_downLoadRecord.AppendText(System.Environment.CurrentDirectory + "/font/" + fileName + "\r\n");
} }));
Thread.Sleep();//线程100 0.1 正好
} })); t1.Start(); }
/// <summary>
/// 解析源文件字体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_analysisUrl_Click(object sender, EventArgs e)
{
string requestText = tb_fileContent.Text.Trim();
string RegexStr = "(?<=url\\()[^\\)]+"; MatchCollection mc;
Regex r = new Regex(RegexStr); mc = r.Matches(requestText); List<string> list = new List<string>(); tb_fileContent.Text = "";
for (int i = ; i < mc.Count; i++)
{
if (!mc[i].Value.Contains("../font/"))
{
WriteDownloadQueue(mc[i].Value);
tb_fileContent.AppendText(mc[i].Value+ "\r\n");
} } MessageBox.Show("解析完成!"); } public static void WriteDownloadQueue(string url)
{
lock (downUrlQueue)
{
downUrlQueue.Enqueue(url);
} }
}
}
源码已经放到github 上面了:源码地址
笔者原创,转载请添加原博客连接,谢谢!
批量下载google 字体小工具的更多相关文章
- echarts的下载为excel小工具
echarts自带有下载为图片的功能,但是没有下载为excel表格的功能,个人觉得下载为表格更为需要,所以写了个工具,此工具应用有局限性,只能用于柱形图和折线图,option的series要是如下形式 ...
- 今日头条、抖音、西瓜、火山、微视、陌陌等自媒体平台小视频批量下载工具v1.1.0(视频搬运福利)
前言 目前各大自媒体平台爆火,网络流量暴涨,各大自媒体平台的小视频为广大个广告主带来了如泉涌般的的视频流量,更给广大的自媒体小编带来了丰厚的利益回报,想要创做更多的自媒体内容着实不易,下面给广大的小视 ...
- 【游戏开发】Excel表格批量转换成CSV的小工具
一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...
- 分享一款非常好用的Fatkun图片批量下载工具
Fatkun图片批量下载 相信大家一定遇到过有着大量精美图片的网页,譬如美女照片.各种壁纸.设计素材.甚至是1024套图等等,但常常几十上百张的图要一张张手工去点击下载实在能让人抓狂!小编的工作中也常 ...
- KRPano资源分析工具使用说明(KRPano XML/JS解密 切片图批量下载 球面图还原 加密混淆JS还原美化)
软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...
- 批量下载网站图片的Python实用小工具
定位 本文适合于熟悉Python编程且对互联网高清图片饶有兴趣的筒鞋.读完本文后,将学会如何使用Python库批量并发地抓取网页和下载图片资源.只要懂得如何安装Python库以及运行Python程序, ...
- 批量下载网站图片的Python实用小工具(下)
引子 在 批量下载网站图片的Python实用小工具 一文中,讲解了开发一个Python小工具来实现网站图片的并发批量拉取.不过那个工具仅限于特定网站的特定规则,本文将基于其代码实现,开发一个更加通用的 ...
- 开源一个自动整理B站UWP客户端软件进行批量下载的视频文件的小工具BiliVideosReoganizeHelper
大家都知道B站是一个很受欢迎的视频学习网站,上面有很多无私的up主上传了大量优秀的教学视频,在此向B站致敬,向广大UP主致敬. 有时,我们需要下载收藏一些视频,以防止以后找不到了.那么我们可以用B ...
- C#照片批量压缩小工具
做了一个照片批量压缩工具,其实核心代码几分钟就完成了,但整个小工具做下来还是花了一天的时间.中间遇到了大堆问题,并寻求最好的解决方案予以解决.现在就分享一下这个看似简单的小工具所使用的技术. 软件界面 ...
随机推荐
- Kafka设计解析(八)- Exactly Once语义与事务机制原理
原创文章,首发自作者个人博客,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/transaction/ 写在前面的话 本 ...
- c语言的作用域、变量与结构体
一.变量的作用域 根据变量的作用域,可以分为: 1.局部变量: 1> 定义:在函数(代码块)内部定义的变量(包括函数的形参) 2> 作用域:局部变量只有在定义它的函数内部使用,其它函数不能 ...
- Codeforces543BDestory Roads心得
题目描述: In some country there are exactly n cities and m bidirectional roads connecting the cities. Ci ...
- Java第一季
1.Java常量的应用 语法:final 常量名 = 值: final String LOVE = "IMOOC"; final double PI = 3.14 举一个简单的例子 ...
- Python入门 - 容器类型
python的容器有四种:列表List,元祖Tuple,字典Dictionary和集合Set. 一.列表List a = [1, 2, 3, 'a', 'b', 'c'] b = 1.5 a.appe ...
- 35.Linux-分析并制作环形缓冲区
在上章34.Linux-printk分析.使用printk调试驱动里讲述了: printk()会将打印信息存在内核的环形缓冲区log_buf[]里, 可以通过dmesg命令来查看log_buf[] 1 ...
- 16. 使用Exhibitor管理ZooKeeper
Exhibitor是管理ZooKeeper服务实例的主管服务.由Netflix开发和开放源码,对于ZooKeeper的实例监控.备份/恢复.清理和可视化非常有用. Note Netflix Exhib ...
- NYOJ 417 死神来了 鸽巢原理
死神来了 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有一天,王小子在遨游世界时,遇到了一场自然灾害.一个人孤独的在一个岛上,没有吃的没有喝的.在他饥寒交迫将要死亡时 ...
- 给dalao们递dalao们的博客
hqh使用0 1敲完AC代码 FNXF FNXF tfx .io结尾的都是dalao! ssttkkl 复读:.io结尾的都是dalao! ThetaS Pirote YanQuijote 昵称不能为 ...
- linux apt-cache使用方法
apt-cache是linux下的一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件.APT包管理的大多数信息查询功能都可以由apt-cache命令实现,通过apt-cache命令配合不同 ...