Code Monkey home page Code Monkey logo

dupeguru's Introduction

dupeGuru

dupeGuru is a cross-platform (Linux, OS X, Windows) GUI tool to find duplicate files in a system. It is written mostly in Python 3 and uses qt for the UI.

Current status

Still looking for additional help especially with regards to:

  • OSX maintenance: reproducing bugs, packaging verification.
  • Linux maintenance: reproducing bugs, maintaining PPA repository, Debian package, rpm package.
  • Translations: updating missing strings, transifex project at https://www.transifex.com/voltaicideas/dupeguru-1
  • Documentation: keeping it up-to-date.

Contents of this folder

This folder contains the source for dupeGuru. Its documentation is in help, but is also available online in its built form. Here's how this source tree is organized:

  • core: Contains the core logic code for dupeGuru. It's Python code.
  • qt: UI code for the Qt toolkit. It's written in Python and uses PyQt.
  • images: Images used by the different UI codebases.
  • pkg: Skeleton files required to create different packages
  • help: Help document, written for Sphinx.
  • locale: .po files for localization.
  • hscommon: A collection of helpers used across HS applications.

How to build dupeGuru from source

Windows & macOS specific additional instructions

For windows instructions see the Windows Instructions.

For macos instructions (qt version) see the macOS Instructions.

Prerequisites

System Setup

When running in a linux based environment the following system packages or equivalents are needed to build:

  • python3-pyqt5
  • pyqt5-dev-tools (on some systems, see note)
  • python3-venv (only if using a virtual environment)
  • python3-dev
  • build-essential

Note: On some linux systems pyrcc5 is not put on the path when installing python3-pyqt5, this will cause some issues with the resource files (and icons). These systems should have a respective pyqt5-dev-tools package, which should also be installed. The presence of pyrcc5 can be checked with which pyrcc5. Debian based systems need the extra package, and Arch does not.

To create packages the following are also needed:

  • python3-setuptools
  • debhelper

Building with Make

dupeGuru comes with a makefile that can be used to build and run:

$ make && make run

Building without Make

$ cd <dupeGuru directory>
$ python3 -m venv --system-site-packages ./env
$ source ./env/bin/activate
$ pip install -r requirements.txt
$ python build.py
$ python run.py

Generating Debian/Ubuntu package

To generate packages the extra requirements in requirements-extra.txt must be installed, the steps are as follows:

$ cd <dupeGuru directory>
$ python3 -m venv --system-site-packages ./env
$ source ./env/bin/activate
$ pip install -r requirements.txt -r requirements-extra.txt
$ python build.py --clean
$ python package.py

This can be made a one-liner (once in the directory) as:

$ bash -c "python3 -m venv --system-site-packages env && source env/bin/activate && pip install -r requirements.txt -r requirements-extra.txt && python build.py --clean && python package.py"

Running tests

The complete test suite is run with Tox 1.7+. If you have it installed system-wide, you don't even need to set up a virtualenv. Just cd into the root project folder and run tox.

If you don't have Tox system-wide, install it in your virtualenv with pip install tox and then run tox.

You can also run automated tests without Tox. Extra requirements for running tests are in requirements-extra.txt. So, you can do pip install -r requirements-extra.txt inside your virtualenv and then py.test core hscommon

dupeguru's People

Contributors

1kakarot avatar alttiri avatar arsenetar avatar bostwickenator avatar brccabral avatar cebtenzzre avatar danielchalmers avatar djcrashdummy avatar dktrkranz avatar dobatymo avatar eugenesan avatar fascox avatar glubsy avatar jlesage avatar jpvlsmv avatar kiaaze avatar lukehyun avatar muath-ye avatar myanello avatar nicko7i avatar nikmartin avatar pataquets avatar patrickatamaniuk avatar ptman avatar pzrrl avatar samusz avatar serg-z avatar taiziccf avatar yichizhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dupeguru's Issues

mime types in hs.fs

Instead of using hardcoded extensions in the source code, it would be better to use mime types.

Default excludes

Too many users just scan their whole hard drive. It's dangerous. Sensible folders should be excluded from the scan by default.

[GetDisplayInfo] OSError: [Errno 2] No such file or directory

@@@
Traceback (most recent call last):
File
"/Volumes/dupeGuru/dupeGuru.app/Contents/Resources/dg_cocoa.plugin/Contents/
Resources/dg_cocoa.py", line 138, in getOutlineView_valuesForIndexes_
File
"dupeguru/app_cocoa.pyc", line 265, in GetOutlineViewValues
File
"dupeguru/data.pyc", line 62, in GetDisplayInfo
File
"hsfs/phys/bundle.pyc", line 41, in ctime
OSError: [Errno 2] No such file or
directory: '/Users/chris/Library/Caches/TemporaryItems/16807Office 2008
12.1.9
Update.mpkg/Contents/Packages/Office2008_en_autoupdate_12.1.9.combo.pkg/Cont
ents/Resources/quit_apps.app'

Relevant Console logs:

Jun 23 10:29:35 rp614
[0x0-0x2f02f].com.hardcoded_software.dupeguru[867]: dupeGuru(867,0xb0475000)
malloc: *** mmap(size=2146308096) failed (error code=12)
Jun 23 10:29:35
rp614 [0x0-0x2f02f].com.hardcoded_software.dupeguru[867]: *** error: can't
allocate region
Jun 23 10:29:35 rp614
[0x0-0x2f02f].com.hardcoded_software.dupeguru[867]: *** set a breakpoint in
malloc_error_break to debug
Jun 23 10:41:18 rp614
[0x0-0x2f02f].com.hardcoded_software.dupeguru[867]: dupeGuru(867,0xb0475000)
malloc: *** mmap(size=2146308096) failed (error code=12)
Jun 23 10:41:18
rp614 [0x0-0x2f02f].com.hardcoded_software.dupeguru[867]: *** error: can't
allocate region
Jun 23 10:41:18 rp614
[0x0-0x2f02f].com.hardcoded_software.dupeguru[867]: *** set a breakpoint in
malloc_error_break to debug
@@@

Aperture support

Scott Hards would like to see support for Aperture libraries in dupeGuru PE

Move speed under windows

I regularly get reports of move operation taking a long time to complete (and even choke) when the number of files is large (1000s). I gotta start to take it seriously and investigate.

[Directory Listing] IndexError: list index out of range

@@@
Application Identifier: com.hardcoded_software.dupeguru_me
Application Version: 5.6.3
[email protected]
Traceback (most recent call last):
File "/Volumes/LaCie/dupeGuru ME/dupeGuru ME.app/Contents/Resources/dg_cocoa.plugin/Contents/Resources/dg_cocoa.py", line 152, in getOutlineView_childCountsForPath_
File "dupeguru/app_cocoa.pyc", line 257, in GetOutlineViewChildCounts
File "dupeguru/app_cocoa.pyc", line 101, in GetDirectory
File "dupeguru/app_cocoa.pyc", line 100, in GetDirectory
IndexError: list index out of range
@@@

Filter on folder names

from email:

In PowerMarker? view, I found I wanted to have the filter operate on a folder names as well. I had a list of over a hundred files, I found, for clarity, I wanted to deal with a certain subfolder, without have to go and change my search folders and scan again. maybe make the regex option operate on the entire path? or make it an option to do so?

Crash while querying for info

@@@
Traceback (most recent call last):
File "/Volumes/dupeGuru/dupeGuru.app/Contents/Resources/dg_cocoa.plugin/Contents/Resources/dg_cocoa.py", line 138, in getOutlineView_valuesForIndexes_
File "dupeguru/app_cocoa.pyc", line 265, in GetOutlineViewValues
File "dupeguru/data.pyc", line 62, in GetDisplayInfo
File "hsfs/phys/bundle.pyc", line 41, in ctime
OSError: [Errno 2] No such file or directory: '/Users/Mark/.Trash/VectorDesigner.app'
@@@

Best guess: the file was deleted outside dupeGuru

Connection error with iTunes

@@@
Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 42, in _async_run
File "dupeguru/app_me_cocoa.pyc", line 53, in do
File "appscript/reference.pyc", line 609, in call
File "appscript/reference.pyc", line 475, in call
CommandError:
CommandError:
OSERROR: -609
MESSAGE: Connection is invalid.
COMMAND:
app(u'/Applications/iTunes.app').sources.ID(44).kind.get()
@@@

Similar to #19, better wait to see if the next PE release fixes the problem.

Send to Trash on external volumes

There seem to be a problem with Send to Trash on external volumes, which is not necessarily caused by permission, because moving the files out of the volumes works.

Preferences not updating and overcaching

from email:

When I change settings (say the file size threshhold) and run the search again, nothing is found. The same seems to happen when the content of folders has been modified. In short: DupeGuru? does not notice that a new scan is necessary. If that is a feature, the user should have an option to say: Forget what you know.

Better directory management

from email:

Adding folders to the folder list is pretty complicated. Everybody would expect to do it by drag and drop. (I would like to drop any folder onto the list.) They should be removed with the delete key.

KeyError during iPhoto library deletion

@@@
Traceback (most recent call last):
File "hs/cocoa.pyc", line 42, in _async_run
File "dupeguru/app.pyc", line 186, in
File "dupeguru/app_pe_cocoa.pyc", line 154, in _do_delete
File "dupeguru/results.pyc", line 207, in perform_on_marked
File "dupeguru/app_pe_cocoa.pyc", line 144, in op
File "dupeguru/app_pe_cocoa.pyc", line 159, in _do_delete_dupe
KeyError: u'/Users/ben/Pictures/iPhoto Library/Originals/2008/26 Nov 2003/mrThompson.jpg'
@@@

Remember selection when changing refs in a group

From a GS thread

"Make Selected Preference" makes the file focus random. I have two files. I want to switch which one is the preferred, and then check the other one. I use the keyboard shortcut to do so, and all of a sudden, the blue-line-selected file jumps down about 10. I have to reclick on the file I just changed preferences on in order to select it again.

Crash when iPhoto recent database pref ain't there

@@@
Traceback (most recent call last):
File "hs/cocoa.pyc", line 42, in _async_run
File "dupeguru/app_pe_cocoa.pyc", line 166, in _do_load
File "dupeguru/directories.pyc", line 125, in LoadFromFile
File "dupeguru/directories.pyc", line 76, in add_path
File "dupeguru/app_pe_cocoa.pyc", line 130, in
File "dupeguru/app_pe_cocoa.pyc", line 137, in _create_iphoto_library
File "objc/_convenience.pyc", line 187, in _getitem__objectForKey
File "objc/_convenience.pyc", line 523, in container_unwrap
KeyError: 'iPhotoRecentDatabases'
@@@

Duplicate photo entry in iPhoto

It seems that it's possible for an iPhoto Library to have 2 entries pointing to the same photo. In this case, we end up with a crash like:

@@@
Application Identifier: com.hardcoded_software.dupeguru_pe
Application Version: 1.7.3

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru/app_pe_cocoa.pyc", line 175, in _do_load
File "dupeguru/app_pe_cocoa.pyc", line 118, in update
File "dupeguru/app_pe_cocoa.pyc", line 109, in _update_photo
File "dupeguru/app_pe_cocoa.pyc", line 71, in init
File "hsfs/auto.pyc", line 55, in init
File "hsfs/_fs.pyc", line 143, in init
File "hsfs/_fs.pyc", line 67, in init
File "hsfs/tree.pyc", line 142, in init
File "hsfs/tree.pyc", line 32, in init
File "hsfs/tree.pyc", line 103, in parent
File "hsfs/_fs.pyc", line 76, in _do_before_add
AlreadyExistsError: 'Photo 132.jpg' already exists in 'all the stuff'
@@@

[recycle_dupe] - AttributeError: 'NoneType' object has no attribute 'path'

@@@
Application Identifier: com.hardcoded_software.dupeguru_me
Application Version: 5.6.3

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru/app.pyc", line 68, in _do_delete
File "dupeguru/results.pyc", line 207, in perform_on_marked
File "dupeguru/app.pyc", line 65, in op
File "dupeguru/app.pyc", line 74, in _do_delete_dupe
File "dupeguru/app_cocoa.pyc", line 61, in _recycle_dupe
AttributeError: 'NoneType' object has no attribute 'path'

Relevant Console logs:

Jun 28 15:25:59 geevy-thomass-iMac com.apple.launchd126: Stray process with PGID equal to this dead job: PID 4384 PPID 4379 sleep
Jun 28 15:25:59 geevy-thomass-iMac com.apple.launchd126: Stray process with PGID equal to this dead job: PID 4379 PPID 1 bash
Jun 28 16:18:59 geevy-thomass-iMac [0x0-0x2c62c6].com.hardcoded_software.dupeguru_me[4393]: WARNING dupeGuru Warning: '02 I'm Still Standing 1.mp3' already exists in 'Greatest Hits 1970-2002 (Disk 2)'
@@@

UnicodeDecodeError in _fetch_subitems in hsfs

@@@
Application Identifier: com.hardcoded_software.dupeguru_pe
Application Version: 1.7.4

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru/app.pyc", line 207, in do
File "dupeguru/directories.pyc", line 99, in get_files
File "dupeguru/directories.pyc", line 64, in _get_files
File "dupeguru/directories.pyc", line 63, in _get_files
File "hsfs/auto.pyc", line 172, in dirs
File "hsfs/auto.pyc", line 112, in __update_if_needed
File "hsfs/auto.pyc", line 127, in _do_update
File "dupeguru_pe/app_cocoa.pyc", line 84, in _fetch_subitems
File "hsfs/phys/_phys.pyc", line 167, in _fetch_subitems
File "hsfs/phys/_phys.pyc", line 164, in
File "hsutil/path.pyc", line 66, in add
File "hsutil/path.pyc", line 57, in new
File "hsutil/path.pyc", line 38, in unicode_if_needed
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 92-94:
invalid data
@@@

Internationalization

Support multiple languages.

The current codebase is not organized to support multiple languages right now. To support multiple languages, a re-factoring of the codebase is re-factoring is required.

some pictures end up without cache_id during comparison

No idea how.

@@@
Application Identifier: com.hardcoded_software.dupeguru_pe
Application Version: 1.7.3

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru/app.pyc", line 209, in do
File "dupeguru/scanner.pyc", line 84, in GetDupeGroups
File "dupeguru/picture/matchbase.pyc", line 48, in getmatches
File "dupeguru/picture/matchbase.pyc", line 117, in _do_getmatches
File "hsfs/_fs.pyc", line 151, in getattr
AttributeError: Trying to get attribute cache_id with an _info at {'dimensions': (3504.0, 2332.0)} and cls_info_map at {'size': 0, 'dimensions': 2, 'md5partial': 1, 'mtime': 0, 'md5': 1, 'ctime': 0}
@@@

utf-8 lookup failing during auto-update

At first, I thought it was a one time thing, but the problem persists. During Sparkle's auto-update, the utf-8 encoding can't be found during Directories.SaveToFile(). This problem happens rarely.

@@@
Application Identifier: com.hardcoded_software.dupeguru_me
Application
Version: 5.6.2

Traceback (most recent call last):
File
"/Applications/dupeGuru
ME.app/Contents/Resources/dg_cocoa.plugin/Contents/Resources/dg_cocoa.py",
line 67, in saveResults
File "dupeguru/app.pyc", line 197, in save
File
"dupeguru/directories.pyc", line 158, in SaveToFile
LookupError: unknown
encoding: utf-8
@@@

LookupError during Directories.get_files

@@@
Application Identifier: com.hardcoded_software.dupeguru_me
Application Version: 5.6.2

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru/app.pyc", line 207, in do
File "dupeguru/directories.pyc", line 103, in get_files
File "dupeguru/directories.pyc", line 68, in _get_files
File "dupeguru/directories.pyc", line 68, in _get_files
File "dupeguru/directories.pyc", line 68, in _get_files
File "dupeguru/directories.pyc", line 68, in _get_files
File "dupeguru/directories.pyc", line 68, in _get_files
File "dupeguru/directories.pyc", line 68, in _get_files
File "dupeguru/directories.pyc", line 68, in _get_files
File "dupeguru/directories.pyc", line 59, in _get_files
File "dupeguru/directories.pyc", line 114, in GetState
LookupError: The path '/Users/joelopee/Music/MUSIC/iTunes/Album Artwork/Local/C142CD2515873B54/14/15/04' is not in the directory list.
@@@

Allow pasting paths in the add directory dialog

from email:

When adding a new directory - In the browse for folder box, make it possible to paste the path in there, There's even an option in the BrowseForFolder? method to do it.. you know what i'm talking about... I found it frustrating to have a long path in the clipboard that i want to search, then go to add it and have to navigate with mouse clicks all the way there, i'd like to just hit CTRL-V.

Details panel content when a ref file is selected

While technically, it's correct to show the ref file's info on the two sides of the details panel when a ref file is selected, it can lead to dangerous confusion. The user might think that the two sides represent the ref and the dupe.

Therefore, when a ref file is selected, the right side of the details panel should be empty.

Linux version

Since the move to PyQt, it should be rather easy to create a Linux version of dupeGuru. A couple of things to figure out, on the top of my head:

  • Send to Trash (different in KDE and in Gnome?)
  • Packaging (apt-get, emerge, tarfile)
  • Maybe have to figure out how to apply a Qt Stylesheet so the app doesn't look like crap in KDE or Gnome.

[GetMatches] DatabaseError: database disk image is malformed

@@@
Application Identifier: com.hardcoded_software.dupeguru_pe
Application Version: 1.7.4

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru/app.pyc", line 209, in do
File "dupeguru/scanner.pyc", line 86, in GetDupeGroups
File "dupeguru_pe/matchbase.pyc", line 44, in getmatches
File "dupeguru_pe/matchbase.pyc", line 120, in _do_getmatches
File "multiprocessing/pool.pyc", line 422, in get
DatabaseError: database disk image is malformed

Relevant Console logs:

Jul 5 05:56:32 mark-bankss-imac [0x0-0x17c17c].com.hardcoded_software.dupeguru_pe[10647]: DEBUG started in debug mode
Jul 5 05:57:15 mark-bankss-imac com.apple.launchd177: Stray process with PGID equal to this dead job: PID 10687 PPID 10685 wc
Jul 5 05:57:15 mark-bankss-imac com.apple.launchd177: Stray process with PGID equal to this dead job: PID 10686 PPID 10685 ps
Jul 5 05:57:15 mark-bankss-imac com.apple.launchd177: Stray process with PGID equal to this dead job: PID 10685 PPID 10684 bash
Jul 5 05:57:15 mark-bankss-imac com.apple.launchd177: Stray process with PGID equal to this dead job: PID 10684 PPID 10683 bash
Jul 5 05:57:15 mark-bankss-imac com.apple.launchd177: Stray process with PGID equal to this dead job: PID 10683 PPID 1 bash
Jul 5 05:57:16 mark-bankss-imac [0x0-0x17f17f].com.hardcoded_software.dupeguru_pe[10693]: DEBUG started in debug mode
Jul 5 05:58:00 mark-bankss-imac [0x0-0x17f17f].com.hardcoded_software.dupeguru_pe[10693]: INFO Scanning 24563 files
Jul 5 05:58:00 mark-bankss-imac [0x0-0x17f17f].com.hardcoded_software.dupeguru_pe[10693]: INFO Getting matches
Jul 5 05:58:00 mark-bankss-imac [0x0-0x17f17f].com.hardcoded_software.dupeguru_pe[10693]: INFO Preparing 24563 files
Jul 5 05:58:03 mark-bankss-imac [0x0-0x17f17f].com.hardcoded_software.dupeguru_pe[10693]: WARNING DatabaseError while setting '6f7e86121c151320120e1b050c15020b1406141e07142406253609253007070300060301303e3051725f455f5569655b342e25090e081010086f5946383124090f020c12031e2f09090904060200100c052f3c2a4b6051495e47170f082c1f1415140b140f0728150d412b1c0f14050d1504303b1a171b0e0b0a03333223313a2439452d2d3a2c21150c28190e140e08180e08412828583a312d2a1d1c1b123033160d0f060c07031b160c1416100305020b0a0a3422153b261523160c1109063c22202c1b145d543e907264876d580e0e0a130d071c160b1111080709060809073323193b2a1f70717b0a0e162413121026312525215a3e3dbb948612100b271d1c3f2b1e42322b17181310120d553a2662504870768615253e1a18262257755f595f3c1f207f594d876c61624f486752476c5d524436311715135d402a5b423b53525e5c6f8536617f3462803728343216155b242354302d4a2c253a26202b1d112c150e261b195f43307a4c3f9773714f55663c7896bc9792582937531b3052151a4111198b595b4b45321313080f12080a0e0770523b8f594f956c6a90747466453c442621601f2da64b527a434b3c09127d2838817b4c4e7224507328456a1f765c458e544c98625840231d1512181a1721481b219063584023213e0a144d0f1c956c4e476e1d496c22496e201c17114d362c150c0c0b0d14000e22685c67561b2799626a6750422f070e450c15a25857486c224c70274d6e288f816d92816e010a170b111b080d17776770180c108d757f3934372a080f3a080f772a3c51563942671e42631e7a6e5f3f3d3a0e141b2328322d333e5340492b2327705f6722262d28111736080e7e32444a4c3945671f46641f1c1c1b13141206070914191f2c333d2f353f0b080a120d0d050809220e12380f18965c6e505c383b5f1743621c' for key u'/Users/mark/Pictures/IPhotos/iPhoto Library/Modified/2009/13 Jun 2009/P1030935.JPG': database disk image is malformed

@@@

Out-of-thread exception handler

Currently, the exception catching for error reporting only happen during threaded jobs. Out-of-job exceptions should also be caught.

Error -609 when sending photos to trash

Traceback (most recent call last):
File "hs/cocoa.pyc", line 42, in _async_run
File "dupeguru/app_pe_cocoa.pyc", line 150, in _do_delete
File "appscript/reference.pyc", line 544, in getattr
File "appscript/reference.pyc", line 234, in
File "appscript/reference.pyc", line 222, in connect
File "appscript/terminology.pyc", line 165, in tablesforapp
File "appscript/terminology.pyc", line 137, in aetesforapp
RuntimeError: Can't get terminology for application (aem.Application(u'/Applications/iPhoto.app')): CommandError: Connection is invalid. (-609)

My best bet would be to add a "timeout=0" on the first command sent to iPhoto. It might be too slow on some machines to launch.

AttributeError: 'NoneType' object has no attribute 'photos'

@@@
Application Identifier: com.hardcoded_software.dupeguru_pe
Application Version: 1.7.4

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru_pe/app_cocoa.pyc", line 155, in _do_delete
AttributeError: 'NoneType' object has no attribute 'photos'

Relevant Console logs:

Jun 22 16:04:20 Sereph [0x0-0x2f72f7].com.hardcoded_software.dupeguru_pe[2895]: WARNING The picture /Users/dimitrimckay2/Pictures/iPhoto Library/Modified/2000/Dec 31, 2000/DSC00309_1.JPG could not be read
Jun 22 16:04:20 Sereph [0x0-0x2f72f7].com.hardcoded_software.dupeguru_pe[2895]: WARNING The picture /Users/dimitrimckay2/Pictures/iPhoto Library/Modified/2001/08:04-05- New York City/105-0562_IMG.JPG could not be read
Jun 22 16:04:20 Sereph [0x0-0x2f72f7].com.hardcoded_software.dupeguru_pe[2895]: WARNING The picture /Users/dimitrimckay2/Pictures/iPhoto Library/Modified/2002/100MSDCF/DSC00299.JPG could not be read
[snip]
@@@

Automatic bundle detection

There must be a way to automatically and reliably detect that a folder is a bundle. dupeGuru SE should do that.

Improve scanner's tie breaker

In cases where the filename are the same as the other but with stuff like "(1)" or "[2]" appended to it, the one with the digit should go dupe.

Copy/Move crash if destination is read-only

Traceback (most recent call last):
File "hs/cocoa.pyc", line 77, in doRun
File "dupeguru/app_cocoa.pyc", line 110, in runThreaded
File "dupeguru/results.pyc", line 207, in perform_on_marked
File "dupeguru/app_cocoa.pyc", line 106, in do
File "dupeguru/app.pyc", line 93, in CopyOrMove
File "hs/io.pyc", line 54, in makedirs
File "os.pyc", line 150, in makedirs
File "os.pyc", line 150, in makedirs
File "os.pyc", line 150, in makedirs
File "os.pyc", line 150, in makedirs
File "os.pyc", line 157, in makedirs
OSError: [Errno 30] Read-only file system: '/Volumes/New Volume/versus/Music From Laptop'

Quick look support

Rather than having to open the files to see them, Quick Look support would be pretty nice.

UnicodeDecodeError in ExportToXHTML

@@@
Application Identifier: com.hardcoded_software.dupeguru
Application Version: 2.7.3

Traceback (most recent call last):
File "/Applications/dupeGuru.app/Contents/Resources/dg_cocoa.plugin/Contents/Resources/dg_cocoa.py", line 39, in exportToXHTMLwithColumns_xslt_css_
File "dupeguru/app_cocoa.pyc", line 128, in ExportToXHTML
File "dupeguru/export.pyc", line 65, in export_to_xhtml
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 135522: ordinal not in range(128)

Relevant Console logs:

Jun 24 13:33:37 Lees-MacBookPro-994 com.apple.launchd118: Stray process with PGID equal to this dead job: PID 1985 PPID 1980 sleep
Jun 24 13:33:37 Lees-MacBookPro-994 com.apple.launchd118: Stray process with PGID equal to this dead job: PID 1980 PPID 1 bash
@@@

[Load] SAXReaderNotAvailable: No parsers found

@@@
Traceback (most recent call last):
File "hs/cocoa.pyc", line 70, in doRun

File "dupeguru/app.pyc", line 191, in
File
"dupeguru/app_pe_cocoa.pyc", line 170, in _do_load
File
"dupeguru/results.pyc", line 168, in load_from_xml
File
"xml/sax/init.pyc", line 93, in make_parser
SAXReaderNotAvailable: No
parsers found

Relevant Console logs:

Jul 6 10:52:15 Macintosh-2
[0x0-0x788b884].com.hardcoded_software.dupeguru_pe[44224]: WARNING The
picture /Users/carladesjeanbastian/Pictures/iPhoto
Library/Modified/2008/001/DSCN0177.JPG could not be read
Jul 6 10:52:38
Macintosh-2 [0x0-0x788b884].com.hardcoded_software.dupeguru_pe[44224]:
WARNING The picture /Users/carladesjeanbastian/Pictures/iPhoto
Library/Modified/2008/Sep 12, 2008/DSCN0335.JPG could not be read
Jul 6
16:00:25 Macintosh-2 com.apple.launchd121: Exited:
Terminated
@@@

External application invocation

from GS thread:

What would you think about a way to pass selected or highlighted files to Windows as a command line for external processing? For example, Scooter Software's Beyond Compare (BC) program lets you play 2 MP3s side by side so you can make auditory comparisons -- this is a really powerful way to compare audio content. If I was able to select very similar files from DGME's results list for further examination outside of DGME it would really streamline the duplicate finding process.

Once the external program returns control to DGME, DGME would refresh those specific entries in its list in case any properties of the files have changed. A configurable command line would tell BC to load the two files for comparison in the above example. There could even be a list of programs defined by the user for regular use. Maybe it could come with some example entries to get people started.

Crash on error reporting

@@@
Application Identifier: com.hardcoded_software.dupeguru
Application Version: 2.7.2

Traceback (most recent call last):
File "hsutil/cocoa.pyc", line 45, in _async_run
File "dupeguru/app.pyc", line 209, in do
File "dupeguru/scanner.pyc", line 84, in GetDupeGroups
File "dupeguru/scanner.pyc", line 58, in _getmatches
File "hsfs/_fs.pyc", line 148, in getattr
File "hsfs/auto.pyc", line 63, in _get_info
File "hsfs/_fs.pyc", line 169, in _get_info
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0192' in position 140: ordinal not in range(128)
@@@

Remember selection when switching Power Marker on and off

from email:

When turning PowerMarker? view on and off, maintain the selected file selected and visible in the list window. I found that when there were various reference duplicates, the only way to see them all was to turn off Powermarker, but then I had to scroll the list to find my file again. I hope I explain myself with that one..

Partial content comparison

From GS thread

Although the preliminary size check weeds out the md5 computing of a lot of files, some big files always have the same size, and thus are always required to have their md5 computed, despite the fact that they don't match with one another.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.