はじめに
本コードはAmazonで商品を検索したときに表示されるURLをクリップボードコピーして実行すると、ASINのみを含むURLに変換してクリップボードにコピーし直すというものです。
- URLをクリップボードにコピー
- 本コードを実行
- 変換後URLを吐き出す
という趣旨です。Amazon以外のURLの検出は組み込んでいませんので、他のリンクで実行すると変なことになるかと思います。
更新
2021-05-27_1:AmazonのURLかどうか判定
2021-05-27_2:Python3, Pisonista3, Automatorの3種類のソースコードを用意
2021-05-27_2:AmazonURLのパターンを追加
ところで
今、class
とか頑張って覚えています。まだまだ読みにくいソースコードですが、ご寛恕ください。
きっかけ
find
やpos
などの自習の一環です。
前準備
Pythonとモジュールのインストール方法等は別途、お調べいただければと思います。必要なモジュールは
必要モジュール (1)
pip install pyperclip
を使用しました。
ソースコード
下記に3種類のソースコードを掲載しておきます。
##python3
amau2asinu.py (1)
#モジュール導入
import sys
import pyperclip
url = pyperclip.paste() #クリップボード取得
#AmazonURLの判定
if not 'https://www.amazon.co.jp/' in url:
sys.exit("Amazonのリンクではありません:" + url) #クリップボードの内容をそのままで終了
#AmazonURLの処理
if '/dp/' in url: #dbの場合
def asin_url(url):
pos = url.find('/dp/') #'dp/'の位置を取得
asin = url[pos+4:pos+14] #10文字分スライス
url = 'https://www.amazon.co.jp/dp/' + asin
return url
elif 'https://www.amazon.co.jp/gp/product/' in url:
def asin_url(url): #gpの場合
pos = url.find('/product/') #'product/'の'ct/'位置を取得
asin = url[pos+9:pos+19] #10文字分スライス
url = 'https://www.amazon.co.jp/gp/product/' + asin
return url
elif 'https://www.amazon.co.jp/gp/aw/d/' in url:
def asin_url(url): #gpの場合
pos = url.find('/aw/d/') #'product/'の'ct/'位置を取得
asin = url[pos+6:pos+16] #10文字分スライス
url = 'https://www.amazon.co.jp/gp/aw/d/' + asin
return url
else:
sys.exit("対応していないURLです:" + url) #クリップボードの内容をそのままで終了
#クリップボードへコピー
pyperclip.copy(asin_url(url))
##Pythonista3
amau2asinu.py (2)
#モジュール導入
import sys
import clipboard
url = clipboard.get() #クリップボード取得
#AmazonURLの処理
if '/dp/' in url: #dbの場合
def asin_url(url):
pos = url.find('/dp/') #'dp/'の位置を取得
asin = url[pos+4:pos+14] #10文字分スライス
url = 'https://www.amazon.co.jp/dp/' + asin
return url
elif 'https://www.amazon.co.jp/gp/product/' in url:
def asin_url(url): #gpの場合
pos = url.find('/product/') #'product/'の'ct/'位置を取得
asin = url[pos+9:pos+19] #10文字分スライス
url = 'https://www.amazon.co.jp/gp/product/' + asin
return url
elif 'https://www.amazon.co.jp/gp/aw/d/' in url:
def asin_url(url): #gpの場合
pos = url.find('/aw/d/') #'product/'の'ct/'位置を取得
asin = url[pos+6:pos+16] #10文字分スライス
url = 'https://www.amazon.co.jp/gp/aw/d/' + asin
return url
else:
sys.exit("対応していないURLです:" + url) #クリップボードの内容をそのままで
#クリップボードへコピー
clipboard.set(asin_url(url))
sys.exit("URL:" + asin_url(url))
#MacOSのクイックアクション用
Automatorの「クイックアクション」で「シェルスクリプトを実行」の“/usr/bin/python”用のソースコードです。導入方法はこちらに。
amau2asinu (3)
#モジュール導入
import sys
url = raw_input() #クリップボード取得
#AmazonURLの処理
if '/dp/' in url: #dbの場合
def asin_url(url):
pos = url.find('/dp/') #'dp/'の位置を取得
asin = url[pos+4:pos+14] #10文字分スライス
url = 'https://www.amazon.co.jp/dp/' + asin
return url
elif 'https://www.amazon.co.jp/gp/product/' in url:
def asin_url(url): #gpの場合
pos = url.find('/product/') #'product/'の'ct/'位置を取得
asin = url[pos+9:pos+19] #10文字分スライス
url = 'https://www.amazon.co.jp/gp/product/' + asin
return url
elif 'https://www.amazon.co.jp/gp/aw/d/' in url:
def asin_url(url): #gpの場合
pos = url.find('/aw/d/') #'product/'の'ct/'位置を取得
asin = url[pos+6:pos+16] #10文字分スライス
url = 'https://www.amazon.co.jp/gp/aw/d/' + asin
return url
else:
sys.exit("対応していないURLです:" + url) #クリップボードの内容をそのままで
#クリップボードへコピー
print(asin_url(url))