0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-05-22

はじめに

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

  1. URLをクリップボードにコピー
  2. 本コードを実行
  3. 変換後URLを吐き出す

という趣旨です。Amazon以外のURLの検出は組み込んでいませんので、他のリンクで実行すると変なことになるかと思います。

更新
2021-05-27_1:AmazonのURLかどうか判定
2021-05-27_2:Python3, Pisonista3, Automatorの3種類のソースコードを用意
2021-05-27_2:AmazonURLのパターンを追加

ところで

今、classとか頑張って覚えています。まだまだ読みにくいソースコードですが、ご寛恕ください。

きっかけ

findposなどの自習の一環です。

前準備

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?