TypeErrorが出てきて実行できない。
コード:
#!/usr/bin/env python
#coding: utf-8
userid="**************@gmail.com"
passwd="*******"
import sys, re, cgi, urllib, urllib.request, urllib.error, http.cookiejar, xml.dom.minidom, time, urllib.parse
import simplejson as json
def getToken():
html = urllib.request.urlopen("http://www.nicovideo.jp/my/mylist").read()
for line in html.splitlines():
mo = re.match(r'^\s*NicoAPI\.token = "(?P<token>[\d\w-]+)";\s*',line)
if mo:
token = mo.group('token')
break
assert token
return token
def mylist_create(name):
cmdurl = "http://www.nicovideo.jp/api/mylistgroup/add"
q = {}
q['name'] = name.encode("utf-8")
q['description'] = ""
q['public'] = 0
q['default_sort'] = 0
q['icon_id'] = 0
q['token'] = token
cmdurl += "?" + urllib.parse.urlencode(q).encode("utf-8")
j = json.load( urllib.request.urlopen(cmdurl), encoding='utf-8')
return j['id']
def addvideo_tomylist(mid,smids):
for smid in smids:
cmdurl = "http://www.nicovideo.jp/api/mylist/add"
q = {}
q['group_id'] = mid
q['item_type'] = 0
q['item_id'] = smid
q['description'] = u""
q['token'] = token
cmdurl += "?" + urllib.parse.urlencode(q).encode("utf-8")
j = json.load( urllib.request.urlopen(cmdurl), encoding='utf-8')
time.sleep(0.5)
#ログイン
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(http.cookiejar.CookieJar()))
urllib.request.install_opener(opener)
urllib.request.urlopen("https://secure.nicovideo.jp/secure/login",
urllib.parse.urlencode( {"mail":userid, "password":passwd} ))
#トークン取得
token = getToken()
#マイリストの作成と動画の登録
mid = mylist_create(u"テストリスト")
addvideo_tomylist(mid, ["sm9","sm1097445", "sm1715919" ] )
エラー:
Traceback (most recent call last):
File "Nico3.py", line 47, in <module>
urllib.request.urlopen("https://secure.nicovideo.jp/secure/login", urllib.parse.urlencode( {"mail":userid, "password":passwd} ))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 162, in urlopen
return opener.open(url, data, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 463, in open
req = meth(req)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 1170, in do_request_
raise TypeError(msg)
TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str.
エラー2(追記)
Traceback (most recent call last):
File "Nico3.py", line 50, in <module>
token = getToken()
File "Nico3.py", line 11, in getToken
mo = re.match(r'^\s*NicoAPI\.token = "(?P<token>[\d\w-]+)";\s*',line)
File "/Users/NanjoHiroki/.virtualenvs/uec/lib/python3.5/re.py", line 163, in match
return _compile(pattern, flags).match(string)
TypeError: cannot use a string pattern on a bytes-like object
エラー3:
Traceback (most recent call last):
File "Nico3.py", line 50, in <module>
token = getToken()
File "Nico3.py", line 15, in getToken
assert token
UnboundLocalError: local variable 'token' referenced before assignment