Jump to content
LaunchBox Community Forums

Duplicate images and LaunchBox 7.10-beta-2


Pacman56

Recommended Posts

Good morning @Jason Carr

Yesterday I downloaded 7.10-beta-2 and started beta testing the new duplicate image prevention functionality.

Prior to start the download metadata and media from within LaunchBox, I made sure that no duplicate images were present in my Images folder.
After running the download metadata and media against my "Amstrad CPC" Platform using the second option (Yes, but do not replace any existing fields or media),  a considerable amount of duplicate images (2040 images) were created in the "LaunchBox\Images\Amstrad CPC" folder.

Here is a text file containing the list of these duplicates with their CRC32.

Amstrad CPC (3).txt

I will do more in-depth testing for this duplicate images problem with that same platform by re-doing these test while isolating if these duplicates come from the LaunchBox games database or Emumovies or both and post my results.

 

Link to comment
Share on other sites

I just finished re-testing the "download metadata and media" while isolating if these duplicates come from the LaunchBox games database or Emumovies.

Here are the results:

  1. LaunchBox Database Only: When running "download metadata and media" and excluding Emumovies from the download process, no duplicate images are downloaded.
  2. Emumovies Only: When running "download metadata and media" and excluding the LaunchBox Games database checkboxes from the download process, 1020 images (which already exist on my system) will be re-downloaded. :(

The good news is that the CRC32 method you created on the games database is doing job perfectly ;) but there appear to be a problem with that method on the Emumovies API which is probably out of your control.

Here is a screenshot with hash information of one of these 1020 duplicate files.
5905fcf3b46b3_2017-04-3011_03_57-10thFrame-02.png...Properties.thumb.png.8015fe387a52bc94721b512c458c4b05.png

  • Like 2
Link to comment
Share on other sites

@Jason Carr Just got Beta 3 and I must say... Holy hell in a handbasket is it SO SO SOOOOO much faster on startup. Not quite as fast as yours on the stream but it's very close so a BIG win there. The only oddity I can find is that when I select a platform category it makes the confirmation chime twice, once when I first hit the button and a second time when it actually switches to the category. Otherwise, the selection is fast and responsive.

It also seems to be switching views WAY faster, essentially instantly now. Was that intentional or just a happy side effect? I:D. I LOVE IT!

Edited by cammelspit
  • Like 1
Link to comment
Share on other sites

The moral of the story is to not switch categories too fast yet. :P

Object reference not set to an instance of an object.

App:     Big Box
Version: 7.10-beta-3
Type:    System.NullReferenceException
Site:    Boolean (Unbroken.LaunchBox.Wpf.BigBox.ViewModels.FiltersViewModelBase, Unbroken.LaunchBox.Data.Game)
Source:  BigBox

   at (FiltersViewModelBase , Game )
   at Unbroken.LaunchBox.Wpf.BigBox.ViewModels.FiltersViewModelBase.<selectionChangedTimer_Elapsed>b__153_3(Game game)
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at (Platform , IEnumerable`1 )
   at Unbroken.LaunchBox.Wpf.BigBox.ViewModels.FilterDetailsViewModel.GetDetails(Platform platform, IEnumerable`1 g)
   at Unbroken.LaunchBox.Wpf.BigBox.ViewModels.FilterDetailsViewModel..ctor(Platform platform, IEnumerable`1 games)
   at (FiltersViewModelBase )
   at Unbroken.LaunchBox.Wpf.BigBox.ViewModels.FiltersViewModelBase.<selectionChangedTimer_Elapsed>b__153_0()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Recent Log:

   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:07:56 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:07:58 PM Music.StopAndResumeBackground Start
   1:07:58 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:07:58 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:07:58 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:07:58 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:07:59 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:07:59 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:07:59 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:07:59 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:08:01 PM Music.StopAndResumeBackground Start
   1:08:04 PM Music.StopAndResumeBackground Start
   1:08:06 PM Music.Pause Start
   1:09:25 PM Music.Resume Start
   1:09:27 PM Music.StopAndResumeBackground Start
   1:09:27 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:09:27 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:09:27 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:09:27 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:09:28 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:09:28 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:09:28 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:09:28 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:09:29 PM Music.StopAndResumeBackground Start
   1:09:29 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:09:29 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:09:29 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:09:29 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:09:31 PM Music.StopAndResumeBackground Start
   1:09:31 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:09:31 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:09:31 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:09:31 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:09:32 PM VlcMediaPlayer.Dispose(bool disposing) HandleManager.Remove
   1:09:32 PM VlcMediaPlayer.Dispose(bool disposing) EventManager.Detach
   1:09:32 PM VlcMediaPlayer.Dispose(bool disposing) Free
   1:09:32 PM VlcMediaPlayer.Dispose(bool disposing) ReleaseMediaPlayerFunction
   1:10:11 PM Exception

 

Link to comment
Share on other sites

You have cut the load time in half. Awesome.
 

But you might want to add a check to see if the startup video is still playing to allow it to complete before displaying UI or pressing a any Key to go right to the UI.

Glad i was able to watch the live stream today.  

Link to comment
Share on other sites

@Jason Carr

I did a little more testing regarding the duplicate image prevention feature with 7.10-beta-3 and just ran across a situation where a duplicate image comes consistently from the LaunchBox games database rather than EmuMovies. :(

Knowing that you have a lot on your plate, I'm gonna try to provide as much information as possible so that can easily reproduce the problem from your end. This instance of the problem is happening with the "Mattel Intellivision" platform.

Here's how you should be able to reproduce the problem:

  1. Replace your "Mattel Intellivision.xml" with the one I provided below.
  2. Start LaunchBox and select the game "Thunder Castle" from the games list
  3. Start the "Download Metadata and Media..."
  4. Accept all default but Exclude EmuMovies from the download process, the select "Yes, but do not replace any existing fields or media", then click Finish

Each time you repeat step 3-4, a new duplicate "Thunder Castle-0x.png" will be created as seen below.

Auditing Media...
Duplicate CRC32: [2ed327e6]
  File: [\\PC-ARCADE\LaunchBox\Images\Mattel Intellivision\Clear Logo\Thunder Castle-01.png]
  File: [\\PC-ARCADE\LaunchBox\Images\Mattel Intellivision\Clear Logo\Thunder Castle-02.png]
  File: [\\PC-ARCADE\LaunchBox\Images\Mattel Intellivision\Clear Logo\Thunder Castle-03.png]

 

5907b3045e479_2017-05-0118_13_01-ThunderCastle-03.png...Properties.thumb.png.08d9c7cbe98691b4e1b7d698718f5fb8.png

Mattel Intellivision.xml

Link to comment
Share on other sites

13 minutes ago, Jason Carr said:

Thanks @Pacman56; does that image get deleted when running the Clean Up Images process?

I'm running the Clean Up Images process now but this will take some time to complete.

Before running the clean up images, I backed-up my Entire LB folder, re-started LB and tried to reproduce the problem again to recreate those dups I had deleted myself.
For some unknown reason, duplicates are no longer created when updating metadata for that game. I am speechless. :S lol

 

Link to comment
Share on other sites

@Jason Carr would it be possible for launchbox/big box to add a flag to the update installer to skip DirectX install? since we already know the user has installed Lunchbox and Big Box so they must have Direct X already installed? or is that not possible? that's the only time i have to bring out a keyboard to press yes/no on the direct x part and since i already have it i rather we just skip it.

 

What i mean is when Launchbox/Big Box triggers the update installation process can we not pass a flag like -nodirectx that installer will check and if its there skip the directx install part?

Edited by emko
Link to comment
Share on other sites

Just wanted to mention how well the duplicate image feature is working. I saved 25GB and just about 60,000 images total. So far I can't tell if any other images have been removed erroneously but so far, seems to work well. I also haven't found any dupes that were not removed. I will let you know if I can find anything. Thank you very much for this one! Long time coming but worth the wait for sure! :)

  • Like 2
Link to comment
Share on other sites

  • 4 weeks later...

From my experience the only way to prevent dupe images is:

Start fresh and download all metadata from only Emumovies.

Do an image clean. You should find a heap of dupes still. (Same if you only downloaded from Launchbox DB)

Now audit each system and arrange an image column descending, highlight all roms with 0 images and download metadata from the Launchbox DB for them for only that image type.
Repeat for each column, and each system.....

I did try using the cleanup tool ( and 2 others) on my Mame clear logos which took it down to 156mb, but after I used the above method the same folder is only 60mb.

 

One would think that the final option when importing images "Yes, but do not update games with existing metadata" (or along those lines) would still download images for empty fields, but it literally wont touch a game if it has any type of metadata attached to it.

The option "Yes, but do not replace any existing fields." only really works if you choose to download solely from LB or EM. If you choose both it will result in downloading the same image from LB and EM with different names (most of the time)

So I guess if you used my above method you could quickly scan for meta updates if you chose "Yes, but do not replace any existing fields." and made sure you were only downloading from your "primary"  server ( in my instance EM)

Then to check for LB updates you'd have to do the audit per platform per column thing....

 

Edited by syntax_X
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...