無事に当初の目的であった3I/ATLASの写真をNASA OPEN APIから取得することに成功した筆者であるが、本日(12月3日)もダブルクリックしてみると"巨大なブラックホールに飛び込む"視点をスーパーコンピューターで可視化した画像であるそうだ。太陽の400万倍というとてつもない質量を持つブラックホールに向かってカメラを突っ込むとこのような視覚になるとのこと、恐ろしくも興味深い。
インストールするツールが多くなるとローカルドライブは少しずつ削られていく。圧迫され、ドライブの容量を見るのが嫌になってくるころには買い替え検討も頭をよぎる。やはり、様々なクラウドの利便性を活かしたい。OSの垣根を越え、PC/モバイルの垣根も越えた環境に依存しないクラウド環境にストックした宇宙写真を集めておきたくなる。
○OneDriveへの保存は1行追加の簡単カスタマイズ
Windowsの場合は、OS標準のOneDriveに保存するようにPowerShellのコードを変更するだけだ。筆者のOneDriveのPATHは、C:\Users\user\OneDrive\であるが汎用性のある"$env:OneDrive\$today.jpg"にして、もうひとつInvoke-WebRequestを追加する。
Invoke-WebRequest -Uri $imageUrl -OutFile "$today.jpg"
Invoke-WebRequest -Uri $imageUrl -OutFile ""$env:OneDrive\$today.jpg""
こうすることで、スクリプト実行フォルダ内とOneDrive内に西暦日時.JPGが保存される。OneDriveの方は、自動的にオンラインに保存される仕組みだ。1行のコードの追加で、アプリやスマホでシームレスに宇宙画像を眺める機会も増やせる。
○PythonとGoogle Drive APIでGoogleドライブ保存
マルチクラウドな世界である。用途によってクラウドも使い分けたいところだ。翻訳にGoogle Cloud APIを稼働させてみた筆者だが、Google Drive APIはリクエスト数が数回や数十回程度であれば気にすることなく使える。
gdrive2.py
from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive
from datetime import datetime
def main():
gauth = GoogleAuth()
gauth.LocalWebserverAuth() # OAuth認証(ブラウザが開く)
drive = GoogleDrive(gauth)
# 今日の日付ファイル名 (251203.jpg)
today_filename = f"{datetime.now():%y%m%d}.jpg"
file = drive.CreateFile({'title': today_filename})
file.SetContentFile(today_filename) # ローカルにある同名ファイルを指定
file.Upload()
print(f"アップロード完了。ファイルID: {file['id']}")
if __name__ == '__main__':
main()
settings.yaml
client_config_backend: file
client_config_file: client_secrets.json
save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json
oauth_scope:
- https://www.googleapis.com/auth/drive.file
Google CloudでGoogle Drive APIを有効にしOAuth同意画面を構築、テストユーザーに自身のGmailを登録する。その際、表示されるjsonファイルをダウンロードしclient_secrets.jsonとして、上記gdrive2.pyとsettings.yamlと同一フォルダに保存しておく。Pythonを実行すると、Googleのユーザー認証を通してcredentials.jsonが生成されて、無事にGoogleドライブにアップロードされた。
○一回でOneDriveとGoogleDriveに保存できるように統合する
同じフォルダ内にPowerShellスクリプト(PS1)とPythonファイル(py)を入れておけば、一回のクリックで今日の一枚を表示、OneDriveとGoogleドライブへのダブル送信も可能なはずである。PowerShellのPS1ファイルにPythonファイル呼び出しの
python .\gdrive2.py
のみを追加する。
$url = "https://api.nasa.gov/planetary/apod?api_key=●●●●●●●●●●●●●●●●●●"
$response = Invoke-RestMethod -Uri $url
$imageUrl = $response.url
$explanation = $response.explanation
#NASAの今日の一枚(APOD)URL作成
$today = Get-Date -Format "yyMMdd"
$pageUrl = "https://apod.nasa.gov/apod/ap$today.html"
# Google翻訳APIキー
$googleApiKey = "●●●●●●●●●●●●●●●●●●"
$googleUri = "https://translation.googleapis.com/language/translate/v2?key=$googleApiKey"
# 翻訳リクエストのボディ(Basicモデル)
$body = @{
q = $explanation
source = "en"
target = "ja"
format = "text"
model = "base"
} | ConvertTo-Json
# 翻訳API呼び出し
$translationResponse = Invoke-RestMethod -Uri $googleUri -Method Post -Body $body -ContentType "application/json"
$translatedText = $translationResponse.data.translations[0].translatedText
if ($imageUrl) {
Write-Host "画像をダウンロード中..."
Invoke-WebRequest -Uri $imageUrl -OutFile "$today.jpg"
Invoke-WebRequest -Uri $imageUrl -OutFile "$env:OneDrive\$today.jpg"
python .\gdrive2.py #同一フォルダ内のpythonスクリプト呼び出し
Write-Host "画像を保存しました。"
}
# 結果表示
Write-Host "NASAの今日の一枚(APOD)ページはこちら: $pageUrl"
Write-Host "今日のNASA画像のURLはこちら: $imageUrl"
Write-Host "今日のNASA画像の説明(翻訳):"
Write-Host $translatedText
Read-Host "終了するには、Enterキーを押してね"
.
![美酵 ビファ クレンズドリング 栄養機能⾷品 30包約30日分 [ 発酵 と マグネシウム の力で 美容と健康をサポートし 満腹感 のある 置き換えダイエット ]](https://m.media-amazon.com/images/I/51FnYyHl-kL._SL500_.jpg)
![明治薬品 シボラナイト2 150粒(30日分) [シリアルナンバー付] [ ダイエットサプリ ブラックジンジャー ポリメトキシフラボン 腹部の脂肪を減らす ]](https://m.media-amazon.com/images/I/41U8wqxGJVL._SL500_.jpg)



![hiritu(ヒリツ) バランスリペアシャンプー&ヘアトリートメント オーロラ [シリーズ最高峰のツヤ] きらめき髪 ツヤ髪 浮き毛パヤ毛抑制 ダメージ毛を集中補修 PPT系洗浄成分 アミノ酸系洗浄成分 毛髪補修成分 カシス&パチュリの香り 香水シャンプー](https://m.media-amazon.com/images/I/41FoHN-YVXL._SL500_.jpg)





