Skip to main content

CLI tool for previewing and submitting the Nespresso recycling pickup form over HTTP

Project description

nes_recycle

ネスプレッソの使用済みカプセル回収フォームを、CLI から補助する macOS 向けツールです。

このツールはブラウザ自動操作ではなく、HTTP POST ベースで動作します。

  • 初回起動時にプロフィール情報を登録
  • プロフィールは macOS Keychain に保存
  • カプセル種類のデフォルト値も Keychain に保存
  • カプセル種類は 数字 1〜3 で選択
  • 実行時は可変項目だけを指定
  • まず確認画面相当を生成して主要項目を CLI に表示
  • Yes/NoYes を選んだときだけ本送信

フォーム側の HTML が古く、ブラウザ自動化に頼りづらいため、この方式を採用しています。

前提

  • macOS
  • Homebrew
  • フォームサイトへ HTTPS アクセスできること

インストール

Homebrew でインストールします。

brew tap rioriost/tap
brew install nes_recycle

使い方

基本実行例:

nes_recycle

日付・時間帯・バッグ数を指定する例:

nes_recycle --date 2026-03-15 --time 午前 --bags 2

カプセル種類を数字で指定する例:

nes_recycle --capsule-type 2

確認画面相当の生成だけ行い、本送信しない例:

nes_recycle --preview-only

確認プロンプトを省略して本送信まで進む例:

nes_recycle --date 2026-03-15 --time 午前 --bags 2 --yes

通信せず、設定内容だけ確認する例:

nes_recycle --dry-run

ヘルプを確認する場合:

nes_recycle --help

動作フロー

この CLI は次の流れで動きます。

  1. Keychain から保存済みプロフィールを読み込む
  2. --date --time --bags --capsule-type などの可変項目を受け取る
  3. フォームの確認画面相当を HTTP POST で生成する
  4. 主要項目を CLI に表示する
  5. y / n で確認する
  6. y のときだけ本送信する

主なオプション

  • --date
    • YYYY-MM-DD
    • 省略時は、引数解析の後でフォームサイトの get_cal_day レスポンスを取得して、その時点で指定可能な最小日付を自動設定
    • そのため、起動直後ではなく、実際に実行へ進む段階で日付解決を行います
  • --time
    • 指定なし / 午前 / 14時~16時 / 16時~18時 / 18時~21時
  • --capsule-type
    • 1 / 2 / 3
    • 省略時は Keychain に保存したデフォルト値を使用
    • 対応は次の通り
      • 1: オリジナル
      • 2: ヴァーチュオ
      • 3: オリジナルとヴァーチュオ
  • --bags
    • 1 以上 10 以下
    • 省略時の初期値は 1
  • --preview-only
    • 確認画面相当の生成だけ行い、本送信しない
  • --yes
    • 確認プロンプトを省略して本送信まで進む
  • --dry-run
    • 通信を行わず、読み込まれた設定内容だけ確認する
  • --reset-profile
    • 保存済みプロフィールを破棄して再登録する

プロフィール保存について

このツールは profile.json のようなファイルを使わず、プロフィール情報を macOS Keychain に保存します。

  • サービス名: st.rio.nes_recycle
  • アカウント名: profile

保存される項目:

  • ネスプレッソのお客様番号
  • 郵便番号
  • 回収先住所(都道府県から番地まで)
  • 回収先住所(アパート・マンション名と部屋番号)
  • 電話番号
  • メールアドレス
  • カプセル種類のデフォルト値

カプセル種類のデフォルト値

カプセル種類は、Keychain には文字列ではなく数字で保存されます。

  • 1: オリジナル
  • 2: ヴァーチュオ
  • 3: オリジナルとヴァーチュオ

たとえば 2 が保存されていれば、--capsule-type を省略した実行時は ヴァーチュオ として送信されます。

初回起動時

Keychain にプロフィールが未登録の場合、CLI 上で各項目の入力を求められます。
入力後、その内容は Keychain に保存され、次回以降は再利用されます。

カプセル種類のデフォルト値は、次の数字で入力します。

  • 1: オリジナル
  • 2: ヴァーチュオ
  • 3: オリジナルとヴァーチュオ

再初期化されるケース

保存済みプロフィールに問題がある場合は、再入力フローが始まります。

例:

  • 保存済みデータが壊れている
  • 必須項目が欠けている
  • 値の形式が不正

再登録時の既定値再利用

プロフィールを再登録する場合、既存の保存内容が読めれば、各項目に既定値として表示されます。
そのまま使いたい項目は Enter のみで確定し、変更したい項目だけ入力し直せます。

カプセル種類のデフォルト値は、たとえば 1:オリジナル のような形で既定値表示される想定です。

入力値の簡易バリデーション

初期設定時には、以下の簡易チェックを行います。

  • お客様番号
    • 7桁または8桁の数字
    • 7桁で入力した場合は、保存時に先頭へ 0 を補って 8 桁化
  • 郵便番号
    • 7桁の数字
  • 電話番号
    • 10桁または11桁の数字
  • メールアドレス
    • 簡易的なメールアドレス形式
  • カプセル種類のデフォルト値
    • 1 / 2 / 3 のいずれか

なお、郵便番号や電話番号は、ハイフン付きで入力しても内部で数字のみに正規化されます。

バッグ数は Keychain には保存せず、CLI 実行時に指定します。省略時の初期値は常に 1 です。

日付のデフォルト値について

--date を省略した場合、このツールは固定ロジックを使わず、フォームサイト側のカレンダー設定を取得してデフォルト日付を決めます。

この取得処理は、引数定義時ではなく、引数解析後に必要なときだけ実行されます。

具体的には、フォームトップを取得したうえで get_cal_day のレスポンスを参照し、少なくとも次の値を使って最小指定可能日を計算します。

  • 締切時刻(shime_time_h, shime_time_m
  • 何日後から指定可能か(afer_day_text
  • カレンダー制御を使うかどうか(flg_use_calender

そのため、従来のような「午前なら翌日、午後なら翌々日」という固定挙動ではなく、フォームサイトがその時点で許可している最小日付に追従します。

また、--date を明示した場合でも、指定日がその最小日付より前なら CLI 側でエラーにします。

この方式により、フォームサイトの一時的な通信失敗があっても、少なくとも引数解析そのものでは落ちにくくなっています。

dry-run について

--dry-run では通信を行わず、現在使用される設定だけを表示します。

nes_recycle --dry-run

出力にはマスク済みのプロフィール情報が含まれます。
画面共有やログ保存時には取り扱いに注意してください。

capsule_type はコードと表示名の両方を確認できる形式を想定しています。

preview-only について

--preview-only では、フォームの確認画面相当を生成し、主要項目を CLI に表示します。
本送信は行いません。

nes_recycle --preview-only

送信前の内容確認に向いています。

Keychain での確認・削除

macOS の「キーチェーンアクセス」アプリや security コマンドで確認・削除できます。

保存内容の確認例:

security find-generic-password -s st.rio.nes_recycle -a profile -w

削除例:

security delete-generic-password -s st.rio.nes_recycle -a profile

削除後に再度 nes_recycle を実行すると、プロフィール再登録フローが始まります。

CLI から再登録したい場合:

nes_recycle --reset-profile

注意事項

  • このツールは外部フォームの現行仕様に依存します
  • フォーム側の HTML や POST パラメータ仕様が変わると、動作しなくなる可能性があります
  • 確認画面の生成に成功しても、本送信後の完了判定はフォーム側表示に依存します
  • 最終的には受信メールや実際の受付結果も確認してください

トラブルシューティング

確認画面生成時に入力エラーになる

フォーム側のバリデーション結果が CLI に表示されます。
特に次を確認してください。

  • 郵便番号が実在するか
  • 電話番号の桁数が正しいか
  • 回収希望日が、その時点でフォームサイト側に許可されている最小日付以降か
  • バッグ数が 110 の範囲か
  • カプセル種類が 13 の範囲か

保存済みプロフィールを修正したい

次のコマンドで再登録できます。

nes_recycle --reset-profile

Keychain の読み込みや保存に失敗する

  • macOS の security コマンドが利用できるか確認してください
  • キーチェーンへのアクセス許可ダイアログが出た場合は許可してください
  • いったん登録情報を削除して再登録してください
security delete-generic-password -s st.rio.nes_recycle -a profile
nes_recycle --reset-profile

本送信後に成功判定できない

フォーム側の完了画面文言が変わると、自動判定できないことがあります。
その場合は次を確認してください。

  • 受信メール
  • 実際の受付結果
  • フォーム側の表示内容

ライセンス

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nes_recycle-0.0.5.tar.gz (37.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nes_recycle-0.0.5-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file nes_recycle-0.0.5.tar.gz.

File metadata

  • Download URL: nes_recycle-0.0.5.tar.gz
  • Upload date:
  • Size: 37.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nes_recycle-0.0.5.tar.gz
Algorithm Hash digest
SHA256 f089d7ee2c1ee2cebc97d9829255889702a5e5c0977e0ffdc963a0902437b8ce
MD5 9ec76a22a7ea3f562d37f8b4fa90bd9c
BLAKE2b-256 c9945c57e609fd10fb3a5182434d06f1c56b399f6966a153fe29a37c5406b7cc

See more details on using hashes here.

File details

Details for the file nes_recycle-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: nes_recycle-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nes_recycle-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b47ecbc32b7aee2c4da0c0c9420fcf4d83bf4bf89cd2859a0133bb844bb2dae3
MD5 092aeedc90f1bbc84cdc3c6b5bf4ea21
BLAKE2b-256 99a78ae22574d93b0355bfa90b6a990311b508fcc0a3bd3ee5c60357268c67ac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page