✅ Fixed bulk conversion getting stuck on missing files ✅ Added robust error handling and timeout protection ✅ Improved JavaScript response parsing ✅ Added file existence validation ✅ Fixed missing PHP class imports ✅ Added comprehensive try-catch error recovery 🔧 Key fixes: - File existence checks before conversion attempts - 30-second timeout protection per file - Graceful handling of 500 errors and JSON parsing issues - Automatic continuation to next file on failures - Cache busting for JavaScript updates 🎯 Result: Bulk conversion now completes successfully even with missing files 🚀 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
WebPConvert Cloud Service
This library allows you to set up your own WebP conversion cloud service. This way you can have a cloud converter for free. You won't have to worry about licenses expiring or being stolen and abused. And you will be completely in control of it (and downtime)
After setting up the cloud service, you will be able to use it to convert jpeg and png images into webp images. You can do that, using webp-convert, or one of its implementations, such as the Wordpress plugin, WebP Express.
Alternatively to installing this library, you could install Wordpress and the the WebP Express plugin mentioned above. WebP Express can be configured to act as a conversion service. The plugin actually uses this library to achieve that functionality.
Installation
1. Require the library with composer
composer require rosell-dk/webp-convert-cloud-service
2. Create a script, which calls the library with configuration options
Here is an example to get started with:
<?php
require 'vendor/autoload.php';
use \WebPConvertCloudService\WebPConvertCloudService;
$options = [
// Set dir for storing converted images temporarily
// (make sure to create that dir, with permissions for web server to write)
'destination-dir' => '../conversions',
// Set acccess restrictions
'access' => [
'whitelist' => [
[
'ip' => '*',
'api-key' => 'my dog is white',
'require-api-key-to-be-crypted-in-transfer' => false
]
]
],
// Optionally set webp-convert options
'webp-convert' => [
'converters' => ['cwebp', 'gd', 'imagick'],
'converter-options' => [
'cwebp' => [
'try-common-system-paths' => true,
'try-supplied-binary-for-os' => true,
'use-nice' => true
]
]
]
];
$wpc = new WebPConvertCloudService();
$wpc->handleRequest($options);
?>
3. Test if it works
You can call the API with curl. First thing you might do is to test if service is available. You can do that by asking for the api-version, as this does not require any authorization:
curl --form action="api-version" http://wpc.example.com/wpc.php
Next, you can test access.
If you have set require-api-key-to-be-crypted-in-transfer to false, you can test access like this:
curl --form action="check-access" --form api-key="my dog is white" http://wpc.example.com/wpc.php
Finally, you can make a test conversion like this. First, place a file test.jpg in your current dir, then run:
curl --form action="convert" --form api-key="my dog is white" --form file=@test.jpg http://wpc.example.com/wpc.php > test.webp
If you get a corrupt file, then it is probably because the output contains an error message. To see it, run the above command again, but remove the piping of the output to a file.
You will probably not need to know more of the API. But in case you do, check out docs/api.md
Mad Scientist-ware
If you enjoy this software, feel free to conduct some secret experiments and go mad. If you like.