自动检查起点小说更新,并自动打开浏览器的程序
(2011-08-31 16:57)
很小。小到几乎不能说是程序。Linux/Unix下使用
两个部分:一个shell脚本,两个C程序。(使用时,请将三者放同一目录,然后编译两个C程序,并将shell脚本设为可执行)
C程序代码如下:
- /* cl :获取并返回文本文件行数 */
- #include <stdio.h>
-
#include <stdlib.h>
-
-
int main(int argc, char *argv[])
-
{
-
int lineno = 0;
-
int ch;
-
FILE *ifp;
-
-
if (argc != 2) {
-
printf("Usage: cl <file>\n");
-
return -1;
-
}
-
-
if ( (ifp=fopen(argv[1], "r")) == NULL) {
-
perror("ifp, fopen");
-
return -1;
-
}
-
-
while ( (ch=fgetc(ifp)) != EOF) {
-
if (ch == '\n')
-
lineno++;
-
}
-
-
printf("%d", lineno);
-
-
fclose(ifp);
-
return lineno;
- }
- /* datapre :提取日期数据,此程序写的很糟糕,欢迎回复更好的实现 */
- #include <stdio.h>
-
#include <stdlib.h>
-
-
int main(int argc, char *argv[])
-
{
-
int countGeng = 0;
-
char time[20] = {'\0'};
-
int indexOfTime = 0;
-
char temp[20] = {'\0'};
-
int indexOfTemp = 0;
-
char character;
-
int count = 0;
-
FILE *in = NULL, *out = NULL;
-
-
if (argc != 3) {
-
printf("Usage: %s <inputfile> <outputfile>\n", argv[0]);
-
exit(-3);
-
}
-
if ((in = fopen(argv[1], "r")) == NULL) {
-
printf("Data file open error\n");
-
exit(-1);
-
}
-
if ((out = fopen(argv[2], "w")) == NULL) {
-
printf("Output file create error\n");
-
exit(-2);
-
}
-
while ((character = fgetc(in)) != EOF) {
-
indexOfTemp = 0;
-
indexOfTime = 0;
-
if (character != '2') {
-
continue;
-
}
-
temp[indexOfTemp] = character;
-
indexOfTemp++;
-
-
character = fgetc(in);
-
if (character != '0') {
-
continue;
-
}
-
temp[indexOfTemp] = character;
-
indexOfTemp++;
-
-
character = fgetc(in);
-
if ((character != '1') && (character != '0')) {
-
continue;
-
}
-
temp[indexOfTemp] = character;
-
indexOfTemp++;
-
-
character = fgetc(in);
-
if ((character != '0') && (character != '1') && (character != '9') && (character != '8')) {
-
continue;
-
}
-
temp[indexOfTemp] = character;
-
indexOfTemp++;
-
-
character = fgetc(in);
-
if (character != '-') {
-
continue;
-
}
-
temp[indexOfTemp] = character;
-
indexOfTemp++;
-
-
for (indexOfTime = 0; indexOfTime <= indexOfTemp; indexOfTime++) {
-
time[indexOfTime] = temp[indexOfTime];
-
}
-
indexOfTime--;
-
for (count = indexOfTime; count < 19; count++) {
-
time[count] = fgetc(in);
-
}
-
printf("time:%s\n", time);
-
fprintf(out, "%s\n", time);
-
countGeng++;
-
}
-
printf("Totally, %d Records.\n\n", countGeng);
-
fprintf(out, "%d\n", countGeng);
-
fclose(in);
-
fclose(out);
-
printf("Done!\n");
-
printf("Check the %s\n", argv[2]);
-
return 0;
- }
shell脚本代码如下:
- ##### check :检查小说是否在此脚本运行之后又有更新,如有,则打开浏览器浏览。
- # 参数bookReaderUrl是起点的目录地址。比如《黄龙真人异界游》的目录地址:http://www.qidian.com/BookReader/1737805.aspx
- #!/bin/sh
-
LINE1=0;
-
LINE2=0;
-
USAGE="Usage: `basename $0` <bookReaderUrl>"
-
-
if [ $# -lt 1 ] ; then
-
echo "$USAGE"
-
exit 1
-
fi
-
-
wget $1 -O web1;
-
./datapre web1 out1;
-
LINE1=`./cl out1`;
-
echo $LINE1;
-
-
while :
-
do
-
sleep 300
-
wget $1 -O web2;
-
./datapre web2 out2;
-
LINE2=`./cl out2`;
-
-
if [ $LINE2 -gt $LINE1 ] ; then
#下一行中,将chromium-browser换成你系统上的浏览器,比如firefox。
-
chromium-browser $1;
-
exit;
-
fi
-
- done

