2016-06-14 4 views
2

Прямо сейчас, я начинаю проект Python, который должен сделать снимок экрана с выбранными каналами твичирования, изменить эти скриншоты и поместить их в графический интерфейс. GUI не должен быть проблемой, но у меня проблемы со скриншотами.
Я нашел 2 ресурса, чтобы иметь дело с взаимодействием twitch: пакет python-twitch и скрипт под названием ttvsnap (https://github.com/chfoo/ttvsnap).
Пакет не помог мне, потому что я не нашел ничего, связанного с скриншотами. Сценарий выглядел многообещающим, но я столкнулся с некоторыми проблемами:Grabbing скриншот от Twitch с Python

Согласно создателю, ttvsnap периодически берет скриншоты потока подергивания и помещает их в выбранный каталог.
Если я пытаюсь запустить сценарий, я получаю эту ошибку:

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

Стирания «запросы на импорт» из сценария позволяют запускать его, но тогда сценарий имеет проблемы с выбором каталог. Чтобы запустить сценарий, я должен написать:

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

Пример каталога от создателя был «./screenshot/», но с этим входом, я получаю следующее сообщение об ошибке (может быть, потому что я м на Windows):

Output directory specified is not valid. 

Попытка каталог как C: \ DevFiles \ Скриншоты дает мне следующую ошибку:

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 

Любая идея о том, как заставить его работать или другой ресурс использование было бы высоко оценено.

+1

Вы пробовали 'пункт установить requests'? Это не часть стандартной библиотеки. – jonrsharpe

ответ

0

Selenium может быть удобен для навигации по сайту и снятия скриншотов.

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

конкретизированы пример, который должен делать то, что вам нужно. Gist ссылка, а также: 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() 
+0

для моих целей, есть ли какие-либо реквизиты для селена (например, ImageMagick), или мне хорошо идти, как только я установил пакет? – Hillburn

+0

Обновлено сообщение, пример для вас. –

+0

спасибо, пример работает с PhantomJS для меня. Тем не менее, я новичок в Python, поэтому я не совсем понимаю, как вы назначили место назначения снимка экрана. Является ли переменная «__ file __» ссылкой на файл, который содержит ваш скрипт? – Hillburn

1

Вам не следует удалять вещи из проекта с открытым исходным кодом, который вы пытаетесь использовать.

Вместо этого установите недостающие пакеты,

pip install requests если у вас есть проблемы с этим, возможно, вы не имеете pip, так что просто установить его.

Или используйте это python.exe -m pip install requests.


Эта ошибка Output directory specified is not valid. благодаря этой линии:

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

Это обычно означает, что каталог не существует.


Что касается последней ошибки, он не может выполнить команду 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 

Это просто означает, что вы не имеете Imagemagick установлен.Вы можете установить его скачивает права установки для вашей архитектуры здесь: http://www.imagemagick.org/script/binary-releases.php

Затем установите его с помощью этих опций тикали: enter image description here

Тогда попробуйте и убедитесь, что команда convert выполняет с вашего терминала. Если нет, следуйте этой инструкции:

Lastly you have to set MAGICK_HOME environment variable to the path of ImageMagick (e.g. C:\Program Files\ImageMagick-6.7.7-Q16). You can set it in Computer ‣ Properties ‣ Advanced system settings ‣ Advanced ‣ Environment Variables....

source

+0

Установленные запросы, теперь мне больше не нужно стереть его из сценария, но я все еще получаю те же сообщения об ошибках, что и раньше, – Hillburn

+0

@Hillburn, вы создали эту папку? В настоящее время существует? – majidarif

+0

@Hillburn Попробуйте 'python3 ttvsnap.py verycoolstreamer./Screenshots /', но убедитесь, что каталог 'screenshots' существует в текущем каталоге, где вы запускаете скрипт. – majidarif