2 votes

Saisir une capture d'écran de Twitch avec Python

En ce moment, je commence un projet Python qui est censé prendre une capture d'écran de canaux twitch sélectionnés, modifier ces captures d'écran et les mettre sur une interface graphique. L'interface graphique ne devrait pas être un problème, mais j'ai des problèmes avec les captures d'écran.
J'ai trouvé 2 ressources pour gérer la communication avec twitch : le paquet python-twitch et un script appelé ttvsnap ( https://github.com/chfoo/ttvsnap ).
Le paquet ne m'a été d'aucune aide, car je n'ai rien trouvé concernant les captures d'écran. Le script semblait prometteur, mais j'ai rencontré quelques problèmes :

Selon le créateur, ttvsnap prend périodiquement des captures d'écran d'un flux twitch et les place dans un répertoire sélectionné.
Si j'essaie de lancer le script, j'obtiens cette erreur :

~~Traceback (most recent call last):
File "ttvsnap.py", line 13, in <module> import requests
ImportError: No module named 'requests'~~

Effacer "import requests" du script me permet de l'exécuter, mais le script a ensuite un problème pour sélectionner un répertoire. Pour exécuter le script, je suis censé écrire :

Python ttvsnap.py 'streamname here' 'directory here'

L'exemple de répertoire du créateur était './screenshot/', mais avec cette entrée, j'obtiens l'erreur suivante (peut-être parce que je suis sous Windows ?):

Output directory specified is not valid.

En essayant un répertoire comme C:\DevFiles\Screenshots me donne l'erreur suivante :

Invalid drive specification. ###Translated this line since I'm using a German OS
Traceback (most recent call last):
  File "ttvsnap.py", line 176, in <module>
    main()
  File "ttvsnap.py", line 46, in main
    subprocess.check_call(['convert', '-version'])
  File "C:\Program Files (x86)\Python35-32\lib\subprocess.py", line 584, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['convert', '-version']' returned non-zero exit status 4

Toute idée sur la façon de le faire fonctionner ou une ressource différente à utiliser serait très appréciée.

1voto

majidarif Points 3463

Vous ne devriez pas supprimer des éléments d'un projet open source que vous essayez d'utiliser.

Au lieu de cela, installez les paquets manquants,

pip install requests Si tu as un problème avec ça, peut-être que tu n'as pas pip alors il suffit de l'installer.

Ou utilisez ceci python.exe -m pip install requests .


Cette erreur Output directory specified is not valid. est due à cette ligne :

if not os.path.isdir(args.output_dir):
    sys.exit('Output directory specified is not valid.')

Cela signifie généralement que le le répertoire n'existe pas .


Quant à la dernière erreur, elle ne peut pas exécuter la commande convert :

Invalid drive specification. ###Translated this line since I'm using a German OS
Traceback (most recent call last):
  File "ttvsnap.py", line 176, in <module>
    main()
  File "ttvsnap.py", line 46, in main
    subprocess.check_call(['convert', '-version'])
  File "C:\Program Files (x86)\Python35-32\lib\subprocess.py", line 584, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['convert', '-version']' returned non-zero exit status 4

Cela signifie simplement que vous n'avez pas Imagemagick installé. Vous pouvez l'installer en téléchargement de le bon installateur pour votre architecture ici : http://www.imagemagick.org/script/binary-releases.php

Puis installez-le en cochant ces options : enter image description here

Ensuite, essayez et assurez-vous que le convert s'exécute depuis votre terminal. Si ce n'est pas le cas, suivez cette instruction :

Enfin, vous devez définir MAGICK_HOME au chemin d'accès de ImageMagick (par exemple C:\Program Fichiers \ImageMagick -6.7.7-Q16). Vous pouvez le définir dans Ordinateur ‣ Propriétés ‣ Paramètres système avancés ‣ Avancé ‣ Variables d'environnement....

source

0voto

Ryan Townshend Points 2027

Selenium peut être pratique pour naviguer sur un site et faire des captures d'écran.

http://selenium-python.readthedocs.io/

J'ai élaboré un exemple qui devrait faire ce dont vous avez besoin. Lien vers le Gist également : https://gist.github.com/ryantownshend/6449c4d78793f015f3adda22a46f1a19

"""
basic example.

Dirt simple example of using selenium to screenshot a site.

Defaults to using local Firefox install.
Can be setup to use PhantomJS

http://phantomjs.org/download.html

This example will run in both python 2 and 3
"""
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

def main():
    """the main function."""
    driver = webdriver.Firefox()
    # driver = webdriver.PhantomJS()
    driver.get("http://google.com")
    # assert "Python" in driver.title
    elem = driver.find_element_by_name("q")
    elem.clear()
    elem.send_keys("cats")
    elem.send_keys(Keys.RETURN)

    # give the query result time to load
    WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "resultStats"))
    )

    # take the screenshot
    pwd = os.path.dirname(os.path.realpath(__file__))
    driver.save_screenshot(os.path.join(pwd, 'cats.png'))
    driver.close()

if __name__ == '__main__':
    main()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X