Como o Shotwell detecta duplicatas?

4

Não foi possível encontrar respostas para isso com o google. Ao importar a mesma pasta de fotos duas vezes, o Shotwell pulará fotos duplicadas. Mas como ele detecta duplicatas? Se eu importar duas pastas diferentes de imagens, algumas das quais têm o mesmo nome por algum motivo, a Shotwell presumirá que são duplicatas? Ou isso também leva em conta o tamanho do arquivo, tornando as falsas duplicatas improváveis? Ou isso atrapalha as imagens, tornando duplicatas falsas praticamente impossíveis?

    
por Hubro 09.08.2014 / 20:52

1 resposta

11

Eu acredito que é mais avançado do que nomes simples, eu apenas tentei. Na verdade, parece que não se baseia no nome.

Então, acabei de criar o seguinte:

TestDir
  │
  ├─ blue.png #Blue A4 page
  ├─ blue2.png #Blue A4 page
  ├─ green.png #Blue A4 page
  ├─ red.png #Yellow A4 page
  ├─ yellow.png #Yellow A4 page
  ├─ yellow2.png #Yellow A4 page
  └ TestDir2
       │
       ├─ yellow.png #Blue A4 page
       └─ yellow.png #Blue A4 page

Importou a pasta TestDir (que também importa de qualquer subdiretório). Este foi o aviso:

6 duplicate photos were not imported:
/home/tim/Pictures/Test/red.png
/home/tim/Pictures/Test/yellow2.png
/home/tim/Pictures/Test/green.png
/home/tim/Pictures/Test/blue2.png
(and 2 more)

2 photos successfully imported.

Os dois que importaram foram blue.png e yellow.png. Isso é porque eles foram criados primeiro (ele escolhe o mais antigo se houver duplicatas).

Isso foi confirmado pelo próximo teste:

TestDir
  │
  ├─ blue.png #Blue A4 page
  ├─ blue2.png #Blue A4 page
  ├─ green.png #Blue A4 page (sorry OCD people)
  ├─ red.png #Yellow A4 page (sorry OCD people)
  ├─ yellow.png #Yellow A4 page
  ├─ yellow2.png #Yellow A4 page
  ├─ pink2.png #Pink A4 page 
  ├─ pink.png #Pink A4 page
  └ TestDir2
       │
       ├─ yellow.png #Blue A4 page
       └─ yellow.png #Blue A4 page

pink2.png e pink.png foram criados. pink2.png foi criado primeiro, depois pink.png

8 duplicate photos were not imported:
/home/tim/Pictures/Test/red.png
/home/tim/Pictures/Test/yellow2.png
/home/tim/Pictures/Test/green.png
/home/tim/Pictures/Test/blue2.png
(and 4 more)

3 photos successfully imported.

Os bem-sucedidos importados foram blue.png , yellow.png e pink2.png .

Por causa disso eu suponho que ele usa um algoritmo de hash.

É preciso o suficiente para que a alteração de apenas um pixel de cor de verde para amarelo em uma página A4 faça com que ele não seja detectado como duplicado. Muito preciso então!

Na verdade, acabei de encontrar este post aqui :

  

Assim que este bug for corrigido, a Shotwell usará (exclusivamente) um MD5 completo   hash do arquivo para executar a verificação duplicada, que é uma   maneira maldita e precisa de encontrar duplicatas.

Na verdade, no código-fonte , na linha 732 está o seguinte: Kudos @ Jeremie Miserez

imported_full_md5_table.has_key(prepared_file.full_md5)) {

Parece que ele usa um hash MD5!

Formas da árvore de diretórios daqui

    
por Tim 09.08.2014 / 21:12