批量下载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#照片批量压缩小工具
做了一个照片批量压缩工具,其实核心代码几分钟就完成了,但整个小工具做下来还是花了一天的时间.中间遇到了大堆问题,并寻求最好的解决方案予以解决.现在就分享一下这个看似简单的小工具所使用的技术. 软件界面 ...
随机推荐
- IDEA热部署(二)---jetty插件启动maven项目
jetty插件的配置 我们使用jetty插件来进行启动我们的maven项目,在pom.xml中进行配置: <plugins> <plugin> <groupId>o ...
- android引入百度地图之最简单的例子-HelloBaiDuMap
开发工具 我用的是eclipse,目前这是开发android用的最多的一个工具. 开发准备 首先需要在百度地图开发平台上下载所需要的文档和功能,由于最新版的3.0.0的不是很熟悉,我这里用的是稍旧一点 ...
- Java中abstract关键字详解
abstract只能修饰类(class) 和 方法.而不能修饰成员变量.这是由于抽象的概念确定的.只有类和方法可以抽象出来,而成员变量不需要抽象. abstract修饰类 abstract之所以出现, ...
- iOS获取所有机型
1.手机系统版本:9.1 NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; 2.手机类型:iPhone 6 NSSt ...
- web-php绕过
0x01.web-PHP的悖论1 题目: 链接:http://game.sycsec.com:2009/10111.php 解题思路: 1.首先,web对于选择二进制方向的我这个菜鸡绝对是十分懵逼的, ...
- 关于apidoc文档生成不了的一个原因
前几天在写完API后,写注释文档,然后很习惯的去用apidoc取生成注释文档,但是奇怪的事发生了,没有注释的内容,也没有报错:注释代码如下: /* * @api {get} /applet/:id 根 ...
- Mac下面的SecureCRT以及破解方案详解
今天安装SecureCRT时遇到了一些问题,解决后便想分享给大家.本人还是在校大学生,如果有说得不好的地方请多多指教. 第一步:下载:https://macabc.com/detail.htm?app ...
- tensorflow初探
TensorFlow是一个采用数据流图,用于数值计算的开源软件库.自己接触tensorflow比较的早,可是并没有系统深入的学习过,现在TF在深度学习已经成了"标配",所以打算系统 ...
- 【ASP.NET Core】运行原理之启动WebHost
ASP.NET Core运行原理之启动WebHost 本节将分析WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().Build ...
- Office 365系列 (1)概览:完整的云中Office
Office365(以下简称O365)是一个集Office,企业邮箱,日历,日程管理,音视频会议 ,企业网盘 ,企业协作平台为一体的,旨在提高团队办公效率,减少基础设施投资和IT运维压力的解决方案.在 ...