[Python]AmazonアソシエイトをHUGOブログに貼るのを少し簡単に

HUGOの記事にamazonアソシエイトリンクを貼る際に、取得したリンクを加工するのが面倒だったので、pythonで書きました tkinterでGUIにしています なんてことはない、中身は文字列を切って貼ってをしているだけです コマンドで起動するのは面倒なので、バッチファイルで起動するようにしています 作ろうとしているリンク こんな見た目 古風だけど自分はこれが好き 実際のリンクはこれ↓(リンク切れていたらスミマセン) 使い方 「Amazonアソシエイトツールバー」の「テキストと画像」タブを開いて、生成されたリンクをコピー(下画像の「これをコピー」部分) pythonプログラムを起動するとこれが現れる↓ コピーしたリンクをそのまま貼り付ける エンターキーを押すと、クリップボードにコピーされる 記事内に貼り付ける コピーされた文字列例↓(表示の都合上、先頭の{は全角になっていますが、実際は半角{です) {{< Amazon src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=アソシエイトID&language=ja_JP&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=B088PGN64G&linkId=2ef7d1928670c9537cf1976fdc5a5b37" >}} クリアボタンを押すと消える 2回目以降は「クリップボードにコピーしました!」は消えないので注意 プログラム クリップボードを扱うライブラリー(pyclip)はインストールが必要です 表示の都合上、一部の{は全角になっていますが、実際は半角{です。使用の際は半角{に直してお使いください # -*- coding: utf-8 -*- """ アマゾンの商品リンクをhugoに貼る形に変換する エンターで変換 クリップボードにコピーされる """ import tkinter as tk import pyclip root = tk.Tk() root.geometry('500x90') root.title('Amazon affiリンク変換(hugo用)') def func(event): global label1 text1 = entry1.get() # amazon アソシエイトツールバー テキストと画像のリンク target = 'src="' # src="より後ろを抽出 idx = text1.find(target) r = text1[idx + len(target):] r = r[:-10] # 後ろの ></iframe> を削除 r = 'src="' + str(r) # 整形 r = '{{< Amazon ' + r + ' >}}' # 整形 pyclip....

2022/06/23 Â· Last updated on 2023/09/23 Â· 1 min Â· 135 words

【Python】pandas DataReaderでFREDから現在の為替を取得

Pandas DataReaderを用いてFREDから為替データを取得します。 例として豪ドル円を取得します。 FREDからは米ドル円しか取得できない FREDからは円との通貨ペアは米ドル円しか取得できません。 FREDはこちら↓ では豪ドル円が欲しい場合はどうしましょう? 答えは簡単で、米ドル円と豪ドル米ドルの2つを取得して計算するだけです。 米ドルとの通貨ペアはFREDで取得できるので、同様にどの通貨情報も得られます。 米ドル円 : DEXJPUS (円/米ドル) 豪ドル米ドル : DEXUSAL (米ドル/豪ドル) 豪ドル円 : DEXJPUS (円/米ドル) × DEXUSAL (米ドル/豪ドル) = (円/豪ドル) ・・・1豪ドル○○円 プログラム 為替取得は本日までとしています。 しかしFREDの最新データが本日分まで出ていないとエラーになります。 ですので、本日から15日前までの値を取得して、その中で最新値を見ています。 """ FREDから現在価格を取得 """ import pandas_datareader.data as pdr import datetime as dt # 計算したいペア 任意の名前 showpare = 'JPY_AUD' dateend = dt.date.today() # 取得範囲のエンドは本日まで datestart = dateend - dt.timedelta(days = 15) tickerlist = ['DEXJPUS','DEXUSAL'] # 取得するtickerのlist # DEXJPUS : JPY/USD # DEXUSAL : USD/AUD # DEXUSNZ : USD/NZD # DEXCAUS : CAD/USD # Fredからレートを取得 FREDdf = pdr....

2021/10/24 Â· Last updated on 2021/10/24 Â· 1 min Â· 137 words

【Python】Googleフォームで作った家計簿用の入力UIをPythonistaでつくる

Googleフォームで家計簿を作り、運用して丁度1年経ちました。 制作には、こちらの記事を参考にさせていただきました。ありがとうございます(^^) 家計簿アプリは色々ありますが、こちらの方と全く同じ理由で制作することにしました。 ZaimやMoney forwardの有料会員になってみたり、Moneytree、LINE家計簿・・・ それぞれ長所短所があり、かゆいところに手が届くようで届かなかったりとしっくりこず。 サービスが終わる心配もあります。 家計簿の分析も考えると、慣れたEXCELに回帰するんですが、入力がめんどい! レシートがたまりに溜まって、入力しなくなり、家計簿の意味がなくなります笑 その点、Googleフォームの家計簿はスマホでもPCでも入力できますし、リアルタイムだし、EXCELのように分析もできます。 ただ人間とは慣れてしまうのですね・・・ 入力は楽でも、入力する項目が多くなると面倒になってきます・・・ Pythonisitaで入力UIを用意する 入力を減らすには、初期値を入れておけば楽ちんです。 参考にさせて頂いた方は、iOSのショートカットを使ってURLパラメータを処理して初期値を入力されています。 これはとても便利で、真似してショートカットでやっていました。 が、、、入れておきたい初期値が多くなると、ショートカットの分岐が縦にやたら長くなってきます。 一度頑張って作ってしまえばそれっきりなんですが、それが大変で別の方法を考えました。 初期値が多くなることとは、例えば固定費ですね。毎月決まった項目、金額のものが複数ある感じです。 そこでPythonistaがUIを作れることを利用して、入力UIを作ってみました。 見た目 こんな感じの見た目 基本的には、金額を入力するだけです。 日付も当日なら、最初から入力済みです。その他のカテゴリ(どこで買った、食費うんぬん、支出元etc)は下の方の「default」に記載されたものが初期値として入力されるようにしてあります。 よく、コンビニで朝ごはんを買うのでデフォルトでコンビニ飯に特化した初期値としてます。 固定費に関しては、毎月給料日に一つづつ手入力していましたが、ワンタップで入力されるようにボタンにしました。給料やトラリピ、PayPay銀行などと書いてあるボタンです。それらを押せば、金額、カテゴリなどがdefaultのように自動で入力されます。これをiOSショートカットでやるとどんどん縦に長くなっちゃう・・・ Googleフォームにはこんな感じで初期値が入力されます。 プログラム 中身はiOSショートカットでやるのと全く同じで、それをPythonで書いているだけです(^^) 食費、金額などのカテゴリを変数にし(cateval,costvalなど)、ボタンが押された時に関数(def)で予め決めた値が入るようにして、できたURLパラメータをURLに整形してsafariでGoogleフォームを開いています。 固定費の項目を増やしたい時は、ボタンを増やして、def~の関数を増やしていくだけです(ゴリ押し) defaultについては、金額を入力するだけでURLを開くようにしています。 import ui from objc_util import UIApplication, nsurl # safariで開く import urllib.parse # URLエンコード、デコード import datetime today = datetime.datetime.now().strftime('%Y-%m-%d') # 本日を取得 # default value dateval = today # 初期値としてtodayを入れる(def datemovedが動作しないとdatevalに値が入らないためエラーになることの対策) costval = '' whereval = 'コンビニ' whatval = '' cateval = '食費' inoutval = '支出' payval = 'LINE Pay VISA' seisanval = 'しない' # 家計簿formへのリンク url1 = 'https://docs....

2021/05/16 Â· Last updated on 2021/10/21 Â· 2 min Â· 389 words

【Python】Yahoo乗換をスクレイピングして駅到着時間を抽出する

電車の乗り換え案内はYahoo乗換を使っています。 案内とか良いから、とにかく何時に最寄駅に着くか知りたい(テキストで) ということで、Pythonを使ってやってみました。 Yahoo乗換案内をスクレイピングして到着時間を抽出します。 プログラム ''' 現在時刻から直近の乗換案内を検索して、到着時間を表示する Yahoo乗換から到着時間をスクレイピングで抽出している ''' import urllib.request from bs4 import BeautifulSoup import urllib.parse # URLエンコード、デコード startsta = '東京' # 出発駅 endsta = '横浜' # 到着駅 startstaen = urllib.parse.quote(startsta) # encode endstaen = urllib.parse.quote(endsta) # encode url0 = 'https://transit.yahoo.co.jp/search/result?from=' url1 = '&flatlon=&to=' url2 = '&viacode=&viacode=&viacode=&shin=&ex=&hb=&al=&lb=&sr=&type=1&ws=3&s=&ei=&fl=1&tl=3&expkind=1&ticket=ic&mtf=1&userpass=0&detour_id=&fromgid=&togid=&kw=' url = url0 + startstaen + url1 + endstaen + url2 + endstaen # print(url) req = urllib.request.urlopen(url) html = req.read().decode('utf-8') soup = BeautifulSoup(html, 'html....

2020/09/26 Â· Last updated on 2020/09/26 Â· 1 min Â· 187 words

【Python】【トラリピ】トラップ範囲をmatplotlibで可視化する(クロス円単一通貨ペアver)

トラップ範囲を決める際、チャートを見ながら決めます。〇〇年間のチャートで中央値はいくらでmax,minはいくらなどを参考にします。 トラリピアプリでも確認できますが、トラリピ注文を入れてからです。入れる前はチャートと合わせて確認できません。 Excelを使ってチャートと一緒に書いた事はありますが、毎回最新の為替データを持ってきて描画しなければならないのがイマイチ Googleスプレッドシートも使いました。これは為替データを拾う関数があるのでExcelよりは便利でしたが、データ数の関係でシートが重い。値をいろいろ変えて確認するにはこの重さがイマイチ というわけで、Pythonとmatplotlibで書いてみました。 プログラムの大半は、以前投稿した記事と同じですが、グラフ描画機能を追加したことと、1通貨ペア(クロス円)としたところが違います。(複数通貨ペアのままだとグラフが多すぎてカオスだったので1通貨ペアにしました) プログラム # -*- coding: utf-8 -*- # onepare-corss.py """ 決め事 ロスカットレートはトラリピ範囲外にすること 理由は、必要資金が範囲リミット時よりもロスカットレート時のほうが多く必要という見方をしているため そんなことに囚われず、常に多い方をしっかり見れていれば上記ルールは不要だが いつも注視してるなんて無理 df0 : FREDから取得したデータ用 df1 : トラップ df : 表示用 """ import numpy as np import pandas as pd import pandas_datareader.data as pdr import datetime as dt import matplotlib.pyplot as plt from matplotlib import dates as mdates from dateutil.relativedelta import relativedelta # timedeltaはyearsの指定ができないのでdateutilを使う from matplotlib.text import OffsetFrom # 計算したいペア 任意の名前 showpare = 'JPYAUD' # レート取得範囲設定 deltayear = 10 # n年前までのデータを取得する dateend = dt....

2020/09/13 Â· Last updated on 2021/10/21 Â· 4 min Â· 659 words