やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

はてなブログAPIをPython3で実行できなかった

まずは丸パクリで動作確認から。のつもりが、またしても動かず。

経緯

前回
前回

参考

http://developer.hatena.ne.jp/
http://kiito.hatenablog.com/entry/2016/11/23/225729
http://karaage.hatenadiary.jp/entry/2016/01/25/073000

実行

参考先のコードを丸パクリして動作するか確認した。

xmltodict

$ python3 main.py 
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import xmltodict
ImportError: No module named 'xmltodict'
$ pip3 install xmltodict
Downloading/unpacking xmltodict
  Downloading xmltodict-0.10.2.tar.gz
  Running setup.py (path:/tmp/pip_build_mint/xmltodict/setup.py) egg_info for package xmltodict
    
Installing collected packages: xmltodict
  Running setup.py install for xmltodict
    error: could not create '/usr/local/lib/python3.4/dist-packages/xmltodict.py': Permission denied
    Complete output from command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip_build_mint/xmltodict/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ea6_brx8-record/install-record.txt --single-version-externally-managed --compile:
    running install

running build

running build_py

creating build

creating build/lib

copying xmltodict.py -> build/lib

running install_lib

copying build/lib/xmltodict.py -> /usr/local/lib/python3.4/dist-packages

error: could not create '/usr/local/lib/python3.4/dist-packages/xmltodict.py': Permission denied

----------------------------------------
Cleaning up...
Command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip_build_mint/xmltodict/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ea6_brx8-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_mint/xmltodict
Storing debug log for failure in /home/mint/.pip/pip.log

sudoをつけ忘れた。やり直すと成功。

$ sudo pip3 install xmltodict
[sudo] password for mint: 
Downloading/unpacking xmltodict
  Downloading xmltodict-0.10.2.tar.gz
  Running setup.py (path:/tmp/pip_build_root/xmltodict/setup.py) egg_info for package xmltodict
    
Installing collected packages: xmltodict
  Running setup.py install for xmltodict
    
Successfully installed xmltodict
Cleaning up...

requests_oauthlib

再度やってみるも今度はrequests_oauthlibが無いと言われる。

$ python3 main.py 
Traceback (most recent call last):
  File "main.py", line 3, in <module>
    from requests_oauthlib import OAuth1Session
ImportError: No module named 'requests_oauthlib'
$ sudo pip3 install requests_oauthlib
Downloading/unpacking requests-oauthlib
  Downloading requests_oauthlib-0.8.0-py2.py3-none-any.whl
Downloading/unpacking oauthlib>=0.6.2 (from requests-oauthlib)
  Downloading oauthlib-2.0.1.tar.gz (122kB): 122kB downloaded
  Running setup.py (path:/tmp/pip_build_root/oauthlib/setup.py) egg_info for package oauthlib
    
Requirement already satisfied (use --upgrade to upgrade): requests>=2.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib)
Installing collected packages: requests-oauthlib, oauthlib
  Found existing installation: oauthlib 0.6.1
    Not uninstalling oauthlib at /usr/lib/python3/dist-packages, owned by OS
  Running setup.py install for oauthlib
    
Successfully installed requests-oauthlib oauthlib
Cleaning up...

bs4

再度やってみるも今度はbs4が無いと言われる。

$ python3 main.py 
Traceback (most recent call last):
  File "main.py", line 4, in <module>
    from bs4 import BeautifulSoup
ImportError: No module named 'bs4'
$ sudo pip3 install bs4
Downloading/unpacking bs4
  Downloading bs4-0.0.1.tar.gz
  Running setup.py (path:/tmp/pip_build_root/bs4/setup.py) egg_info for package bs4
    
Downloading/unpacking beautifulsoup4 (from bs4)
  Downloading beautifulsoup4-4.5.3-py3-none-any.whl (85kB): 85kB downloaded
Installing collected packages: bs4, beautifulsoup4
  Running setup.py install for bs4
    
Successfully installed bs4 beautifulsoup4
Cleaning up...

Error

再度やってみるもエラーが出た。

python3 main.py 
Traceback (most recent call last):
  File "main.py", line 73, in <module>
    'ytyaru', 'blogmake.hatenablog.com', '新しい記事だよ', '本文です。', draft=True)
  File "main.py", line 27, in post_entries
    res = self.client.post(url, data=xml)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 497, in post
    return self.request('POST', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 421, in request
    prep = self.prepare_request(req)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 359, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/usr/lib/python3/dist-packages/requests/models.py", line 291, in prepare
    self.prepare_auth(auth, url)
  File "/usr/lib/python3/dist-packages/requests/models.py", line 470, in prepare_auth
    r = auth(self)
  File "/usr/local/lib/python3.4/dist-packages/requests_oauthlib/oauth1_auth.py", line 80, in __call__
    unicode(r.url), unicode(r.method), r.body or '', r.headers)
  File "/usr/local/lib/python3.4/dist-packages/oauthlib/oauth1/rfc5849/__init__.py", line 276, in sign
    "Headers indicate a formencoded body but body was not decodable.")
ValueError: Headers indicate a formencoded body but body was not decodable.

所感

一体いつになったら使えるの?つづきは次回にしよう。