http://telepathy.freedesktop.org/wiki/Pymsn
update, 這個 Python 實在是大的要命,測試過後發現以下問題:
- notification.py 裡面少一個 event handler,會讓執行過程中跳出 WARNING。
- 如果對話視窗沒有被使用者關閉,當 pymsn 重新登入的時候,使用者的控制項會失效。原因在於 msnp 再重新登入之後,查到使用者的對話視窗,會送一次 RNG,而這個 RNG 會重新對 switchboard server 申請一個新的 session 來給 Client 端使用。然而,pymsn 在送回 RNG 之後,使用 ANS IRO 的 transaction_id 被重新歸零了,所以會導致同一個 Client 端有兩個 session,造成無法對應到使用者而失效。
把它(event handler)加回去,打開 pymsn/msnp/notificatoin.py 檔案。
我在 --- Presence & Privacy --- 的底下加入:
def _handle_GCF(self, command): pass另外一個 event 錯誤的問題目前尚無解答,這個 transaction_id 為什麼會被歸零,還是要查看原始碼才知道問題出在哪裡。不過,因為 Python 我實在是太不熟了,等我看懂我想這個問題應該就有人會解決了吧。
INFO:protocol:switchboard_manager:requesting new switchboard /// 這裡的 SB 的 transaction_id 是 12 DEBUG:Transport:>>> XFR 12 SB DEBUG:Transport:<<< XFR 12 SB 207.46.26.159:1863 CKI 355252581.3720.42179215 U messenger.msn.com 1 DEBUG:Transport:<-> Connecting to 207.46.26.159:1863 DEBUG:Transport:>>> USR 0 bot1@hinablue.me 355252581.3720.42179215 DEBUG:Transport:<<< USR 0 OK bot1@hinablue.me Python%20MSN%20Bot INFO:protocol:switchboard_manager:New switchboard attached DEBUG:Transport:>>> CAL 1 hinablue@msn.com DEBUG:Transport:<<< CAL 1 RINGING 355252581 DEBUG:Transport:<<< JOI hinablue@msn.com *9mil%20Hina::Cain%20@%20NB%20猛當機...%20該不會是在討錢了吧%20orz 2789003308 DEBUG:Transport:<<< RNG 1983480976 207.46.26.47:1863 CKI 84735.18013320 hinablue@msn.com *9mil%20Hina::Cain%20@%20NB%20猛當機...%20該不會是在討錢了吧%20orz U messenger.msn.com 1 DEBUG:Transport:<-> Connecting to 207.46.26.47:1863 /// 這裡送出了 RNG 並且連線到 switchboard server DEBUG:Transport:>>> ANS 0 bot1@hinablue.me 84735.18013320 1983480976 /// 拿回來的 ANS 的 transaction_id 是 0,但是這裡的 transaction_id 應該是接續 XFR 的 trid+1="13" 才是正確的 DEBUG:Transport:<<< IRO 0 1 1 hinablue@msn.com *9mil%20Hina::Cain%20@%20NB%20猛當機...%20該不會是在討錢了吧%20orz 2789003308 /// 既然 transcation_id 都不對了,IRO 自然也就不是原來的 Client 了。 DEBUG:Transport:<<< ANS 0 OK /// 這裡 ANS OK 沒錯,但是 ANS 的對象已經不是原來的 Client 了。以上就是他的錯誤,至於怎麼解,目前傷腦筋中。
在 FreeBSD 裡面測試了一下,需要安裝:
- python(廢話)。
- py-gobject,路徑在 /usr/ports/devel/py-gobject/。
- ElementTree,路徑在 /usr/ports/devel/py-elementtree/。
- pyOpenSSL,路徑在 /usr/ports/security/py-openssl/。
- pyCrypto,路徑在 /usr/ports/security/py-pycrypto。
- epydoc,路徑在 /usr/ports/devel/epydoc/,產生 api-doc 要用的。
test [/home/hinablue/pymsn-0.3.3] -hinablue-> python test.py Account: (打入帳號) Password: (打入密碼) DEBUG:Transport:<-> Connecting to messenger.hotmail.com:1863 DEBUG:Transport:>>> VER 0 MSNP15 MSNP14 MSNP13 CVR0 DEBUG:Transport:<<< VER 0 MSNP15 ...(後略)按下 ctrl+C 就可以離開了。至於互動上,要參考 user-api-doc 去自己實作囉。
Posted by hina


