文件
mashangyoujiu/_ai_archive/scripts/download_alcohol_images.php

285 行
9.5 KiB
PHP

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
/**
* 酒类商品图片下载脚本
* 从网络获取酒类商品图片并保存到本地
*/
// 数据库配置
$host = '127.0.0.1';
$dbname = 'mss_nahaichuan_c';
$username = 'mss_nahaichuan_c';
$password = 'MyNmyAaRj9yWKPKH';
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
// 创建图片存储目录
$image_dir = 'uploads/goods_images/';
if (!is_dir($image_dir)) {
mkdir($image_dir, 0755, true);
}
// 酒类商品图片URL列表(示例图片)
$alcohol_images = [
// 白酒类
[
'category' => '白酒',
'name' => '五粮液',
'url' => 'https://img.alicdn.com/imgextra/i1/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'wuliangye.jpg'
],
[
'category' => '白酒',
'name' => '茅台',
'url' => 'https://img.alicdn.com/imgextra/i2/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'maotai.jpg'
],
[
'category' => '白酒',
'name' => '剑南春',
'url' => 'https://img.alicdn.com/imgextra/i3/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'jiannanchun.jpg'
],
[
'category' => '白酒',
'name' => '泸州老窖',
'url' => 'https://img.alicdn.com/imgextra/i4/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'luzhoulao.jpg'
],
[
'category' => '白酒',
'name' => '郎酒',
'url' => 'https://img.alicdn.com/imgextra/i5/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'langjiu.jpg'
],
// 红酒类
[
'category' => '红酒',
'name' => '干红葡萄酒',
'url' => 'https://img.alicdn.com/imgextra/i6/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'red_wine_1.jpg'
],
[
'category' => '红酒',
'name' => '赤霞珠红酒',
'url' => 'https://img.alicdn.com/imgextra/i7/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'red_wine_2.jpg'
],
[
'category' => '红酒',
'name' => '梅洛红酒',
'url' => 'https://img.alicdn.com/imgextra/i8/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'red_wine_3.jpg'
],
[
'category' => '红酒',
'name' => '黑皮诺红酒',
'url' => 'https://img.alicdn.com/imgextra/i9/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'red_wine_4.jpg'
],
[
'category' => '红酒',
'name' => '西拉红酒',
'url' => 'https://img.alicdn.com/imgextra/i10/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'red_wine_5.jpg'
],
// 啤酒类
[
'category' => '啤酒',
'name' => '青岛啤酒',
'url' => 'https://img.alicdn.com/imgextra/i11/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'qingdao_beer.jpg'
],
[
'category' => '啤酒',
'name' => '雪花啤酒',
'url' => 'https://img.alicdn.com/imgextra/i12/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'snow_beer.jpg'
],
[
'category' => '啤酒',
'name' => '燕京啤酒',
'url' => 'https://img.alicdn.com/imgextra/i13/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'yanjing_beer.jpg'
],
[
'category' => '啤酒',
'name' => '哈尔滨啤酒',
'url' => 'https://img.alicdn.com/imgextra/i14/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'harbin_beer.jpg'
],
[
'category' => '啤酒',
'name' => '百威啤酒',
'url' => 'https://img.alicdn.com/imgextra/i15/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'budweiser_beer.jpg'
],
// 洋酒类
[
'category' => '洋酒',
'name' => '威士忌',
'url' => 'https://img.alicdn.com/imgextra/i16/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'whisky.jpg'
],
[
'category' => '洋酒',
'name' => '白兰地',
'url' => 'https://img.alicdn.com/imgextra/i17/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'brandy.jpg'
],
[
'category' => '洋酒',
'name' => '伏特加',
'url' => 'https://img.alicdn.com/imgextra/i18/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'vodka.jpg'
],
[
'category' => '洋酒',
'name' => '朗姆酒',
'url' => 'https://img.alicdn.com/imgextra/i19/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'rum.jpg'
],
[
'category' => '洋酒',
'name' => '金酒',
'url' => 'https://img.alicdn.com/imgextra/i20/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
'filename' => 'gin.jpg'
]
];
// 由于网络图片URL可能不可用,我们创建一些占位符图片
// 实际使用时应该替换为真实的图片URL
function createPlaceholderImage($filename, $category, $name) {
global $image_dir;
// 创建一个简单的占位符图片
$width = 300;
$height = 300;
$image = imagecreate($width, $height);
// 根据酒类设置不同的背景色
switch($category) {
case '白酒':
$bg_color = imagecolorallocate($image, 255, 248, 220); // 米色
$text_color = imagecolorallocate($image, 139, 69, 19); // 棕色
break;
case '红酒':
$bg_color = imagecolorallocate($image, 128, 0, 32); // 深红色
$text_color = imagecolorallocate($image, 255, 255, 255); // 白色
break;
case '啤酒':
$bg_color = imagecolorallocate($image, 255, 215, 0); // 金色
$text_color = imagecolorallocate($image, 0, 0, 0); // 黑色
break;
case '洋酒':
$bg_color = imagecolorallocate($image, 75, 0, 130); // 靛蓝色
$text_color = imagecolorallocate($image, 255, 255, 255); // 白色
break;
default:
$bg_color = imagecolorallocate($image, 200, 200, 200); // 灰色
$text_color = imagecolorallocate($image, 0, 0, 0); // 黑色
}
imagefill($image, 0, 0, $bg_color);
// 添加文字
$font_size = 5;
$text_x = ($width - strlen($name) * imagefontwidth($font_size)) / 2;
$text_y = ($height - imagefontheight($font_size)) / 2;
imagestring($image, $font_size, $text_x, $text_y, $name, $text_color);
// 保存图片
$filepath = $image_dir . $filename;
imagejpeg($image, $filepath, 90);
imagedestroy($image);
return $filepath;
}
// 下载或创建图片
function downloadImage($url, $filename) {
global $image_dir;
$filepath = $image_dir . $filename;
// 尝试下载图片
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
$data = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($data && $http_code == 200) {
file_put_contents($filepath, $data);
return $filepath;
}
return false;
}
// 连接数据库
try {
$pdo = new PDO($dsn, $username, $password, $options);
echo "数据库连接成功\n";
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
// 处理每个图片
foreach ($alcohol_images as $item) {
echo "处理 {$item['category']} - {$item['name']}...\n";
// 尝试下载图片
$image_path = downloadImage($item['url'], $item['filename']);
// 如果下载失败,创建占位符图片
if (!$image_path) {
echo "下载失败,创建占位符图片...\n";
$image_path = createPlaceholderImage($item['filename'], $item['category'], $item['name']);
}
if ($image_path) {
// 更新数据库中对应商品的图片字段
$sql = "UPDATE ls_retail_goods SET goods_image = ? WHERE goods_name LIKE ?";
$stmt = $pdo->prepare($sql);
$search_name = '%' . $item['name'] . '%';
$result = $stmt->execute([$item['filename'], $search_name]);
if ($result && $stmt->rowCount() > 0) {
echo "成功更新 {$item['name']} 的图片: {$item['filename']}\n";
} else {
echo "未找到匹配的商品: {$item['name']}\n";
}
} else {
echo "图片处理失败: {$item['name']}\n";
}
// 添加延迟避免请求过快
sleep(1);
}
// 验证结果
echo "\n=== 验证图片更新结果 ===\n";
$sql = "SELECT goods_name, goods_image FROM ls_retail_goods WHERE goods_image IS NOT NULL AND goods_image != '' ORDER BY goods_name";
$stmt = $pdo->query($sql);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "已设置图片的商品数量: " . count($results) . "\n";
foreach ($results as $row) {
echo "- {$row['goods_name']}: {$row['goods_image']}\n";
}
echo "\n图片下载和数据库更新完成!\n";
?>