Kindleを愛用するようになって、紙の書籍を買わなくなってしまいました。
KindleUnlimitedも早速使い始めて、しばらくするとビックリ。
空き容量がどんどん減っています。
どうもKindleの削除ロジックには不具合があるらしく、削除しても良いはずのファイルが徐々に溜まっていく傾向があるらしい。
そのうえUnlimitedで古めのコミックなんかを全巻読破しては消し、また全巻読破しては消しなんてやっていたもんだから、その不要なファイルが素晴らしいスピードで溜まっていったわけですね。
軽く調べてみたところ、不要なファイルが大よそ掴めたので、自動で削除するプログラムを書いてみました。
今度はPythonです。(動作確認したのは2.7なのですが、大したことやってないので3.x系でもちょちょっと調整すれば動くかも)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
kindle_clearner.py
Kindleのdocumentsフォルダ内の削除されずに溜まったファイルやフォルダを削除します。
KindleをPCにUSB接続した後、Kindleのドライブレターを指定して起動します。
$ python kindle_clearner.py E:
"""
import sys, os, shutil
kindle_drive = sys.argv[1:][0]
if not kindle_drive.endswith(":"):
kindle_drive += ":"
workpath = kindle_drive + "/documents"
filelist = []
directorylist = []
for i in os.listdir(workpath):
filename_full = workpath + "/" + i
if os.path.isdir(filename_full):
if i.lower().endswith(".sdr"):
directorylist.append(i)
else:
if i.lower().startswith(".fuse_hidden"):
sys.stdout.write("delete .fuse -- %s\n" % i)
os.remove(filename_full) # ワークファイルなので削除
else:
base, ext = os.path.splitext(i)
filelist.append(base) # 拡張子を抜いたファイル名を保存
# 不要ディレクトリの削除(不要 = Kindle内に書籍データの無いsdrディレクトリ)
for dirname in directorylist:
dirname_full = workpath + "/" + dirname
check_name = dirname[0:len(dirname)-4]
if filelist.count(check_name) == 0:
sys.stdout.write("delete .sdr -- %s\n" % check_name)
shutil.rmtree(dirname_full)
else:
# sys.stdout.write("skip .sdr -- %s\n" % check_name)
pass
適当なエディタでUTF-8で保存すれば動くはず。
機能としては単純に
・「.fuse_hidden~」を削除する。(ワークファイルらしく、消しても問題なく動きます)
・書籍のファイル名を記録しておいて
・現状で書籍がない「書籍の栞やらハイライトやらの情報が入っているフォルダ」を削除する。(私の使い方の場合、これがでかかった!)
となっています。
PDFのルールブックとかで時々入れ替えて使うものに関しては「サブフォルダまでは見に行ってない」ので、ドキュメントフォルダの下に専用フォルダを置いて、その中に入れておくと書籍データがなくても削除されません。
不具合や改善案などがあればコメントで受け付けますが、例によって改修するかは気分次第です。
もちろん、使用は自己責任でお願いします!
最近のコメント