diff --git a/picard/coverart/__init__.py b/picard/coverart/__init__.py index 5554b7089..7731bea8c 100644 --- a/picard/coverart/__init__.py +++ b/picard/coverart/__init__.py @@ -174,7 +174,7 @@ class CoverArt: # local files if coverartimage.url and coverartimage.url.scheme() == 'file': try: - path = coverartimage.url.path() + path = coverartimage.url.toLocalFile() with open(path, 'rb') as file: self._set_metadata(coverartimage, file.read()) except IOError as ioexcept: diff --git a/picard/coverart/image.py b/picard/coverart/image.py index 3db705f12..67b3e4379 100644 --- a/picard/coverart/image.py +++ b/picard/coverart/image.py @@ -431,7 +431,7 @@ class LocalFileCoverArtImage(CoverArtImage): def __init__(self, filepath, types=None, comment='', support_types=False, support_multi_types=False): - url = 'file://' + filepath + url = QUrl.fromLocalFile(filepath).toString() super().__init__(url=url, types=types, comment=comment) self.support_types = support_types self.support_multi_types = support_multi_types diff --git a/test/test_coverart_image.py b/test/test_coverart_image.py index 1f10b6489..de03d3512 100644 --- a/test/test_coverart_image.py +++ b/test/test_coverart_image.py @@ -1,10 +1,12 @@ #!/usr/bin/env python # coding: utf-8 +import unittest + from test.picardtestcase import ( PicardTestCase, create_fake_png, ) - +from picard.const.sys import IS_WIN from picard.coverart.image import ( CoverArtImage, LocalFileCoverArtImage, @@ -100,3 +102,9 @@ class LocalFileCoverArtImageTest(PicardTestCase): image = LocalFileCoverArtImage(path, support_multi_types=True) self.assertFalse(image.support_types) self.assertTrue(image.support_multi_types) + + @unittest.skipUnless(IS_WIN, "windows test") + def test_windows_path(self): + path = 'C:\\Music\\somefile.mp3' + image = LocalFileCoverArtImage(path) + self.assertEqual(image.url.toLocalFile(), 'C:/Music/somefile.mp3')