回精華區
作者itoc.bbs@processor.tfcis.org (核心動力) 看板: plan
標題Re: 請問自動波文章
時間動力核心 (2003/12/23 Tue 20:20:38) Updated: 2004/05/08
※ 引述《maya (瑪雅)》之銘言:
>     我將那篇的內容摳到一個 .c 檔裡面

: src/util/Makefile 加入 addpost

EXE =   account acl-sort addpost bbsmail ...

: src/util/addpost.c 新增程式如下

/*-------------------------------------------------------*/
/* util/addpost.c   ( NTHU CS MapleBBS Ver 3.00 )        */
/*-------------------------------------------------------*/
/* target : 系統自動發文到看板                           */
/* create : 03/12/23                                     */
/* update :   /  /                                       */
/* author : itoc.bbs@bbs.tnfsh.tn.edu.tw                 */
/*-------------------------------------------------------*/


#include "bbs.h"

static char *userid;
static char *username;

static void
out_post(hdr, board)
  HDR *hdr;
  char *board;
{
  bntp_t bntp;

  memset(&bntp, 0, sizeof(bntp_t));
  strcpy(bntp.board, board);
  strcpy(bntp.xname, hdr->xname);
  strcpy(bntp.owner, hdr->owner);
  strcpy(bntp.nick, hdr->nick);
  strcpy(bntp.title, hdr->title);
  rec_add("innd/out.bntp", &bntp, sizeof(bntp_t));
}


static void
add_post(brdname, fpath, title)           /* 發文到看板 */
  char *brdname;        /* 欲 post 的看板 */
  char *fpath;          /* 檔案路徑 */
  char *title;          /* 文章標題 */
{
  HDR hdr;
  char folder[64];

  brd_fpath(folder, brdname, FN_DIR);
  hdr_stamp(folder, HDR_LINK | 'A', &hdr, fpath);
  strcpy(hdr.owner, userid);
  strcpy(hdr.nick, username);
  strcpy(hdr.title, title);
  hdr.xmode = POST_OUTGO;
  rec_add(folder, &hdr, sizeof(HDR));

  out_post(&hdr, brdname);
}


int
main(argc, argv)
  int argc;
  char *argv[];
{
  char *fpath, *brdname, *title, *fname;
  FILE *fp;

  if (argc != 6)
  {
    printf("Usage: %s brdname userid username title filepath\n", argv[0]);
    return -1;
  }

  chdir(BBSHOME);

  fpath = "tmp/addpost.tmp";    /* 暫存檔 */
  brdname = argv[1];
  userid = argv[2];
  username = argv[3];
  title = argv[4];
  fname = argv[5];

  if (fp = fopen(fpath, "w"))
  {
    fprintf(fp, "%s %s (%s) %s %s\n",
      STR_AUTHOR1, userid, username, STR_POST2, brdname);
    fprintf(fp, "標題: %s\n時間: %s\n\n", title, Now());

    f_suck(fp, fname);
    fprintf(fp, "\n--\n※ 本文由自動發文系統所發表\n");

    fclose(fp);

    add_post(brdname, fpath, title);
    unlink(fpath);
  }

  return 0;
}

> ───────────────────────────────────── <

: tmp/apple 新增這檔案
: 檔名路徑是隨便的,bbs 身分可讀取,內容是你要發表的文章

  大家好,本週四定期的練習活動照常舉行
  請大家要記得來參加喔

: crontab -e
: addpost 看板 作者 暱稱 標題 檔名路徑
: 最後改 crontab,看你多久要公告一次

# 每星期三下午發一次公告
50 15 * * 3 bin/addpost test "隊長" "隊長" "練習!" tmp/apple > /dev/null 2>&1

--
  Origin:  Maple-itoc˙動力核心  processor.tfcis.org 
  Author: itoc itoc.Dorm11.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻