60歳を迎えて、思うこと。 -5ページ目

60歳を迎えて、思うこと。

いつの間にか、「60」という年月が経ちました。
残り少ないか多いか?わかりませんが。
じじぃ~の「ひとりごと」を細々と続けられれば。。。

python 難行苦行・続

# Nothing Phone(4a)Pro
# python
# 開発者


すまほ で
写真 撮影

パソコンに 保存

単調な 作業を 楽したい!

【Gemini】様に ご相談!

# ==== すくりぷと

# ### Pythonスクリプト例(ADBを使用する最も安定した実装)

# 【Gemini】様
# 事前に`adb`コマンドを使える状態
# (`pip install pure-python-adb` 
# または標準の`subprocess`経由)にしておくことで、
# 以下のようなロジックを構成できます。
# 以下のコードは、**「テストモード(コピー)」** と
# **「本番モード(移動)」** をフラグで切り替えられる構成になっています。
# ```python


import os
import re
import shutil
import subprocess
from datetime import datetime
# ==========================================
# 設定パラメータ
# ==========================================
TEST_MODE = True  # True: コピー(テスト) / False: 移動(本番)

# 保存先の指定ドライブ・フォルダ
# DEST_BASE_DIR = r"D:\Photos_Backup"
DEST_BASE_DIR = r"S:\_スマホ\4aPro"


# スマホ側のパス(ADB用)
ANDROID_CAMERA_PATH = "/sdcard/DCIM/Camera"


def run_adb_cmd(args):
    """ADBコマンドを実行して結果を取得するヘルパー関数"""
    cmd = ["adb"] + args
    result = subprocess.run(
        cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, encoding="utf-8"
    )
    return result.stdout.strip()


def get_unique_folder_path(base_dir, folder_name):
    """同名フォルダが存在する場合に連番 (_1, _2...) を付与する"""
    target_path = os.path.join(base_dir, folder_name)
    if not os.path.exists(target_path):
        return target_path

    counter = 1
    while True:
        new_path = os.path.join(base_dir, f"{folder_name}_{counter}")
        if not os.path.exists(new_path):
            return new_path
        counter += 1


def main():
    print("=== スマホ写真転送処理 開始 ===")

    # 1. 接続確認
    devices = run_adb_cmd(["devices"])
    if "device" not in devices.replace("List of devices attached", ""):
        print("エラー: Android端末が認識されていません。USBデバッグが有効か確認してください。")
        return

    # 2. CAMERAフォルダ内のファイル一覧を取得
    # IMG_*.jpg パターンにマッチするものを抽出
    files_raw = run_adb_cmd(["shell", f"ls {ANDROID_CAMERA_PATH}"]).splitlines()
    img_files = [
        f for f in files_raw if re.match(r"^IMG_\d+_\d+\.jpg$", f, re.IGNORECASE)
    ]

    if not img_files:
        print("転送対象の IMG_*.jpg ファイルが見つかりませんでした。")
        return

    # 3. ファイル名順でソート(IMG_YYYYMMDD_HHMMSSxxx なので昇順ソートで最も古いファイルが先頭になる)
    img_files.sort()
    oldest_file = img_files[0]

    # 最も古いファイル名(拡張子なし)をフォルダ名に決定
    folder_name = os.path.splitext(oldest_file)[0]
    save_dir = get_unique_folder_path(DEST_BASE_DIR, folder_name)

    os.makedirs(save_dir, exist_ok=True)
    print(f"最古ファイル: {oldest_file}")
    print(f"保存先フォルダ: {save_dir}")
    print(f"動作モード: {'[テスト] コピー (Copy)' if TEST_MODE else '[本番] 移動 (Move)'}")

    # 4. 転送処理
    for file_name in img_files:
        remote_file_path = f"{ANDROID_CAMERA_PATH}/{file_name}"
        local_file_path = os.path.join(save_dir, file_name)

        print(f"処理中: {file_name} ...", end="")

        # スマホからPCへコピー (adb pull)
        pull_result = run_adb_cmd(["pull", remote_file_path, local_file_path])

        # 本番モード(移動)の場合はコピー成功後にスマホ側を削除
        if not TEST_MODE:
            if os.path.exists(local_file_path):
                run_adb_cmd(["shell", "rm", remote_file_path])
                print(" 転送&削除完了")
            else:
                print(" 転送失敗(スマホ側ファイルは維持)")
        else:
            print(" コピー完了")

    print("\nすべての処理が完了しました。")


if __name__ == "__main__":
    main()


### 今後の展開(Step 3 以降へ向けて)
# この処理のあとに続く「Step 3 以降」の内容に応じて、以下のカスタマイズも簡単に組み込めます。
# * **エラーハンドリング**: 転送途中でUSBが抜けた場合の安全停止
# * **ログ出力**: どのファイルをいつどこへ移動したかのログファイル保存 (`.log`)
# * **条件分岐**: 日付ごと・月ごとにさらに配下フォルダを自動作成する処理
# * **通知機能**: 処理完了時にWindowsのデスクトップ通知を出す処理
# 「Step 3 以降」で予定されている処理や、ADB/MTPのどちらのアプローチを希望されるかなど、具体的なご要望があれば続けてお知らせください!
# # ==============================

 

python 難行苦行;;

# Nothing Phone(4a)Pro
# python
# 開発者


すまほ で
写真 撮影

パソコンに 保存

単調な 作業を 楽したい!

【Gemini】様に ご相談!


# ==== すまほの設定

開発者向けオプション

Nothing Phone (4a) Pro
(Nothing OS)で
「開発者向けオプション」を有効にし、
「USBデバッグ」をオンにする手順は以下の通りです。

1. 「設定」アプリ
2. 「デバイス情報」
「デバイス情報」をタップします。

※ビルド番号 は 隠れている
「Nothing OS」の部分をタップ

3. ビルド番号を7回連続でタップする
 ロック解除を求められたら入力.
PIN 1234 ⇒

「これで開発者になりました!」と表示が出れば成功です。*

4. 「システム」メニューに戻る:
一つ前の「設定」画面に戻り、「システム」 をタップします。

5. 「開発者向けオプション」を開く:
「システム」メニュー内に新しく追加された 「開発者向けオプション」 をタップします。

6. 「USBデバッグ」をオンにする:
リストの中から 「USBデバッグ」 を探し、トグルスイッチを オン(有効) に切り替えます。
「USBデバッグを許可しますか?」という確認ポップアップが出たら 「OK」 を選択します。
# ==== ソフトウェア追加
1. Platform-Tools (ADB) のダウンロード
Google公式からダウンロード.
ブラウザで
SDK Platform-Tools for Windows
検索
Google公式ページから
SDK Platform-Tools for Windows
ZIPファイルをダウンロードします。
* ダウンロードした `platform-tools_rXX.X.X-windows.zip` を解凍します。
* 解凍された `platform-tools` フォルダを
分かりやすい場所に配置します。
(例: `C:\platform-tools`)

# ==== 環境変数の追加
環境変数(PATH)に登録する: 
コマンドプロンプトやPythonから「adb」をどこからでも呼べるようにする.

1. キーボードの Windowsキー を押し、「環境変数」と入力して「システム環境変数の編集」を開きます。
2. 右下の 「環境変数(N)...」 をクリックします。
3. 「ユーザー環境変数」または「システム環境変数」
のリストにある `Path` を選択し、
「編集(E)...」 をクリックします。
4. 「新規(N)」 をクリックし、手順1で配置したパス(例: `C:\platform-tools`)を入力して「OK」を押します。

名前※勝手に変更してはダメ!
Path

フルパス※参照で
C:\xyz\platform-tools

3. 3. VS Code / ターミナルを再起動: 
設定を反映させる.
環境変数を変更した後は、
VS Code を一度完全に閉じ、再立ち上げしてください。(再起動しないと古い環境変数のままになり、同じエラーが出ます)

4. 4. スクリプトの再実行: 動作確認.
VS Codeのターミナルで再度スクリプトを実行してください。
# ==============================

# ==== python スクロプト


# ==== 修正後の確認方法
1. 今開いている コマンドプロンプト(黒い画面)を一度閉じます。
2. もう一度 コマンドプロンプトを開き直して、以下を実行してみてください。


cmd

adb version


今度は `Android Debug Bridge version 1.0.xx` と表示されるはずです!
表示されたら、VS Codeを再起動してPythonスクリプトを実行してみてください。
# ==============================


# ==== スマホ画面で「デバッグの許可」が出ているか確認 【一番怪しい】

USBで繋いだ状態で、スマホのロックを解除して画面を見てみてください。

「USBデバッグを許可しますか?」 というポップアップが出ていませんか?

1. 「このパソコンからのデバッグを常に許可する」 に
チェックを入れる 
※ここ重要!!!

2. 「許可」 をタップする

※これを受け入れないと、PC側からは「スマホが繋がっていない」と判断されてしまいます。
# ==============================


 

雑学としての 度量衡の国際単位

むか~~~し
むかし

ずっと
むかし

じじぃ~候補生は
学校行事で


「東芝科学館」に行った!

A4サイズの
下敷き(?)をいただいて
大切に 利用していたが

ボロボロ
デジタル化した!


ちなみに
度量衡の国際単位
について・・・

# ==== 【Gemini】様の 説明
 1. 「度量衡」の読み方と国際的(英語)表記

* 日本語ふりがな


どりょうこう

(「度」は長さ、
「量」は体積・容量、
「衡」は重さ・質量を意味します)

* 国際的(英語)表記
* Weights and Measures(一般的・実用的な表現)
* Metrology(計量学という学術的な表現)
* International System of Units (SI)(国際単位系そのものを指す場合)
# ====
下敷き(?)を
csv化 して もらった

# ==== csv 【Gemini】様
```csv
カテゴリ,量,単位の名称,単位記号,換算関係・定義
SI基本単位・補助単位,長さ,メートル,m,
SI基本単位・補助単位,質量,キログラム,kg,
SI基本単位・補助単位,時間,秒,s,
SI基本単位・補助単位,電流,アンペア,A,
SI基本単位・補助単位,熱力学温度,ケルビン,K,
SI基本単位・補助単位,光度,カンデラ,cd,
SI基本単位・補助単位,物質量,モル,mol,
SI基本単位・補助単位,平面角,ラジアン,rad,
SI基本単位・補助単位,立体角,ステラジアン,sr,
接頭語,,エクサ,E,10^18
接頭語,,ペタ,P,10^15
接頭語,,テラ,T,10^12
接頭語,,ギガ,G,10^9
接頭語,,メガ,M,10^6
接頭語,,キロ,k,10^3
接頭語,,ヘクト,h,10^2
接頭語,,デカ,da,10^1
接頭語,,デシ,d,10^-1
接頭語,,センチ,c,10^-2
接頭語,,ミリ,m,10^-3
接頭語,,マイクロ,μ,10^-6
接頭語,,ナノ,n,10^-9
接頭語,,ピコ,p,10^-12
接頭語,,フェムト,f,10^-15
接頭語,,アト,a,10^-18
長さ,,海里,n mile,1 n mile = 1852 m
長さ,,オングストローム,Å,1 Å = 10^-10 m
長さ,,ミクロン,μ,1 μ = 1 μm = 10^-6 m
長さ,,インチ,in,
長さ,,フィート,ft,1 ft = 12 in = 0.3048 m
長さ,,ヤード,yd,1 yd = 3 ft = 0.9144 m
長さ,,マイル,mile,1 mile = 1760 yd = 1.609 km
長さ,,尺,,1 尺 = (10/33) m = 0.3030 m
長さ,,間,,1 間 = 6 尺 = 1.818 m
長さ,,里,,1 里 = 2160 間 = 3.927 km
面積,,平方メートル,m^2,
面積,,アール,a,1 a = 100 m^2
面積,,ヘクタール,ha,1 ha = 100 a = 10^4 m^2
面積,,エーカー,acre,1 acre = 4840 yd^2 = 4047 m^2
面積,,坪,,1 坪 = (400/121) m^2 = 3.306 m^2
面積,,町,,1 町 = 3000 坪 = 9917 m^2
平面角,,ラジアン,rad,
平面角,,度,°,1° = (π/180) rad = 0.01745 rad
平面角,,分,′,1′ = (1/60)° = 2.909 * 10^-4 rad
平面角,,秒,″,1″ = (1/60)′ = 4.848 * 10^-6 rad
時間,,秒,s,
時間,,分,min,1 min = 60 s
時間,,時間,h,1 h = 60 min = 3600 s
時間,,日,d,1 d = 24 h = 86400 s
体積,,立方メートル,m^3,
体積,,リットル,L,1 L = 1 dm^3 = 10^-3 m^3
体積,,ガロン(日・米制),gal,1 gal = 3.785 L
体積,,升,,1 升 = 10 合 = 1.804 L
体積,,石,,1 石 = 100 升 = 180.4 L
質量,,キログラム,kg,
質量,,トン,t,1 t = 10^3 kg
質量,,ポンド,lb,1 lb = 0.4536 kg
質量,,カラット,car,1 car = 200 mg
質量,,オンス,oz,1 oz = (1/16) lb = 0.02835 kg
質量,,貫,,1 貫 = 3.750 kg
質量,,匁,,1 匁 = (1/1000) 貫 = 3.750 g
温度,,ケルビン,K,
温度,,セルシウス度,°C,t °C = (t + 273.15) K
温度,,華氏度,°F,t °F = (5/9)*(t - 32) °C
光,,光度,カンデラ,cd,
光,,光束,ルーメン,lm,1 lm = 1 cd * sr
光,,輝度,カンデラ毎平方メートル,cd/m^2,
光,,輝度,スチルプ,sb,1 sb = 1 cd/cm^2
光,,照度,ルクス,lx,1 lx = 1 lm/m^2
力学,,速さ,メートル毎秒,m/s,
力学,,速さ,ノット,kn,1 kn = 1 n mile/h = 0.5144 m/s
力学,,角速度,ラジアン毎秒,rad/s,
力学,,周波数,ヘルツ,Hz,1 Hz = 1 s^-1
力学,,密度,キログラム毎立方メートル,kg/m^3,
力学,,力,ニュートン,N,1 N = 1 m * kg * s^-2
力学,,力,重量キログラム,kgf,1 kgf = 9.807 N
力学,,エネルギー,ジュール,J,1 J = 1 N * m
力学,,仕事,エルグ,erg,1 erg = 10^-7 J
力学,,仕事率,ワット,W,1 W = 1 J/s
力学,,仕事率,馬力(仏馬力・米英馬力),hp,1 hp = 745.7 W
力学,,圧力・応力,パスカル,Pa,1 Pa = 1 N/m^2
力学,,圧力・応力,バール,bar,1 bar = 10^5 Pa
力学,,圧力・応力,標準大気圧,atm,1 atm = 101.3 kPa
力学,,圧力・応力,トル,Torr,1 Torr = (1/760) atm = 133.3 Pa
電気,,電流,アンペア,A,
電気,,電気量,クーロン,C,1 C = 1 A * s
電気,,電圧,ボルト,V,1 V = 1 W / A
電気,,電力,ワット,W,1 W = 1 V * A = 1 J/s
電気,,電力量,ジュール,J,1 J = 1 W * s
電気,,静電容量,ファラド,F,1 F = 1 C / V
電気,,電気抵抗,オーム,Ω,1 Ω = 1 V / A


# ==== 補足説明・・・
 2. 1980年頃の下敷きと現在の表記の違い・注意点
1980年頃の資料(下敷き)としては内容が非常によくまとまっていますが、1992
年〜1999年の計量法改正(SI単位への完全移行)により、現在では「使われなく
なった単位」や「表記が変わったもの」がいくつかあります。

変な記述(現在の基準と異なる点)は主に以下の3つです。

 ① 「重量キログラム(kgf)」や「馬力(hp)」など
* 下敷きの表記: 力を `kgf`、馬力を `hp`、圧力を `Torr` や `bar` で表記
* 現在の基準: 現在の国際単位系(SI)では、力は `N`(ニュートン)、圧力は
 `Pa`(パスカル)、電力・仕事率は `W`(ワット) に完全統一されています。
`kgf` や `hp` は現在の取引や証明(公式書類など)では使用が禁止されていま
す。

 ② リットルの記号「$\ell$」から「L」への変更
* 下敷きの表記: 小文字筆記体の `ℓ` または `l`
* 現在の基準: 数字の `1`(いち)と見間違えやすいため、1979年に国際的に大
文字の `L` も認められ、現在の日本の教科書やJIS規格では大文字の `L` が標
準となっています。

 ③ 補助単位(ラジアン・ステラジアン)の分類廃止
* 下敷きの表記: 「基本単位・補助単位・組立単位」の3分類
* 現在の基準: 1995年の国際度量衡総会で「補助単位」という分類自体が廃止さ
れ、ラジアン(rad)やステラジアン(sr)はすべて「無次元の組立単位」に統
合されました。

先ほど作成したCSVデータは、上記の「現代の標準表記(Lなどの大文字化や単位
記号の整理)」に合わせて調整・補正してありますので、そのまま現代でも使い
やすいデータになっています!
# ==============================

 

部品・・・L金具

以前


AliExpress



購入して

長らく


行方不明 に

なって いた


L金具

20個 で・・・

円???

 

 

 

じじぃ~

 

画面クリーナー に あらず!

以前

Xiaomi

Redmi Note 10 Pro

バッテリー交換して貰って

戻ってきた

すまほ に 同梱されていた


謎あいてむ

すまほ 関連だから・・・

画面クリーナー



思っていたが

写真を


【Gemini】様に 送って

なんじゃら ほい!???

# ==== 【Gemini】様 の お答え

お写真から、この2つのおまけの正体と用途が判明しました!

結論から言うと、これはXiaomi(シャオミ)の公式マスコットキャラクター「Mi
tu(ミトゥ / ミィうさぎ)」が描かれた、「スマホグリップ(ポップソケッツ
風の落下防止&スタンドグッズ)」です。

 1. このキャラクターは何?
描かれているウサギは、Xiaomiの公式マスコットキャラクター「Mitu(ミトゥ)
」です。耳あて付きの帽子(ウシャンカ)をかぶっているのが特徴です。

* 左側のデザイン:サーフィンをしている Mitu
* 右側のデザイン:彗星のように宇宙を飛んでいる(またはスノーボード/ロケ
ットに乗っている)Mitu

 2. 用途・使い方は?
画面クリーナーではなく、「スマートフォン用の背面に貼り付けるグリップ(落
下防止&スタンド)」です。

* 使い方:
1. 裏面の保護シートを剥がし、スマホケース(または本体背面の平らな場所)
に貼り付けます。
2. 表面を持ち上げると、蛇腹(アコーディオン構造)のようにビヨ〜ンと引っ
張り出せます。
3. 指で挟んで持つことで「スマホの落下防止」になります。
4. 伸ばした状態で机の上に置くと、「動画視聴用などのスマホスタンド」とし
ても使えます。

Xiaomiのサービスセンターなどで修理・交換を頼んだ際に、感謝の気持ちや販促
ノベルティとして同梱されることがある非売品グッズです。

デザインも可愛らしく実用的なスマホアクセサリーですので、ぜひケースなどに
貼って使ってみてください!
# ==============================

画面を ごしごし しなくて・・・

よかったw

 

じじぃ~