ccharz / laravel-openfoodfacts-reader

获取Openfoodfacts产品信息

v0.0.1 2024-01-07 18:14 UTC

This package is auto-updated.

Last update: 2024-09-07 19:42:07 UTC


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 以迁移您的数据库。

导入数据库

  1. https://static.openfoodfacts.org/data/openfoodfacts-products.jsonl.gz下载当前数据库jsonl。
  2. 解压缩下载的文件(例如使用gunzip gunzip openfoodfacts-products.jsonl.gz
  3. 使用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');