Je pense que l'interdiction des élections en ligne sera levée et que la fourniture d'informations électorales par Internet deviendra plus populaire, et l'utilisation de mauvaises directions est évidente.
Le 29 novembre 2014, un débat des chefs de parti a eu lieu avec les étudiants de Nico avant l'élection de la Chambre des représentants. Je voudrais rendre hommage aux chefs de parti qui sont apparus sur le "site vidéo biaisé" mentionné par le Dr Azumi et qui ont participé à des discussions, et ont également cherché à savoir s'ils étaient réellement biaisés.
Code source https://github.com/mima3/analyze_election
http://needtec.sakura.ne.jp/analyze_election/page/nicolive/lv200730443
En conclusion, dans les sondages d'opinion des journaux, l'ombre de la «prochaine génération» attire l'attention, il y a des gens féroces qui font des centaines de commentaires à eux seuls, et il y a plus de dirigeants Yoshida du Parti socialiste que de dirigeants Kaieda du parti d'opposition Le résultat était qu'il a été extrait, honnêtement, et aussi un bogue.
http://needtec.sakura.ne.jp/analyze_election/page/nicolive/lv201303080
Comme prévu, le nombre de commentaires est inférieur à celui du samedi soir. Cependant, il y a des gens qui commentent environ 200 seuls. Travail ou école.
Après tout, les mots «Abe» et «next generation» sont souvent extraits. Cependant, il y a une présence de «Kaieda» et de «démocrate» depuis l'époque où Nicosei l'a parrainé.
Aussi, pourquoi y a-t-il autant de mots tels que «Tsubaki» et «Asahi» dans l'affaire Tsubaki dans le débat du chef du parti? (Stick)
Pour recevoir des commentaires sur Nico Nico Live Broadcasting, vous devez d'abord être un membre Premium. Pour les membres réguliers, la limite supérieure est d'environ 1000.
Après cela, vous pouvez l'obtenir en suivant les étapes ci-dessous.
Le code spécifique ressemble à ceci:
niconico.py
# coding: utf-8
import sys
import cookielib
import cgi
import urllib
import urllib2
from lxml import etree
import socket
import datetime
import time
import json
class NicoCtrl():
def __init__(self, nicovideo_id, nicovideo_pw):
self.nicovideo_id = nicovideo_id
self.nicovideo_pw = nicovideo_pw
#S'identifier
cj = cookielib.CookieJar()
self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
req = urllib2.Request("https://secure.nicovideo.jp/secure/login")
req.add_data( urllib.urlencode( {"mail": self.nicovideo_id, "password":self.nicovideo_pw} ))
res = self.opener.open(req).read()
if not 'user_session' in cj._cookies['.nicovideo.jp']['/']:
raise Exception('PermissionError')
def _getjson(self, url, errorcnt):
#JSON peut être coupé et revenir en cours, alors réessayez le traitement
try:
res = self.opener.open(url, timeout=100).read()
return json.loads(res)
except ValueError:
if errorcnt < 3:
errorcnt = errorcnt + 1
return self._getjson(url, errorcnt)
else:
raise
def get_live_comment(self, movie_id):
self.movie_id = movie_id
#Obtenir l'emplacement de distribution vidéo(getflv)
res = self.opener.open("http://watch.live.nicovideo.jp/api/getplayerstatus?v="+self.movie_id).read()
root = etree.fromstring(res)
messageServers = root.xpath('//ms')
if len(messageServers) == 0:
raise Exception('UnexpectedXML')
user_ids = root.xpath('//user_id')
if len(user_ids) == 0:
raise Exception('NotfoundUserId')
user_id = user_ids[0].text
thread_id = messageServers[0].find('thread').text
addr = messageServers[0].find('addr').text
port = int(messageServers[0].find('port').text) - 2725
#Obtenez waybackkey
waybackkeyUrl = ('http://watch.live.nicovideo.jp/api/getwaybackkey?thread=%s' % thread_id)
req = urllib2.Request(waybackkeyUrl)
res = self.opener.open(waybackkeyUrl).read()
waybackkey = cgi.parse_qs(res)['waybackkey'][0]
msUrl = 'http://%s:%d/api.json/thread?' % (addr, port)
chats = []
req = urllib2.Request(msUrl)
when = '4294967295'
while True:
data = {
'thread' : thread_id,
'version' : "20061206",
'res_from' : '-1000',
'waybackkey' : waybackkey,
'user_id' : user_id,
'when': when,
'scores' : '1'
}
list = self._getjson(msUrl+urllib.urlencode(data), 0)
chatcnt = 0
insertdata = []
for l in list:
if 'chat' in l:
if chatcnt == 0:
when = int(l['chat']['date']) - 1
if l['chat']['content'] != '/disconnect':
insertdata.append(l['chat'])
chatcnt += 1
chats = insertdata + chats
if chatcnt == 0:
break
return chats
nicolive.py
# coding: utf-8
import sys
from niconico_ctrl import NicoCtrl
import json
def main(argvs, argc):
if len(argvs) != 4:
print ('python nicolive.py email pass lv142315925')
return 1
nicovideo_id = argvs[1]
nicovideo_pw = argvs[2]
move_id = argvs[3]
t = NicoCtrl(nicovideo_id, nicovideo_pw)
chats = t.get_live_comment(move_id)
f = open(move_id + '.json', 'w')
f.write(json.dumps(chats))
f.close()
return 0
if __name__ == '__main__':
argvs = sys.argv
argc = len(argvs)
sys.exit(main(argvs, argc))
Ce script générera un fichier JSON contenant des informations de commentaire en l'exécutant comme suit.
python nicolive.py adresse e-mail mot de passe lv200730443
Après cela, vous pouvez analyser les commentaires de Nico en analysant morphologiquement les commentaires dans le fichier JSON créé, en extrayant des mots, en totalisant pour chaque utilisateur et en faisant autre chose, Tae-chan.
** niconico message (commentaire) Explication des balises de serveur et comment envoyer ** http://blog.goo.ne.jp/hocomodashi/e/3ef374ad09e79ed5c50f3584b3712d61
** Obtenez des commentaires sur les vidéos de Nico Nico ** http://d.hatena.ne.jp/MOOOVe/20120229/1330512626
Recommended Posts