見出し画像

【初心者】Pythonとnotionで蔵書管理①


早く本題が知りたい人は目標まで飛んでください

初めに

普段はファッション関連のことを書いているnoteですが、プログラミングをやってみたのでその記録も残しておこうと思います

(増えてきたら別垢かqiitaに移行するかも、一旦マガジンに纏めておきます)
プログラミングは軽く勉強したことがあるだけなのですが、何か作ってみたいなぁと思い
「Pythonで本のバーコードを読み取り、そのデータから書籍の情報を取り出し、notionに書き出す」
という動作をやってみようと思いました
初心者による説明ですし、技術系ブログ書くのは初めてなので優しく見守ってください
間違いがあったら優しく指摘ください

目標

具体的には

①PythonのOpenCVで本のバーコード読み取り
②そのデータをAPIを使って本のタイトル・著者データを読み取る
③Notionインテグレーションでデータベースに追加
をします

②③が出来たのでその結果を残しておきます

ISBNからタイトル著者データ取得

OpenBDのAPIを用いて入力した書籍のデータを出力しています

import json
import urllib.request
import pprintfrom PIL
import Imageimport pyzbar.pyzbar as pyzbar

isbn = 97111111111 #読み取りたい本のisbnデータ

# OpenBD APIを使用して書籍情報を取得するURLを作成
url = f'https://api.openbd.jp/v1/get?isbn={isbn}'

# URLを開いてデータを取得
urlopen = urllib.request.urlopen(url)
bookdata = json.loads(urlopen.read().decode('utf-8'))

 #必要なデータ(タイトルと著者)のみ取得し書き出す
if bookdata and bookdata[0]: 
  title = bookdata[0]['summary']['title'] 
author = bookdata[0]['summary']['author']   
print(f"Title: {title}")   
print(f"Author: {author}")

else:    print("No book information found.")

Notionに書き出す

Notionインテグレーションの設定が必要になります
設定からソースコードまで下記サイトを参考にしました

ISBN入力→Notionに書き出す までをまとめたソースコードは以下になりました

import json
import urllib.request
import pprintfrom PIL
import Imageimport pyzbar.pyzbar as pyzbar
isbn = 9784798184869
url = f'https://api.openbd.jp/v1/get?isbn={isbn}'
# url = f'https://www.googleapis.com/books/v1/volumes?q=isbn:{isbn}'
urlopen = urllib.request.urlopen(url)
bookdata = json.loads(urlopen.read().decode('utf-8'))
if bookdata and bookdata[0]:   
title = bookdata[0]['summary']['title'] 
  author = bookdata[0]['summary']['author'] 
  print(f"Title: {title}") 
  print(f"Author: {author}")else: 
  print("No book information found.")


import requests
NOTION_API_KEY = 'それぞれのNotionAPIKEY'
DATABASE_ID = 'それぞれのデータベースID'
url = 'https://api.notion.com/v1/pages'
headers = {    'Notion-Version': '2022-06-28', 
  'Authorization': 'Bearer ' + NOTION_API_KEY,   
'Content-Type': 'application/json',
}
json_data = {    'parent': { 'database_id': DATABASE_ID }, 
  'properties': {   
    'title': {         
  'title': [       
        {                   
'text': {                 
      'content': title #タイトルデータを追加                   

              }           
]     
  },     
  'author':
{            'rich_text': [
                {                   
'text': {                     
  'content': author #著者データを追加             
      }         
      }     
      ]   
    },
  },
}
response = requests.post(url, headers=headers, json=json_data)print(response.status_code)print(response.json())

困ったところ

pipが使えない

以下参考 VSCodeの問題は無視しても大丈夫っぽい

結果的に

python -m pip install 〇〇

を付けないとpipコマンドが使えない状態になりました
後で色々調べます

notionとの連携が上手くいかない

エラーが出るたびにCopilotに投げ続けていたらなんとかなりました
原因はよく分かりません

最後に

カメラでバーコード読み取りも頑張るぞ
途中まではできてるんです、、飽きて一旦別の事始めるかもしれない

いいなと思ったら応援しよう!

この記事が参加している募集