KiDavidbot
Tham gia ngày 6 tháng 9 năm 2018
Đây là một tài khoản bot do MuDavid (thảo luận) vận hành. Đây không phải là tài khoản con rối, mà là một tài khoản tự động hoặc bán tự động để thực hiện các sửa đổi có tính lặp lại và rất tốn công nếu làm bằng tay. Bảo quản viên: nếu bot này hoạt động sai hoặc gây hại, hãy cấm nó. |
KiDavidbot | |
---|---|
(thảo luận · đóng góp) | |
Người chủ | MuDavid |
Cờ? | Có(kiểm tra) |
Ngôn ngữ | Mathematica |
Tôi là con rôbô của thành viên MuDavid. Tiền tố mu- là tiền tố tiếng Burǔndi chỉ con người, còn tiền tố ki- chỉ đồ vật nói chung. Mục đích của rôbô là cleanup mục từ tiếng Hà Lan và tạo trang dạng biến, chia của mục từ tiếng Hà Lan.
Con bot này được lập trình bằng Mathematica:
- defs:
myagent = "foo";
sitelang = "vi";
sitename = "wiktionary";
username = "bar";
password = "baz";
site = "https://" <> sitelang <> "." <> sitename <> ".org/";
apiname = site <> "w/api.php";
- đăng nhập, đòi edit token, đăng xuất:
first[response_] := StringPosition[response, "logintoken"][[1, 2]] + 4
last[response_] :=
FirstCase[StringPosition[response, "\""],
x_ /; x[[1]] > first[response]][[1]] - 2
extractlogintoken[response_] :=
StringTake[response, {first[response], last[response]}]
extractedittoken[response_] :=
Module[{first, last},
first = StringPosition[response, "csrftoken"][[1, 2]] + 4;
last = FirstCase[StringPosition[response, "\""],
x_ /; x[[1]] > first][[1]] - 2;
StringTake[response, {first, last}]]
return = URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "query", "meta" -> "tokens",
"type" -> "login", "format" -> "json"}]
logintoken = extractlogintoken[return];
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "clientlogin",
"loginreturnurl" -> "http://example.com/",
"logintoken" -> logintoken, "username" -> username,
"password" -> password, "rememberMe" -> "1", "format" -> "json"}]
return = URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "query", "meta" -> "tokens",
"format" -> "json"}]
token = extractedittoken[return];
logout :=
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "logout", "format" -> "json"}]
- tải mã wiki của một trang:
loadwiki[word_] :=
URLFetch[site <> "w/index.php?action=raw&title=" <> word,
"UserAgent" -> myagent]
- sửa trang:
edit[page_, newtext_, summary_] :=
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "edit", "title" -> page,
"text" -> newtext, "summary" -> summary, "assert" -> "user",
"token" -> token, "format" -> "json"}]
editnocreate[page_, newtext_, summary_] :=
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "edit", "title" -> page,
"text" -> newtext, "summary" -> summary, "nocreate" -> "1",
"assert" -> "user", "token" -> token, "format" -> "json"}]
editcreate[page_, newtext_, summary_] :=
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "edit", "title" -> page,
"text" -> newtext, "summary" -> summary, "createonly" -> "1",
"assert" -> "user", "token" -> token, "format" -> "json"}]
editbot[page_, newtext_, summary_] :=
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "edit", "title" -> page,
"text" -> newtext, "summary" -> summary, "bot" -> "1",
"assert" -> "bot", "token" -> token, "format" -> "json"}]
editnocreatebot[page_, newtext_, summary_] :=
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "edit", "title" -> page,
"text" -> newtext, "summary" -> summary, "nocreate" -> "1",
"bot" -> "1", "assert" -> "bot", "token" -> token,
"format" -> "json"}]
editcreatebot[page_, newtext_, summary_] :=
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "edit", "title" -> page,
"text" -> newtext, "summary" -> summary, "createonly" -> "1",
"bot" -> "1", "assert" -> "bot", "token" -> token,
"format" -> "json"}]
hasmessage := (!
StringFreeQ[
URLFetch[apiname, "UserAgent" -> myagent, "Method" -> "POST",
"Parameters" -> {"action" -> "query", "meta" -> "userinfo",
"uiprop" -> "hasmsg", "format" -> "json"}], "messages"])