55import datetime
66import json
77import locale
8-
9- import PySide6.QtGui
10- from mutagen.easyid3 import EasyID3
11- import mutagen.id3
12- import mutagen.flac
13- import mutagen.mp3
14- import mutagen.mp4
15- import numpy
168import os
179import pathlib
18- import py7zr
1910import platform
2011import re
2112import shutil
22- import send2trash
2313import sys
2414import tarfile
25- import time
2615import threading
27- import psutil
16+ import time
2817import zipfile
18+ import chardet
19+ import mutagen.flac
20+ import mutagen.id3
21+ import mutagen.mp3
22+ import mutagen.mp4
23+ import numpy
24+ import psutil
25+ import py7zr
2926import pyqtgraph
30- from PySide6.QtCore import (QCoreApplication, QByteArray, QMetaObject, QRect, Qt, Signal, QSize, QFile, QEvent, QFileInfo, QTimer, QLocale, QTranslator, QLibraryInfo, QThread, QDate, QObject)
31- from PySide6.QtGui import (QAction, QFont, QStandardItem, QStandardItemModel, QDesktopServices, QCursor, QPixmap, QPixmapCache, QIcon, QImage, QGuiApplication, QColor, QMouseEvent, QDropEvent)
32- from PySide6.QtWidgets import (QApplication, QCheckBox, QLabel, QListView, QLineEdit, QMainWindow, QPlainTextEdit, QPushButton, QTabWidget, QTreeView, QWidget, QFileSystemModel, QMenu, QAbstractItemView, QDialog, QDialogButtonBox, QFileIconProvider, QGridLayout, QScrollArea, QCalendarWidget, QMenuBar)
27+ import send2trash
3328from PySide6.QtCharts import (QChart, QChartView, QPieSeries, QPieSlice)
29+ from PySide6.QtCore import (QCoreApplication, QByteArray, QMetaObject, QRect, Qt, Signal, QSize, QFile, QEvent,
30+ QFileInfo, QTimer, QLocale, QTranslator, QThread, QDate)
31+ from PySide6.QtGui import (QFont, QStandardItem, QStandardItemModel, QDesktopServices, QCursor, QPixmap, QPixmapCache,
32+ QIcon, QImage, QGuiApplication, QColor)
33+ from PySide6.QtWidgets import (QApplication, QCheckBox, QLabel, QListView, QLineEdit, QMainWindow, QPlainTextEdit,
34+ QPushButton, QTabWidget, QTreeView, QWidget, QFileSystemModel, QMenu, QAbstractItemView,
35+ QDialog, QDialogButtonBox, QFileIconProvider, QGridLayout, QScrollArea, QCalendarWidget)
36+ from mutagen.easyid3 import EasyID3
3437
3538BackupNowPath = [u'']
3639PathListory = [u'']
@@ -1957,6 +1960,7 @@ def __init__(self):
19571960
19581961 def icon(self, fileInfo):
19591962 AcceptFileType = ('.svg', '.jpg', '.jpeg', '.png', '.bmp', '.gif', '.rgb', '.tiff', '.xbm', '.pbm', '.pgm', '.ppm')
1963+ self.fileInfo = fileInfo
19601964 try:
19611965 if fileInfo.isFile():
19621966 if fileInfo.filePath().lower().endswith(AcceptFileType):
@@ -1989,7 +1993,7 @@ def LoadFLAC(self, path):
19891993 self.loader.setCacheLimit(100)
19901994 return QIcon(img.scaled(64, 64))
19911995 except Exception as E:
1992- return QFileIconProvider.icon(self, fileInfo)
1996+ return QFileIconProvider.icon(self, self. fileInfo)
19931997
19941998 def LoadMP3(self, path):
19951999 try:
@@ -1999,7 +2003,7 @@ def LoadMP3(self, path):
19992003 self.loader.setCacheLimit(100)
20002004 return QIcon(img.scaled(64, 64))
20012005 except Exception as E:
2002- return QFileIconProvider.icon(self, fileInfo)
2006+ return QFileIconProvider.icon(self, self. fileInfo)
20032007
20042008 def LoadM4A(self, path):
20052009 try:
@@ -2009,7 +2013,7 @@ def LoadM4A(self, path):
20092013 self.loader.setCacheLimit(100)
20102014 return QIcon(img.scaled(64, 64))
20112015 except Exception as E:
2012- return QFileIconProvider.icon(self, fileInfo)
2016+ return QFileIconProvider.icon(self, self. fileInfo)
20132017
20142018class FileSystemListView(QListView):
20152019 def __init__(self, parent, model=QFileSystemModel()):
@@ -2651,7 +2655,20 @@ def OutSideUnArchive(self):
26512655 if self.filePath(DetectFile).endswith('.zip'):
26522656 os.makedirs(self.filePath(DetectFile).replace(os.getcwd(), os.curdir).split('.zip')[0], exist_ok=True)
26532657 with zipfile.ZipFile(self.filePath(DetectFile), 'r') as ExtractZip:
2654- ExtractZip.extractall(path='{}{}{}'.format(os.getcwd(), '/', self.filePath(DetectFile).split(os.getcwd().replace(os.sep, '/'))[-1].split('.zip')[0]))
2658+ bkpath = os.getcwd()
2659+ current_paths = '{}{}{}'.format(os.getcwd(), '/', self.filePath(DetectFile).split(os.getcwd().replace(os.sep, '/'))[-1].split('.zip')[0])
2660+ os.makedirs(current_paths, exist_ok=True)
2661+ os.chdir(current_paths)
2662+ for info in ExtractZip.infolist():
2663+ enc = chardet.detect(info.orig_filename.encode())['encoding']
2664+ try:
2665+ info.filename = info.orig_filename.encode('cp437').decode(enc)
2666+ except:
2667+ info.filename = info.orig_filename.encode(enc).decode(enc)
2668+ if os.sep != "/" and os.sep in info.filename:
2669+ info.filename = info.filename.replace(os.sep, "/")
2670+ ExtractZip.extract(info)
2671+ os.chdir(bkpath)
26552672 if self.filePath(DetectFile).endswith('.tar.gz'):
26562673 os.makedirs(self.filePath(DetectFile).replace(os.getcwd(), os.curdir).split('.tar.gz')[0], exist_ok=True)
26572674 with tarfile.open(self.filePath(DetectFile), 'r') as ExtractTgz:
0 commit comments