goodnotes5와 Anki의 협력을 돕는 스크립트를 작성했습니다.

자기소개



취미로 프로그램을 쓰는 학생. for문을 알 수 있다.

환경



macOS Catalina 10.15.7
파이썬 3.8.6

동기



goodnotes5로 플래시 카드를 만들고 Anki에서 배우고 싶습니다.
goodnotes5에 있는 플래시 카드의 시험적인 기능은 지금까지 이마이치.

흐름



3,4번을 파이썬으로 한다.
1. goodnotes5에서 플래시 카드 (아래 이미지)를 이미지 형식으로 내보내기
2. 내보낸 이미지(가득)를 임의의 디렉토리에 저장해 둔다
3. 내보낸 이미지를 2분할하여 각각을 Anki의 collection.media에 저장
4. 2분할한 이미지를 Anki로 표시할 수 있는 csv 파일을 작성한다(example.csv)
5. PC판 Anki로 csv를 import한다

example.csv
<img src="example_qst0.png"><img src="example_ans0.png">
<img src="example_qst1.png"><img src="example_ans1.png">
<img src="example_qst2.png"><img src="example_ans2.png">

실제 코드



명명 규칙, 영문법 모르겠습니다.
path/to/이하는 환경에 맞게 변경한다.

toAnki.py
import os
from PIL import Image

# Anki用csv作成のため宣言
Anki_csv = []

# Ankiのメディアファイルの場所
anki_media_path = '/path/to/collection.media'

# 画像ファイルの入ったフォルダを指定
print('tell me target dir under homedir')
target_dir_path = '/path/to/userhome'+input()

# 画像ファイルの名前を指定
print('tell me image file name')
image_file_name = input()

# 画像ファイルの名前を指定
print('tell me image index start')
index = int(input())

# 指定したフォルダ内の画像ファイルを全て取得
target_list = os.listdir(target_dir_path)

# MacOSのおせっかい対策
if '. DS_Store' in target_list:
    target_list.remove('.DS_Store')


# 各画像ファイルごとに画像処理・保存
for target in target_list:

    # 画像ファイルをImageオブジェクトに格納
    img = Image.open(target_dir_path + '/' + target)

    # 画像の幅と高さを取得
    width = img.size[0]
    height = img.size[1]

    # 画像を上と下に分割・保存
    img_qst = img.crop((0, 0, width, height/2))
    img_ans = img.crop((0, height/2, width, height))
    img_qst.save(anki_media_path + '/' + image_file_name + '_qst' + str(index)+ '.png')
    img_ans.save(anki_media_path + '/' + image_file_name + '_ans' + str(index)+ '.png')

    # csv用
    qst_tag = '<img src="' + image_file_name + '_qst' + str(index)+ '.png' + '">'
    ans_tag = '<img src="' + image_file_name + '_ans' + str(index)+ '.png' + '">'
    Anki_csv.append(qst_tag + ',' + ans_tag + '\n')

    # 終わったら逐一報告
    print('done ' + str(index))

    # 保存する画像ファイルのインデックスをカウント
    index += 1

# csv作成
with open('/path/to/Desktop/toAnki.csv',mode='w') as f:
    for j in Anki_csv:
        f.write(j)

print('All work was done')

사이고에게



markdown 어렵다. 코드 내용을 언급하지 않았습니다.
질문·지적 등 잘 부탁드립니다.

좋은 웹페이지 즐겨찾기