264{
265 qCDebug(lc).noquote() << tr("Merging %n metedata entry(s)", nullptr, metadata.size());
266 QJsonObject merged;
267 const QStringList keys = metadata.keys();
268 for (const QString &key: keys) {
269
270 const auto values = metadata.values(key);
271 if (values.first().isArray()) {
272 QJsonArray concatenatedArray;
273 for (const QJsonValue &value: values) {
274 if (!value.isArray()) {
275 qCCritical(lc).noquote() << tr("Metadata %1 has conflicting types").arg(key);
276 return QJsonObject{};
277 }
278 const QJsonArray thisArray = value.toArray();
279 for (const QJsonValue &item: thisArray) {
280 concatenatedArray.append(item);
281 }
282 }
283 merged.insert(key, concatenatedArray);
284 continue;
285 }
286
287
288 for (const QJsonValue &value: values) {
289 qDebug() << values.first() << value;
290 if (value != values.first()) {
291 qCDebug(lc).noquote() << tr("Metatadata %1 has conflicting values").arg(key);
292 return QJsonObject{};
293 }
294 }
295 merged.insert(key, values.first());
296 }
297 qCDebug(lc).noquote() << tr("Merged %n metedata entry(s) to %1", nullptr, metadata.size())
298 .arg(merged.size());
299 return merged;
300}