adobe-ps-scripts-loreal/README.md
DJP 4a192a8c97 Initial commit: Adobe Photoshop API text management scripts
Local and cloud-based workflows for extracting and updating
text layers in PSD files via ExtendScript and Adobe PS API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 13:46:52 -05:00

187 lines
No EOL
5.5 KiB
Markdown

# Adobe Photoshop Text Layer Management
This repository contains tools for interacting with Adobe Photoshop files using both local scripts and the Adobe Photoshop API.
## Current Status (April 22, 2025)
### API Integration Status
We have successfully implemented the Adobe Photoshop API integration with the following components:
-**Authentication**: Using client credentials to obtain OAuth tokens
-**External Storage**: Google Cloud Storage for file uploads and downloads
-**API Endpoint Integration**: Correct Adobe API endpoints identified and integrated
-**Asynchronous Processing**: Status URL monitoring and file download
-**Text Updating**: Successfully updating text content using layer names (note: uses default font)
### Recent Fixes and Improvements
1. **Fixed API Text Layer Updates**:
- Layer name-based identification is now working
- Text content updates successfully
- Output files are properly saved and named
- Temporary files are automatically cleaned up
2. **File Management**:
- Output files now use clear naming with `api_updated_` prefix
- Files are saved in the same directory as the original
- Google Cloud Storage temporary files are automatically deleted
3. **Known Limitation**:
- The API uses Arial font instead of preserving the original font
- All other aspects (content, line breaks) are properly updated
See `API-UPDATE-FIX.md` for detailed information about the fixes.
## Using the Adobe API Text Update Tools
### Single File Update
To update a single PSD file using the API:
```bash
python simplified_payload.py /path/to/your-textonly.json /path/to/your.psd
```
This will:
1. Upload the PSD to Google Cloud Storage
2. Make the API request to update text layers
3. Download the processed file with the `api_updated_` prefix
4. Clean up temporary files in Google Cloud Storage
### Batch Processing
To process multiple files at once:
```bash
python update_text_with_api.py --directory /path/to/directory
```
This will:
1. Find all JSON files with text layer data in the directory
2. Process each file and its corresponding PSD
3. Save updated files in the same location as originals with `api_updated_` prefix
### File Organization
- **Input Files**:
- PSD files: Original Photoshop files
- JSON files: Text content data extracted from PSDs
- **Output Files**:
- Output files are saved in the same directory as the originals
- Files are named with `api_updated_` prefix (e.g., `api_updated_your_file.psd`)
- No nested directories are created
### Text Content Format
The JSON files should contain text layer data in this format:
```json
{
"documentName": "your_file.psd",
"psdPath": "/path/to/your_file.psd",
"textLayers": [
{
"name": "Layer Name",
"text": "Original text",
"updatedText": "New text content"
}
]
}
```
The `updatedText` field is used for the new content.
## Other Available Options
### Local Script Workflow (Font Preservation)
If you need to preserve font styling exactly:
1. **Extract text** from PSD files using the local scripts:
```bash
python mac_ps_extract.py /path/to/psd_files -o /path/to/output_dir
```
2. **Edit** the extracted JSON files
3. **Update text** using local scripts:
```bash
python mac_ps_update.py /path/to/json_files -p /path/to/psd_files --save
```
### Direct ExtendScript (Alternative)
For direct text updates without Python:
1. Open the PSD file in Photoshop
2. Run `ExtractTextWithBreaks.jsx` to extract text
3. Edit the JSON file
4. Run `updateTextLayers.jsx` to apply the changes
## Adobe API Integration Details
The Adobe Photoshop API integration follows these steps:
1. Upload PSD file to Google Cloud Storage
2. Generate signed URLs for input and output files
3. Send API request to `https://image.adobe.io/pie/psdService/text`
4. Monitor processing status via the status URL
5. Download the processed file when complete
### Authentication
To authenticate with Adobe APIs:
1. Use the client credentials provided by Adobe
2. Set the correct scope:
- Photoshop API: `openid,AdobeID,read_organizations`
- Firefly API: `openid,AdobeID,firefly_api,ff_apis`
Tokens can be generated using:
```bash
python adobe_ps_api.py generate-token --client-secret YOUR_CLIENT_SECRET
```
### API Commands
```bash
# Test connectivity to API endpoints
python adobe_ps_api.py test-api
# Test text edit functionality
python adobe_ps_api.py test-text-edit
# Test Google Cloud Storage upload
python adobe_ps_api.py test-gcs /path/to/file.psd
# Update text (dry run)
python adobe_ps_api.py update-text /path/to/file.json --dry-run
# Update text with API
python adobe_ps_api.py update-text /path/to/file.json
```
## Troubleshooting
### API Issues
- **Font Changes**: The API currently replaces fonts with Arial. Use local scripts if font preservation is essential.
- **Authentication Errors**: Check client credentials and token expiration.
- **File Not Found**: Ensure paths are correct and files exist.
- **Failed Downloads**: Check GCS permissions and bucket configuration.
### Local Script Issues
- If layers aren't being found, ensure layer names match exactly
- If JSON parsing fails, check for valid JSON syntax
- For more details, see the troubleshooting section in the script headers
## Documentation
For more detailed information, see:
- [API-UPDATE-FIX.md](API-UPDATE-FIX.md) - Latest fixes to the API integration
- [API-STATUS.md](API-STATUS.md) - Current integration status and issues
- [MAC-SCRIPTS.md](MAC-SCRIPTS.md) - MacOS-specific script documentation