NSG Parts Search
A class used for querying parts in Octopart using Nexar API v4.0.
The following class has all the needed methods required by NSG to create a query to Octopart.
This package is maintained and used by NSG, please refer to the licensing before using.
Table of content
Installation
Use the package manager pip to install nsg-parts-search.
pip install nsg-parts-search
Prerequisites
Use the application client ID and secret. Refer to the NSG Documentation.
Set environment variables CLIENT_ID and CLIENT_SECRET.
Usage
General example to get a response from a list of parts search:
from nsgsearch import *
clientId = os.environ['CLIENT_ID']
clientSecret = os.environ['CLIENT_SECRET']
search = NSG_OctopartSearch()
search.setCredentials(clientId, clientSecret)
search.startClient()
parts_list = []
results = search.partsSearch(parts_list)
print(results)
Filtering Functions
Say that from a list of parts you want a table of the Manufacturer, Suppliers, Quantity and Price per unit in USD:
for part in parts_list:
if results[part]['found']:
part_data = results[part]['data']
priceTable = search.partPricesTable(part_data)
Maybe now you want to get the lowest price from the table for that part number:
def get_lowest_price(table):
price = table[0]['price']
supplier = str()
qty = int()
for row in table:
if row['price'] < price:
price = row['price']
supplier = row['supplier']
qty = row['reqPurchase']
return ([supplier, qty, price])
Now let's say you want to get the lead times for all suppliers and filter your prices to be no more than 30 days old:
Response
The response from the search is a dictionary containing all the requested part numbers as keys.
Each key contains another dictionary with the keys found and data and have the following format:
{
"PN#": {
"found" : True / False,
"data" : {...}
},
{...}
}
The default query response has the following format:
part {
mpn
manufacturer {
name
}
shortDescription
specs {
attribute {
name
group
}
displayValue
}
octopartUrl
similarParts {
mpn
shortDescription
manufacturer {
name
}
octopartUrl
category {
name
}
}
companionProducts {
part {
mpn
shortDescription
manufacturer {
name
}
octopartUrl
category {
name
}
}
}
category {
name
}
bestDatasheet {
url
}
counts
medianPrice1000 {
price
}
sellers {
company {
name
}
country
offers {
sku
inventoryLevel
moq
prices {
quantity
price
currency
}
clickUrl
updated
factoryLeadDays
}
isRfq
}
}
You can change the query response by using the method changeQuery():
newResponse =
'''
query Search($mpn: String!) {
supSearchMpn(q: $mpn, limit: 1) {
results {
part {
mpn
shortDescription
manufacturer {
name
}
}
}
}
}
'''
search.changeQuery(newResponse)
API Part Reference
https://octopart.com/api/v4/reference#part
License
GNU LGPL