• css 采集下载


    软件应用范围: 看到喜欢的网页,另存为的话,并不能直接保存css中引用的图片。 那么就有了本软件的用武之地。 
    亮点:自动匹配文件内的相对路径、css内图片地址值md5保存,用来避免不同文件夹同名文件的重复尴尬。
    ​1. [代码]AAuto 代码    
    import win.ui;
    import inet.url;
    import inet.whttp
    import string.md5;
    import web.form;
    import fsys;
    import win.ui.statusbar;
    /*DSG{{*/
    winform = ..win.form( right=587;bottom=400;max=false;text="CSS采集精灵";border="dialog frame";parent=...)
    winform.add( 
    btnDown={ bottom=71;text="下载";left=492;top=12;z=4;right=580;cls="button" };
    richedit={ vscroll=1;right=580;left=8;multiline=1;top=80;z=3;bottom=372;edge=1;cls="richedit" };
    groupbox={ bottom=67;right=482;left=7;top=7;z=1;text="CSS HTTP网址";edge=1;cls="groupbox" };
    cssUrl={ bottom=55;right=471;left=14;top=26;z=2;edge=1;cls="edit" }
    )
    /*}}*/
     
    status = win.ui.statusbar(winform);
    status.addItem(" AAuto 感谢有你,新年快乐!",280);
    status.addItem(" Author:时代网络。QQ:87059222 ");
     
    // 赋值测试css地址
    winform.cssUrl.text = "http://www.aau.cn/data/cache/style_1_common.css?U0g";
     
    winform.btnDown.oncommand = function(id,event){
        if(winform.cssUrl.text == ""){
            winform.msgbox("CSS文件地址不能为空!","CSS采集精灵");
                return ; 
        }
        var cssFile = winform.cssUrl.text;
        var tCssPath = io.splitpath(cssFile);
         
        //获取当前时间
        t_now=..time.now();
        t_now.format=" %Y年%m月%d日 %H-%M-%S";
        t_now = tostring(t_now);
        var cssFolder = string.replace(tCssPath.name,"[&%?]","_") + t_now;
        if(!io.exist("/data/" + cssFolder) ){
            fsys.createDir("/data/" + cssFolder)
        }
     
        var whttp = inet.whttp();
        cssContent,errmsg = whttp.get(cssFile);
        if(errmsg != null){
            winform.msgbox("CSS文件下载出现错误," + errmsg + "!","CSS采集精灵");
            return ; 
        }
        if (cssContent==null){
            winform.msgbox("CSS文件内容为空或者下载异常!","CSS采集精灵");
            return ; flash插件
        }http://www.huiyi8.com/flashchajian/​
        var regexExpression = "url((.*?))";
        for strGmatchResult in string.gmatch( cssContent, regexExpression ){
            if(string.find(strGmatchResult,'data:image') || strGmatchResult=='about:blank'){
                //暂不处理      
            } else {
                strGmatchResult =  string.replace(strGmatchResult,"""","");
                // 处理相对路径图片网址
                imghttpFile =  inet.url.joinpath(cssFile,strGmatchResult);
                // 将图片网址md5处理,防止重复下载以及文件同名不同参下载覆盖冲突,用md5取值都是唯一了。
                strGmatchResultMD5 = string.md5(imghttpFile,true); 
                 
                // http://hi.bdimg.com/static/qhome/css/home/n0001/home_datauri.css?v=bbdea37b.css
                // 针对css内 带参数图片文件,分离出真是后缀名。有更好的写法请指点哦
                // 如 "tpl_n0001_theme_001_background.jpg?v=30ab89f5.gif";
                var tpath = io.splitpath(strGmatchResult);
                var file = tpath.file;
                if(string.find(file,"?")){
                    ext = io.splitpath(string.split(file,'?')[1]).ext;
                }else {
                    ext = tpath.ext;
                }
     
                var saveCssImgFileName = strGmatchResultMD5 + ext;
                cssContent = string.replace(cssContent,'<@'+strGmatchResult+'@>',saveCssImgFileName);
                // 根据md5文件名判断没下载过才下载
                if (!io.exist("/data/" + cssFolder + "/" + saveCssImgFileName)) {
                    winform.richedit.appendText(imghttpFile + " ||| " + saveCssImgFileName + ' ');
                    imgData,errmsg = whttp.get(imghttpFile);
                    if(errmsg == null){
                        string.save("/data/" + cssFolder + "/" + saveCssImgFileName ,imgData);
                    }else{
                        winform.richedit.appendText(imghttpFile + " ||| 错误:" + errmsg + ' ');
                    }
                    win.delay(100);
                }
            }
        }
        string.save("/data/" + cssFolder + "/" + cssFolder + ".css" ,cssContent);
        winform.richedit.appendText("CSS及图片下载成功,感谢使用!" + ' ');
    }
     
    winform.show() 
    win.loopMessage(); 

  • 相关阅读:
    【sqlalchemy】使用正确的DB_URI却报错密码错误-密码中包含特殊符号导致
    为什么只调用了1次函数,但是该函数却被执行了2次呢?
    【flask】使用类组织配置-使用工厂函数创建程序实例
    【python3】configparser读取ini配置文件
    【flask】使用配置类管理app测试环境-demo版
    【flask】flask项目配置 app.config
    【flask】环境配置-python-dotenv的使用
    从pip+requirements.txt+virtualenv管理依赖到使用pipenv管理依赖-修改布署方式
    【MAC】安装chrome浏览器
    【MAC】图片编辑工具-合成图片
  • 原文地址:https://www.cnblogs.com/xkzy/p/3975188.html
Copyright © 2020-2023  润新知