#include "hspinet.as" #module _hspinet_ #deffunc netsetpost str _url, str _fname, str _head, var _prm neturl@ _url netheader@ _head netrequest_post@ _fname,_prm return 0 #deffunc netsetget str _url, str _fname, str _head neturl@ _url netheader@ _head netrequest_get@ _fname return 0 #deffunc netgetres var buf res = 0 *main netexec@ res if res > 0 : goto *comp if res < 0 : goto *bad await 50 goto *main *bad ; エラー neterror@ buf return -1 *comp ; 完了 netgetv@ buf return 0 #global // 処理開始 nexturl ="/home.pl" email ="めるあど" password="ぱすわーど" sticky =0 tt ="てすとw" ; 記事タイトル text ="HSPで投稿テストをしてみる" ; 記事テキスト netinit if stat!0 : dialog ""+__LINE__ : end // ログイン処理 post ="next_url="+nexturl+"&" post +="email="+email+"&" post +="password="+password+"&" post +="sticky="+sticky netsetpost "http://mixi.jp/", "login.pl?from=login0", "", post netgetres buf // buf変数に結果取得 if stat = -1 : dialog "エラー発生" : end nkfcnv retsjis, buf, "Es" mesbox retsjis, 640, 400 // お試し表示 // トップページ表示 netsetget "http://mixi.jp/", "home.pl", "" netgetres buf // buf変数に結果取得 if stat = -1 : dialog "エラー発生" : end nkfcnv retsjis, buf, "Es" screen 1 mesbox retsjis, 640, 400 // お試し表示 // 日記フォームを取得するためにIDを先にゲット ; http://mixi.jp/list_diary.pl?from=navi netsetget "http://mixi.jp/", "list_diary.pl?from=navi", "" netgetres buf // buf変数に結果取得 if stat = -1 : dialog "エラー発生" : end nkfcnv retsjis, buf, "Es" screen 2 mesbox retsjis, 640, 400 // お試し表示 // HTML内をチェックしてIDを取得して日記フォームを取得 tmp = "") id = strmid(retsjis, idx+strlen(tmp)+3, idx2-strlen(tmp)-3) // 日記フォーム表示 netsetget "http://mixi.jp/", "add_diary.pl?id="+id, "" netgetres buf // buf変数に結果取得 if stat = -1 : dialog "エラー発生" : end nkfcnv retsjis, buf, "Es" screen 3 mesbox retsjis, 640, 400 // お試し表示 // 仮投稿データ作成 ; リクエストヘッダに追加 header = "Referer: http://mixi.jp/add_diary.pl\n" header += "Content-Type: multipart/form-data; boundary=----HSPTestFormBoundaryoNbBZntoF8A2TjnA\n\n" ; POSTデータ作成 bdr = "------HSPTestFormBoundaryoNbBZntoF8A2TjnA" lst = "diary_title","diary_body","diary_level_type","viewer_list_hide_flag","id" data = tt, text, "standard", "1", id post = "" repeat length(lst) post+=""+bdr+"\nContent-Disposition: form-data; name=\""+lst(cnt)+"\"\n\n"+data(cnt)+"\n" loop post+=""+bdr+"--\n" // 投稿確認フォーム表示 netsetpost "http://mixi.jp/", "add_diary.pl", header, post netgetres buf // buf変数に結果取得 if stat = -1 : dialog "エラー発生" : end nkfcnv retsjis, buf, "Es" screen 4 mesbox retsjis, 640, 400 // お試し表示 // 本投稿データ作成 ; リクエストヘッダに追加 header = "Referer: http://mixi.jp/add_diary.pl\n\n" ; HTML内をチェックしてポストキーを取得 tmp = "\"rpc_auth_key\":\"" idx = instr(retsjis, 0, tmp) idx2 = instr(retsjis, idx+strlen(tmp), "\"") postkey = strmid(retsjis, idx+strlen(tmp), idx2) ; タイトルと本文をEUCに変換後、URLエンコード nkfcnv tt_euc, tt, "Se" nkfcnv text_euc, text, "Se" urlencode tt_url,tt_euc urlencode text_url,text_euc ; POSTデータ post="submit=confirm&packed=&post_key="+postkey+"&news_id=&" post+="campaign_id=&invite_campaign=&id="+id+"&diary_title="+tt_url post+="&diary_body="+text_url+"&news_title=&news_url=&movie_id=&movie_title=" post+="&movie_url=&tag_id=0&allow_id_list=&viewer_list_hide_flag=1" // 本投稿送信 netsetpost "http://mixi.jp/", "add_diary.pl", header, post netgetres buf // buf変数に結果取得 if stat = -1 : dialog "エラー発生" : end nkfcnv retsjis, buf, "Es" screen 5 mesbox retsjis, 640, 400 // お試し表示