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/NoでYesを選んだときだけ本送信
フォーム側の 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 は次の流れで動きます。
- Keychain から保存済みプロフィールを読み込む
--date--time--bags--capsule-typeなどの可変項目を受け取る- フォームの確認画面相当を HTTP POST で生成する
- 主要項目を CLI に表示する
y/nで確認するyのときだけ本送信する
主なオプション
--dateYYYY-MM-DD- 省略時は、引数解析の後でフォームサイトの
get_cal_dayレスポンスを取得して、その時点で指定可能な最小日付を自動設定 - そのため、起動直後ではなく、実際に実行へ進む段階で日付解決を行います
--time指定なし / 午前 / 14時~16時 / 16時~18時 / 18時~21時
--capsule-type1 / 2 / 3- 省略時は Keychain に保存したデフォルト値を使用
- 対応は次の通り
1: オリジナル2: ヴァーチュオ3: オリジナルとヴァーチュオ
--bags1以上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 に表示されます。
特に次を確認してください。
- 郵便番号が実在するか
- 電話番号の桁数が正しいか
- 回収希望日が、その時点でフォームサイト側に許可されている最小日付以降か
- バッグ数が
1〜10の範囲か - カプセル種類が
1〜3の範囲か
保存済みプロフィールを修正したい
次のコマンドで再登録できます。
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f089d7ee2c1ee2cebc97d9829255889702a5e5c0977e0ffdc963a0902437b8ce
|
|
| MD5 |
9ec76a22a7ea3f562d37f8b4fa90bd9c
|
|
| BLAKE2b-256 |
c9945c57e609fd10fb3a5182434d06f1c56b399f6966a153fe29a37c5406b7cc
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b47ecbc32b7aee2c4da0c0c9420fcf4d83bf4bf89cd2859a0133bb844bb2dae3
|
|
| MD5 |
092aeedc90f1bbc84cdc3c6b5bf4ea21
|
|
| BLAKE2b-256 |
99a78ae22574d93b0355bfa90b6a990311b508fcc0a3bd3ee5c60357268c67ac
|