Bulk import from info provider
Is your feature request related to a problem? Please describe. I want to transfer 170+ parts from an excel sheet to parts-db. Importing it with the normal import functionality, regardless if the spn# is present or not, does not automatically consider the import to be "from info provider", thus requiring manual copy, paste, and stock setting for every single part.
Describe the solution you'd like An extra import option, be it a separate menu item or a checkmark, to import CSV files containing spn#, stock, and category, and automatically fetching data for each of them from the selected info provider.
Describe alternatives you've considered /
Additional context In my particular situation, i need to move from a google sheet, which has all my parts in it, to parts-db. And, in the future, be able to seamlessly import order history from LCSC to part-db, as I'm currently manually copying the mpn# into the google sheet, then using IMPORTXML magic to fetch the data, which is very inefficient.
Proposed solution is a for loop calling the import from info provider function with the mpn# as param, then setting category and stock from csv, and fetching the data. Repeating this n times.
First step i envision as this: User selects N parts with select and maps which fields they want to map where (eg. mpn -> LCSC and to MOUSER, LCSC spn to LCSC, Mouser spn to Mouser, maybe even skip normal mpn...). Then the API in the background fetches everything and adds to cache. The import is then very fast just clicking buttons.
Does this seem faster than waiting 2-3 seconds for every part on top of clicking?
#982
Here, we also needed that, I think it is pretty neat will test it next week in real circumstances.
This feature looks amazing and im really looking forward to making it work. However every time i try and use it if i set only one field mapping i get an error that no parts were returned from the search (Ive tried name, MPN and SPN) and if i set more then one i get an error 500 and it tells me to refresh the page. I am using digikey as a search provider and searching for one part works well (i do always get 3 results, tape and real, cut tape and digireal). Any ideas as to how to debug this issue?
#1060 Is it connected to this issue?
Please check the recommendation below, if it doesn't work I can check if I broke it.
You probably need to refresh the digikey oauth token, as these get invalidated after a while. You can click "Connect oauth" in the provider list...
No its not that, i have recently made the oauth and its working fine while adding single components Thanks
I have the same issue, with all info providers (mouser, lcsc, octopart). Finding parts one by one works great, but bulk seems broken.
I added some print debug logging to my installation.
[2025-10-14T06:40:33.349132+00:00] app.INFO: step1 {"formData":{"field_mappings":[{"field":"name","providers":[{"App\\Services\\InfoProviderSystem\\Providers\\MouserProvider":[]}],"priority":1}],"prefetch_details":false},"fieldMappingDtos":[{"App\\Services\\InfoProviderSystem\\DTOs\\BulkSearchFieldMappingDTO":{"field":"name","providers":[[]],"priority":1}}],"job":{"App\\Entity\\InfoProviderSystem\\BulkInfoProviderImportJob":{"@id":15}}} {"token":{"authenticated":true,"roles":["ROLE_USER"],"user_identifier":"admin"},"url":"/en/tools/bulk_info_provider_import/step1?ids=38","ip":"X.X.X.X","http_method":"POST","server":"X.X.X.X","referrer":"http://X.X.X.X/en/tools/bulk_info_provider_import/step1?ids=38"}
[2025-10-14T06:40:33.371959+00:00] app.ERROR: Invalid provider key type {"providerKey":{"App\\Services\\InfoProviderSystem\\Providers\\MouserProvider":[]},"type":"object"} {"token":{"authenticated":true,"roles":["ROLE_USER"],"user_identifier":"admin"},"url":"/en/tools/bulk_info_provider_import/step1?ids=38","ip":"X.X.X.X","http_method":"POST","server":"X.X.X.X","referrer":"http://X.X.X.X/en/tools/bulk_info_provider_import/step1?ids=38"}
[2025-10-14T06:40:33.373823+00:00] app.INFO: processRegularProviders {"parts":[{"App\\Entity\\Parts\\Part":{"@id":38}}],"fieldMappings":[{"App\\Services\\InfoProviderSystem\\DTOs\\BulkSearchFieldMappingDTO":{"field":"name","providers":[[]],"priority":1}}],"regularProviders":[],"excludeResults":[]} {"token":{"authenticated":true,"roles":["ROLE_USER"],"user_identifier":"admin"},"url":"/en/tools/bulk_info_provider_import/step1?ids=38","ip":"X.X.X.X","http_method":"POST","server":"X.X.X.X","referrer":"http://X.X.X.X/en/tools/bulk_info_provider_import/step1?ids=38"}
Looks to me like something is wrong with the field mappings (esp the "providers" part), but I don't know enough about the data structures to say.
Hello awesome team! I have been trying to make it work but it's not lol. I got:
[2025-11-16T11:36:59.057031+00:00] request.CRITICAL: Uncaught PHP Exception Error: "Object of class App\Services\InfoProviderSystem\Providers\LCSCProvider could not be converted to string" at BulkInfoProviderService.php line 192 {"exception":"[object] (Error(code: 0): Object of class App\\Services\\InfoProviderSystem\\Providers\\LCSCProvider could not be converted to string at /var/www/html/src/Services/InfoProviderSystem/BulkInfoProviderService.php:192) [stacktrace] #0 /var/www/html/src/Services/InfoProviderSystem/BulkInfoProviderService.php(192): array_intersect() #1 /var/www/html/src/Services/InfoProviderSystem/BulkInfoProviderService.php(78): App\\Services\\InfoProviderSystem\\BulkInfoProviderService->processRegularProviders() #2 /var/www/html/src/Controller/BulkInfoProviderImportController.php(216): App\\Services\\InfoProviderSystem\\BulkInfoProviderService->performBulkSearch() #3 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(183): App\\Controller\\BulkInfoProviderImportController->step1() #4 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw() #5 /var/www/html/vendor/symfony/http-kernel/Kernel.php(182): Symfony\\Component\\HttpKernel\\HttpKernel->handle() #6 /var/www/html/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\Kernel->handle() #7 /var/www/html/vendor/autoload_runtime.php(29): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKerne lRunner->run() #8 /var/www/html/public/index.php(5): require_once('...') #9 {main} "}
There is nothing my vibe coding skills can do lol. I am running the last docker image, readed all the issues, pull requests and wiki. tried all the possible combinations, then spent a couple days checking if it was my fault, it is not. It's broken.
I add my stock with the import option, getting all the info from LCSC (i use their cart csv). That means that i have thousands of parts that lack info/attachements, when i update them one by one, everything goes flawlessly. But, impossible for me to do that with all the parts so, here i am waiting like a kid to see if we can get it sorted lol. I would love too if someone points me in the good direction, i may be doing something wrong? (tried every possibility 5 times buit, who knows)
Hello awesome team! I have been trying to make it work but it's not lol. I got:
[2025-11-16T11:36:59.057031+00:00] request.CRITICAL: Uncaught PHP Exception Error: "Object of class App\Services\InfoProviderSystem\Providers\LCSCProvider could not be converted to string" at BulkInfoProviderService.php line 192 {"exception":"[object] (Error(code: 0): Object of class App\\Services\\InfoProviderSystem\\Providers\\LCSCProvider could not be converted to string at /var/www/html/src/Services/InfoProviderSystem/BulkInfoProviderService.php:192) [stacktrace] #0 /var/www/html/src/Services/InfoProviderSystem/BulkInfoProviderService.php(192): array_intersect() #1 /var/www/html/src/Services/InfoProviderSystem/BulkInfoProviderService.php(78): App\\Services\\InfoProviderSystem\\BulkInfoProviderService->processRegularProviders() #2 /var/www/html/src/Controller/BulkInfoProviderImportController.php(216): App\\Services\\InfoProviderSystem\\BulkInfoProviderService->performBulkSearch() #3 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(183): App\\Controller\\BulkInfoProviderImportController->step1() #4 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw() #5 /var/www/html/vendor/symfony/http-kernel/Kernel.php(182): Symfony\\Component\\HttpKernel\\HttpKernel->handle() #6 /var/www/html/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\Kernel->handle() #7 /var/www/html/vendor/autoload_runtime.php(29): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKerne lRunner->run() #8 /var/www/html/public/index.php(5): require_once('...') #9 {main} "}There is nothing my vibe coding skills can do lol. I am running the last docker image, readed all the issues, pull requests and wiki. tried all the possible combinations, then spent a couple days checking if it was my fault, it is not. It's broken. I add my stock with the import option, getting all the info from LCSC (i use their cart csv). That means that i have thousands of parts that lack info/attachements, when i update them one by one, everything goes flawlessly. But, impossible for me to do that with all the parts so, here i am waiting like a kid to see if we can get it sorted lol. I would love too if someone points me in the good direction, i may be doing something wrong? (tried every possibility 5 times buit, who knows)
HOLLY COW... I vibe coded it lol... going to fork, copy paste the file that i worked on and create a pull request. working on docker perfectly. don´t hate me, i am not going to do this anymore, it's just that it is such a fantastic feature and it wasn´t working. love you guys, vibe coding sucks, don't do it.