Bit Che脚本制作说明:
备注: 最快学会写脚本的方法是仔细阅读完这篇教程、记住函数清单。 然后"调试"现存的脚本以便让你了解各个函数在脚本中的功能. 一旦你学会了写脚本的方法,去尝试自己写一些新的脚本.
在你开始编辑脚本之前,首先编辑"settings.ini"文件,在"[options]"段增加一条命令"debug=1"。该文件在软件的安装目录中。现在,选中一个菜单项, 选择"脚本调试"(也可以直接按快截键F12),然后一步步调试脚本.
写在前面:脚本的设计思路是将HTML解析为两个数组(R 和 Q).第一个数组'R'存储所有搜索结果的内容等数据,将所有搜索到结果以带'r'的分界符转成数组中的各参数。带'r'的分界符就是指典型的符号"</tr>".第二个数组'Q'是用来将每次'R'中的搜索结果转成规范的数据。带'Q'的分隔符最常见的就是 "/TD>".然后遍历数组中的信息,存储其中的种子信息为特定的变量。
注:你也可以用数组显示工具来帮助你将HTML中的数据解析成各数组:快捷数组显示。
变量处理:
字母a到z(小写)可以用来作变量的名称,除少数特殊的个案.
r=将结果分别分配给各数组.
q=分配一个结果到数组.
d=将HTML中的数据传送到脚本(可以随时编辑/修改脚本).
z=分配完数组后始终设置为1(起到一直使用的功效).
数字1-7用来统计种子信息,不同于字母a-z的功能.
1 = 名称
2 = 大小
3 = 引用页
5 = 种子数
6 = 比率
7 = 种子网址
除了某些特殊功能,基本按照下面这一公式:
X=F(p1,p2,p3)
x返回以字母(a-z)命名的函数。F是函数名,p1..p3是参数名
函数清单:
i( - 搜索字符串
h( - 搜索字符串如果没有发现则停止
r( - 逆向搜索字符串
c( - 插入或编辑字符串
split( - 将数据块分割成数组
array( - 从 'q' 数组中取数据
replace( - 用另一字符串代替
save( - 存储特定的种子信息到# (看上面)
e( - 释放: 联合搜索, crop/cut, 清理.
x( - 释放: 联合搜索, crop/cut, 清理, 保存.
p( - 将字符串存储为一个变量
&( - 连接字符串或变量
+( - 增加一个变量
-( - 减少一个变量
start - 循环解析
aloop - 在结果清单中增加一个种子然后回到开始
函数基本功能:
h -- 如果没有结果则按照字符串不停的搜索下去,除非发出停止命令. 从脚本的第一行开始. 存储返回的字符串为一个整型变量.
vRes = h ( vStart, vData, sSearch )
z=h(x,d,</td>)
搜索'</td>'中'd'存储到变量'x',储存结果到变量'z'.如果没有找到'</td>'符号,脚本停止(中止).
可扩展使用,可以多任务搜索(最多10条):
vRes = h ( vStart, vData, sSearch , sSearch2, sSearch3...etc )
z=h(x,d,</font>,<bc><bc>,)
注:如果最后一个''没有发现脚本将停止,以便从第一项开始搜索. 这可以使我们确认HTML数据的导出.
i -- 搜索另一个字符串. 存储字符串为整形变量.
vRes = i ( vStart, vData, sSearch )
x=i(x,d,</td>)
有点类似'h'的功能,但没有停止.
r -- 逆向搜索字符串
vRes = r ( vStart, vData, sSearch)
x=r(-1,t,title=)
从'title='中的最后一个 't'开始搜索存储到'x'
注意: '-1'指总是从最后一个字符串开始搜索.数字在这里可以使用.
c -- 从开始处和结束处插入一个字符串变量
vRes = c ( vData, vStart, VEnd)
d=c(d,x,z)
split -- 用来将数据块分割成数组.
这是个特殊功能,只可以用'r & q'变量
r=split(d,</tr>) - sets up the 'r' array delimiting with </tr>
q=split(r,</td>) - sets up the 'q' array delimiting with </td>
Note: the delimiter can be anything you like, the result variables and the array variables can not be changed.
注:定界符可以用你喜欢的,变量和数组不能改变.
array -- 用于从数组'q'中获取数据存储为一个变量.
t=array(q,2)
存储数组'q'的第三项到变量't'.
注意:数组的参数总是从0开始,这意味着数组各参数依次为:
0=1st 1=2nd 2=3rd ..etc
replace -- 从字符串中搜索一个指定的字符串,用另一个字符串代替
vRes = replace ( vData, sSearch, sReplace)
d=replace(d,</td>,[-bc-]</td>)
一个有用的功能,当 Bit Che 需要解析HTML代码等.
save -- 保存变量为一个指定的种子信息:
1=save(k)
保存变量 'k'中字符串为种子信息中的变量 '1' (即名称)
1 = 名称
2 = 大小
3 = 引用页
5 = 种子
6 = 比率
7 = 种子网址
x -- 特殊功能:合并搜索、剪切、释放、清除、保存.
vRes = x ( vData, vStart, vEnd)
2=x(t,z,<bc>,[-bc-])
从'<bc>'到'[-bc-]'中的'z'开始搜索变量't'并提取数据 .然后存储为种子信息中的大小项.提取到的数据从不需要的HTML代码中自动清除.
e -- 特殊功能:合并搜索、剪切、释放、清除.
vRes = e ( vData, vStart, vEnd)
q=e(t,z,<bc>,[-bc-])
从'<bc>'到'[-bc-]'中的'z'开始搜索变量't'并提取数据 .然后存储为变量q..提取到的数据从不需要的HTML代码中自动清除.
注意:这个跟'x'功能类似除了没有保存功能. 这是个有用的功能,在你想保存种子信息之前想操作结果.
p -- 允许你存储字符串为一个变量
vRes = p ( sString )
t=p(hello world)
存储'hello world' 到 't'
注意:可以存储字符串和数字.
& -- 可以用来合并字符串或变量.
vRes = & ( vFirst, vSecond, etc..)
t=&(k,m)
合并 'k' 和 'm' 存为变量 't'
注: 如果你想合并文本字符串,只要放一个 ' 在字符串前. 比如:
t = & ( '
http://www.domain.com, q, '.torrent)
如果变量 q = "/download.php?name=file", 那么 t 就等于
http://www.domain.com/download.php?name=file.torrent+/- -- 从变量中增加或减少一项
vRes = + ( sNum)
x=+(1)
variable 'x' = 'x' + 1
x=-(5)
variable 'x' = 'x' - 5
start -- 指定脚本中的行数以便Bit Che可以从结果数组 'r'中循环取下一个数组.
aloop -- 增加种子信息到种子结果中,然后回到脚本的开始处.
其他特殊功能:
vacuum -- 从字符串中删除诸如'tab' and 'line return'等字符.
d=vacuum(d)
一些文章中所未提到的参数、变量、修改等信息可能会出现在某些脚本中,这些将会在以后提到。
为了更清楚些,让我们用一个空白的表格作个例子(典型的HTML代码输出)..
Code:
<TABLE width="100%" border="1" cellspacing="0" cellpadding="2">
<tr>
<td>Torrent Name 1</td>
<td>File Size 1</td>
<td>URL 1</td>
</tr>
<tr>
<td>Torrent Name 2</td>
<td>File Size 2</td>
<td>URL 2</td>
</tr>
<tr>
<td>Torrent Name 3</td>
<td>File Size 3</td>
<td>URL 3</td>
</tr>
</TABLE>
1. 首先我们从第一个 <tr> 到最后一个 </td>中搜索关键字符串 (关键字符串存于变量'd'中).
Code:
x=h(x,d,<tr>,<td)
z=i(x,d,</TABLE>)
d=c(d,x,z)
2. 然后分配到数组 'r' .
Code:
r=split(d,</tr>)
3. 然后我们开始循环,因为我们要得到数组r中所有不同项.
Code:
start
4. 开始循环前, 我们要分配数组'r'到数组'q'. 我们先要做的是将结果转为标准的数组'q'.
Code:
q=split(r,/td>)
将'r'中的项目转为'q'中.
q(0): <td>Torrent Name 1<
q(1): <td>File Size 1<
q(2): <td>URL 1<
5. 将数组 'q'中的第一项存为字符串.
Code:
t=array(q,0)
6. 保存为种子名称.
Code:
1=x(t,z,>,<)
7. 将数组 'q'中的第二项存为字符串.
Code:
t=array(q,1)
8. 存为种子的大小.
Code:
2=x(t,z,>,<)
9. 将数组 'q'中的第三项(最后一项)存为字符串.
Code:
t=array(q,2)
10. 存为种子的网址.
Code:
7=x(t,z,>,<)
11. 增加种子结果,并从数组'r'重新开始解析下一个项目.
Code:
aloop
12. 完整的脚本如下:
Code:
'
x=h(x,d,<tr>,<td)
z=i(x,d,</TABLE>)
d=c(d,x,z)
r=split(d,</tr>)
start
q=split(r,/td>)
t=array(q,0)
1=x(t,z,>,<)
t=array(q,1)
2=x(t,z,>,<)
t=array(q,2)
7=x(t,z,>,<)
aloop
如制作TorrentSpy.com的脚本:
Code:
'
x=h(x,d,table class="list")
x=i(x,d,</tr>)
x=+(5)
z=i(x,d,</table>)
d=c(d,x,z)
r=split(d,</tr)
start
q=split(r,/td>,2)
t=array(q,0)
x=p(1)
z=i(x,t,href)
3=x(t,z,",",http://torrentspy.com)
x=p(1)
x=i(x,t,/,/)
x=+(1)
z=i(x,t,/)
n=c(t,x,z)
u=p(http://www.torrentspy.com/download.asp?id=)
u=&(u,n)
7=save(u)
x=r(-1,t,title=)
1=x(t,x,",")
t=array(q,2)
z=p(1)
2=x(t,z,>,<)
t=array(q,4)
z=p(1)
5=x(t,z,>,<)
t=array(q,5)
z=p(1)
6=x(t,z,>,<)
aloop
就是这样.. 如果有什么不明白可以提问,我会尽量解释我所知道的. 自动我使用这种脚本'语言', 我不知道怎样才能提供更多的资料、例子等.
还有,一定要记住修改 "settings.ini"并写上一行代码"debug=1",然后重启Bit Che,如果你了解更多的脚本调试知识,也请尝试编写脚本.