创建亚马逊会员链接Swift

aij0ehis  于 2023-03-17  发布在  Swift
关注(0)|答案(1)|浏览(124)

我希望能够建立一个亚马逊联盟链接,当一个“正常”亚马逊URL是给。
我试着用这个结构:

http://www.amazon.com/dp/{ASIN}/?tag={trackingId}

如所建议的here
下面是我尝试创建URL的方法:

func getAmazonAffiliateLink() -> URL? {
    if let regex = try? NSRegularExpression(pattern: "([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})"),
       let match = regex.firstMatch(in: self, range: NSRange(self.startIndex..., in: self)),
       let asinMatchRange = Range(match.range(at: 4), in: self) {
        let asin = self[asinMatchRange]
        let partnerId = "wishlists07-21"
        let affiliateLink = "https://www.amazon.com/dp/\(asin)/?tag=\(partnerId)"
        return URL(string: affiliateLink)
    } else {
        return nil
    }

}

但这会给我一个URL的例子:
https://www.amazon.com/dp/b085sp5sxh/?tag=wishlists07-21
你自己也看到了,这是行不通的...
我在这里错过了什么?我怎样才能建立附属链接?

watbbzwu

watbbzwu1#

看起来你测试的初始链接可能是坏的--换句话说,当我删除你的wishlist标签,只尝试基本的Amazon链接时,它仍然失败。
但是,如果有一个有效的亚马逊产品链接,它似乎是有效的。下面是我在Playground所做的:

extension String {
    func getAmazonAffiliateLink() -> URL? {
        if let regex = try? NSRegularExpression(pattern: "([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})"),
           let match = regex.firstMatch(in: self, range: NSRange(self.startIndex..., in: self)),
           let asinMatchRange = Range(match.range(at: 4), in: self) {
            let asin = self[asinMatchRange]
            let partnerId = "wishlists07-21"
            let affiliateLink = "https://www.amazon.com/dp/\(asin)/?tag=\(partnerId)"
            return URL(string: affiliateLink)
        } else {
            return nil
        }

    }
}

"https://www.amazon.com/dp/B0863ZGP2R/ref=fs_a_ipadt2_us0".getAmazonAffiliateLink()

它产生的结果是https://www.amazon.com/dp/B0863ZGP2R/?tag=wishlists07-21,这是一个有效的Amazon链接。

相关问题