Migrating Large Photo Albums from Yogile to Google Photos
Yogile has a notoriously inefficient way of downloading photo albums that don't fit in a single download file. Could I make it any more efficient?
Our running club undertook a project to modernize our photo archives, which meant migrating a large Yogile photo library to Google Photos. Because there’s no server-to-server transfer option, I had to download each album individually and then re-upload it to Google Photos. Some albums were simple, requiring only a single download, while others were split into multiple parts—sometimes many—based on image resolution and album size. One album, for example, required 28 separate downloads to complete.
Whoa. When you consider that each download requires clicking “Download this Album,” waiting for AWS to zip the files and generate a link, then navigating back and remembering which part comes next, it quickly became clear there had to be a better way. I initially tried using ChatGPT to help me write a Perl script to automate the process, but because of how Yogile secures albums and handles downloads, that approach turned out to be a dead end. Instead, I landed on a solution that eliminated most of the clicking and waiting by using the browser’s Inspector—Safari, in my case, since it automatically unzips files after download.
Downloading the Album
Start by clicking the blue Download button for the first part of the series with the Network panel open. This triggers a request to AWS to prepare the download, and it also exposes a URL in the Network tab. Filter the panel for download_start and look for the id parameter, highlighted below.
Customize this code snippet with the number of total downloads on line 2 (28 in this example) and the id you just copied on line 3.
let part = 2;
const maxpart = 28;
const id = 18174900;
const opener = setInterval(() => {
window.open(
`https://www.yogile.com/group/download_start?id=${id}&type=group&user_id=&part=${part}&filename=oiginal`,
'_blank'
);
part++;
if (part > maxpart) {
clearInterval(opener);
}
}, 100);Paste that into the Console tab in the Inspector and press Enter. In this example, Safari opens 27 new windows—27 because the first part has already been downloaded. Be sure to paste the script after the first download link appears; otherwise, the page may reload and interrupt execution.
From each tab, wait for AWS to generate the download link, then download the corresponding ZIP file. Since browsers typically limit active downloads to about six at a time, you can let them run in the background while you work on other things.
Flatten the Directory Structure
Safari automatically unzips each file, leaving you with a collection of folders containing images. To flatten these into a single directory, open a Terminal window, navigate to the Downloads folder that contains the subfolders, and run the following command.
find . -mindepth 2 -type f -exec mv -i ‘{}’ . \;Handle Missing File Extensions
Sometimes Yogile downloads images without a file extension. What nonsense! If you run into that, you can use the following command to add a .jpg extension to those files.
find . -type f ! -name “*.*” -exec mv “{}” “{}.jpg” \;Reducing File Sizes
Unless you want to wait forever for uploads to finish, you may need to resize the images before uploading them. Yogile appears to store files at their original resolution, and some of the images I encountered were 20 MB or larger. To streamline this step, I created an Automator script to make the process easier.
Follow these instructions to create a Finder automation to scale images by 50%, which in my case took a 10MB image down to 1MB or less. In the automator app, you can find the Scale Images action and configure a Finder automation like this:
Then, you can sort images in the folder by decreasing size, right click, and select your automation from the Quick Actions menu.
Upload to Google Photos
With that preparation complete, the rest is straightforward: create a new album in Google Photos, drag and drop the image files in your browser, and wait for the upload to finish. I used multiple tabs to upload a few batches at a time. It was a long project, but well worth it for the flexible sharing, face recognition, and vastly better browsing experience that Google Photos offers. To help share the photo albums efficiently with the club, I created a Google document to list the albums by event and date.





