> On 7 Jun 2022, at 23:24, Dave <[email protected]> wrote:
>
> Yes, it was probably just a typeo on my part.
>
> I’ve now fixed the majority of cases but still got two strings that look
> identical but fail to match, this time (again by 10cc), “I’m Mandy Fly Me”.
>
> I’m putting money on it being a utf8 problem but I’m stuck on how to handle
> it. It’s probably the single quote in I’m, although it has worked with other
> songs.
>
> Any ideas?
You can use difflib to give you a diff of the two strings:
:>>> print('\n'.join(difflib.unified_diff('abc', 'adc')))
---
+++
@@ -1,3 +1,3 @@
a
-b
+d
c
:>>>
The docs talk about lines, but difflib works on sequence. I use it a lot to find
differences within lines.
Barry
>
> All the Best
> Cheers
> Dave
>
> Here is the whole function/method or whatever it’s called in Python:
>
> ################################################################################
> #
> # checkMusicFiles
> #
> ################################################################################
> def checkMusicFiles(theBaseMusicLibraryFolder):
> myArtistDict = []
>
> #
> # Loop thru Artists Folder
> #
> myArtistsFoldlerList = getFolderList(theBaseMusicLibraryFolder)
> myArtistCount = 0
> for myArtistFolder in myArtistsFoldlerList:
> print('Artist: ' + myArtistFolder)
> #
> # Loop thru Albums Folder
> #
> myAlbumList = getFolderList(theBaseMusicLibraryFolder + myArtistFolder)
> for myAlbum in myAlbumList:
> print('Album: ' + myAlbum)
>
> #
> # Loop thru Tracks (Files) Folder
> #
> myAlbumPath = theBaseMusicLibraryFolder + myArtistFolder + '/' +
> myAlbum + '/'
> myFilesList = getFileList(myAlbumPath)
> for myFile in myFilesList:
> myFilePath = myAlbumPath + myFile
> myID3 = eyed3.load(myFilePath)
> if myID3 is None:
> continue
>
> myArtistName = myID3.tag.artist
> if myArtistName is None:
> continue
>
> myAlbumName = myID3.tag.album
> if myAlbumName is None:
> continue
>
> myTitleName = myID3.tag.title
> if myTitleName is None:
> continue
>
> myCompareFileName = myFile[0:-4]
> if myCompareFileName[0].isdigit() and
> myCompareFileName[1].isdigit():
> myCompareFileName = myFile[3:-4]
>
> if myCompareFileName != myTitleName:
> myLength1 = len(myCompareFileName)
> myLength2 = len(myTitleName)
> print('File Name Mismatch - Artist: [' + myArtistName + ']
> Album: ['+ myAlbumName + '] Track: [' + myTitleName + '] File: [' +
> myCompareFileName + ']')
> if (myLength1 == myLength2):
> print('lengths match: ',myLength1)
> else:
> print('lengths mismatch: ',myLength1,' ',myLength2)
>
> print(' ')
>
>
>
>
> return myArtistsFoldlerList
>
>
>
>
>
>
>> On 8 Jun 2022, at 00:07, MRAB <[email protected]> wrote:
>>
>> On 2022-06-07 21:23, Dave wrote:
>>> Thanks a lot for this! isDigit was the method I was looking for and
>>> couldn’t find.
>>> I have another problem related to this, the following code uses the code
>>> you just sent. I am getting a files ID3 tags using eyed3, this part seems
>>> to work and I get expected values in this case myTitleName (Track name) is
>>> set to “Deadlock Holiday” and myCompareFileName is set to “01 Deadlock
>>> Holiday” (File Name with the Track number prepended). The is digit test
>>> works and myCompareFileName is set to “Deadlock Holiday”, so they should
>>> match, right?
>> OT, but are you sure about that name? Isn't it "Dreadlock Holiday" (by 10cc)?
>>
>> [snip]
>> --
>> https://mail.python.org/mailman/listinfo/python-list
>
> --
> https://mail.python.org/mailman/listinfo/python-list
--
https://mail.python.org/mailman/listinfo/python-list