Определите, является ли 10-значная строка действительной. Amazon ASIN

У меня есть 10-значная строка, переданная мне, и я хочу проверить, что она является действительной ASIN, прежде чем делать больше обработки и/или перенаправления.

Я знаю, что не ISBN ASIN всегда будет нечисловым и длиной 10 символов

Я просто хочу узнать, является ли передаваемый элемент действительным ASIN или это просто строка поиска после того, как я уже устранил, что это может быть ISBN.

Например, "SOUNDBOARD" - это термин поиска, а "B000J5XS3C" - ASIN, а "1412775884" - ISBN.

Есть ли легкий способ проверить ASIN?

Ответ 1

Знаете ли вы, что Amazon предлагает API, в том числе веб-службу Amazon Associates, которая позволяет интерактивно взаимодействовать с Amazon. Я подозреваю, что решит вашу проблему (в некотором роде). Ознакомьтесь с домашней страницей Amazon Web Services для получения дополнительной информации.

Ответ 2

Обновление, 2017

@Leonid прокомментировал, что hes нашел ASIN BT00LLINKI.

Хотя ASIN не выглядят строго инкрементальными, самые старые не ISBN ASIN имеют тенденцию иметь больше нулей, чем более новые ASIN. Возможно, это было неизбежно, когда вы начали видеть ASIN без нулевого заполнения (и тогда, что интересно...). Итак, теперь искали "B", за которым следуют девять буквенно-цифровых символов (или ISBN) - к сожалению, "потеря" этого нуля значительно облегчает получение ложных срабатываний.

/^B[\dA-Z]{9}|\d{9}(X|\d)$/

Оригинальный ответ

В Javascript я использую следующее regexp, чтобы определить, является ли строка вероятным ASIN:

/^\s*(B\d{3}\w{6}|\d{9}(?:X|\d))\s*$/

или, не беспокоясь о дополнительных пробелах или захвате:

/^B\d{2}\w{7}|\d{9}(X|\d)$/

Как уже упоминалось, Amazon на самом деле не раскрыла спецификацию. На практике я видел только два возможных формата для ASIN:

  • 10-значные ISBN, которые состоят из 9 цифр + окончательный символ, который может быть цифрой или "X"
  • Буква B, за которой следуют две или три цифры, за которыми следуют шесть или семь буквенно-цифровых символов

Если кто-то столкнулся с ASIN, который не соответствует этому шаблону, включите его. Возможно, на самом деле можно будет получить более ограничительный, чем это, но я не уверен. ASIN не ISBN могут использовать только подмножество буквенных символов, но даже если это так, они используют большинство из них. Некоторые, кажется, появляются чаще, чем другие, по крайней мере (K, Z, Q, W...)

Ответ 4

возможно, вы можете проверить сайт amazon, существует ли ASIN.

http://www.amazon.com/dp/YOUR10DIGITASIN

этот URL-адрес возвращает код http-statuscode = 200, когда продукт существует, и 404, если это не было допустимым ASIN.

Ответ 5

"этот URL-адрес возвращает код http-statuscode = 200, когда продукт существует, и 404, если это не было действительным ASIN."

это НЕ будет работать, так как в соответствии с документами ASINs являются специфичными для региона (проверьте это самостоятельно, если не верите). вы можете только проверить асин из - пусть скажем - amazon.co.uk на amazon.co.uk, так что вам также нужно знать, откуда приходит ASIN.

однако, в вашем случае вам лучше иметь три поля ввода - по одному для каждого поиска. или (намного лучше) в одном поле три переключателя. в качестве альтернативы, вы можете проверить строку angainst словаря... но угадывание - это ВСЕ ОЧЕНЬ плохая инженерия.

Кроме того, нет облегченного способа проверки asin для достоверности