UTF-8 // // mixiコミュニティ管理ツール (コミュ管理者向きマクロ) // // 参加しているIDをリストにしてファイルに書き出し. :Init { // // input[0]="http://mixi.jp/view_community.pl?id=00000000"; // input[1]="mixi_mailAddress@example.com"; // input[2]="mixi_loginPassword"; // set: int[1]=input[0].IndexOf("/view_community.pl?id="); if (int[1] < 0) { set: str[1]="URL? "; set: str[1]+=input[0]; put: value=str[1]; end: } culc: int[1]+="/view_community.pl?id=".Length; set: input[3]=input[0].Substring(int[1]); } :Start { set: str[1]=input[1]; set: str[0]="@"; set: str[1]=str[1].Replace("%40"); // set: str[3]="next_url=%2Fhome.pl&email="; set: str[3]+=str[1]; set: str[3]+="&password="; set: str[3]+=input[2]; set: str[3]+="&x=46&y=14"; // Ex:Http-Post: url="http://mixi.jp/login.pl" base="http://mixi.jp/home.pl" post=str[3]; //O:text=str[100] O:lastUrl=str[101] O:bin=str[102] Ex:Http-Get: url="http://mixi.jp/check.pl?n=%2Fhome.pl" base="http://mixi.jp/home.pl" O:text=str[100] O:lastUrl=str[101]; Ex:Html.GetEncTypeString: src=str[100] O:encType=strl["charset"]; if (str[100].IndexOf{"alt=\"プロフィール管理\""} < 0) { put: value="Login Error!"; write open: dir=Dir.DeskTop file="Error mixi.jp.Html" enc=strl["charset"]; write0: str[100]; write close: end: } } :GoComu { set: str[1]="http://mixi.jp/view_community.pl?id="; set: str[1]+=input[3]; set: str[2]="http://mixi.jp/list_community.pl?id="; set: str[2]+="7480437"; Ex:Http-Get: url=str[1] base=str[2] O:text=str[100] O:lastUrl=str[101] if (str[100].IndexOf{"このページから先はアダルト(成人向け)コンテンツが含まれています"} < 0) { jump: GoComu2; } set: str[2]=str[1]; set: str[1]="http://mixi.jp/view_community.pl?id="; set: str[1]+=input[3]; set: str[3]="submit=agree"; Ex:Http-Post: url=str[1] base=str[2] O:text=str[100] O:lastUrl=str[101] } :GoComu2 { set: int[50]=1000; set: int[51]=2; // set: str[2]=str[1]; set: str[1]="http://mixi.jp/list_member.pl?id="; set: str[1]+=input[3]; Ex:Http-Get: url=str[1] base=str[2] O:text=str[100] O:lastUrl=str[101] if (str[100].IndexOf{"メンバー一覧"} < 0) { put: value="メンバー一覧が表示できません\r\n" str[1]; Ex:PopUp: value="!メンバー一覧が表示できません\r\n" str[1]; end: } Ex:ResolveRelativeLink: src=str[100] baseUrl=str[101] O:text=strl["local"]; Ex:Html.GetEncTypeString: src=strl["local"] O:encType=strl["charset"]; strl[10]="コミュ ID=" input[3] " - トップページ.html"; write open: dir=Dir.Work file=strl[10] enc=strl["charset"]; write0: strl["local"]; write close: O:name=strl[12]; Ex:Launch: strl[12]; } :CollectIds { set: int[4]=0; //CountInThisPage set: int[1]=str[100].IndexOf("show_friend.pl?id="); while (int[1] >= 0) { culc: int[1]+="show_friend.pl?id=".Length; set: int[0]=int[1]; set: int[2]=str[100].IndexOfAnyUsing0("\" >"); if (int[2] < 0) { break; } set: int[3]=int[2]; //Save NextSearchStart culc: int[2]-=int[1]; //get length set: str[3]=str[100].SubstringUsing(1); // if (str[3].Length > 0) { set: str[int[50]]=str[3]; culc: int[50]++; culc: int[4]++; } // set: int[0]=int[3]; set: int[1]=str[100].IndexOfUsing0("show_friend.pl?id="); } if (int[4] < 1) { jump: saveIdList; } //EmptyPage set: str[2]=str[1]; set: str[1]="http://mixi.jp/list_member.pl?page="; set: str[1]+=int[51]; culc: int[51]++; set: str[1]+="&id="; set: str[1]+=input[3]; Ex:Http-Get: url=str[1] base=str[2] O:text=str[100] O:lastUrl=str[101] if (str[100].IndexOf{"メンバー一覧"} < 0) { jump: saveIdList; end: } sleep: 200; jump: CollectIds; } :saveIdList { set: int[1]=int[50]; culc: int[1]-=1000; set: str[1]="Id:"; set: str[1]+=input[3]; set: str[1]+=" "; set: str[1]+=int[1]; set: str[1]+=" members.\r\n"; put: value=str[1]; // set: str[1]="ComuIdList-"; set: str[1]+=input[3]; set: str[1]+=".txt"; // set: int[1]=1000; write open: file=str[1] enc="UTF-8"; while (str[int[1]].Length > 0) { write: w=str[int[1]]; write: w="\r\n"; //put: value=str[int[1]]; culc: int[1]++; } write close: O:name=str[1]; // call: macro="{{GTMAIL_HOME}}\\downloadMacro\\copyToDesktop.txt" paramIndex=1 paramLength=1 outIndex=2 put: value="コミュニティ" input[0] "のID一覧を保存しました.\r\n" str[2]; end: }