カテゴリー別アーカイブ: プログラム

ネットショッピングの自動配信メール(Gmail)を期間指定で検索して、使った合計金額を表示するPythonスクリプトを作ってみた

みなさんはネットショッピングしてますか? 私はいろんなものをほとんどネットで購入してます。最近は便利になりましたよね〜(^^) でも、便利だからと言ってバンバン購入してたら、去年1年でどのくらい使ったんだろうと気になってしまいました。(^^; そこで今回は、ネットショッピングで自動配信される購入確認メール(Gmail)を期間を指定して検索し、合計金額を表示するPythonスクリプトを作ってみたので紹介します。 単に件名(日本語OK)やFrom、日時での検索だけでも使えるし、検索結果をテキストファイルとして出力もできるので便利じゃないかなと思います。(^^) 尚、確認した環境は Windows10 Python 3.6 になります。 GmailをPythonで検索するには Eメールの汎用的なプロトコルのPOP3やIMAPを使う方法とGoogleが公開してるAPIを使う方法の3通りあるようです。 詳しくは以下のホームページを参考に。 ゼロからはじめるPython(22) PythonでGmailのメールを確認しよう | マイナビニュース このページによるとPOP3はセキュリティ的に推奨されないようで、私はAPIは登録が面倒くさそうだったので最初はIMAPで作ってました。 こちらのサイトを参考にして、これだと全検索か未読検索しか出来ないので検索方法も調べて(*)そこそこ出来たんですが、件名等に日本語が入ると全然ダメでした。(><) こちらのサイトを参考にエンコードを変えたり色々試しましたがダメだったのでIMAPは断念してAPIを使うことにしました。 (*)例えば、 件名:iPhone X From: news_japan@insideapple.apple.com 期間:2018/03/01〜2018/03/20 で検索したい場合はgmail.searchの内容を以下のようにすれば検索できます。 gmail.search(None,'(SUBJECT "iPhone X" FROM "news_japan@insideapple.apple.com" SENTSINCE "01-Mar-2018" SENTBEFORE "20-Mar-2018")')日本語が入るとダメですが、IMAPを試したい方はやってみて下さい。 準備 Google API導入 先程のマイナビニュースかこちらのサイト(PythonでGmailを使う(Google API)【動画付】 | SEO白書)を参考にしてGmail APIを登録して、client_secret.jsonをダウンロードして下さい。(マイナビニュースサイトの説明ではclient_id.jsonでしたが、client_secret.jsonで大丈夫です) また、Gmail APIを使うには、google-api-python-clientモジュールも必要なのでコマンドプロンプトから pip install google-api-python-clientを実行してPythonにインストールして下さい。 Pythonスクリプト 以下のブログが大変参考になりました。 pythonでgmailのメールを受信、slackに通知 - Qiita このブログで紹介されてるPython3版gmailapi.pyをベースにしました。 以下のリンクからスクリプトをダウンロードして下さい。 gmailapi.pyダウンロード Dropbox - gmailapi gmailSearch.pyダウンロード Dropbox - gmailSearch また、本スクリプトのバッチファイルを作ってショートカットをデスクトップ等に置いておくと便利です。 以下からダウンロードして下さい。 gmailSearch.batダウンロード Dropbox - gmailSearch.bat 以上3つのファイルを上でダウンロードしたclient_secret.jsonと同じフォルダに保存して下さい。 使ってみる ここでは、Amazonから自動配信されたメールを期間指定で検索して、合計金額を表示する例で説明します。 ▼例えば、このようなメールです。 件名は毎回このような感じなので、件名の検索ワードは「Amazon.co.jp ご注文の確認」にします。 ▼また、金額表示の直前部分は以下のようになってます。 なので、検索する金額の直前のワードは「クレジットカード(JCB): ¥ 」、金額直後は今回は特にないので「Enter」にします。 本スクリプトは、この直前直後のワードに挟まれた部分を金額として抽出します。 尚、金額数字の前後に空白がある場合は、空白まで含めた検索ワードにして下さい。 また今回は、去年(2017年)の合計金額を知りたいので開始日を2017/01/01、終了日を2017/12/31とします。 ▼バッチファイルをダブルクリックして、件名、開始日、終了日を入力 ▼初回起動時のみ認証画面が立ち上がるので、使うGmailアドレスを指定して許可します。 ▼表示されたコードをコピーして ▼コマンドプロンプトにペースト これで、これ以降は認証は不要です。 ▼続けて金額の直前、直後のワードを入力すると ▼しばらく待つと検索結果と合計金額が表示されます。 結果をファイルに出力したければ、yを入力(不要ならEnter)すれば ▼Pythonスクリプトと同フォルダに、日時ファイル名のテキストファイルが保存されます。 ▼その後、今回使った検索ワードを保存するか聞いてくるので、また使いたいならyを入力(不要ならEnter) ▼ Pythonスクリプトと同フォルダに、gmailSearch.iniというファイル名で保存されます。 ▼次回からは保存した検索ワードが番号付きで表示されるので、また検索したい時は番号を入力して下さい。 ▼違うワードで検索したい場合は、そのままワードを入力して下さい。最後のところでワード保存を選択すれば、次回からは新しいワードも番号付きになってます。 ▼事前に検索したいワードを保存したい場合は、gmailSearch.iniに追記すればOKです。(utf-8で保存して下さい。) [ ]で括った部分はキーワードなので削除しないで下さい。また、ワードがない場合は空行にせずに詰めて(上記fromのように)記述して下さい。 ▼ちなみに出力したファイルは、各検索結果の先頭に何番目の検索結果か(No.)と日付、件名、金額が表示されてます。 ▼最下行には検索した期間、期間内合計金額、期間内最高購入額、最高購入時のNo.と日付が表示されます。 最後に いかがでしょうか? 私は今回の結果を見て、鼻血が出そうになりました。(^^; 255,186円!!! 思ったよりかなり多かったので、ファイルで詳細を調べて反省しようと思います。(^^; また、今回は合計金額を表示する方法を紹介しましたが、金額直前直後のワードを指定しなければ(Enter)、単に件名やFrom、日付でGmailを検索できます。 皆さんもお試し下さい。(^^) happyChappy(@happyChappy1115)でした。 Sponsored Link Posted from するぷろ for iOS.

PC起動時にデスクトップを整理するPythonスクリプトを作ったので紹介します。

PCのデスクトップって 皆さんは整理してますか? ファイルを保存する時に、用途や種類に応じて保存先を変えるのが面倒で、ついデスクトップに保存したりしてませんか? 「後で一段落した時に移動すればいいや!」って思ってみたものの、いつの間にかデスクトップがファイルやフォルダで溢れ返って、整理するのが余計大変なことになってませんか? 私がそうです。(^^; 自宅のPCはまだマシな方ですが、会社のPCは人には見せられません。(><) こうなるとファイルを探すのに時間がかかるし、効率が悪いんですよね。(T_T) そこで、PCを起動したら自動的にデスクトップのファイルやフォルダを1つのフォルダに移動するPythonスクリプトを作ってみました。 その際に、そのフォルダには起動した日付フォルダを作成し、その中に画像や動画、テキストファイル等のフォルダを作って分類するようにしました。 なので、PCを立ち上げるだけでデスクトップもスッキリ 出来るし、日付フォルダに分けられるのでファイルやフォルダのバージョン管理も出来て、便利だと思います。(^^♪ 但し、ごみ箱や移動できないショートカット等もあるようなので、デスクトップの全てを移動できるわけではないので悪しからず。m(_ _)m 準備 スクリプトのダウンロード 以下のリンクからスクリプトをダウンロードして下さい。 Dropbox - DesktopOrganizer また、PC起動時に本スクリプトを実行するためのバッチファイルを以下のリンクからダウンロードして、DesktopOrganizer.pyと同じ場所に保存して下さい。 Dropbox - DesktopOrganizer.bat PCのスタートアップに保存 バッチファイルのショートカットを作成し、スタートアップフォルダに保存して下さい。 Windows10のスタートアップフォルダはわかりにくい場所にあります。以下を参考にして下さい。 C:\Users\ [ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup ※[ユーザー名]はご自分のユーザー名です。 スクリプトのカスタマイズ スクリプトDesktopOrganizer.pyの最初の方にあるカスタマイズ:1及び2の部分がカスタマイズ可能です。 ▼カスタマイズ:1 dtPath:デスクトップのフルパス dtFolderName:1つにまとめてデスクトップに置くフォルダ名 xClude:デスクトップから移動させたくないフォルダ名やファイル名をカンマ区切りで指定。 delDays:この日数を過ぎた日付フォルダを削除 上記を参考に変更して下さい。 ▼カスタマイズ:2 デスクトップに散らばったファイルの種別に応じてフォルダ分け出来ます。 画像や動画等それぞれは以下のルールになってます。 〜FolderName:まとめたファイルを保存するフォルダ名 〜FolderList:まとめたい拡張子。カンマ区切り指定。 〜FolderFlg: 〜FolderNameのフォルダにまとめる場合='y'、まとめたくない場合='n' 使ってみる デフォルト設定は デスクトップに作成するまとめフォルダ名は「@Desktop」Cドライブショートカットは移動しないファイル種別のフォルダを作成し、まとめる になってます。 ▼こんなデスクトップの場合(Cドライブショートカット、フォルダショートカット、フォルダ、png、txt、py、xlsx、docx、zip、exeがあります。) ▼ PCを再起動すると、デスクトップにコマンドプロンプトが立ち上がるので、Enter(何でも良い)を入力 ▼デスクトップがスッキリしました。 ▼@Desktopを開くと、PCを起動した日付フォルダが作成されてて、その中にファイル種別フォルダを含めて全て保存されてます。 ▼ちなみに、作成された各フォルダにファイルが分類されてるのがわかります。 削除指定日数以上経過したフォルダがある場合 ▼指定日数以上経過したフォルダがある場合 ▼ PC起動時に削除するか聞いてくるので、「はい」か「いいえ」をクリックして ▼コマンドプロンプトでEnterを入力すると、古いフォルダが削除されてるのが確認できます。 最後に いかがでしょうか? これで散らかったデスクトップもスッキリです。(^^♪ ファイルを更新する時は、毎回デスクトップに保存するようにすれば、PC起動時に常に最新日付フォルダに保存されるのでバージョン管理もしやすくなると思います。 それに、しばらく使ってない古いファイルは不要だと思われるので、本スクリプトの自動削除機能で思い切って削除しちゃう勇気も必要だと思います。 ただ、削除するまでの日数をあまり長くしちゃうと、重複したファイルがたくさん出来てHDDを圧迫することにもなるので、削除指定日数は程々に。(^^; happyChappy(@happyChappy1115)でした。 Sponsored Link Posted from するぷろ for iOS.

PCと接続したRaspberry Pi3にたまにしか電源を入れない時の時刻取得方法

RaspberryPi3の第3弾です。 今までRaspberryPi3(以下ラズパイ)に関して、ブログで2回紹介しました。 Raspberry Pi3をノートPCで使えるようにしてみた 〜準備編 Raspberry Pi3をノートPCで使えるようにしてみた 〜ノートPC接続編 これでラズパイをPCに直接接続して、色々できるようになりました。 でも、ラズパイにはバックアップ電池がないので、使う時しか電源を入れないような使い方をしてるとラズパイの時計が狂ってしまいます。 実験等でラズパイを使ってデータ収集して、その時の時刻をファイル名にしてCSVファイルを作成するようなことがあると思いますが、時刻がズレてるとどのファイルが新しいのかわからなくなってしまいます。(><) これでは困ってしまいますよね?(^^; そこで今回は、たまにしかラズパイに電源を入れない時でも、(そこそこ?(^^;)正確な時刻を取得する方法を紹介します。 やり方 ラズパイのPythonスクリプトを実行する時に、PCの時刻を渡すようにします。Python側はPCから時刻Aを受け取ったら、ラズパイの時刻Bを取得します。CSVファイルを生成する時など、時刻を取得したい時に時刻Cを取得します。A+C-Bを演算すれば取得したい時刻になります。 ここでは、Enterを入力すると「HelloWorld! 時刻」を表示するPythonスクリプトを作ったので、それで説明します。 準備 上記1はTeratermのマクロを使用します。 Teraterm ▼以下のようなマクロを用意します。 赤枠部分はラズパイのHelloWorldスクリプトがあるフォルダに変更して下さい。フォルダに空白が含まれる場合は"(ダブルクォーテーション)で囲って下さい。また、青枠部分はスクリプト名で、後に空白1文字を付けて下さい。 1行目は、PCの時刻を取得して年月日時分秒形式で変数NOW_DATEに代入しています。 2行目はラズパイのディレクトリをHelloWorldスクリプトがあるフォルダに変更してます。 3行目は1秒待ってます。(不要かも) 4行目は取得した時刻をHelloWorldスクリプトに渡してPythonを実行してます。 尚、本マクロは以下からダウンロード出来ます。 Dropbox - HelloWorld実行.ttl Pythonスクリプト Pythonスクリプト側は時刻を受け取れるようにします。 以下からHelloWorldスクリプトをダウンロードしてラズパイに保存して下さい。 Dropbox - HelloWorld ▼以下がスクリプト全文になります。 赤枠部分がPCから時刻を受け取って、ラズパイの時刻を取得する部分です。(やり方リストの2番) 青枠部分が時刻を取得する関数になってます。(やり方リストの3番、4番) 緑枠部分がmain文で、end以外の入力があったら「HelloWorld! 時刻」を表示します。 使ってみる ▼ 前回説明したようにしてPCとラズパイをクロスLANケーブルで接続して、Teratermでラズパイにログインします。 ▼コントロール→マクロからHelloWorld実行.ttlを選択 ▼HelloWorldスクリプトが実行されるので、お好きなタイミングでEnterを入力すればその時の「HelloWorld! 時刻」が表示されるし、endを入力すれば終了(End!表示)します。 最後に いかがでしょうか? お使いのPythonスクリプトに赤枠青枠部分を追記しておけば、いつでも最新時刻が取得できるようになるので、時刻をファイル名にすることも可能になります。 皆さんもお試し下さい。 ラズベリーパイ3 (Raspberry Pi 3B made in JAPAN) 技適対応 日本製 + 5.1V/2.5A ラズベリー財団公式アダプタ 【本体+アダプタ セット品】posted with カエレバ Raspberry Pi Amazon楽天市場 happyChappy(@happyChappy1115)でした。 Sponsored Link Posted from するぷろ for iOS.

ブログ等で公開されてるPythonスクリプトをちょこっと試す時に便利!Workflowレシピ「RunPythonista3」を紹介します!

皆さんは Pythonって知ってますか? AI等にも使われたりしてるプログラミング言語ですね。 気になってたので勉強しようと思って、去年iPhoneでプログラムできるPythonista3を買ってみました。 その辺のことは以下の過去記事をご覧下さい。 Pythonを覚えたくてPythonista3を買ったので、勉強がてらWebページからURLとタイトルを取得して他のアプリに送るスクリプトを作ってみた! ネットで調べながら試行錯誤して、以下のブログで紹介したスクリプトも作ってます。 合わせてご覧下さい。 Youtubeからmp4動画をダウンロードするPythonスクリプト「getYoutube」を作ってみた! よく使う駅名をリスト化して、簡単にYahoo!乗換案内検索ができるpythonスクリプトを作ってみた! 選択した文章を9か国語同時翻訳するPythonスクリプト(Microsoft Translator API使用)をPythonista3で作ってみた! ネットで検索して、例えば以下のブログのようにいろんなプログラムが公開されてるので参考にしてます。 Pythonista 3でフォトライブラリの読み書き – hal's Playground 先日 このアプリがバージョンアップして、外部からURLスキームで直接スクリプトを渡して実行できるようになりました。 そこで今回は、先程のブログのように公開されてるPythonスクリプトを、ダウンロードすることなくちょこっと試してみるWorkflowレシピを作ってみたので紹介します。 ちょこっと試して気に入ったら、Pythonista3にペーストできるようにしてます。 レシピのインポート 以下のリンクからレシピをインポートして下さい。 RunPythonista3GET WORKFLOW 使ってみる 先程のブログ で説明します。 実行してみるスクリプトは、カメラロールを立ち上げて写真を選択したらPythonista3内で表示するというものです。 ▼試してみたいスクリプト全行を選択して、共有をタップ ▼RunWorkflowからRunPythonista3をタップ ▼Pythonista3が立ち上がって、外部からのスクリプトを実行していいか聞いてくるので、Runをタップ ▼スクリプトが実行されるので、表示したい写真を選択してDoneをタップ ▼Pythonista3で表示されました。 ▼動作確認後、今後もこのスクリプトをPythonista3で使いたい場合は、左上の>をタップして、New Fileをタップ ▼Empty Scriptをタップして、保存する場所を決めてスクリプト名を入力してCreateをタップ ▼空のスクリプトが立ち上がるので、そのままペーストすればOKです。 ▼保存されました。 これでいつでも実行できます。 最後に いかがでしょうか? 公開されてるスクリプトをちょこっと試せて便利だと思います。 ただし、スクリプト自体がExtensionからの起動専用のもの(モジュールappexを使用したもの)や、スクリプト内で使ってるモジュールがインストールされてない場合は、当然ですがエラーが出ます。 モジュールをインストールしてない場合はインストールして再度お試し下さい。 また、本レシピはスクリプトを選択して共有をタップした時にスクリプトをコピーするようにしてます。 なので、スクリプト内でclipboardにコピーするスクリプトの場合は、レシピでコピーされた元のスクリプトが上書きされてしまうので、最後にNew Fileでやったスクリプトのペーストが出来ません。 ご注意ください。 でも、これで大体のスクリプトはちょこっと試すことができるようになったと思うので、皆さんもお試し下さい。 紹介したアプリ Pythonista 3 3.2分類: 仕事効率化,教育価格: ¥1,200 (omz:software) Workflow 1.7.7分類: 仕事効率化,ユーティリティ価格: 無料 (Apple) happyChappy(@happyChappy1115)でした。 Sponsored Link Posted from するぷろ for iOS.

Raspberry Pi3をノートPCで使えるようにしてみた 〜ノートPC接続編

前回 Raspberry Pi3(以下ラズパイ)を初期設定するまでの手順を紹介しました。 Raspberry Pi3をノートPCで使えるようにしてみた 〜準備編 前回のままだと、毎回ディスプレイやキーボード、マウスが必要なので何かと不便です。 そこで今回はラズパイをノートPCだけで使えるようにする手順を紹介します。(^^) ラズパイとノートPCを接続 前回接続したmicroUSBの電源ケーブルを外して、HDMIケーブル、USBキーボード、USBマウスを外します。 次にラズパイとノートPCをクロスLANケーブルで繋いで、TTL-232R-RPIをノートPCのUSBポートに繋ぎます。 TTL-232R-RPIのラズパイ側は、ポートピンの6番に黒、8番に黄、10番に橙を接続します。 ▼以下を参考にして下さい。見えにくいかもしれませんが、2列あるピンの基板端側の端から3ピン目が6番ピン、4ピン目が8番ピン、5ピン目が10番ピンになります。 TeraTermで通信できるようにする インストール ラズパイとノートPCはTeraTermでやり取りします。以下からTeraTermをダウンロードしてPCにインストールして下さい。 「Tera Term」定番のターミナルエミュレーター - 窓の杜ライブラリ PCのUSBポートナンバーを調べる Windows10で説明します。 ▼Windowsアイコンを右クリックしてデバイスマネージャーをクリック ▼ポート(COMとLPT)をクリックするとUSBが接続されているポート番号が表示されます。このポート番号を覚えておきましょう。 TeraTermにシリアルポートを設定する ▼TeraTermを立ちあげて、デフォルトと違うポートに接続されてる場合は以下のようなエラーが表示されます。 ▼その場合、設定→シリアルポートをクリックして、先程のポート番号に変更して、ボーレートを115200にしてOKをクリックします。 ▼設定→設定の保存をクリックして、保存をクリックします。 ▼TeraTermの画面でEnterを入力すると、以下のように表示されるので、login名にpi、パスワードに前回設定したパスワードを入力してEnter ▼以下のようにプロンプトが返ってきたら、ラズパイとの通信成功です。 この画面はラズパイのTerminalが表示されてるのと同じです。 このままでは使いにくいので、RealVNCを使ってラズパイのGUIを表示できるようにするため、ラズパイのIPアドレスを調べます。 ▼TeraTermにifconfigと入力してEnter ▼eth0のinetの数字をメモっておきましょう。 TeraTermではAlt+Cで文字列をコピー出来るのでそれでもOKです。 これでTTL-232R-RPIケーブルは不要になるので、外しても構いません。 ▼TeraTermのファイル→新しい接続をクリックして、ホストに先程メモったIPアドレスを入力してTCPポートを22、SSHバージョンをSSH2にしてOKをクリック ▼ユーザ名にpi、パスフレーズに前回設定したパスワードを入力してOKをクリック ▼左上にIPアドレスが表示されればOKです。これでSSH接続されました。 RealVNCのインストール このままだとクロスLANケーブルだけでラズパイのTerminalが表示されるようになっただけです。 Terminalの画面だけだと不便なので、RealVNCを使ってGUIで作業できるようにします。そうすればラズパイの画面を表示してPythonをプログラムしたりできるので便利です。 以下からRealVNCをダウンロードしてPCにインストールして下さい。 Real VNC 日本語インストール版 - ダウンロード ▼ラズパイでRealVNCが使えるように、TeraTermでtightvncserverと入力してEnterすると、以下のように表示されます。これでRealVNCを使う準備が出来ました。 ▼RealVNCを立ち上げてラズパイのIPアドレスを入力して、その後ろに「:5901」を追加してOKをクリックしてパスワードを入力してOKをクリックすると ▼PCでラズパイのGUIが表示されます。 ラズパイのPythonプログラムをPCから実行してみる Hello World!を表示するPythonスクリプトを作る ▼ラズパイGUIでフォルダアイコンをクリックして、お好きなフォルダで右クリック→新規作成→フォルダでプログラムを格納するフォルダを作る ▼私はDocumentsフォルダの下にPythonScriptフォルダを作りました ▼そのフォルダの中で右クリック→新規作成→空のファイルをクリックして、ファイルを作ります ▼ファイルをダブルクリックして、以下のようにスクリプトを書いて保存 このままRUNを実行すれば、ラズパイのGUI上でスクリプトが実行されますが、ここではTeraTerm上で実行する方法を紹介します。 Pythonスクリプトを実行するファイルを作成 ▼以下のようなファイルを作成し、デスクトップなどに保存 上記cd以降はPythonスクリプトを保存したフォルダ、python3以降は保存したスクリプト名にして下さい。 ▼上記ファイルをTeraTerm画面にドロップすれば、スクリプトが実行されます。 最後に これで、ラズパイとPCをクロスLANケーブル1本だけで接続して制御できるようになりました。 ラズパイはI2CやSPI他のインターフェイスに対応してるので、いろんな機器を制御できるし、仕事のちょっとした検討にも使えそうです。(^^) happyChappy(@happyChappy1115)でした。 Sponsored Link Posted from するぷろ for iOS.