import openpyxl from kinopoisk_parser import KinopoiskParser import time import os """Этот вариант скрипта не банит Кинопоиск при массовом заполнении, в отличии от варианта add_data_in_xlsx.py с kinopoisk_parser.py. Запросы через requests или отдельный запуск selenium для каждого фильма банятся кинопоиском. В данном варианте с одной сессии Selenium заполняется вся таблица и бана не происходит. ____________________________________________________________________________________________________________ | Name | Type | Season | genre | Year | Kinopoisk ID | IMDB | Kinopoisk | Country | Time | Director | Actors | ------+------+--------+-------+------+--------------+------+-----------+---------+------+----------+-------- | | | | | | | | | | | | | """ url = 'https://www.kinopoisk.ru/' browser = KinopoiskParser() browser.open_selenium() wb = openpyxl.load_workbook(filename='C:/install/Films.xlsx') ws = wb.active for row in ws.iter_rows(min_row=2, max_row=ws.max_row): if row[1].value == 'Сериал': continue # пока не трогаем сериалы if row[5].value: continue name_film = str(row[0].value).lower() year_film = str(row[4].value) search_form = browser.browser.find_element_by_name('kp_query') search_form.clear() search_form.send_keys(name_film) search_form.submit() time.sleep(6) WebDriverWait(browser.browser, 10).until( EC.presence_of_all_elements_located((By.CLASS_NAME, 'name')))
import os """Этот вариант скрипта не банит Кинопоиск при массовом заполнении, в отличии от варианта add_data_in_xlsx.py с kinopoisk_parser.py. Запросы через requests или отдельный запуск selenium для каждого фильма банятся кинопоиском. В данном варианте с одной сессии Selenium заполняется вся таблица и бана не происходит. ____________________________________________________________________________________________________________ | Name | Type | Season | genre | Year | Kinopoisk ID | IMDB | Kinopoisk | Country | Time | Director | Actors | ------+------+--------+-------+------+--------------+------+-----------+---------+------+----------+-------- | | | | | | | | | | | | | """ url = 'https://www.kinopoisk.ru/' # browser = webdriver.Firefox() # firefox_profile=r'C:\Users\video\AppData\Roaming\Mozilla\Firefox\Profiles\h3qugs8n.Kinopisk') # browser.get(url) browser = KinopoiskParser() browser.open_selenium() wb = openpyxl.load_workbook(filename='C:/install/Films.xlsx') ws = wb.active for row in ws.iter_rows(min_row=2, max_row=ws.max_row): # if row[1].value == 'Сериал': continue # пока не трогаем сериалы # if not row[4].value: continue # пока не трогаем первую плохо заполеннную часть таблицы, где нет Year if row[11].value: continue # пропускаем уже заполеннные строки name_film = str(row[0].value).lower() year_film = str(row[4].value) id_film = str(row[5].value) if str(row[1].value) == 'Сериал': id_film = ws.cell(row=row[0].row, column=6).value url = f'https://www.kinopoisk.ru/film/{id_film}' browser.browser.get(url)
import sys from kinopoisk_parser import KinopoiskParser from proxy_manager import ProxyManager if __name__ == "__main__": if len(sys.argv) > 1: user_id = sys.argv[1] else: raise Exception("Enter you kinopoisk user id") new_proxy_manager = ProxyManager() kinopoisk_parser = KinopoiskParser(user_id) kinopoisk_parser.calculate_wasted_time(new_proxy_manager) time_in_minute = int(kinopoisk_parser.get_wasted_time()) print(f'You wasted {round(time_in_minute, 2)} minutes or {round(time_in_minute / 60, 2)} hours or {round(time_in_minute / 60 / 24, 2)} day')
year_film = input('Введите год: ') film = KinopoiskParser(name=name_film, year=year_film) film.find_film_id() data = film.get_from_kinopoisk_with_id()""" # data = KinopoiskParser().get_from_file('C:/Users/Kenobi/Desktop/Нокдаун.html') # print(data) wb = openpyxl.load_workbook(filename='C:/install/Films.xlsx') ws = wb.active for row in ws.iter_rows(min_row=2, max_row=412): # max_row=ws.max_row): if row[1].value == 'Сериал': continue # пока не трогаем сериалы if not row[4].value: continue # пока не трогаем первую плохо заполеннную часть таблицы name_film = row[0].value.lower() year_film = str(row[4].value) film = KinopoiskParser(name=name_film, year=year_film) id = film.find_film_id() if not id: time.sleep(10) continue data = film.get_from_kinopoisk_with_id() if (row[0].value == data['film_name'].replace( ':', '.')) and (row[4].value == int(data['year'])): try: row[3].value = data["genre"] except KeyError: print('Нет значения жанр') try: row[5].value = data["id_kinopoisk"] except KeyError: print('Нет значения id_kinopoisk')
if os.path.exists(path): os.chdir(path) return True else: print(f'Пути {path} не существует') return False if __name__ == "__main__": arc_disk = input('Введите букву диска с архивом: ').upper() + ':' chief_disk = input('Введите букву диска для просмотра: ').upper() + ':' serv_disk = input( 'Введите букву диска для записи на видеосервер: ').upper() + ':' work_paths = (os.path.join(arc_disk, r'\Convert'), os.path.join(arc_disk, r'\New')) with KinopoiskParser() as browser: browser.open_selenium() for work_path in work_paths: # проверяем существуют ли указанные рабочие пути print("=" * 150) if path_existence_check(work_path): for adress, dirs, files in os.walk(work_path): if adress == work_path: # если находимся в корне рабочего пути, то обрабатываем все фильмы for file in files: film = Film(file, adress, serv_disk, chief_disk) if film.copy_to_servdisk(): browser.write_data( ) # находим и дописываем данные с Кинопоиска with DataBase(CONNECT_FILE ) as base: # запись в Postgresql base.query() film.copy_to_chiefdisk()