¿Alguien sabe cómo resolver o solucionar este problema? Seguimiento de la pila desde la consola, que informa un error después de la ejecución:
InstaPy Version: 0.6.9 ._. ._. ._. ._. ._. ._. ._. ._. ._. Workspace in use: "/home/zanettra/InstaPy" Error, unable to determine correct filename for 64bit linux Traceback (most recent call last): File "unfollow.py", line 24, in <module> headless_browser=False) File "/usr/local/lib/python3.6/dist-packages/instapy/instapy.py", line 322, in __init__ self.logger, File "/usr/local/lib/python3.6/dist-packages/instapy/browser.py", line 114, in set_selenium_local_session driver_path = geckodriver_path or get_geckodriver() File "/usr/local/lib/python3.6/dist-packages/instapy/browser.py", line 36, in get_geckodriver sym_path = gdd.download_and_install()[1] File "/usr/local/lib/python3.6/dist-packages/webdriverdownloader/webdriverdownloader.py", line 177, in download_and_install show_progress_bar=show_progress_bar) File "/usr/local/lib/python3.6/dist-packages/webdriverdownloader/webdriverdownloader.py", line 129, in download download_url = self.get_download_url(version, os_name=os_name, bitness=bitness) File "/usr/local/lib/python3.6/dist-packages/webdriverdownloader/webdriverdownloader.py", line 324, in get_download_url raise RuntimeError(info_message) RuntimeError: Error, unable to determine correct filename for 64bit linuxLa solución se publica aquí: https://github.com/leonidessaguisagjr/webdriverdownloader/pull/12
Tienes que cambiar una línea en webdriverdownloader.py de
filename = [name for name in filenames if os_name + bitness in name]para
filename = [name for name in filenames if os_name + bitness in name and name[-3:] != 'asc' ] La ruta en la que se almacenó el archivo en mi sistema fue home/kali/.local/lib/python3.7/site-packages/webdriverdownloader
pip3 install webdriverdriverdownloader para encontrar dónde está almacenado
Este problema no está relacionado con InstaPy sino con webdriverdownloader.py de webdriverdownloader. Para Ubuntu, puede solucionar el problema con sudo apt install firefox-geckodriver ; Otros sistemas operativos tendrán una solución similar para instalar geckodirver.
Para los usuarios de macOS, el problema se debe al nuevo arch ARM en macOS geckodriver-v0.30.0-macos.tar.gz y geckodriver-v0.30.0-macos-aarch64.tar.gz
Versiones disponibles Nov 2021:
['geckodriver-v0.30.0-linux32.tar.gz', 'geckodriver-v0.30.0-linux32.tar.gz.asc', 'geckodriver-v0.30.0-linux64.tar.gz', 'geckodriver-v0.30.0-linux64.tar.gz.asc', 'geckodriver-v0.30 .0-macos-aarch64.tar.gz', 'geckodriver-v0.30.0-macos.tar.gz', 'geckodriver-v0.30.0-win32.zip', 'geckodriver-v0.30.0-win64.zip'] Puede parchear el archivo para GeckoDriverDownloader -> site-packages/webdriverdownloader/webdriverdownloader.py con lo siguiente:
1 │ diff --git a/Users/user/GitHub/InstaPy/venv39/lib/python3.9/site-packages/webdriverdownloader/webdriverdownloader.py b/Users/user/GitHub/InstaPy/venv39/lib/python3.9/ │ site-packages/webdriverdownloader/webdriverdownloader_patch.py 2 │ index bc01c2d..057862a 100644 3 │ --- a/Users/user/GitHub/InstaPy/venv39/lib/python3.9/site-packages/webdriverdownloader/webdriverdownloader.py 4 │ +++ b/Users/user/GitHub/InstaPy/venv39/lib/python3.9/site-packages/webdriverdownloader/webdriverdownloader_patch.py 5 │ @@ -382,6 +382,13 @@ class GeckoDriverDownloader(WebDriverDownloaderBase): 6 │ ) 7 │ logger.error(info_message) 8 │ raise RuntimeError(info_message) 9 │ + # macos is only available for 64bit, 32bit is deprectated 10 │ + # geckodriver is available for x64 and aarch64, this is why the "RuntimeError: Error, unable to determine correct filename for 64bit macos" 11 │ + # geckodriver-v0.30.0-macos.tar.gz 12 │ + # geckodriver-v0.30.0-macos-aarch64.tar.gz 13 │ + if os_name == "macos": 14 │ + bitness = ".tar.gz" # no bitness for macos since it is 64bit only. Use the extension for tar.gz 15 │ + 16 │ if len(filename) > 1: 17 │ filename = [name for name in filenames if os_name + bitness in name] 18 │ if len(filename) != 1:Agregando lo que funcionó para mí en Macos.
Lo más simple que puede hacer es descargar los controladores del último enlace oficial de github y extraer la carpeta zip.
Cree un virtualenv y en la carpeta bin para el virtualenv agregue el ejecutable geckodriver.
También puede agregar manualmente la ruta del geckodriver usando sys.path como se muestra a continuación:
import sys sys.path.insert(0,'/Users/myfolder/Downloads/geckodriver')Pero esto no estaba funcionando para mí por alguna razón. La solución Virtualenv funciona bien.