From ff88a05cff49ec1a2d6b93c0a420b63537fd6f42 Mon Sep 17 00:00:00 2001
From: pukkandan <pukkandan@gmail.com>
Date: Thu, 4 Feb 2021 22:01:22 +0530
Subject: [PATCH] [pyinst] Automatically detect python architecture and working
 directory

:ci skip all
---
 README.md            |  2 +-
 devscripts/pyinst.py | 43 ++++++++++++++++++++++++++-----------------
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/README.md b/README.md
index 45b0031c6..2ff137e45 100644
--- a/README.md
+++ b/README.md
@@ -106,7 +106,7 @@ ### COMPILE
 
     python -m pip install --upgrade pyinstaller mutagen
 
-For the 64bit version, run `py devscripts\pyinst.py 64` using 64bit python3. Similarly, to install 32bit version, run `py devscripts\pyinst.py 32` using 32bit python (preferably 3)
+Once you have all the necessary dependancies installed, just run `py devscripts\pyinst.py`. The executable will be built for the same architecture (32/64 bit) as the python used to build it. It is strongly reccomended to use python3 although python2.6+ is supported.
 
 You can also build the executable without any version info or metadata by using:
 
diff --git a/devscripts/pyinst.py b/devscripts/pyinst.py
index a7fb59af0..49a055af3 100644
--- a/devscripts/pyinst.py
+++ b/devscripts/pyinst.py
@@ -1,5 +1,10 @@
+#!/usr/bin/env python
+# coding: utf-8
+
 from __future__ import unicode_literals
 import sys
+import os
+import platform
 
 from PyInstaller.utils.win32.versioninfo import (
     VarStruct, VarFileInfo, StringStruct, StringTable,
@@ -7,13 +12,17 @@
 )
 import PyInstaller.__main__
 
+arch = sys.argv[1] if len(sys.argv) > 1 else platform.architecture()[0][:2]
+assert arch in ('32', '64')
+print('Building %sbit version' % arch)
+_x86 = '_x86' if arch == '32' else ''
 
-assert len(sys.argv) > 1 and sys.argv[1] in ("32", "64")
-_x86 = "_x86" if sys.argv[1] == "32" else ""
-
-FILE_DESCRIPTION = 'Media Downloader%s' % (" (32 Bit)" if _x86 else '')
-SHORT_URLS = {"32": "git.io/JUGsM", "64": "git.io/JLh7K"}
+FILE_DESCRIPTION = 'Media Downloader%s' % (' (32 Bit)' if _x86 else '')
+SHORT_URLS = {'32': 'git.io/JUGsM', '64': 'git.io/JLh7K'}
 
+root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+print('Changing working directory to %s' % root_dir)
+os.chdir(root_dir)
 
 exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec'))
 VERSION = locals()['__version__']
@@ -38,21 +47,21 @@
     kids=[
         StringFileInfo([
             StringTable(
-                "040904B0", [
-                    StringStruct("Comments", "Youtube-dlc%s Command Line Interface." % _x86),
-                    StringStruct("CompanyName", "pukkandan@gmail.com"),
-                    StringStruct("FileDescription", FILE_DESCRIPTION),
-                    StringStruct("FileVersion", VERSION),
-                    StringStruct("InternalName", "youtube-dlc%s" % _x86),
+                '040904B0', [
+                    StringStruct('Comments', 'Youtube-dlc%s Command Line Interface.' % _x86),
+                    StringStruct('CompanyName', 'pukkandan@gmail.com'),
+                    StringStruct('FileDescription', FILE_DESCRIPTION),
+                    StringStruct('FileVersion', VERSION),
+                    StringStruct('InternalName', 'youtube-dlc%s' % _x86),
                     StringStruct(
-                        "LegalCopyright",
-                        "pukkandan@gmail.com | UNLICENSE",
+                        'LegalCopyright',
+                        'pukkandan@gmail.com | UNLICENSE',
                     ),
-                    StringStruct("OriginalFilename", "youtube-dlc%s.exe" % _x86),
-                    StringStruct("ProductName", "Youtube-dlc%s" % _x86),
-                    StringStruct("ProductVersion", "%s%s | %s" % (VERSION, _x86, SHORT_URLS[sys.argv[1]])),
+                    StringStruct('OriginalFilename', 'youtube-dlc%s.exe' % _x86),
+                    StringStruct('ProductName', 'Youtube-dlc%s' % _x86),
+                    StringStruct('ProductVersion', '%s%s | %s' % (VERSION, _x86, SHORT_URLS[arch])),
                 ])]),
-        VarFileInfo([VarStruct("Translation", [0, 1200])])
+        VarFileInfo([VarStruct('Translation', [0, 1200])])
     ]
 )