获取Bitrac皮肤的程序
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-06-15 21:50
Ruby HTTP简单应用—下载Bitrac皮肤
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-06-09 23:58
关键词:ruby HTTP 下载页面
本文涉及
1.ruby iconv的使用
2.ruby http页面下载
3.新建目录
4.写文本文件和二进制文件
5.正则表达式
6.命令行参数传递
一、问题来源
找Loveyuki要皮肤未果,只有发扬自力更生精神,写一个获取皮肤的工具。
要知道什么是Bitrac,请看这里http://www.loveyuki.com/Article/Bitrac_Alpha_Update_List.aspx
二、安装ruby
下载http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
想了解更多关于ruby的东西,看这里。
三、下载皮肤的ruby源代码
打包后的在这里下载
get_bitrac_theme.zip (44.65 KB , 下载:77次)。
只要安装了ruby,就可以直接运行压缩包里的run.bat下载loveyuki.com的皮肤,如果要下载其它blog的,修改run.bat就可以了。
四、问题
1、没有找到好的判断获取的页面的文本编码的方法,现在是写死的,用起来不方便。
使用时可以将get_bitrac_theme.rb中的
data = Iconv.conv("UTF-8",file_name[1],data)前面加上#,注释掉,然后执行。
下载的文件如有乱码,通过能识别编码的文本编辑器识别后再修改定义的数组,取消注释,再次执行。
2、没有对图片文件是不是已经下载过进行判断,所以有的文件会下载几次,对ruby不熟,不知道有什么好的方法存储不重复的文件名。
并且只下载了.css中的图片,虽然目前这样做没有问题。
3、没有对异常进行处理,超时等会导致程序终止。这没什么,再执行一遍即可。
总之,不好用!明天用C#写一个好用的。
本文涉及
1.ruby iconv的使用
2.ruby http页面下载
3.新建目录
4.写文本文件和二进制文件
5.正则表达式
6.命令行参数传递
一、问题来源
找Loveyuki要皮肤未果,只有发扬自力更生精神,写一个获取皮肤的工具。
要知道什么是Bitrac,请看这里http://www.loveyuki.com/Article/Bitrac_Alpha_Update_List.aspx
二、安装ruby
下载http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
想了解更多关于ruby的东西,看这里。
三、下载皮肤的ruby源代码
- #Albert
- #www.albertsong.com
- #2008-6-9
- require 'net/http'
- require 'iconv'
- #皮肤文件名及编码
- arr_file_name=[
- ["Archive.htm","UTF-16LE"],
- ["Artcomm.htm","ISO-8859-1"],
- ["Article.htm","ISO-8859-1"],
- ["Comment.htm","ISO-8859-1"],
- ["Counter.htm","ISO-8859-1"],
- ["Default.htm","UTF-8"],
- ["Folders.htm","UTF-16LE"],
- ["Footer.htm","UTF-8"],
- ["Header.htm","UTF-8"],
- ["Labels.htm","UTF-16LE"],
- ["Recomm.htm","UTF-16LE"],
- ["Search.htm","UTF-16LE"],
- ["Theme.css","UTF-8"],
- ["Theme.js","UTF-8"]
- ]
- #
- if ARGV.length<1 then
- puts "USAGE: ruby get_bitrac_theme.rb www.yourdomain.com"
- exit
- end
- #建立http连接
- h = Net::HTTP.new(ARGV[0], 80)
- resp, data = h.get("/", nil )
- if resp.code != "200" then
- puts "Code = #{resp.code}"
- puts "Message = #{resp.message}"
- exit
- end
- #取得皮肤名称
- if data =~/Themes\/(.*)\/Theme.js/ then
- puts "Theme is #{$1}"
- theme_name=$1
- if !FileTest.exist?(theme_name) then
- Dir.mkdir theme_name
- end
- if !FileTest.exist?("#{theme_name}/Images") then
- Dir.mkdir "#{theme_name}/Images"
- end
- else
- puts "This is not a Bitrac powered blog."
- end
- #取得模板文件
- arr_file_name.each{|file_name|
- puts "get /Themes/#{theme_name}/#{file_name[0]}"
- resp, data = h.get("/Themes/#{theme_name}/#{file_name[0]}", nil )
- if resp.code == "200" then
- data = Iconv.conv("UTF-8",file_name[1],data)
- o_file = File.new("#{theme_name}/#{file_name[0]}", "w")
- o_file.puts data
- o_file.close
- else
- puts "/Themes/#{theme_name}/#{file_name[0]} not found."
- end
- }
- #取得图像文件
- resp, data = h.get("/Themes/#{theme_name}/Theme.css", nil )
- data.gsub(/Images\/(.*)\.(gif|png|jpg)/){|match|
- puts "get /Themes/#{theme_name}/#{match}"
- resp, image_data = h.get("/Themes/#{theme_name}/#{match}", nil )
- if resp.code == "200" then
- File.open("#{theme_name}/#{match}", "wb"){|o_file|
- o_file.print image_data
- }
- else
- puts "/Themes/#{theme_name}/#{match} not found. "
- end
- }
打包后的在这里下载
get_bitrac_theme.zip (44.65 KB , 下载:77次)。只要安装了ruby,就可以直接运行压缩包里的run.bat下载loveyuki.com的皮肤,如果要下载其它blog的,修改run.bat就可以了。
四、问题
1、没有找到好的判断获取的页面的文本编码的方法,现在是写死的,用起来不方便。
使用时可以将get_bitrac_theme.rb中的
data = Iconv.conv("UTF-8",file_name[1],data)前面加上#,注释掉,然后执行。
下载的文件如有乱码,通过能识别编码的文本编辑器识别后再修改定义的数组,取消注释,再次执行。
2、没有对图片文件是不是已经下载过进行判断,所以有的文件会下载几次,对ruby不熟,不知道有什么好的方法存储不重复的文件名。
并且只下载了.css中的图片,虽然目前这样做没有问题。
3、没有对异常进行处理,超时等会导致程序终止。这没什么,再执行一遍即可。
总之,不好用!明天用C#写一个好用的。
搞定了Bitrac博客程序在XP Pro下的安装
作者: 王者之剑(http://www.albertsong.com/) 日期: 2008-05-23 22:22
Bitrac博客程序是一个C#写的ASP.net 2.0版的单用户博客程序,目前还在开发中。
软件主页:http://www.loveyuki.com/Article/Bitrac_Alpha_Update_List.aspx
1)下载,请到主页下载
2)安装IIS,请通过添加或删除程序中的添加/删除windows组件来安装
3)安装.net 2.0,请到这里下载
http://www.microsoft.
软件主页:http://www.loveyuki.com/Article/Bitrac_Alpha_Update_List.aspx
1)下载,请到主页下载
2)安装IIS,请通过添加或删除程序中的添加/删除windows组件来安装
3)安装.net 2.0,请到这里下载
http://www.microsoft.
- 1











