Создание альбома Imgur с изображениями в одном запросе возвращает пустой альбом - что я делаю не так?C#

Место общения программистов C#
Anonymous
 Создание альбома Imgur с изображениями в одном запросе возвращает пустой альбом - что я делаю не так?

Сообщение Anonymous »

Я пытаюсь использовать API Imgur для создания альбома и прикрепленных изображений в одном запросе с помощью моей аутентифицированной учетной записи. Я сначала загружаю несколько изображений (которые возвращают их идентификаторы изображения), затем я называю свою конечную точку создания альбома с этими идентификаторами изображения в поле «IDS []» (вместе с заголовком, описанием, обложкой и параметрами конфиденциальности). Однако, хотя вызов API возвращает успех и генерируется URL -адрес альбома, альбом пуст (т.е. нет изображений внутри). < /P>
// Upload images to Imgur and return both id and deletehash.
public async Task UploadImageAsync(string filePath, string accessToken)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using (var content = new MultipartFormDataContent())
{
var fileContent = new ByteArrayContent(File.ReadAllBytes(filePath));
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
content.Add(fileContent, "image", Path.GetFileName(filePath));
var response = await client.PostAsync("https://api.imgur.com/3/upload", content);
var jsonResponse = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject(jsonResponse);
if ((bool)result.success)
{
string id = result.data.id.ToString();
string delHash = result.data.deletehash?.ToString();
return (id, delHash);
}
else
{
string error = result.data?.error?.ToString() ?? "Unknown error";
throw new Exception($"Failed to upload image: {error}");
}
}
}
}

// Create an album with images (using the authenticated endpoint).
public async Task CreateAlbumAsync(string accessToken, List imageIds)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using (var content = new MultipartFormDataContent())
{
// Add each image id using key "ids[]"
foreach (var id in imageIds)
{
content.Add(new StringContent(id), "ids[]");
}
// Add a title, description, cover, and privacy settings.
content.Add(new StringContent("My dank meme album " + Guid.NewGuid().ToString()), "title");
content.Add(new StringContent("This album contains a lot of dank memes. Be prepared."), "description");
content.Add(new StringContent(imageIds[0]), "cover");
content.Add(new StringContent("hidden"), "privacy");

var response = await client.PostAsync("https://api.imgur.com/3/album", content);
var jsonResponse = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
throw new Exception($"Failed to create album: {jsonResponse}");
}
dynamic result = JsonConvert.DeserializeObject(jsonResponse);
if ((bool)result.success)
{
string albumId = result.data.id.ToString();
string albumDeleteHash = result.data.deletehash.ToString();
return (albumId, albumDeleteHash);
}
else
{
string error = result.data.error?.ToString() ?? "Unknown error";
throw new Exception($"Failed to create album: {error}");
}
}
}
}

private async Task ProcessLineAsync(string email, string accessToken)
{
string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "photos", email);
if (!Directory.Exists(folderPath))
throw new Exception($"Folder not found: {folderPath}");

var desiredOrder = new List
{
"image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg",
"image5.jpg"
};

var imageFiles = desiredOrder
.Select(name => Path.Combine(folderPath, name))
.Where(File.Exists)
.ToList();

if (imageFiles.Count == 0)
throw new Exception("No images found to upload.");

List imageIds = new List();
foreach (var imageFile in imageFiles)
{
var (id, deletehash) = await UploadImageAsync(imageFile, accessToken);
imageIds.Add(id);
}

// Create the album and include the images.
var (albumId, albumDeleteHash) = await CreateAlbumAsync(accessToken, imageIds);
return $"https://imgur.com/a/{albumId}";
}

< /code>
Мои вопросы: < /p>

Что я делаю неправильно при создании альбома с изображениями с использованием API Imgur? /li>
Есть ли какая -либо известная проблема с прикреплением изображений через параметр идентификатора [] в одном запросе? < /li>
< /ul>
Я проверил что:

Изображения успешно загружаются, и идентификаторы изображения действительны. Изображения отображаются и являются такими, какими они должны быть. Br /> Любое руководство или исправление кода было бы очень оценено! < /p>
Я стремился к следующему рабоче b /> я загружаю каждое изображение, используя Конечная точка Imgur API /uplock и собирает их идентификаторы. с заголовком, описанием и обложкой. с идентификаторами изображения.) Однако альбом создан успешно, но он кажется пустым (изображения не прикреплены).

Подробнее здесь: https://stackoverflow.com/questions/794 ... album-what

Вернуться в «C#»