@JRBRO

Автоматизация на питоне, как настроить?

Всем привет, у меня комплексный вопрос. Имеется следующий код
driver = webdriver.Chrome(executable_path=r"C:\Users\...\chromedriver")
driver.get("www.google.com/1")
print(driver.title)
driver.maximize_window()
driver.find_element_by_css_selector("Search").click()
P = subprocess.Popen("ffmpeg -f gdigrab -framerate ntsc -video_size 1920x1080 -i desktop  -f dshow -i audio=""@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{9C18FEC6-11C8-4EA9-B1F1-0BD9A491C5F5}"" -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -t 00:00:05 Google1.mp4", text=True, shell=True)
P.wait()
P = subprocess.Popen("ffmpeg -i Google1.mp4 -vn -acodec copy Google1.aac", text=True, shell=True)
P.wait()
P = subprocess.Popen("ffmpeg -i Google1.mp4 -vf fps=1 Google1%d.png", text=True, shell=True)
P.wait()

driver.quit()

filename = os.listdir(os.getcwd()) 
frames=['.jpeg','.jpg','.svg','.png','.PNG']

framesLocation= "Frames"


for file in filename:
    if os.path.splitext(file)[1] in frames:
        if(path.exists(framesLocation)):
            shutil.move(file,framesLocation)
        else:
            os.mkdir(framesLocation)
            shutil.move(file,framesLocation)


Цель кода такая-
1. Зайти на google1
2. Снять видео при помощи ffmpeg
3. Отделить аудио
4. Разбить на кадры
5. Кадры закинуть в отдельную папку

Суть вопроса, как не перекопируя заставить код:

Научить скрипт выбирать google1, google2, google3 откуда либо, именно сам линк (их будет очень много)
Переименовывать каждый следующий файл в соответствии с линком, для google1 такой, для google2 такой и т.д.
Раскидывать фреймы в соответствующую папку, не просто Frames, а Google1-> Frames, Google2-> Frames

Для единого кейса это работает, как сделать большое кол-во кейсов без переписывания кода 100 раз (очень много кейсов будет) и чтобы имена генерировались в соответствием с кейсом.
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
В общем случае, код, который надо исполнить много раз с подстановкой разных значений, надо вынести в функцию, принимающую на вход нужное значение;
потом создать или получить последовательность (например, кортеж или список) с набором значений для подстановки, либо сделать генератор значений;
потом начать в цикле перебирать список значений и на каждое вызывать функцию, передавая в неё очередное значение.
В общем, всё довольно просто.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@MrYaz9
Используя asycio. Закинь сайты в main, а работу с ними в другую функцию(с входными данными названия сайта) и потом просто вместо google вставляй эти данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы