30350n / inventree_part_import

CLI to import parts from suppliers like DigiKey, LCSC, Mouser, etc. to InvenTree
MIT License
28 stars 8 forks source link
digikey importer inventory-management inventree inventree-api mouser

pypi python mit

InvenTree Part Import

This project offers a command line interface to easily import parts from suppliers like DigiKey, LCSC, Mouser, etc. into your InvenTree instance.

Installation

pipx install inventree-part-import

(pip should also work, but pipx is the new recommended way to install standalone applications)

Arch Linux

Latest version from PyPI is available on AUR as python-inventree-part-import.
Git master version is available as python-inventree-part-import-git.
(Thanks to @randrej!)

Getting Started

Initial Configuration

When using the CLI tool for the first time, it will guide you through creating your own configuration.

When configuring suppliers, it's highly recommended to always enable the DigiKey API:

select the suppliers you want to setup: (SPACEBAR to toggle, ENTER to confirm)
> [x] DigiKey
  [ ] LCSC
  [ ] Mouser
  [ ] Reichelt
  [ ] TME

Default categories/parameters configuration

setup default categories/parameters configuration:
> Copy categories from InvenTree
  Copy default categories configuration
  Create empty configuration (manual setup)

If you have already been using InvenTree for some time (so you already have setup your category structure, parts, etc.), select the Copy categories from InvenTree option, to automatically setup a configuration which matches your InvenTree database.

If you are a new user, you can select the Copy default categories configuration to create a basic configuration which you can extend in the future.

You can also create your own configuration from scratch (or manually copy someones existing configuration ) by selecting the Create empty configuration (manual setup) option.

Basic Usage

To import parts, simply use the inventree-part-import command, followed by the supplier or manufacturer part numbers of the parts you want to import.

$ inventree-part-import <part_number_1> <part_number_2> ...

You can also batch import multiple parts from tabular data files (.csv, .xlsx, etc.) like so:

$ inventree-part-import parts.csv

Configuration

inventree.yaml

This file is used to configure authentication to your InvenTree host. It has two parameters:

config.yaml

This file is used to configure general settings of the CLI tool, as well as default locales. The following parameters have to be set:

suppliers.yaml

This file is used to configure supplier specific behavior. The following parameters are always available:

Additionally suppliers can have extra parameters for authentifcation to their respective APIs. These can be set via the CLI like so: inventree-part-import --configure <supplier>.

DigiKey

For getting a DigiKey API key, follow the instructions here. Be sure to use a Production App, not the Sandbox API!

Mouser

Request a Search API key from the Mouser API Hub.

TME

Request an API key at the Developers Page.

categories.yaml

This file should specify all your InvenTree categories, as well as metadata like category aliases, parameters, etc. for them.

It's defined as hierarchical tree structure where every 'node' represents a category. For example:

Electronics:
    Capacitors:
        Ceramic:
        Electrolytic:
Products:

Additionally you can define the following meta attributes (starting with _):

Here's an example for a config with special attributes:

Electronics:
    _description: Electronic Components # custom description
    _structural: true # no parts are allowed to be directly in this category
    Capacitors:
        _parameters: # parameters for both the 'Ceramic' and 'Electrolytic' categories
            - Capacitance
            - Tolerance
        Ceramic:
        Electrolytic:
            _aliases: # category names mapped to this category from various suppliers
                - Aluminum Electrolytic Capacitors
                - Aluminum Electrolytic Capacitors - SMD
                - Aluminum Electrolytic Capacitors - Leaded
                - Electrolyte Capacitors
Products:
    _ignore: true # this category contains our own products, so we won't import anything into it

parameters.yaml

This file should specify all your InvenTree parameters, as well as metadata for them.

The following meta attributes are available:

Here's an example for a single parameter:

Input Voltage:
    _aliases:
        - Voltage - Input
        - Voltage - Input (Max)
        - Maximum Input Voltage
    _description: Max Input Voltage # optional
    _unit: V # experimental, this can lead to import problems

Pre Creation Hooks (hooks.py)

Pre creation hooks are functions that get run after part information has been parsed from a supplier, but before the InvenTree part gets created. They basically let you modify a part, before it gets imported. This can be very useful in some cases.

For example, here's one that assigns transistors into different categories, based on their type:

def fix_transistor_categories(api_part):
    if "BJT" in api_part.category_path[-1] or "Bipolar (BJT)" in api_part.category_path:
        transistor_type = api_part.parameters.get("Transistor Type", "")
        if "NPN" in transistor_type:
            api_part.category_path.append("NPN")
        elif "PNP" in transistor_type:
            api_part.category_path.append("PNP")

You can define any number of them in a hooks.py file in your configuration directory. They'll get called in the order they're defined in.

For more examples, checkout my config repository.

Goal

The end goal of this project is to not exist anymore in it's current form. Ideally everything the CLI tool does would be directly available from the InvenTree web interface. This will most likely be done by implementing plugins which offer the required functionality for each supplier.

Credits

License