天涯抽水机 源码
原文地址:http://www.ecranesoft.com/bbs/showtopic-9579.aspx
import win.ui;
import win.ole.image;
import web.form;
import inet.http;
/*****************************
* 名称:天涯抽水机
* 作者: -低 调-
* 版本: 1.01
* 日期:2010.10.14
* 备注: 程序仅用于AAuto学习研究,
*****************************/
/*--------------------------------变量----------------------------------*/
CONT = ""; //网页源代码
XX = {"title";"author";"pageid"=0;"isempty"} //内容信息
allmess = {}; //全部数据
allpage = {}; //所有页码
lzmess = {}; //楼主信息
guolv = {"\<.*?\>";"·";" ";"此帖发自掌中天涯:wap.tianya.cn";"\<br\>"};//过滤字符规则
tihuan = {};//过滤字符规则
lpage = ""; //下一页
npage = ""; //上一页
opage = ""; //当前页
/*--------------------------------窗体----------------------------------*/
/*DSG{{*/
var winform = win.form(parent=...; right=703;bgcolor=16777215;bottom=399;scroll=1;text="天涯抽水机 -低 调- QQ:779477940";border="dialog frame";mode="popup" )
winform.add(
button2={ ah=1;bottom=27;text="开始抽水";left=632;top=8;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=688;aw=1;z=3;cls="button" };
show_content={ bottom=392;right=624;left=8;multiline=1;top=32;font=LOGFONT( name="宋体";h=-12 );z=11;vscroll=1;text="";edge=1;cls="richedit" };
button1={ ah=1;bottom=323;text="帮助手册";left=632;top=304;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=687;aw=1;z=2;cls="button" };
button5={ ah=1;bottom=91;text="只看楼主";left=632;top=72;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=688;aw=1;z=6;cls="button" };
static={ right=664;bottom=200;text="当前:";left=632;top=184;font=LOGFONT( name="宋体";h=-12 );z=13;transparent=1;cls="static" };
input_url={ ah=1;bottom=27;text="";left=8;top=8;font=LOGFONT( name="宋体";h=-12 );z=1;aw=1;right=624;edge=1;cls="edit" };
show_allpage={ right=688;bottom=184;text="";left=664;top=168;font=LOGFONT( name="宋体";h=-12 );z=14;transparent=1;cls="static" };
show_static={ right=664;bottom=184;text="总数:";left=632;top=168;font=LOGFONT( name="宋体";h=-12 );z=12;transparent=1;cls="static" };
button13={ ah=1;bottom=355;text="程序更新";left=632;top=336;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=687;aw=1;z=10;cls="button" };
button6={ ah=1;bottom=123;text="上一页";left=632;top=104;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=688;aw=1;z=7;cls="button" };
button111={ ah=1;bottom=387;text="关闭程序";left=632;top=368;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=687;aw=1;z=4;cls="button" };
button7={ ah=1;bottom=155;text="下一页";left=632;top=136;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=688;aw=1;z=8;cls="button" };
button10={ ah=1;bottom=59;text="暴力抽水";left=632;top=40;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=688;aw=1;z=9;cls="button" };
button4={ ah=1;bottom=291;text="导出TXT";left=632;top=272;font=LOGFONT( name="宋体";h=-12 );transparent=1;right=687;aw=1;z=5;cls="button" };
show_nowpage={ right=688;bottom=200;text="";left=664;top=184;font=LOGFONT( name="宋体";h=-12 );z=15;transparent=1;cls="static" }
)
/*}}*/
/*
//创建web窗体
var wb = web.form( winform.show_content
,//可输入_UIFLAG_ 前缀的常量自定义外观
,//可输入_DLCTL_ 前缀的常量以控制下载行为
);
//转到网址
winform.button.oncommand = function(id,event){
//显示对应网页
show_url(winform.input_url.text);
// show_url("http://www.tianya.cn/publicforum/content/funinfo/1/2273274.shtml");
}
*/
/*****************************
程序更新
*****************************/
winform.button13.oncommand = function(id,event){
win.msgbox( "请访问 http://wo94.com 查看最新更新" );
}
/*****************************
暴力抽水
*****************************/
winform.button10.oncommand = function(id,event){
re = win.msgboxTest('暴力抽水将会把帖子所有页全部抽出!非常的暴力!\r\n配置不高,网速不快,请谨慎使用!\n继续使用请按确定!',"警告")
if(re = 1){
allmess = {}; //清空原信息
lzmess = {}; //清空楼主信息
winform.show_content.text = "";
urll = winform.input_url.text; //网页地址
start(urll,1); //初始化操作 获取第一页
for(k,v in allpage){
if(k>1){
urll = "http://www.tianya.cn/publicforum/content/funinfo/1/"+v+".shtml";
start(urll,0)
win.delay(1000);
}
}
set_show_content(allmess); //显示所有信息
set_static(); //设置运行状态
}
}
/*****************************
开始抽水
*****************************/
winform.button2.oncommand = function(id,event){
winform.show_content.text = "";
urll = winform.input_url.text; //网页地址
start(urll,1); //初始化操作
set_show_content(allmess); //显示所有信息
set_static(); //设置运行状态
}
/*****************************
只看楼主
*****************************/
winform.button5.oncommand = function(id,event){
set_show_content(lzmess); //只显示楼主
}
/*****************************
上一页
*****************************/
winform.button6.oncommand = function(id,event){
allmess = {}; //清空原信息
lzmess = {}; //清空楼主信息
ln_page_id(winform.input_url.text);//当前页地址
new_url = "http://www.tianya.cn/publicforum/content/funinfo/1/"+lpage+".shtml"; //下一页地址
winform.input_url.text = new_url;
start(new_url,0); //初始化数据
set_show_content(allmess); //显示所有信息
set_static(); //设置运行状态
}
/*****************************
下一页
*****************************/
winform.button7.oncommand = function(id,event){
allmess = {}; //清空原信息
lzmess = {}; //清空楼主信息
ln_page_id(winform.input_url.text);//当前页地址
new_url = "http://www.tianya.cn/publicforum/content/funinfo/1/"+npage+".shtml"; //下一页地址
winform.input_url.text = new_url;
start(new_url,0); //初始化数据
set_show_content(allmess); //显示所有信息
set_static(); //设置运行状态
}
/*****************************
关闭按钮
*****************************/
winform.button111.oncommand = function(id,event){
winform.close();
}
/*****************************
帮助文档
*****************************/
winform.button1.oncommand = function(id,event){
mess = '
开始抽水:获取地址栏对应页面的内容,仅限帖子第一页\n\n
暴力抽水:获取地址栏对应页面以及第2页以后所有的内容(速度较慢)\n\n
只看楼主:只看楼主发布的信息\n\n
上一页: 查看上一页的信息(第一页时请不要点击)\n\n
下一页: 查看下一页的信息\n\n
导出TXT:导出以帖子标题玩为名称的txt文本文档\n\n
程序更新:查看相关更新信息\n\n
关闭程序:退出\n';
win.msgbox( mess );
}
/*****************************
导出TXT文档
*****************************/
winform.button4.oncommand = function(id,event){
put_txt();
}
/*--------------------------------功能函数----------------------------------*/
/*****************************
设置运行状态
*****************************/
set_static = function(){
winform.show_allpage.text = #allpage; //设置总页数
for(k,v in allpage){
if(v = opage){
winform.show_nowpage.text = k;
}
}
}
/*****************************
获取上下页pageid
*****************************/
ln_page_id = function(){
for(k,v in allpage){
if(v = XX['pageid']){
lpage = allpage[k-1]; //上一页pageid
npage = allpage[k+1]; //下一页pageid
opage = v; //当前页id
break;
}
}
}
/*****************************
初始化操作
*****************************/
start = function(url,act){ //初始化
get_html(url); //获取源代码
if(act = 1){
get_lz_name(CONT); //获取作者名称
get_page_title(CONT); //获取标题
get_page_all(CONT); //获取所有页码
}
get_all_mess(CONT); //获取所有信息
get_page_id(CONT); //获取当前页码
ln_page_id(); //获取前后页id
}
/*****************************
获取网页源代码
*****************************/
get_html = function(url){
http = inet.http();
CONT = http.down(url); //下载网页
http.close(); //关闭
}
/*****************************
转到链接
*****************************/
show_url = function(url){
wb.go(url);
}
/*****************************
获取楼主昵称
*****************************/
get_lz_name = function(str){
relus = 'chrAuthorName = \"(.*?)\"'
XX['author'] = string.match(str,relus);
}
/*****************************
获得网页标题
*****************************/
get_page_title = function(str){
relus = 'chrTitle = \"(.*?)\"'
XX['title'] = string.match(str,relus);
}
/*****************************
获取当前页码
*****************************/
get_page_id = function(str){
relus = 'intArticleId = \"(.*?)\"'
XX['pageid'] = string.match(str,relus);
}
/*****************************
获取所有页码
*****************************/
get_page_all = function(str){
relus = "name=\'\s*?idArticleslist\'\s*?value='(.*?)\'";
page = string.match(str,relus);
allpage = string.split(page,",");
}
/*****************************
设置show_content内容
*****************************/
set_show_content = function(str){
winform.show_content.text = "";
for(key,val in str){
winform.show_content.text += '作者:['+val["author"] + ']\r\n' + val["mess"] + '\r\n------------------------------------------------------------------------------------------------\r\n';
}
}
/*****************************
获取楼主发布的所有信息
*****************************/
get_lz_mess = function(){
}
/*****************************
获取所有人发布的信息
*****************************/
get_all_mess = function(str){
i = 1; //设置计数变量i
for(aut,mess in string.gmatch(str,"作者:\<a.*?target=\p?_blank\p?>(.*?)\</a\>.*?\<div class=""post""\>(.*?)\<div class=""post-jb""\>")){
val = {}
val["author"]=aut; //设置楼层作者
val["mess"]=set_mess(mess); //设置楼层信息
if(aut = XX['author']){ //获取楼主发布的信息
vall ={} //声明楼层table
vall["author"]=aut; //设置楼主名称
vall["mess"]=set_mess(mess); //设置楼主信息
table.push(lzmess,vall); //插入数组
}
table.push(allmess,val); //插入数组
i++; //计数
}
}
/*****************************
整理信息
*****************************/
set_mess = function(str){
for(k,v in guolv){
str = string.replace(str,"----------------",'\r\n----------------\r\n');//替换字符串
str = string.replace(str,v,"");//替换字符串
}
return str;
}
/*****************************
导出TXT
*****************************/
put_txt = function(){
if( winform.show_content.text != null or winform.show_content.text != ""){
result = string.save(XX['title']+".txt",winform.show_content.text);
winform.msgbox("导出完毕","提示");
}else{
winform.msgbox("没有内容你让我导什么?...","提示");
}
}
/*--------------------------------其他----------------------------------*/
//show_url("http://www.tianya.cn/publicforum/content/funinfo/1/2273274.shtml");
winform.show_content.text = "";
winform.show()
var str = "
┊--------------------------┊
作者:-低 调-
Q Q:779477940
Q 群:116885183
主页:http://wo94.com
语言:Aauto
注意:点击【帮助手册】
获取使用帮助
┊--------------------------┊
"
win.msgbox(str,"提示")
//设置自动换行
winform.show_content.wrap = true;
//进入消息循环
win.loopMessage();
return winform;