zoukankan      html  css  js  c++  java
  • 批量下载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() > 0)
                               {
                                   string url = downUrlQueue.Dequeue();
                                   string[] tempArray = url.Split('/');
                                   string fileName = tempArray[tempArray.Length - 1];
                                   HttpRequestHelper.DownloadFile(url, System.Environment.CurrentDirectory + "/font/" + fileName);
                                   tb_downLoadRecord.AppendText(System.Environment.CurrentDirectory + "/font/" + fileName + "
    ");
                               }
    
                           }));
                           Thread.Sleep(100);//线程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 = 0; i < mc.Count; i++)
                {
                    if (!mc[i].Value.Contains("../font/"))
                    {
                        WriteDownloadQueue(mc[i].Value);
                        tb_fileContent.AppendText(mc[i].Value+ "
    ");
                    }
    
                }
    
                MessageBox.Show("解析完成!");
    
            }
    
            public static void WriteDownloadQueue(string url)
            {
                lock (downUrlQueue)
                {
                    downUrlQueue.Enqueue(url);
                }
    
            }
        }
    }

    源码已经放到github 上面了:源码地址

    笔者原创,转载请添加原博客连接,谢谢!

  • 相关阅读:
    opengles 2.0 渲染Yuv视频
    wzplayer for android 版本面世
    wzplayer for android V1.0快出炉了
    wzplayer for android V1.0快出炉了
    wzplayer for android V1.0
    opengles 2.0 渲染Yuv视频
    新浪微博发布案例
    前端开发单位em
    vue 做一个简单的TodoList
    jquery对类的操作,添加,删除,点击添加,再点击删除
  • 原文地址:https://www.cnblogs.com/linbin524/p/DownloadGoogleFont.html
Copyright © 2011-2022 走看看