Skip to content

Instantly share code, notes, and snippets.

@mizucoffee
Last active September 1, 2015 16:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mizucoffee/e54609f856a215158e82 to your computer and use it in GitHub Desktop.
Save mizucoffee/e54609f856a215158e82 to your computer and use it in GitHub Desktop.
Agrarianのコメ記録
# coding:cp932
import os
import cookielib
import urllib
import urllib2
import socket
import struct
import re
import requests
from xml.dom import minidom
lvno = "lv233701680"
sid="user_session_49143520_bf25a51ba0b91195a379a09e9ccf3ab26fc3f302a41d01b0c2c024574c44f4d5"
apistat_url="http://watch.live.nicovideo.jp/api/getplayerstatus?v=%s"
uagent = "test test"
cj = cookielib.CookieJar()
ck = cookielib.Cookie(version=0, name='user_session', value=sid, port=None,port_specified=False, domain='.live.nicovideo.jp', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)
cj.set_cookie(ck)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', uagent)]
target_url = apistat_url % lvno
print target_url
r = opener.open(target_url)
data = r.read()
r.close()
doc = minidom.parseString(data)
child = doc.getElementsByTagName('getplayerstatus')[0]
if child.getElementsByTagName('ms'):
mstag = child.getElementsByTagName('ms')[0]
addr = mstag.getElementsByTagName('addr')[0].firstChild.data.strip()
port = mstag.getElementsByTagName('port')[0].firstChild.data.strip()
threadid = mstag.getElementsByTagName('thread')[0].firstChild.data.strip()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((addr, int(port)))
sd = '<thread thread="%s" version="20061206" res_from="-1"/>' % threadid
sock.send(sd)
sock.send(struct.pack('b',0))
data = sock.recv(2048)
while True:
data = sock.recv(2048)[:-1]
come = re.sub(r'</?chat.*?>', '', data).decode("utf-8")
number = re.sub(r'<chat[^>]*no="([0-9]{1,})".*', r'\1', data).decode("utf-8")
if come == u"/disconnect":
break
else:
print u"%s: %s" % (number,come)
requests.get('https://slack.com/api/chat.postMessage?token=xoxp-9519242883-9553102038-10002727554-29da98&channel=C0A029M7F&username=gocchan&text=' + come)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment