代码在
ftp://bbs.uestc.edu.cn/bbssrc/getCount.cPS:新闻系统代码有所改动,放在
ftp://bbs.uestc.edu.cn/bbssrc/getnews.tar.gz安装:放入crontab中 0 1 * * * bin/getCount > 0Announce/brdcount
然后在精华区中加入brdcount即可
/*
* 一网深情BBS(bbs.uestc.edu.cn) 版面每日文章数统计
*
* by ZV 2002.07.30
*
* */
#include <stdio.h>
#include <time.h>
#include "/root/bbssrc/include/bbs.h"
time_t ftime, ttime;
char *blk[] = {"_", "_", "▁", "▂", "▃",
"▄", "▅", "▆", "▇", "▇"};
int getCount(char *brd)
{
FILE *fp;
struct fileheader info;
char DirPath[256];
int filetime;
char ch;
int count = 0;
sprintf(DirPath, BBSHOME"/boards/%s/.DIR",brd);
if ((fp = fopen(DirPath, "rb")) != NULL) {
while (!feof(fp)) {
if (fread(&info, sizeof(info), 1, fp) != 1) break;
sscanf(info.filename, "%c.%d.A", &ch, &filetime);
if ((filetime>=ftime) && (filetime<=ttime)) {
count++;
#ifdef DEBUG
printf("%d)%s:%s\n", count, info.title, info.filename);
#endif
}
}
fclose(fp);
}
return count;
}
struct {
char name[STRLEN];
int num;
}brds[MAXBOARD], tmpbrd;
int main(int argc, char *argv[])
{
struct tm *timeptr;
struct boardheader brd;
FILE *fp;
int brdcount = 0;
int i, j, num, allnum = 0, avgnum;
ftime = time(0); // 取得当前时间
timeptr = gmtime(&ftime);
timeptr->tm_sec = 59;
timeptr->tm_min = 59;
timeptr->tm_hour = 23;
timeptr->tm_mday;
ttime = mktime(timeptr);
timeptr->tm_hour = 0;
timeptr->tm_min = 0;
timeptr->tm_sec = 0;
ftime = mktime(timeptr);
if ((fp = fopen(BBSHOME"/.BOARDS", "rb")) != NULL) {
while (!feof(fp)) {
if (fread(&brd, sizeof(brd), 1, fp) != 1) break;
if(((brd.level!=0)&&!(brd.level&PERM_NOZAP||brd.level&PERM_POSTMASK))||strlen(brd.filename)==0)
continue; // 特权版面不统计
strcpy(brds[brdcount].name, brd.filename);
brds[brdcount].num = getCount(brd.filename);
#ifdef DEBUG
printf("[%s]%d\n", brds[brdcount].name, brds[brdcount].num);
#endif
brdcount++;
}
fclose(fp);
}
//sort
for (j=0; j<brdcount-1; j++)
for(i=j+1; i<brdcount; i++)
if (brds[i].num > brds[j].num) {
tmpbrd = brds[i];
brds[i] = brds[j];
brds[j] = tmpbrd;
}
printf("\n * * * * * * "BBSNAME" 每日版面文章数排名 * * * * * * \n\n");
printf("\t\t统计时间:%s", ctime(&ftime));
printf("\t\t\t 到:%s\n", ctime(&ttime));
for (i=0; i<brdcount; i++) {
printf("\t第%3d名 版名: %-14s 文章数:%4d ", i+1, brds[i].name, brds[i].num);
num = (int)(brds[i].num/(float)brds[0].num * 100);
for(j=0; j<num; j+=10)
printf("%s", blk[9]);
printf("%s", blk[num%10]);
printf("%d\%\n", num);
allnum+=brds[i].num;
}
avgnum = allnum/brdcount;
printf("\t\t总平均: \t%d篇/天 ", avgnum);
num = (int)(avgnum/(float)brds[0].num * 100);
for(j=0; j<num; j+=10)
printf("%s", blk[9]);
printf("%s\n\n", blk[num%10]);
}
PS:附统计结果例子:
* * * * * * 一网深情 每日版面文章数排名 * * * * * *
统计时间:Mon Jul 29 00:00:00 2002
到:Mon Jul 29 23:59:59 2002
第 1名 版名: News 文章数:1180 ▇▇▇▇▇▇▇▇▇▇_100%
第 2名 版名: TestWatering 文章数: 361 ▇▇▇_30%
第 3名 版名: Single 文章数: 254 ▇▇▇_21%
第 4名 版名: AsciiArt 文章数: 118 ▇_10%
第 5名 版名: Uestc 文章数: 108 ▇▇9%
第 6名 版名: c_z 文章数: 100 ▇▇8%
第 7名 版名: twLanguage 文章数: 94 ▇▆7%
第 8名 版名: LinuxMisc 文章数: 89 ▇▆7%
第 9名 版名: newcomers 文章数: 80 ▇▅6%
第 10名 版名: Postgraduate 文章数: 71 ▇▅6%
第 11名 版名: CPE 文章数: 58 ▇▃4%
第 12名 版名: Mydoc 文章数: 52 ▇▃4%
第 13名 版名: Feeling 文章数: 43 ▇▂3%
第 14名 版名: Script_z 文章数: 41 ▇▂3%
第 15名 版名: twBBS 文章数: 38 ▇▂3%
第 16名 版名: BoyGirl 文章数: 36 ▇▂3%
第 17名 版名: pop 文章数: 35 ▇▁2%
第 18名 版名: CMEE 文章数: 32 ▇▁2%
第 19名 版名: Astromancy 文章数: 31 ▇▁2%
第 20名 版名: cnTest 文章数: 30 ▇▁2%
第 21名 版名: WorldFilm 文章数: 30 ▇▁2%
第 22名 版名: fairy 文章数: 29 ▇▁2%
第 23名 版名: Win9X_DOS 文章数: 28 ▇▁2%
第 24名 版名: FurtherEdu 文章数: 28 ▇▁2%
第 25名 版名: Java 文章数: 28 ▇▁2%
第 26名 版名: Health 文章数: 27 ▇▁2%
第 27名 版名: Hardware 文章数: 26 ▇▁2%
第 28名 版名: Love 文章数: 25 ▇▁2%
第 29名 版名: BBSDev 文章数: 24 ▇▁2%
第 30名 版名: Job 文章数: 22 ▇_1%
第 31名 版名: sysop 文章数: 22 ▇_1%
第 32名 版名: CDUT 文章数: 20 ▇_1%
第 33名 版名: Software 文章数: 20 ▇_1%
第 34名 版名: SCU 文章数: 18 ▇_1%
第 35名 版名: Legend 文章数: 18 ▇_1%
第 36名 版名: Database 文章数: 17 ▇_1%
第 37名 版名: cnList 文章数: 17 ▇_1%
第 38名 版名: Food 文章数: 15 ▇_1%
第 39名 版名: C_CPP 文章数: 13 ▇_1%
第 40名 版名: Travel 文章数: 13 ▇_1%
第 41名 版名: Algorithm 文章数: 13 ▇_1%
第 42名 版名: CMESE 文章数: 12 ▇_1%
第 43名 版名: Basketball 文章数: 12 ▇_1%
第 44名 版名: Joke 文章数: 12 ▇_1%
第 45名 版名: Networking 文章数: 11 _0%
第 46名 版名: DotNet 文章数: 11 _0%
第 47名 版名: Football 文章数: 11 _0%
第 48名 版名: eXchange 文章数: 11 _0%
第 49名 版名: Article 文章数: 11 _0%
第 50名 版名: Games 文章数: 11 _0%
第 51名 版名: Philosophy 文章数: 11 _0%
第 52名 版名: Giet 文章数: 10 _0%
第 53名 版名: CAE 文章数: 10 _0%
第 54名 版名: Chess_Poker 文章数: 10 _0%
第 55名 版名: VC 文章数: 9 _0%
第 56名 版名: Cartoon 文章数: 9 _0%
第 57名 版名: DELPHI 文章数: 8 _0%
第 58名 版名: IDStory 文章数: 7 _0%
第 59名 版名: CCSE 文章数: 6 _0%
第 60名 版名: cnWeather 文章数: 6 _0%
第 61名 版名: Multimedia 文章数: 6 _0%
第 62名 版名: CCIE 文章数: 6 _0%
第 63名 版名: CAM 文章数: 6 _0%
第 64名 版名: bbslists 文章数: 6 _0%
第 65名 版名: TVgame 文章数: 6 _0%
第 66名 版名: CEE 文章数: 5 _0%
第 67名 版名: Linux 文章数: 5 _0%
第 68名 版名: cnAdmin 文章数: 4 _0%
第 69名 版名: CE 文章数: 4 _0%
第 70名 版名: Psychology 文章数: 4 _0%
第 71名 版名: Jiulidi 文章数: 4 _0%
第 72名 版名: MobileDigi 文章数: 4 _0%
第 73名 版名: tad 文章数: 3 _0%
第 74名 版名: Regional 文章数: 3 _0%
第 75名 版名: NetResource 文章数: 3 _0%
第 76名 版名: Marvel 文章数: 3 _0%
第 77名 版名: English 文章数: 2 _0%
第 78名 版名: Circuit 文章数: 2 _0%
第 79名 版名: notepad2 文章数: 2 _0%
第 80名 版名: BBShelp 文章数: 2 _0%
第 81名 版名: Poem 文章数: 2 _0%
第 82名 版名: WinNT_2K_XP 文章数: 2 _0%
第 83名 版名: BoardManager 文章数: 2 _0%
第 84名 版名: Look4Friend 文章数: 2 _0%
第 85名 版名: MATH 文章数: 2 _0%
第 86名 版名: Personal 文章数: 2 _0%
第 87名 版名: METech 文章数: 2 _0%
第 88名 版名: SysRecord 文章数: 1 _0%
第 89名 版名: HAM 文章数: 1 _0%
第 90名 版名: VB 文章数: 1 _0%
第 91名 版名: HTML_JS_CSS 文章数: 1 _0%
第 92名 版名: ASP_JSP_PHP 文章数: 1 _0%
第 93名 版名: WorldWide 文章数: 1 _0%
第 94名 版名: advertise 文章数: 1 _0%
第 95名 版名: AI 文章数: 1 _0%
第 96名 版名: notepad 文章数: 1 _0%
第 97名 版名: CPI 文章数: 1 _0%
第 98名 版名: Unix 文章数: 1 _0%
第 99名 版名: Logistics 文章数: 1 _0%
第100名 版名: CFL 文章数: 1 _0%
第101名 版名: Board 文章数: 1 _0%
第102名 版名: OlympicWater 文章数: 0 _0%
第103名 版名: ClassOnLine 文章数: 0 _0%
第104名 版名: Military 文章数: 0 _0%
第105名 版名: West 文章数: 0 _0%
第106名 版名: IQArea 文章数: 0 _0%
第107名 版名: Security 文章数: 0 _0%
第108名 版名: System 文章数: 0 _0%
第109名 版名: DriversDev 文章数: 0 _0%
第110名 版名: cnAnnounce 文章数: 0 _0%
第111名 版名: rock 文章数: 0 _0%
第112名 版名: CAD_CG 文章数: 0 _0%
第113名 版名: Graduate 文章数: 0 _0%
第114名 版名: CQUPT 文章数: 0 _0%
第115名 版名: SLST 文章数: 0 _0%
第116名 版名: vote 文章数: 0 _0%
第117名 版名: Sports 文章数: 0 _0%
第118名 版名: Punish 文章数: 0 _0%
第119名 版名: TsingHua 文章数: 0 _0%
第120名 版名: Fancy 文章数: 0 _0%
第121名 版名: XML 文章数: 0 _0%
第122名 版名: SWJTU 文章数: 0 _0%
第123名 版名: SoftEng 文章数: 0 _0%
第124名 版名: SWUFE 文章数: 0 _0%
第125名 版名: classic 文章数: 0 _0%
第126名 版名: Bug 文章数: 0 _0%
第127名 版名: CHSS 文章数: 0 _0%
第129名 版名: InfoCenter 文章数: 0 _0%
第130名 版名: English_z 文章数: 0 _0%
第131名 版名: SCIT 文章数: 0 _0%
第132名 版名: Rules 文章数: 0 _0%
第133名 版名: Election 文章数: 0 _0%
第134名 版名: Appeal 文章数: 0 _0%
第135名 版名: CM 文章数: 0 _0%
第136名 版名: Law 文章数: 0 _0%
第137名 版名: Program 文章数: 0 _0%
总平均: 26篇/天 ▇▁
--
FROM AfterDark