Media Duplicates

Proporciona un framework para identificar, comparar, detectar y opcionalmente restringir entidades de medios duplicadas dentro de un sitio Drupal.

media_duplicates
1,839 sites
20
drupal.org

Instalar

Drupal 11, 10, 9 v2.0.3
composer require 'drupal/media_duplicates:^2.0'
Drupal 8 v8.x-1.2
composer require 'drupal/media_duplicates:8.x-1.2'

Overview

Media Duplicates es un módulo completo que ayuda a los administradores del sitio a gestionar y controlar las entidades de medios duplicadas en su instalación de Drupal. El módulo genera checksums SHA256 para los archivos fuente de medios y utiliza estos checksums para detectar cuándo el mismo archivo o recurso oEmbed se carga varias veces.

El módulo proporciona un sistema de checksum extensible que soporta varios tipos de fuentes de medios incluyendo archivos, imágenes, audio, video y contenido oEmbed. Los administradores del sitio pueden configurar si simplemente reportar los duplicados o prevenir activamente que los usuarios los creen. Las opciones de aplicación progresiva permiten que los sitios con duplicados existentes prevengan nuevos mientras siguen permitiendo ediciones a elementos duplicados heredados.

Una página de informe de duplicados dedicada muestra todas las entidades de medios que comparten el mismo checksum, proporcionando enlaces directos a cada elemento duplicado para una revisión fácil. El módulo se integra perfectamente con el sistema de validación de Drupal para bloquear la creación de duplicados cuando está configurado, mostrando mensajes de error claros con enlaces a elementos de medios duplicados existentes.

Features

  • Generación automática de checksum para entidades de medios usando hash SHA256 al guardar
  • Página de informe de detección de duplicados mostrando todas las entidades de medios con checksums coincidentes
  • Restricción de duplicados configurable con constraint de validación al guardar entidades de medios
  • Modo de aplicación progresiva permitiendo duplicados existentes mientras bloquea nuevos
  • Opción de comparación específica por bundle para solo verificar duplicados dentro del mismo tipo de medio
  • Arquitectura de checksum extensible soportando tipos de fuentes de medios personalizados
  • Soporte integrado para medios basados en archivos (file, image, audio_file, video_file) y contenido oEmbed
  • Sistema de procesamiento por lotes para reconstruir checksums en entidades de medios existentes
  • Comando Drush para reconstrucción de checksums vía CLI con filtrado por bundle
  • Se recomienda integración con el módulo Entity Usage para consolidar duplicados

Use Cases

Prevenir cargas de medios duplicados en un sitio nuevo

Instala Media Duplicates al inicio de tu proyecto y habilita 'Restringir a los usuarios de crear elementos de medios duplicados'. Los usuarios recibirán errores de validación cuando intenten cargar archivos que ya existen en la biblioteca de medios, con enlaces útiles al elemento de medios existente que pueden usar en su lugar.

Auditar un sitio existente para medios duplicados

Instala Media Duplicates y ejecuta el proceso de reconstrucción de checksums. Visita el informe de Medios duplicados para ver todos los grupos de elementos de medios duplicados. Deja la restricción de duplicados deshabilitada para evitar interrumpir los flujos de trabajo existentes mientras planificas la limpieza.

Limpieza progresiva de duplicados heredados

Habilita 'Restringir a los usuarios de crear elementos de medios duplicados' junto con 'Solo restringir duplicados en elementos de medios nuevos'. Esto previene nuevos duplicados mientras permite a los editores de contenido continuar trabajando con elementos duplicados existentes hasta que puedas consolidarlos.

Medios multi-bundle con duplicados intencionales

Si tu sitio usa la misma imagen tanto en un bundle 'Galería de Fotos' como en un bundle 'Documento Adjunto' intencionalmente, habilita 'Comparar solo dentro del mismo bundle' para permitir este patrón mientras sigues previniendo duplicados dentro de cada bundle.

Soporte para tipo de fuente de medios personalizado

Si tienes un plugin de fuente de medios personalizado, implementa hook_media_duplicates_checksum_info_alter() para asociarlo con un plugin de checksum existente, o crea un nuevo plugin de checksum extendiendo MediaDuplicatesChecksumBase para proporcionar lógica de checksum personalizada.

Tips

  • Instala este módulo lo antes posible en tu proceso de desarrollo para prevenir que se acumulen medios duplicados
  • Usa el módulo Entity Usage en conjunto con Media Duplicates para identificar dónde se usan los elementos de medios duplicados antes de consolidarlos
  • El comando Drush soporta el procesamiento de bundles específicos, lo cual es útil para reconstrucciones incrementales o actualizaciones de checksum dirigidas
  • Los plugins de checksum personalizados deben implementar MediaDuplicatesChecksumInterface y extender MediaDuplicatesChecksumBase para consistencia
  • El módulo almacena checksums en un campo traducible y revisionable, por lo que cada traducción/revisión puede tener su propio checksum si la fuente difiere

Technical Details

Admin Pages 3
Configuración de medios duplicados /admin/config/media/media-duplicates

Configura cómo el módulo maneja la detección y restricción de medios duplicados. Esta página permite a los administradores habilitar o deshabilitar las restricciones de duplicados y ajustar el comportamiento de comparación.

Medios duplicados /admin/reports/media-duplicates

Muestra un informe completo de todas las entidades de medios duplicadas en el sistema. Muestra cada checksum único que tiene múltiples elementos de medios, junto con el conteo y enlaces directos a cada entidad duplicada.

Reconstruir checksums /admin/config/media/media-duplicates/refresh

Reconstruye los checksums para todos o los bundles de medios seleccionados. Usa este formulario después de la instalación inicial del módulo en un sitio con medios existentes, o después de cambios en los plugins de checksum.

Permisos 1
Administrar medios duplicados

Permite a los usuarios configurar los ajustes de duplicación de medios y reconstruir checksums. Este es un permiso restringido que solo debe otorgarse a administradores de confianza.

Hooks 1
hook_media_duplicates_checksum_info_alter

Altera la definición de los plugins de checksum. Usa este hook para agregar soporte para tipos de medios personalizados a plugins de checksum existentes o modificar definiciones de plugins.

Drush Commands 1
drush media-duplicates:checksums:rebuild

Reconstruye todos los checksums para entidades de medios. Esencial para la configuración inicial en sitios existentes o después de cambios en algoritmos o plugins de checksum.

Troubleshooting 4
El informe de medios duplicados no muestra resultados pero se sabe que existen duplicados

Es posible que los checksums no se hayan generado para los medios existentes. Ejecuta 'drush media-duplicates:checksums:rebuild all' o usa el formulario Reconstruir checksums para generar checksums para todas las entidades de medios.

El mensaje de advertencia 'Unable to create checksum for [type]' aparece en los logs

No existe un plugin de checksum para este tipo de fuente de medios. Usa hook_media_duplicates_checksum_info_alter() para mapearlo a un plugin existente, o crea un plugin de checksum personalizado para tu fuente de medios.

La restricción de duplicados no funciona para ciertos tipos de medios

Algunos tipos de fuentes de medios pueden no tener un plugin de checksum coincidente. Verifica que el ID del plugin de fuente de medios coincida con uno de los 'media_types' definidos en un plugin de checksum. Usa hook_media_duplicates_checksum_info_alter() para agregar soporte.

La reconstrucción de checksums está tomando demasiado tiempo

Para sitios con muchos elementos de medios, usa el comando Drush con argumentos de bundle específicos para procesar un bundle a la vez, o ejecútalo durante períodos de bajo tráfico. El proceso por lotes está diseñado para manejar grandes conjuntos de datos pero tomará tiempo proporcional al número de entidades de medios.

Security Notes 2
  • El permiso 'administer media duplicates' está marcado como acceso restringido y solo debe otorgarse a administradores de confianza
  • La reconstrucción de checksums omite las verificaciones de acceso para asegurar que todas las entidades de medios se procesen independientemente de los permisos del usuario actual