Skip to content
A QQ Group Members Relationship Analyzer.
Shell Python
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
API_INFO
LICENSES
README.md
qgroup_analyzer
qgroup_cli
qgroup_info_dump
trace_route.py

README.md

qgroup-analyzer


qgroup-analyzer 是使用 BaSH 寫成的一個 QQ 群組分析工具。它需要 jq 來運行。

如何使用?

在使用 qgroup-analyzer 前,妳需要先將 QQ 群組與好友數據匯出。使用 qgroup_info_dump 就能做到。qgroup_info_dump 會從環境變量中讀取 COOKIEbkn。這些信息是登錄到 QQ API 所需要的憑據。若要獲取這些信息,登陸到QQ 群網站,訪問成員管理頁。在地址欄輸入 javascript:alert(document.cookie) 來獲取 COOKIE。在地址欄輸入 javascript:for (var e = $.cookie("skey"), t = 5381, n = 0, o = e.length; o > n; ++n) t += (t << 5) + e.charAt(n).charCodeAt();alert(2147483647 & t); 來獲取 bkn

取得這些信息之後,就可以開始匯出數據了:

$ export COOKIE="...妳的 COOKIE..." 
$ export bkn="...妳的 bkn..."
$ ./qgroup_info_dump

如果一切順利,你會獲得這些 JSON 文件。

qgroup-analyzer
├── qgroup_analyzer
├── qgroup_info_dump
└── save
    ├── friends.json
    ├── groups
    │   ├── xxxx.json
    │   ├── xxxx.json
    │   ├── xxxx.json
    │   └── ....
    └── groups.json

friends.json 是妳好友的列表。

groups.json 是妳群組的列表。

groups/%%%%.json 是單個群組的詳細信息。包括成員、管理員、等級等數據。

現在,你可以使用 qgroup_analyzer 來分析妳的群組了,語法是:

./qgroup_analyzer <指令> [參數] [參數...]

可以使用的指令有(其中,uin 代表 QQ ID,gid 代表群組 ID。):

common_members <gid_a> <gid_b> 列出在群組 a 和群組 b 內的共同成員。

favorite_groups <uin> 對用戶 uin 的群組等級積分進行排行。

friends_common 對好友依據他們與妳共同群組的數量進行排行。

friends_in_group <gid> 列出群組 gid 中的好友。gid 代表群組 ID。

get_all_names <uin> 列出 uin 全部名字。(全部群內的群名片。)

get_joined <type> <user> 列出 user 所加入的群組。用 type 指定查詢類型。uin 代表 user 的格式是 uidnick 代表 user 的格式是用戶名或群名片。

get_uin <nick/card> 列出使用指定的群名片,或用戶名的用戶的 uin

joined_of_group <gid> 列出 gid 的成員所加入的群。

joined_of_firends 列出所有好友加入的群。

popular_groups 依據群內好友數量,對群進行排行。

potential_friends <n> 列出共同群超過 n 個,但不是好友的使用者。

prolog_export <output_filename> <own_uin> 匯出數據到 prolog 文件。output_filename 代表要寫入的文件名,own_uin 代表自己的 uinprolog_export 指令會匯出所有好友關係、群關係。它會使用如下的條件:member(uin, gid).friend(own_uin, uin).。例如,要列出所有群之間的成員關係網,可以使用如下的指令:

? - member(X,Y),member(X,Z),not(Z==Y),not(X==own_uin).
X = a_uin_of_group_member, 
Y = a_gid_that_uin_joined, 
Z = another_gid_that_uin_joined ;
X = ..., 
Y = ..., 
Z = ... ;

trace_route <from> <to> <own_uin> 嘗試在兩個組/群員之間找到路徑。fromto 代表一個組,或用戶。使用 uid,u 來代表用戶。例如:123456,u。使用 gid,g 來代表組。例如:543210,g。妳還可以用這個格式,通過環境變量 IGNORES 來指定要忽略的群組與用戶,使用空格來分隔項目。own_uin 代表妳自己的 uin

wolfram_graph <output_file> [source_gid[,source_gid,...] <own_uin>] 生成 wolfram 可以繪製的圖形。output_file 代表要寫入的文件名,source_gid 是可選參數,用於指定來源組。妳可以指定多個 source_gid,使用逗号分隔。如果指定了 source_gid,則必須指定 own_uin(自己的 uin)。無論是哪種情況,妳都可以傳入一個環境變量,IGNORES,來指定要忽略的 uin。使用空格來分隔多個 uin

在不限定來源 gid 時繪製的圖形:

Sample Graph

如果妳已經安裝了 Mathematica,qgrouop_analyzer 內置了一個幫手可以讓妳直接講使用 wolfram_graph 生成的語句生成圖片。使用方法是:wolfram_export <in_file> <out_image> <out_width>in_file 代表妳使用 wolfram_graph 生成的文件,out_image 代表輸出。Mathematica 會根據提供的後綴名來決定格式。常見的有 .svg.eps.pdf.pngout_width 代表了輸出圖片的寬度。在範例中的圖片,寬度是 4000。

License

MIT License

You can’t perform that action at this time.