ccharz / laravel-openfoodfacts-reader
获取Openfoodfacts产品信息
v0.0.1
2024-01-07 18:14 UTC
Requires
- php: ^8.2
Requires (Dev)
- guzzlehttp/guzzle: ^7.8
- laravel/pint: ^1.0
- orchestra/testbench: ^8
- phpunit/phpunit: ^10
README
简介
使用本地驱动和API驱动从openfoodsfacts获取产品数据。
要求
Laravel Openfoodfacts Reader需要PHP 8.2+和Laravel 10。
如果您目前使用本地驱动,大约需要50GB的磁盘空间。
安装
安装包
首先使用以下命令发布配置
php artisan vendor:publish --tag openfoodfactsreader-config
并设置用户代理。用户代理应采用AppName/Version (ContactEmail)的形式(联系邮箱)。例如,MyApp/1.0 (contact@myapp.com).
驱动程序
本地
此驱动程序使用从openfoodfacts官方jsonl导出的数据。请注意,解压缩的文件大约有350万个产品,目前需要约50GB的存储空间。
设置
首先使用以下命令发布迁移
php artisan vendor:publish --tag openfoodfactsreader-migrations
运行 php artisan migrate
以迁移您的数据库。
导入数据库
- 从https://static.openfoodfacts.org/data/openfoodfacts-products.jsonl.gz下载当前数据库jsonl。
- 解压缩下载的文件(例如使用gunzip
gunzip openfoodfacts-products.jsonl.gz
) - 使用Artisan命令将文件导入数据库
php artisan openfoodfactsreader:import openfoodfacts-products.jsonl
(确保解压缩的文件存在于应用程序的根目录中)。
使用自己的模型
namespace App\Models; use Ccharz\LaravelOpenfoodfactsReader\Driver\Local\OpenfoodfactsProduct as BaseOpenfoodfactsProduct; class OpenfoodfactsProduct extends BaseOpenfoodfactsProduct { ...
在包的配置文件中,您可以指定您的类
// config/openfoodfactsreader.php ... 'model' => App\Models\OpenfoodfactsProduct::class ...
API V2
此驱动程序使用官方v2 API。
设置
使用以下命令发布配置
php artisan vendor:publish --tag openfoodfactsreader-config
并设置用户代理。用户代理应采用AppName/Version (ContactEmail)的形式(联系邮箱)。例如,MyApp/1.0 (contact@myapp.com).
用法
通过条形码获取产品数据
/** @var Ccharz\LaravelOpenfoodfactsReader\Driver\Local\OpenfoodfactsProduct $product */ $product = app(LaravelOpenfoodfactsReader::class)->product('737628064502');
您可以通过OpenfoodfactsProduct模型的data
方法访问产品数据。
驱动程序选择
您可以使用配置文件中配置的默认驱动程序,或者使用driver
方法指定它。
app(LaravelOpenfoodfactsReader::class)->driver('local')->product('737628064502'); app(LaravelOpenfoodfactsReader::class)->driver('v2')->product('737628064502');