Skip to content

Instantly share code, notes, and snippets.

@roflsunriz
Last active March 11, 2025 12:30
Show Gist options
  • Save roflsunriz/88f65aebd29b2b0521b34a80f152a3b1 to your computer and use it in GitHub Desktop.
Save roflsunriz/88f65aebd29b2b0521b34a80f152a3b1 to your computer and use it in GitHub Desktop.
filterMatomeUpdate_plan : 「フィルタまとめ」パッケージ更新ツール 実装仕様書

「フィルタまとめ」パッケージ更新ツール 実装仕様書

1. 概要

本プログラムは、「フィルタまとめ」パッケージの更新作業を効率化するためのPythonベースのGUIツールです。
NicoCache_nlディレクトリから選択したファイル・フォルダをNicoCache_nl other内のtest_nlFiltersフォルダにコピーし、その後test_nlFiltersフォルダを7z形式でアーカイブ化します。


2. 基本仕様

2.1 開発環境

  • 言語: Python 3.x
  • GUIライブラリ: Tkinter
  • 外部ライブラリ:
    • shutil(ファイル・フォルダ操作)
    • os(パス操作)
    • json(設定ファイルの読み書き)
    • py7zr(7zアーカイブ作成)
    • tkinter.filedialog(ファイルエクスプローラー)

2.2 設定ファイル

  • ファイル名: filter_matome_config.json
  • 内容:
    • source_dir: コピー元のデフォルトディレクトリ(初期値: "C:\NicoCache_nl"
    • dest_dir: コピー先のデフォルトディレクトリ(初期値: "C:\NicoCache_nl other"
    • selected_files: 選択されたファイル・フォルダのリスト(初期値: []
  • 保存場所: プログラム実行ディレクトリ内
  • サンプル:
    {
      "source_dir": "C:\\NicoCache_nl",
      "dest_dir": "C:\\NicoCache_nl other",
      "selected_files": []
    }

3. 機能要件

3.1 GUI構成

以下のコンポーネントを配置:

  1. ソースディレクトリ入力フィールド
    • デフォルト値: C:\NicoCache_nl
    • 隣に「参照」ボタンを配置し、フォルダ選択ダイアログを表示。
  2. 出力先ディレクトリ入力フィールド
    • デフォルト値: C:\NicoCache_nl other
    • 隣に「参照」ボタンを配置し、フォルダ選択ダイアログを表示。
  3. ファイル選択エリア
    • コピー元のファイル・フォルダを選択するためのリストボックス。
    • 「ファイル選択」ボタンで複数選択可能なファイルエクスプローラーを起動。
    • 選択されたファイル・フォルダをリストボックスに表示。
  4. 設定保存ボタン
    • 設定を保存。
  5. 実行ボタン
    • コピーおよびアーカイブ処理を開始。
  6. キャンセルボタン
    • 実行中の処理を中断(未実装時は無効化)。
  7. 終了ボタン
    • プログラムを終了。
  8. ステータスバー(追加機能)
    • 処理の進捗状況やエラーメッセージを表示。

3.2 処理フロー

  1. 必要なライブラリを自動インストール
    • 起動時、このプログラムに必要なライブラリがインストールされていない場合、自動的にインストール。
  2. 設定の読み込み
    • 起動時にfilter_matome_config.jsonを読み込み、フィールドに反映。
    • ファイルが存在しない場合はデフォルト値を使用し、初回保存。
  3. ファイル選択
    • ユーザーがソースディレクトリからコピーしたいファイル・フォルダを選択。
  4. コピー処理
    • 選択されたファイル・フォルダをdest_dir\test_nlFiltersに上書きコピー。
    • フォルダが存在しない場合は新規作成。
    • 下位階層も含めてコピー。
  5. アーカイブ処理
    • dest_dir\test_nlFiltersを7z形式で圧縮。
    • 出力ファイル名: dest_dir\test_nlFilters.7z
    • 既存の同名ファイルがあれば上書き。
  6. 設定の保存
    • 処理完了後、入力されたディレクトリパスと選択されたファイル・フォルダをfilter_matome_config.jsonに保存。

4. 追加要件

4.1 エラー処理

  • ソースディレクトリまたは出力先ディレクトリが存在しない場合、エラーメッセージをステータスバーに表示。
  • ファイル選択が空の場合、「ファイルを選択してください」と警告。
  • 7zアーカイブ作成に失敗した場合、エラーメッセージを表示。

4.2 ログ機能(追加提案)

  • 処理の開始・終了時刻やエラー内容をfilter_matome_log.txtに記録。
  • サンプルログ:
    2025-03-10 10:00:00 - 処理開始
    2025-03-10 10:00:05 - コピー完了: 3ファイル, 2フォルダ
    2025-03-10 10:00:07 - アーカイブ完了: test_nlFilters.7z

4.3 プログレスバー(追加提案)

  • コピーおよびアーカイブ処理の進捗をGUI上で視覚的に表示。

5. インストール手順

  1. Python 3.xをインストール。

  2. 必要なライブラリをインストール: pip install py7zr

  3. プログラムファイルを任意のディレクトリに配置。

  4. 初回起動時にfilter_matome_config.jsonが自動生成。


6. 使用方法

  1. プログラムを起動。
  2. ソースディレクトリと出力先ディレクトリを確認・必要に応じて変更。
  3. 「ファイル選択」ボタンでコピーしたいファイル・フォルダを選択。
  4. 「実行」ボタンを押して処理開始。
  5. 処理完了後、test_nlFilters.7zが出力先ディレクトリに生成されることを確認。
  6. 「終了」ボタンでプログラムを閉じる。

7. 注意点

  • ディレクトリパスに日本語や特殊文字が含まれる場合、エンコーディングエラーを防ぐため適切な処理を追加。
  • 処理中にプログラムを強制終了すると中途半端なファイルが残る可能性あり。
  • 大量のファイルを扱う場合、メモリ使用量に注意。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment