Python, Pythonista3 & Automator: AmazonのURLからASINのみが記載されたURLを生成する

# はじめに
本コードはAmazonで商品を検索したときに表示されるURLをクリップボードコピーして実行すると、ASINのみを含むURLに変換してクリップボードにコピーし直すというものです。

1. URLをクリップボードにコピー
1. 本コードを実行
1. 変換後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とモジュールのインストール方法等は別途、お調べいただければと思います。必要なモジュールは

```console:必要モジュール　(1)
pip install pyperclip
```

を使用しました。

# ソースコード
下記に3種類のソースコードを掲載しておきます。
##python3

```python: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
```python: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”用のソースコードです。導入方法は[こちら](https://qiita.com/ekemtt/items/b52e9902199dd5be86d2#サービス編)に。

```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))
```