Почему хост разрывает соединение?
Работает минуты 2-3, обрабатывает ссылок 10-15 и потом уходит в ошибку, нужно прокси подкрутить к скрипту или что нужно сделать подскажите, не профессионал в кодинге, ВПН пробывал включать всё тоже самое(((
Ошибка такого рода:
ERROR mascraper - analyze_profile: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None))
import argparse
import random
import logging
import os
import sys
import shutil
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import nsfw_model
import vscoscrape
def calc_nsfw_index(classification: dict) -> float:
""" {'drawings': 0.04, 'hentai': 0.03, 'neutral': 0.47, 'porn': 0.42, 'sexy': 0.02} -> 0.48 """
return sum((classification['hentai'], classification['porn'], classification['sexy']))
def parse_profile_name(profile: str) -> str:
if 'vsco.co/' not in profile:
return profile
return profile.partition('vsco.co/')[2].partition('/')[0]
def is_image(filename: str) -> bool:
return filename.lower().endswith(('.png', '.jpg', '.jpeg'))
def get_vsco_file_name(file_info: list) -> str:
return file_info[1] + '.' + file_info[0].rpartition('.')[2]
def analyze_profile(model, profile: str, sample_proportion: float = 0.2, floor: float = 0.75, maxposts: int = 1000):
started_dir = os.getcwd()
try:
scraper = vscoscrape.Scraper(parse_profile_name(profile))
scraper.getImageList()
logging.info(f"Analyzing username: {scraper.username}")
images = list(filter(lambda info: is_image(info[0]), scraper.imagelist))
if len(images) == 0:
logging.warning('No images found')
if len(images) < maxposts:
for i, image_info in enumerate(random.sample(images, int(len(images) * sample_proportion))):
scraper.download_img_normal(image_info)
classification = list(nsfw_model.classify(model,
f"{scraper.path}/{get_vsco_file_name(image_info)}").values())[0]
nsfw_index = calc_nsfw_index(classification)
logging.debug(f"NSFW index: {nsfw_index}, filename: {get_vsco_file_name(image_info)}")
if nsfw_index > floor:
logging.info(f"NSFW FOUND, index: {nsfw_index}, "
f"pics scanned: {i + 1}, "
f"filename: {get_vsco_file_name(image_info)}")
scraper.getImages()
return
else:
logging.info(f"NO NSFW FOUND, "
f"pics scanned: {int(len(images) * sample_proportion)}")
if os.getcwd() != started_dir:
directory = os.getcwd()
os.chdir(started_dir)
shutil.rmtree(directory, ignore_errors=True)
else:
logging.info(f"TOO MUCH POSTS. MAX is {maxposts}")
if os.getcwd() != started_dir:
directory = os.getcwd()
os.chdir(started_dir)
shutil.rmtree(directory, ignore_errors=True)
except Exception as e:
logging.error(e)
raise
finally:
if os.getcwd() != started_dir:
os.chdir(started_dir)
def parse_args(args: list):
parser = argparse.ArgumentParser()
parser.add_argument('floor', nargs='?', type=float, default=0.8,
help='порог для nsfw_index (подробнее в README.txt)')
parser.add_argument('sample', nargs='?', type=float, default=0.2,
help='процент пикч, которые будут предскачаны (подробнее в README.txt)')
parser.add_argument('maxposts', nargs='?', type=int, default=200,
help='max post num')
return parser.parse_args(args)
if __name__ == '__main__':
sys.stderr = sys.stdout
logging.basicConfig(level=logging.INFO,
format='%(asctime)s.%(msecs)d %(levelname)s %(module)s - %(funcName)s: %(message)s',
datefmt='%H:%M:%S')
parsed_args = parse_args(sys.argv[1:])
model = nsfw_model.load_model('./model_mobilenet_v2_140_224.h5')
while True:
link = input('Enter link:\n')
try:
analyze_profile(model, link, parsed_args.sample, parsed_args.floor, parsed_args.maxposts)
except Exception as e:
logging.error(e)