mirror of
				https://github.com/k4yt3x/video2x.git
				synced 2025-10-31 04:40:59 +01:00 
			
		
		
		
	formatted setup script with black
This commit is contained in:
		
							parent
							
								
									9e8e95803f
								
							
						
					
					
						commit
						cc89b0aac5
					
				| @ -45,33 +45,47 @@ import zipfile | ||||
| # Therefore, they will be installed during the Python dependency | ||||
| #   installation step and imported later in the script. | ||||
| 
 | ||||
| SETUP_VERSION = '2.4.1' | ||||
| SETUP_VERSION = "2.4.1" | ||||
| 
 | ||||
| # global static variables | ||||
| LOCALAPPDATA = pathlib.Path(os.getenv('localappdata')) | ||||
| DRIVER_OPTIONS = ['all', | ||||
|                   'ffmpeg', | ||||
|                   'gifski', | ||||
|                   'waifu2x_caffe', | ||||
|                   'waifu2x_converter_cpp', | ||||
|                   'waifu2x_ncnn_vulkan', | ||||
|                   'srmd_ncnn_vulkan', | ||||
|                   'realsr_ncnn_vulkan', | ||||
|                   'anime4kcpp'] | ||||
| LOCALAPPDATA = pathlib.Path(os.getenv("localappdata")) | ||||
| DRIVER_OPTIONS = [ | ||||
|     "all", | ||||
|     "ffmpeg", | ||||
|     "gifski", | ||||
|     "waifu2x_caffe", | ||||
|     "waifu2x_converter_cpp", | ||||
|     "waifu2x_ncnn_vulkan", | ||||
|     "srmd_ncnn_vulkan", | ||||
|     "realsr_ncnn_vulkan", | ||||
|     "anime4kcpp", | ||||
| ] | ||||
| 
 | ||||
| 
 | ||||
| def parse_arguments(): | ||||
|     """ parse command line arguments | ||||
|     """ | ||||
|     parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) | ||||
|     parser.add_argument('-d', '--driver', help='driver to download and configure', choices=DRIVER_OPTIONS, default='all') | ||||
|     parser.add_argument('-u', '--uninstall', help='uninstall Video2X dependencies from default location', action='store_true') | ||||
|     """parse command line arguments""" | ||||
|     parser = argparse.ArgumentParser( | ||||
|         formatter_class=argparse.ArgumentDefaultsHelpFormatter | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "-d", | ||||
|         "--driver", | ||||
|         help="driver to download and configure", | ||||
|         choices=DRIVER_OPTIONS, | ||||
|         default="all", | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         "-u", | ||||
|         "--uninstall", | ||||
|         help="uninstall Video2X dependencies from default location", | ||||
|         action="store_true", | ||||
|     ) | ||||
|     # parse arguments | ||||
|     return parser.parse_args() | ||||
| 
 | ||||
| 
 | ||||
| class Video2xSetup: | ||||
|     """ install dependencies for video2x video enlarger | ||||
|     """install dependencies for video2x video enlarger | ||||
| 
 | ||||
|     This library is meant to be executed as a stand-alone | ||||
|     script. All files will be installed under %LOCALAPPDATA%\\video2x. | ||||
| @ -86,51 +100,48 @@ class Video2xSetup: | ||||
|         # regardless of which driver to install | ||||
|         # always ensure Python modules are installed and up-to-date | ||||
|         if self.download_python_modules: | ||||
|             print('\nInstalling Python libraries') | ||||
|             print("\nInstalling Python libraries") | ||||
|             self._install_python_requirements() | ||||
| 
 | ||||
|         # if all drivers are to be installed | ||||
|         if self.driver == 'all': | ||||
|             DRIVER_OPTIONS.remove('all') | ||||
|         if self.driver == "all": | ||||
|             DRIVER_OPTIONS.remove("all") | ||||
|             for driver in DRIVER_OPTIONS: | ||||
|                 getattr(self, f'_install_{driver}')() | ||||
|                 getattr(self, f"_install_{driver}")() | ||||
| 
 | ||||
|         # install only the selected driver | ||||
|         else: | ||||
|             getattr(self, f'_install_{self.driver}')() | ||||
|             getattr(self, f"_install_{self.driver}")() | ||||
| 
 | ||||
|         # self._cleanup() | ||||
| 
 | ||||
|     def _install_python_requirements(self): | ||||
|         """ Read requirements.txt and return its content | ||||
|         """ | ||||
|         pip_install('requirements.txt') | ||||
|         """Read requirements.txt and return its content""" | ||||
|         pip_install("requirements.txt") | ||||
| 
 | ||||
|     def _cleanup(self): | ||||
|         """ Cleanup all the temp files downloaded | ||||
|         """ | ||||
|         print('\nCleaning up temporary files') | ||||
|         """Cleanup all the temp files downloaded""" | ||||
|         print("\nCleaning up temporary files") | ||||
| 
 | ||||
|         for file in self.trash: | ||||
|             try: | ||||
|                 if file.is_dir(): | ||||
|                     print(f'Deleting directory: {file}') | ||||
|                     print(f"Deleting directory: {file}") | ||||
|                     shutil.rmtree(file) | ||||
|                 else: | ||||
|                     print(f'Deleting file: {file}') | ||||
|                     print(f"Deleting file: {file}") | ||||
|                     file.unlink() | ||||
|             except Exception: | ||||
|                 print(f'Error deleting: {file}') | ||||
|                 print(f"Error deleting: {file}") | ||||
|                 traceback.print_exc() | ||||
| 
 | ||||
|     def _install_ffmpeg(self): | ||||
|         """ Install FFMPEG | ||||
|         """ | ||||
|         print('\nInstalling FFmpeg') | ||||
|         """Install FFMPEG""" | ||||
|         print("\nInstalling FFmpeg") | ||||
| 
 | ||||
|         import patoolib | ||||
| 
 | ||||
|         latest_release = 'https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z' | ||||
|         latest_release = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z" | ||||
| 
 | ||||
|         ffmpeg_7z = download(latest_release, tempfile.gettempdir()) | ||||
|         self.trash.append(ffmpeg_7z) | ||||
| @ -138,151 +149,183 @@ class Video2xSetup: | ||||
|         # if running in PyInstaller, add sys._MEIPASS\7z to path | ||||
|         # this directory contains 7za.exe and its DLL files | ||||
|         with contextlib.suppress(AttributeError): | ||||
|             os.environ['PATH'] += f';{sys._MEIPASS}\\7z' | ||||
|             os.environ["PATH"] += f";{sys._MEIPASS}\\7z" | ||||
| 
 | ||||
|         ffmpeg_directory = LOCALAPPDATA / 'video2x' / 'ffmpeg' | ||||
|         ffmpeg_directory = LOCALAPPDATA / "video2x" / "ffmpeg" | ||||
| 
 | ||||
|         # (ffmpeg_directory).mkdir(parents=True, exist_ok=True) | ||||
|         # pyunpack.Archive(ffmpeg_7z).extractall(ffmpeg_directory) | ||||
|         if (ffmpeg_directory).exists(): | ||||
|             shutil.rmtree(ffmpeg_directory) | ||||
|         patoolib.extract_archive(str(ffmpeg_7z), outdir=str(LOCALAPPDATA / 'video2x')) | ||||
|         (LOCALAPPDATA / 'video2x' / ffmpeg_7z.stem).rename(ffmpeg_directory) | ||||
|         patoolib.extract_archive(str(ffmpeg_7z), outdir=str(LOCALAPPDATA / "video2x")) | ||||
|         (LOCALAPPDATA / "video2x" / ffmpeg_7z.stem).rename(ffmpeg_directory) | ||||
| 
 | ||||
|     def _install_gifski(self): | ||||
|         print('\nInstalling Gifski') | ||||
|         print("\nInstalling Gifski") | ||||
|         import requests | ||||
| 
 | ||||
|         # Get latest release of Gifski via Github API | ||||
|         releases = requests.get('https://api.github.com/repos/ImageOptim/gifski/releases').json() | ||||
|         releases = requests.get( | ||||
|             "https://api.github.com/repos/ImageOptim/gifski/releases" | ||||
|         ).json() | ||||
|         for release in releases: | ||||
|             for asset in release['assets']: | ||||
|                 if re.search(r'gifski-.*\.tar\.xz', asset['browser_download_url']): | ||||
|                     gifski_tar_xz = download(asset['browser_download_url'], tempfile.gettempdir()) | ||||
|             for asset in release["assets"]: | ||||
|                 if re.search(r"gifski-.*\.tar\.xz", asset["browser_download_url"]): | ||||
|                     gifski_tar_xz = download( | ||||
|                         asset["browser_download_url"], tempfile.gettempdir() | ||||
|                     ) | ||||
|                     self.trash.append(gifski_tar_xz) | ||||
| 
 | ||||
|                     # extract and rename | ||||
|                     with tarfile.open(gifski_tar_xz) as archive: | ||||
|                         archive.extractall(LOCALAPPDATA / 'video2x' / 'gifski') | ||||
|                         archive.extractall(LOCALAPPDATA / "video2x" / "gifski") | ||||
| 
 | ||||
|                     return | ||||
| 
 | ||||
|     def _install_waifu2x_caffe(self): | ||||
|         """ Install waifu2x_caffe | ||||
|         """ | ||||
|         print('\nInstalling waifu2x-caffe') | ||||
|         """Install waifu2x_caffe""" | ||||
|         print("\nInstalling waifu2x-caffe") | ||||
|         import requests | ||||
| 
 | ||||
|         # Get latest release of waifu2x-caffe via GitHub API | ||||
|         latest_release = requests.get('https://api.github.com/repos/lltcggie/waifu2x-caffe/releases/latest').json() | ||||
|         latest_release = requests.get( | ||||
|             "https://api.github.com/repos/lltcggie/waifu2x-caffe/releases/latest" | ||||
|         ).json() | ||||
| 
 | ||||
|         for a in latest_release['assets']: | ||||
|             if 'waifu2x-caffe.zip' in a['browser_download_url']: | ||||
|                 waifu2x_caffe_zip = download(a['browser_download_url'], tempfile.gettempdir()) | ||||
|         for a in latest_release["assets"]: | ||||
|             if "waifu2x-caffe.zip" in a["browser_download_url"]: | ||||
|                 waifu2x_caffe_zip = download( | ||||
|                     a["browser_download_url"], tempfile.gettempdir() | ||||
|                 ) | ||||
|                 self.trash.append(waifu2x_caffe_zip) | ||||
| 
 | ||||
|         with zipfile.ZipFile(waifu2x_caffe_zip) as zipf: | ||||
|             zipf.extractall(LOCALAPPDATA / 'video2x') | ||||
|             zipf.extractall(LOCALAPPDATA / "video2x") | ||||
| 
 | ||||
|     def _install_waifu2x_converter_cpp(self): | ||||
|         """ Install waifu2x_caffe | ||||
|         """ | ||||
|         print('\nInstalling waifu2x-converter-cpp') | ||||
|         """Install waifu2x_caffe""" | ||||
|         print("\nInstalling waifu2x-converter-cpp") | ||||
|         import requests | ||||
| 
 | ||||
|         # Get latest release of waifu2x-caffe via GitHub API | ||||
|         latest_release = requests.get('https://api.github.com/repos/DeadSix27/waifu2x-converter-cpp/releases/latest').json() | ||||
|         latest_release = requests.get( | ||||
|             "https://api.github.com/repos/DeadSix27/waifu2x-converter-cpp/releases/latest" | ||||
|         ).json() | ||||
| 
 | ||||
|         for a in latest_release['assets']: | ||||
|             if re.search(r'waifu2x-DeadSix27-win64_v[0-9]*\.zip', a['browser_download_url']): | ||||
|                 waifu2x_converter_cpp_zip = download(a['browser_download_url'], tempfile.gettempdir()) | ||||
|         for a in latest_release["assets"]: | ||||
|             if re.search( | ||||
|                 r"waifu2x-DeadSix27-win64_v[0-9]*\.zip", a["browser_download_url"] | ||||
|             ): | ||||
|                 waifu2x_converter_cpp_zip = download( | ||||
|                     a["browser_download_url"], tempfile.gettempdir() | ||||
|                 ) | ||||
|                 self.trash.append(waifu2x_converter_cpp_zip) | ||||
| 
 | ||||
|         with zipfile.ZipFile(waifu2x_converter_cpp_zip) as zipf: | ||||
|             zipf.extractall(LOCALAPPDATA / 'video2x' / 'waifu2x-converter-cpp') | ||||
|             zipf.extractall(LOCALAPPDATA / "video2x" / "waifu2x-converter-cpp") | ||||
| 
 | ||||
|     def _install_waifu2x_ncnn_vulkan(self): | ||||
|         """ Install waifu2x-ncnn-vulkan | ||||
|         """ | ||||
|         print('\nInstalling waifu2x-ncnn-vulkan') | ||||
|         """Install waifu2x-ncnn-vulkan""" | ||||
|         print("\nInstalling waifu2x-ncnn-vulkan") | ||||
|         import requests | ||||
| 
 | ||||
|         # Get latest release of waifu2x-ncnn-vulkan via Github API | ||||
|         latest_release = requests.get('https://api.github.com/repos/nihui/waifu2x-ncnn-vulkan/releases/latest').json() | ||||
|         latest_release = requests.get( | ||||
|             "https://api.github.com/repos/nihui/waifu2x-ncnn-vulkan/releases/latest" | ||||
|         ).json() | ||||
| 
 | ||||
|         for a in latest_release['assets']: | ||||
|             if re.search(r'waifu2x-ncnn-vulkan-\d*-windows\.zip', a['browser_download_url']): | ||||
|                 waifu2x_ncnn_vulkan_zip = download(a['browser_download_url'], tempfile.gettempdir()) | ||||
|         for a in latest_release["assets"]: | ||||
|             if re.search( | ||||
|                 r"waifu2x-ncnn-vulkan-\d*-windows\.zip", a["browser_download_url"] | ||||
|             ): | ||||
|                 waifu2x_ncnn_vulkan_zip = download( | ||||
|                     a["browser_download_url"], tempfile.gettempdir() | ||||
|                 ) | ||||
|                 self.trash.append(waifu2x_ncnn_vulkan_zip) | ||||
| 
 | ||||
|         # extract and rename | ||||
|         waifu2x_ncnn_vulkan_directory = LOCALAPPDATA / 'video2x' / 'waifu2x-ncnn-vulkan' | ||||
|         waifu2x_ncnn_vulkan_directory = LOCALAPPDATA / "video2x" / "waifu2x-ncnn-vulkan" | ||||
|         with zipfile.ZipFile(waifu2x_ncnn_vulkan_zip) as zipf: | ||||
|             zipf.extractall(LOCALAPPDATA / 'video2x') | ||||
|             zipf.extractall(LOCALAPPDATA / "video2x") | ||||
| 
 | ||||
|             # if directory already exists, remove it | ||||
|             if waifu2x_ncnn_vulkan_directory.exists(): | ||||
|                 shutil.rmtree(waifu2x_ncnn_vulkan_directory) | ||||
| 
 | ||||
|             # rename the newly extracted directory | ||||
|             (LOCALAPPDATA / 'video2x' / zipf.namelist()[0]).rename(waifu2x_ncnn_vulkan_directory) | ||||
|             (LOCALAPPDATA / "video2x" / zipf.namelist()[0]).rename( | ||||
|                 waifu2x_ncnn_vulkan_directory | ||||
|             ) | ||||
| 
 | ||||
|     def _install_srmd_ncnn_vulkan(self): | ||||
|         """ Install srmd-ncnn-vulkan | ||||
|         """ | ||||
|         print('\nInstalling srmd-ncnn-vulkan') | ||||
|         """Install srmd-ncnn-vulkan""" | ||||
|         print("\nInstalling srmd-ncnn-vulkan") | ||||
|         import requests | ||||
| 
 | ||||
|         # Get latest release of srmd-ncnn-vulkan via Github API | ||||
|         latest_release = requests.get('https://api.github.com/repos/nihui/srmd-ncnn-vulkan/releases/latest').json() | ||||
|         latest_release = requests.get( | ||||
|             "https://api.github.com/repos/nihui/srmd-ncnn-vulkan/releases/latest" | ||||
|         ).json() | ||||
| 
 | ||||
|         for a in latest_release['assets']: | ||||
|             if re.search(r'srmd-ncnn-vulkan-\d*-windows\.zip', a['browser_download_url']): | ||||
|                 srmd_ncnn_vulkan_zip = download(a['browser_download_url'], tempfile.gettempdir()) | ||||
|         for a in latest_release["assets"]: | ||||
|             if re.search( | ||||
|                 r"srmd-ncnn-vulkan-\d*-windows\.zip", a["browser_download_url"] | ||||
|             ): | ||||
|                 srmd_ncnn_vulkan_zip = download( | ||||
|                     a["browser_download_url"], tempfile.gettempdir() | ||||
|                 ) | ||||
|                 self.trash.append(srmd_ncnn_vulkan_zip) | ||||
| 
 | ||||
|         # extract and rename | ||||
|         srmd_ncnn_vulkan_directory = LOCALAPPDATA / 'video2x' / 'srmd-ncnn-vulkan' | ||||
|         srmd_ncnn_vulkan_directory = LOCALAPPDATA / "video2x" / "srmd-ncnn-vulkan" | ||||
|         with zipfile.ZipFile(srmd_ncnn_vulkan_zip) as zipf: | ||||
|             zipf.extractall(LOCALAPPDATA / 'video2x') | ||||
|             zipf.extractall(LOCALAPPDATA / "video2x") | ||||
| 
 | ||||
|             # if directory already exists, remove it | ||||
|             if srmd_ncnn_vulkan_directory.exists(): | ||||
|                 shutil.rmtree(srmd_ncnn_vulkan_directory) | ||||
| 
 | ||||
|             # rename the newly extracted directory | ||||
|             (LOCALAPPDATA / 'video2x' / zipf.namelist()[0]).rename(srmd_ncnn_vulkan_directory) | ||||
|             (LOCALAPPDATA / "video2x" / zipf.namelist()[0]).rename( | ||||
|                 srmd_ncnn_vulkan_directory | ||||
|             ) | ||||
| 
 | ||||
|     def _install_realsr_ncnn_vulkan(self): | ||||
|         """ Install realsr-ncnn-vulkan | ||||
|         """ | ||||
|         print('\nInstalling realsr-ncnn-vulkan') | ||||
|         """Install realsr-ncnn-vulkan""" | ||||
|         print("\nInstalling realsr-ncnn-vulkan") | ||||
|         import requests | ||||
| 
 | ||||
|         # Get latest release of realsr-ncnn-vulkan via Github API | ||||
|         latest_release = requests.get('https://api.github.com/repos/nihui/realsr-ncnn-vulkan/releases/latest').json() | ||||
|         latest_release = requests.get( | ||||
|             "https://api.github.com/repos/nihui/realsr-ncnn-vulkan/releases/latest" | ||||
|         ).json() | ||||
| 
 | ||||
|         for a in latest_release['assets']: | ||||
|             if re.search(r'realsr-ncnn-vulkan-\d*-windows\.zip', a['browser_download_url']): | ||||
|                 realsr_ncnn_vulkan_zip = download(a['browser_download_url'], tempfile.gettempdir()) | ||||
|         for a in latest_release["assets"]: | ||||
|             if re.search( | ||||
|                 r"realsr-ncnn-vulkan-\d*-windows\.zip", a["browser_download_url"] | ||||
|             ): | ||||
|                 realsr_ncnn_vulkan_zip = download( | ||||
|                     a["browser_download_url"], tempfile.gettempdir() | ||||
|                 ) | ||||
|                 self.trash.append(realsr_ncnn_vulkan_zip) | ||||
| 
 | ||||
|         # extract and rename | ||||
|         realsr_ncnn_vulkan_directory = LOCALAPPDATA / 'video2x' / 'realsr-ncnn-vulkan' | ||||
|         realsr_ncnn_vulkan_directory = LOCALAPPDATA / "video2x" / "realsr-ncnn-vulkan" | ||||
|         with zipfile.ZipFile(realsr_ncnn_vulkan_zip) as zipf: | ||||
|             zipf.extractall(LOCALAPPDATA / 'video2x') | ||||
|             zipf.extractall(LOCALAPPDATA / "video2x") | ||||
| 
 | ||||
|             # if directory already exists, remove it | ||||
|             if realsr_ncnn_vulkan_directory.exists(): | ||||
|                 shutil.rmtree(realsr_ncnn_vulkan_directory) | ||||
| 
 | ||||
|             # rename the newly extracted directory | ||||
|             (LOCALAPPDATA / 'video2x' / zipf.namelist()[0]).rename(realsr_ncnn_vulkan_directory) | ||||
|             (LOCALAPPDATA / "video2x" / zipf.namelist()[0]).rename( | ||||
|                 realsr_ncnn_vulkan_directory | ||||
|             ) | ||||
| 
 | ||||
|     def _install_anime4kcpp(self): | ||||
|         """ Install Anime4KCPP | ||||
|         """ | ||||
|         print('\nInstalling Anime4KCPP') | ||||
|         """Install Anime4KCPP""" | ||||
|         print("\nInstalling Anime4KCPP") | ||||
| 
 | ||||
|         import patoolib | ||||
|         import requests | ||||
| @ -290,28 +333,35 @@ class Video2xSetup: | ||||
|         # get latest release of Anime4KCPP via Github API | ||||
|         # at the time of writing this portion, Anime4KCPP doesn't yet have a stable release | ||||
|         # therefore releases/latest won't work | ||||
|         latest_release = requests.get('https://api.github.com/repos/TianZerL/Anime4KCPP/releases/latest').json() | ||||
|         latest_release = requests.get( | ||||
|             "https://api.github.com/repos/TianZerL/Anime4KCPP/releases/latest" | ||||
|         ).json() | ||||
| 
 | ||||
|         for a in latest_release['assets']: | ||||
|             if re.search(r'Anime4KCPP_CLI-.*-Win64-msvc\.7z', a['browser_download_url']): | ||||
|                 anime4kcpp_7z = download(a['browser_download_url'], tempfile.gettempdir()) | ||||
|         for a in latest_release["assets"]: | ||||
|             if re.search( | ||||
|                 r"Anime4KCPP_CLI-.*-Win64-msvc\.7z", a["browser_download_url"] | ||||
|             ): | ||||
|                 anime4kcpp_7z = download( | ||||
|                     a["browser_download_url"], tempfile.gettempdir() | ||||
|                 ) | ||||
|                 self.trash.append(anime4kcpp_7z) | ||||
| 
 | ||||
|         # if running in PyInstaller, add sys._MEIPASS\7z to path | ||||
|         # this directory contains 7za.exe and its DLL files | ||||
|         with contextlib.suppress(AttributeError): | ||||
|             os.environ['PATH'] += f';{sys._MEIPASS}\\7z' | ||||
|             os.environ["PATH"] += f";{sys._MEIPASS}\\7z" | ||||
| 
 | ||||
|         # (LOCALAPPDATA / 'video2x' / 'anime4kcpp').mkdir(parents=True, exist_ok=True) | ||||
|         # pyunpack.Archive(anime4kcpp_7z).extractall(LOCALAPPDATA / 'video2x' / 'anime4kcpp') | ||||
|         if (LOCALAPPDATA / 'video2x' / 'anime4kcpp').exists(): | ||||
|             shutil.rmtree(LOCALAPPDATA / 'video2x' / 'anime4kcpp') | ||||
|         patoolib.extract_archive(str(anime4kcpp_7z), outdir=str(LOCALAPPDATA / 'video2x' / 'anime4kcpp')) | ||||
|         if (LOCALAPPDATA / "video2x" / "anime4kcpp").exists(): | ||||
|             shutil.rmtree(LOCALAPPDATA / "video2x" / "anime4kcpp") | ||||
|         patoolib.extract_archive( | ||||
|             str(anime4kcpp_7z), outdir=str(LOCALAPPDATA / "video2x" / "anime4kcpp") | ||||
|         ) | ||||
| 
 | ||||
| 
 | ||||
| def download(url, save_path, chunk_size=4096): | ||||
|     """ Download file to local with requests library | ||||
|     """ | ||||
|     """Download file to local with requests library""" | ||||
|     from tqdm import tqdm | ||||
|     import requests | ||||
| 
 | ||||
| @ -325,14 +375,14 @@ def download(url, save_path, chunk_size=4096): | ||||
| 
 | ||||
|     # get file name | ||||
|     file_name = None | ||||
|     if 'content-disposition' in stream.headers: | ||||
|         disposition = stream.headers['content-disposition'] | ||||
|     if "content-disposition" in stream.headers: | ||||
|         disposition = stream.headers["content-disposition"] | ||||
|         with contextlib.suppress(IndexError): | ||||
|             file_name = re.findall("filename=(.+)", disposition)[0].strip('"') | ||||
| 
 | ||||
|     if file_name is None: | ||||
|         # output_file = f'{save_path}\\{stream.url.split("/")[-1]}' | ||||
|         output_file = save_path / stream.url.split('/')[-1] | ||||
|         output_file = save_path / stream.url.split("/")[-1] | ||||
|     else: | ||||
|         output_file = save_path / file_name | ||||
| 
 | ||||
| @ -341,17 +391,17 @@ def download(url, save_path, chunk_size=4096): | ||||
| 
 | ||||
|     # get total size for progress bar if provided in headers | ||||
|     total_size = 0 | ||||
|     if 'content-length' in stream.headers: | ||||
|         total_size = int(stream.headers['content-length']) | ||||
|     if "content-length" in stream.headers: | ||||
|         total_size = int(stream.headers["content-length"]) | ||||
| 
 | ||||
|     # print download information summary | ||||
|     print(f'Downloading: {url}') | ||||
|     print(f'Total size: {total_size}') | ||||
|     print(f'Chunk size: {chunk_size}') | ||||
|     print(f'Saving to: {output_file}') | ||||
|     print(f"Downloading: {url}") | ||||
|     print(f"Total size: {total_size}") | ||||
|     print(f"Chunk size: {chunk_size}") | ||||
|     print(f"Saving to: {output_file}") | ||||
| 
 | ||||
|     # Write content into file | ||||
|     with open(output_file, 'wb') as output: | ||||
|     with open(output_file, "wb") as output: | ||||
|         with tqdm(total=total_size, ascii=True) as progress_bar: | ||||
|             for chunk in stream.iter_content(chunk_size=chunk_size): | ||||
|                 if chunk: | ||||
| @ -363,16 +413,18 @@ def download(url, save_path, chunk_size=4096): | ||||
| 
 | ||||
| 
 | ||||
| def pip_install(file): | ||||
|     """ Install python package via python pip module | ||||
|     """Install python package via python pip module | ||||
| 
 | ||||
|     pip.main() is not available after pip 9.0.1, thus | ||||
|     pip module is not used in this case. | ||||
|     """ | ||||
|     return subprocess.run([sys.executable, '-m', 'pip', 'install', '-U', '-r', file]).returncode | ||||
|     return subprocess.run( | ||||
|         [sys.executable, "-m", "pip", "install", "-U", "-r", file] | ||||
|     ).returncode | ||||
| 
 | ||||
| 
 | ||||
| if __name__ != '__main__': | ||||
|     raise ImportError('video2x_setup cannot be imported') | ||||
| if __name__ != "__main__": | ||||
|     raise ImportError("video2x_setup cannot be imported") | ||||
| 
 | ||||
| try: | ||||
|     # set default exit code | ||||
| @ -382,42 +434,47 @@ try: | ||||
|     start_time = time.time() | ||||
| 
 | ||||
|     # check platform | ||||
|     if platform.system() != 'Windows': | ||||
|         print('This script is currently only compatible with Windows') | ||||
|     if platform.system() != "Windows": | ||||
|         print("This script is currently only compatible with Windows") | ||||
|         EXIT_CODE = 1 | ||||
|         sys.exit(1) | ||||
| 
 | ||||
|     # parse command line arguments | ||||
|     args = parse_arguments() | ||||
|     print('Video2X Setup Script') | ||||
|     print(f'Version: {SETUP_VERSION}') | ||||
|     print("Video2X Setup Script") | ||||
|     print(f"Version: {SETUP_VERSION}") | ||||
| 
 | ||||
|     # uninstall video2x dependencies | ||||
|     if args.uninstall: | ||||
|         if input('Are you sure you want to uninstall all Video2X dependencies? [y/N]: ').lower() == 'y': | ||||
|         if ( | ||||
|             input( | ||||
|                 "Are you sure you want to uninstall all Video2X dependencies? [y/N]: " | ||||
|             ).lower() | ||||
|             == "y" | ||||
|         ): | ||||
|             try: | ||||
|                 print(f'Removing: {LOCALAPPDATA / "video2x"}') | ||||
|                 shutil.rmtree(LOCALAPPDATA / 'video2x') | ||||
|                 print('Successfully uninstalled all dependencies') | ||||
|                 shutil.rmtree(LOCALAPPDATA / "video2x") | ||||
|                 print("Successfully uninstalled all dependencies") | ||||
|             except FileNotFoundError: | ||||
|                 print(f'Dependency folder does not exist: {LOCALAPPDATA / "video2x"}') | ||||
|         else: | ||||
|             print('Uninstallation aborted') | ||||
|             print("Uninstallation aborted") | ||||
| 
 | ||||
|     # run installation | ||||
|     else: | ||||
|         # do not install pip modules if script | ||||
|         # is packaged in exe format | ||||
|         download_python_modules = True | ||||
|         if sys.argv[0].endswith('.exe'): | ||||
|             print('\nScript is packaged as exe, skipping pip module download') | ||||
|         if sys.argv[0].endswith(".exe"): | ||||
|             print("\nScript is packaged as exe, skipping pip module download") | ||||
|             download_python_modules = False | ||||
| 
 | ||||
|         # create setup install instance and run installer | ||||
|         setup = Video2xSetup(args.driver, download_python_modules) | ||||
|         setup.run() | ||||
| 
 | ||||
|         print('\nScript finished successfully') | ||||
|         print("\nScript finished successfully") | ||||
| 
 | ||||
| # let SystemExit signals pass through | ||||
| except SystemExit as e: | ||||
| @ -427,15 +484,15 @@ except SystemExit as e: | ||||
| # user needs to run this with higher privilege | ||||
| except PermissionError: | ||||
|     traceback.print_exc() | ||||
|     print('You might have insufficient privilege for this script to run') | ||||
|     print('Try running this script with Administrator privileges') | ||||
|     print("You might have insufficient privilege for this script to run") | ||||
|     print("Try running this script with Administrator privileges") | ||||
|     EXIT_CODE = 1 | ||||
| 
 | ||||
| # for any exception in the script | ||||
| except Exception: | ||||
|     traceback.print_exc() | ||||
|     print('An error has occurred') | ||||
|     print('Video2X Automatic Setup has failed') | ||||
|     print("An error has occurred") | ||||
|     print("Video2X Automatic Setup has failed") | ||||
| 
 | ||||
|     EXIT_CODE = 1 | ||||
| 
 | ||||
| @ -447,15 +504,15 @@ finally: | ||||
|         setup._cleanup() | ||||
|     except Exception: | ||||
|         traceback.print_exc() | ||||
|         print('An error occurred while trying to cleanup files') | ||||
|         print("An error occurred while trying to cleanup files") | ||||
| 
 | ||||
|     print('Script finished') | ||||
|     print(f'Time taken: {timedelta(seconds=round(time.time() - start_time))}') | ||||
|     print("Script finished") | ||||
|     print(f"Time taken: {timedelta(seconds=round(time.time() - start_time))}") | ||||
| 
 | ||||
|     # if the program is launched as an Windows PE file | ||||
|     # it might be launched from double clicking | ||||
|     # pause the window before it closes automatically | ||||
|     if sys.argv[0].endswith('.exe'): | ||||
|         input('Press [ENTER] to exit script') | ||||
|     if sys.argv[0].endswith(".exe"): | ||||
|         input("Press [ENTER] to exit script") | ||||
| 
 | ||||
|     sys.exit(EXIT_CODE) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user