···2424 "Content-Type": "application/json",
2525 "Accept": "application/json"
2626 };
2727- const response = await axios.get(apiUrl);
2727+ const response = await axios.get(apiUrl, { headers });
28282929 if (!response.data) {
3030 throw new Error('Failed to get data from SoFurry API');
3131 }
32323333- // Get the content URL (full-sized image)
3434- const sourceImageUrl = response.data.displayUrl;
3333+ // Get the content URL from the first content item
3434+ const sourceImageUrl = response.data.content?.[0]?.body?.displayUrl;
3535 if (!sourceImageUrl) {
3636 throw new Error('No display URL found in SoFurry API response');
3737 }
···7979 extractSubmissionId(url) {
8080 // Extract submission ID from SoFurry URL format
8181 // Format: https://sofurry.com/s/{SubmissionID}
8282- const idMatches = url.match(/\/s\/(\d+)/i);
8282+ // Submission ID can be alphanumeric
8383+ const idMatches = url.match(/sofurry\.com\/s\/([a-zA-Z0-9]+)/i);
83848485 // If we found a match, return the first capture group (the ID)
8586 return idMatches ? idMatches[1] : null;