diff --git a/kontor-api/src/apis/version1/mediaactor.py b/kontor-api/src/apis/version1/mediaactor.py index facf69c..2037ca7 100644 --- a/kontor-api/src/apis/version1/mediaactor.py +++ b/kontor-api/src/apis/version1/mediaactor.py @@ -1,21 +1,39 @@ from typing import List, AnyStr -from fastapi import APIRouter, status, HTTPException, Depends -from sqlalchemy import select, Sequence +from fastapi import APIRouter, status, HTTPException +from sqlalchemy import select from src.core.log_conf import logger from src.apis.utils import SessionDep -from src.db.repository.media import create_new_mediafile -from src.schema.media.actor import MediaActorResponse +from src.db.repository.media import create_new_mediaactor +from src.schema.media.actor import Actor, MediaActorResponse, get_actor_details from src.db.models.media import MediaActor router = APIRouter() @router.get("/actors", response_model=List[MediaActorResponse]) #def get_all_files(db: SessionDep, review: bool = False, download: bool = False, current_user: Profile = Depends(get_current_user_from_token)) -> List[MediaFileResponse]: -def get_all_files(db: SessionDep, review: bool = False, download: bool = False) -> List[MediaActorResponse]: +def get_all_actors(db: SessionDep, review: bool = False, download: bool = False) -> List[MediaActorResponse]: results: List[MediaActorResponse] = [] actors = db.scalars(select(MediaActor)).all() for mediaactor in actors: response = MediaActorResponse(id=mediaactor.id, name=str(mediaactor.name), url=str(mediaactor.url)) results.append(response) return results + +@router.get("/actors/{actor_id}", response_model=MediaActorResponse) +def get_actor(actor_id: AnyStr, db: SessionDep) -> MediaActorResponse: + media_actor = db.get(MediaActor, actor_id) + if not media_actor: + raise HTTPException(status_code=404, detail="MediaActor could not be found") + response = get_actor_details(media_actor) + return response + +@router.post("/actors", status_code=status.HTTP_201_CREATED) +def add_actor(new_actor: Actor, db: SessionDep) -> MediaActorResponse: + logger.info(f"add actor {new_actor.url}") + try: + mediaActor: MediaActor = create_new_mediaactor(new_actor, db) + except: + raise HTTPException(status_code=409, detail="Link duplicate") + response = get_actor_details(mediaActor) + return response diff --git a/kontor-api/src/apis/version1/mediafile.py b/kontor-api/src/apis/version1/mediafile.py index 3a672bc..da45806 100644 --- a/kontor-api/src/apis/version1/mediafile.py +++ b/kontor-api/src/apis/version1/mediafile.py @@ -100,7 +100,6 @@ def update_file(file_id: AnyStr, db: SessionDep, info: MediaFileResponse) -> Med response = get_file_details(mediafile) return response - @router.post("/files", status_code=status.HTTP_201_CREATED) def add_file(new_link: Link, db: SessionDep) -> MediaFileResponse: logger.info(f"add url {new_link.url}") diff --git a/kontor-api/src/db/models/media.py b/kontor-api/src/db/models/media.py index fe33264..209661c 100644 --- a/kontor-api/src/db/models/media.py +++ b/kontor-api/src/db/models/media.py @@ -73,6 +73,12 @@ class MediaActor(Base, BaseMixin): name = Column(String) url = Column(String, unique=True, nullable=True) media_actor_files = relationship("MediaActorFile") + + def __repr__(self) -> str: + return f'MediaActor({self.id} {self.name} {self.url})' + + def __str__(self) -> str: + return f'{self.url}({self.id})' class MediaActorFile(Base, BaseMixin): diff --git a/kontor-api/src/db/repository/media.py b/kontor-api/src/db/repository/media.py index 61cc167..6985bba 100644 --- a/kontor-api/src/db/repository/media.py +++ b/kontor-api/src/db/repository/media.py @@ -3,7 +3,8 @@ from typing import AnyStr import uuid from datetime import datetime from src.core.log_conf import logger -from src.db.models.media import MediaActorFile, MediaFile, MediaVideo +from src.db.models.media import MediaActor, MediaActorFile, MediaFile, MediaVideo +from src.schema.media.actor import Actor from src.webapps.media.forms import AddLinkForm @@ -38,6 +39,21 @@ def create_new_mediafile(link: AnyStr, db: Session) -> MediaFile: logger.info(f"created {media_file}") return media_file +def create_new_mediaactor(new_actor: Actor, db: Session) -> MediaActor: + logger.info(f"create MediaActor with url {new_actor.url}") + media_actor: MediaActor = MediaActor() + media_actor.id = str(uuid.uuid4()) + media_actor.name = str(new_actor.name) + media_actor.url = str(new_actor.url) + media_actor.created_date = datetime.now() + media_actor.last_modified_date = datetime.now() + media_actor.version = 0 + db.add(media_actor) + db.commit() + db.refresh(media_actor) + logger.info(f"created {media_actor}") + return media_actor + def create_new_mediaactorfile(db: Session, actor_id: AnyStr, file_id: AnyStr) -> MediaActorFile: logger.info(f"create MediaActorFile with actor {actor_id} and file {file_id}") media_actor_file: MediaActorFile = MediaActorFile() diff --git a/kontor-api/src/schema/media/actor.py b/kontor-api/src/schema/media/actor.py index c800964..3ad8408 100644 --- a/kontor-api/src/schema/media/actor.py +++ b/kontor-api/src/schema/media/actor.py @@ -6,5 +6,13 @@ from pydantic import BaseModel class MediaActorResponse(BaseModel): id: str - name: str + name: str | None url: str + +class Actor(BaseModel): + name: str | None + url: str + +def get_actor_details(media_actor: MediaActor) -> MediaActorResponse: + reponse: MediaActorResponse = MediaActorResponse(id=media_actor.id, name=str(media_actor.name), url=str(media_actor.url)) + return reponse diff --git a/kontor-scripts/add_actors.py b/kontor-scripts/add_actors.py new file mode 100644 index 0000000..cfa7728 --- /dev/null +++ b/kontor-scripts/add_actors.py @@ -0,0 +1,320 @@ +""" +add actors +""" +import logging.config +import requests +import re +from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter + +from bs4 import BeautifulSoup + +parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) +parser.add_argument('--verbose', '-v', action='count', default=0) +args = parser.parse_args() + +def get_logger(level: int) -> logging.Logger: + logging.config.dictConfig({ + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { + 'simple': { + 'format': '[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s', + 'datefmt': '%Y-%m-%d %H:%M:%S', + }, + }, + 'handlers': { + 'console': { + 'class': logging.StreamHandler, + 'level': logging.DEBUG, + 'formatter': 'simple', + 'stream': 'ext://sys.stdout' + }, + }, + 'loggers': { + 'urllib3.connectionpool': { + 'level': 'WARNING', + 'propagate': False, + }, + 'root': { + 'level': 'DEBUG', + 'handlers': ['console'], + }, + }, + }) + logger = logging.getLogger(__file__) + if level is not None: + match level: + case 0: + logger.setLevel(logging.WARNING) + case 1: + logger.setLevel(logging.INFO) + case 2: + logger.setLevel(logging.DEBUG) + case _: + logger.setLevel(logging.CRITICAL) + return logger + + +if __name__ == '__main__': + log = get_logger(args.verbose) + log.warning('kontor.add_actors started') + log.debug('get all actors') + response = requests.get("http://127.0.0.1:8800/api/media/actors") + data = response.json() + actors = {} + for item in data: + actor = {} + actor['id'] = item['id'] + actor['name'] = item['name'] + actor['url'] = item['url'] + actors[item['url']] = actor + log.debug(f'all actors: {actors}') + + new_actor_list = [ + { 'name': 'Herschel Savage', 'url': 'https://ge.xhamster.com/pornstars/herschel-savage'}, + { 'name': 'Janey Robbins', 'url': 'https://ge.xhamster.com/pornstars/janey-robbins'}, + { 'name': 'Kimberly Carson', 'url': 'https://ge.xhamster.com/pornstars/kimberly-carson'}, + { 'name': 'Paul Thomas', 'url': 'https://ge.xhamster.com/pornstars/paul-thomas'}, + { 'name': 'Shauna Grant', 'url': 'https://ge.xhamster.com/pornstars/shauna-grant'}, + { 'name': 'Tara Aire', 'url': 'https://ge.xhamster.com/pornstars/tara-aire'}, + { 'name': 'Kari Milla', 'url': 'https://ge.xhamster.com/pornstars/kari-milla'}, + { 'name': 'Drago Gvozdik', 'url': 'https://ge.xhamster.com/pornstars/drago-gvozdik'}, + { 'name': 'Cheyne Collins', 'url': 'https://ge.xhamster.com/pornstars/cheyne-collins'}, + { 'name': 'Christian XXX', 'url': 'https://ge.xhamster.com/pornstars/christian-xxx'}, + { 'name': 'Derrick Pierce', 'url': 'https://ge.xhamster.com/pornstars/derrick-pierce'}, + { 'name': 'Holly Halston', 'url': 'https://ge.xhamster.com/pornstars/holly-halston'}, + { 'name': 'Holly West', 'url': 'https://ge.xhamster.com/pornstars/holly-west'}, + { 'name': 'Jarod Diamond', 'url': 'https://ge.xhamster.com/pornstars/jarod-diamond'}, + { 'name': 'Kristina Cross', 'url': 'https://ge.xhamster.com/pornstars/kristina-cross'}, + { 'name': 'Lee Stone', 'url': 'https://ge.xhamster.com/pornstars/lee-stone'}, + { 'name': 'Monica Mayhem', 'url': 'https://ge.xhamster.com/pornstars/monica-mayhem'}, + { 'name': 'Sienna West', 'url': 'https://ge.xhamster.com/pornstars/sienna-west'}, + { 'name': 'Aria Carson', 'url': 'https://ge.xhamster.com/pornstars/aria-carson'}, + { 'name': 'Britney Amber', 'url': 'https://ge.xhamster.com/pornstars/britney-amber'}, + { 'name': 'Kit Mercer', 'url': 'https://ge.xhamster.com/pornstars/kit-mercer'}, + { 'name': 'Riley Reyes', 'url': 'https://ge.xhamster.com/pornstars/riley-reyes'}, + { 'name': 'Ryan Keely', 'url': 'https://ge.xhamster.com/pornstars/ryan-keely'}, + { 'name': 'Alexandra Diamond', 'url': 'https://ge.xhamster.com/pornstars/alexandra-diamond'}, + { 'name': 'Amanda Twice', 'url': 'https://ge.xhamster.com/pornstars/amanda-twice'}, + { 'name': 'Choky Ice', 'url': 'https://ge.xhamster.com/pornstars/choky-ice'}, + { 'name': 'Cindy Cox', 'url': 'https://ge.xhamster.com/pornstars/cindy-cox'}, + { 'name': 'Kelly White', 'url': 'https://ge.xhamster.com/pornstars/kelly-white'}, + { 'name': 'Mike Foster', 'url': 'https://ge.xhamster.com/pornstars/mike-foster'}, + { 'name': 'Susie Sorrento', 'url': 'https://ge.xhamster.com/pornstars/susie-sorrento'}, + { 'name': 'Lara Sanchez', 'url': 'https://ge.xhamster.com/pornstars/lara-sanchez'}, + { 'name': 'Alicia Williams', 'url': 'https://ge.xhamster.com/pornstars/alicia-williams'}, + { 'name': 'Dirty Tina', 'url': 'https://ge.xhamster.com/pornstars/dirty-tina'}, + { 'name': 'Andrew Andretti', 'url': 'https://ge.xhamster.com/pornstars/andrew-andretti'}, + { 'name': 'Dick Nasty', 'url': 'https://ge.xhamster.com/pornstars/dick-nasty'}, + { 'name': 'Vicky Vette', 'url': 'https://ge.xhamster.com/pornstars/vicky-vette'}, + { 'name': 'Alex Gonz', 'url': 'https://ge.xhamster.com/pornstars/alex-gonz'}, + { 'name': 'Audrey Hollander', 'url': 'https://ge.xhamster.com/pornstars/audrey-hollander'}, + { 'name': 'Desiree Diamond', 'url': 'https://ge.xhamster.com/pornstars/desiree-diamond'}, + { 'name': 'Lexi Bardot', 'url': 'https://ge.xhamster.com/pornstars/lexi-bardot'}, + { 'name': 'Adam Ocelot', 'url': 'https://ge.xhamster.com/pornstars/adam-ocelot'}, + { 'name': 'Scarlett Hampton', 'url': 'https://ge.xhamster.com/pornstars/scarlett-hampton'}, + { 'name': 'Laetitia', 'url': 'https://ge.xhamster.com/pornstars/laetitia'}, + { 'name': 'Raffaela Anderson', 'url': 'https://ge.xhamster.com/pornstars/raffaela-anderson'}, + { 'name': 'Michael Swayze', 'url': 'https://ge.xhamster.com/pornstars/michael-swayze'}, + { 'name': 'Winter Jade', 'url': 'https://ge.xhamster.com/pornstars/winter-jade'}, + { 'name': 'Celine Noiret', 'url': 'https://ge.xhamster.com/pornstars/celine-noiret'}, + { 'name': 'Aurora Snow', 'url': 'https://ge.xhamster.com/pornstars/aurora-snow'}, + { 'name': 'Bree Brooks', 'url': 'https://ge.xhamster.com/pornstars/bree-brooks'}, + { 'name': 'Flick Shagwell', 'url': 'https://ge.xhamster.com/pornstars/flick-shagwell'}, + { 'name': 'Noname Jane', 'url': 'https://ge.xhamster.com/pornstars/noname-jane'}, + { 'name': 'Alex Magni', 'url': 'https://ge.xhamster.com/pornstars/alex-magni'}, + { 'name': 'Maeva Dream', 'url': 'https://ge.xhamster.com/pornstars/maeva-dream'}, + { 'name': 'Squirty Alice', 'url': 'https://ge.xhamster.com/pornstars/squirty-alice'}, + { 'name': 'Mandy Rhea', 'url': 'https://ge.xhamster.com/pornstars/mandy-rhea'}, + { 'name': 'Alessia Donati', 'url': 'https://ge.xhamster.com/pornstars/alessia-donati'}, + { 'name': 'Pierre DJ', 'url': 'https://ge.xhamster.com/pornstars/pierre-dj'}, + { 'name': 'Veronica Belli', 'url': 'https://ge.xhamster.com/pornstars/veronica-belli'}, + { 'name': 'Christiana Cinn', 'url': 'https://ge.xhamster.com/pornstars/christiana-cinn'}, + { 'name': 'Jasmine Jae', 'url': 'https://ge.xhamster.com/pornstars/jasmine-jae'}, + { 'name': 'Jay Smooth', 'url': 'https://ge.xhamster.com/pornstars/jay-smooth'}, + { 'name': 'Natalie Knight', 'url': 'https://ge.xhamster.com/pornstars/natalie-knight'}, + { 'name': 'Joshua Lewis', 'url': 'https://ge.xhamster.com/pornstars/joshua-lewis'}, + { 'name': 'Lauren Phillips', 'url': 'https://ge.xhamster.com/pornstars/lauren-phillips'}, + { 'name': 'Matt Cash', 'url': 'https://ge.xhamster.com/pornstars/matt-cash'}, + { 'name': 'Nickey Huntsman', 'url': 'https://ge.xhamster.com/pornstars/nickey-huntsman'}, + { 'name': 'Jade Sin', 'url': 'https://ge.xhamster.com/pornstars/jade-sin'}, + { 'name': 'Wein Lewis', 'url': 'https://ge.xhamster.com/pornstars/wein-lewis'}, + { 'name': 'Megan Murkovski', 'url': 'https://ge.xhamster.com/pornstars/megan-murkovski'}, + { 'name': 'Tara Wild', 'url': 'https://ge.xhamster.com/pornstars/tara-wild'}, + { 'name': 'Lana Roy', 'url': 'https://ge.xhamster.com/pornstars/lana-roy'}, + { 'name': 'Nick Moreno', 'url': 'https://ge.xhamster.com/pornstars/nick-moreno'}, + { 'name': 'Brad Armstrong', 'url': 'https://ge.xhamster.com/pornstars/brad-armstrong'}, + { 'name': 'Kaylani Lei', 'url': 'https://ge.xhamster.com/pornstars/kaylani-lei'}, + { 'name': 'Deborah Wells', 'url': 'https://ge.xhamster.com/pornstars/deborah-wells'}, + { 'name': 'Judith Ramirez', 'url': 'https://ge.xhamster.com/pornstars/judith-ramirez'}, + { 'name': 'Richard Langin', 'url': 'https://ge.xhamster.com/pornstars/richard-langin'}, + { 'name': 'Simona Valli', 'url': 'https://ge.xhamster.com/pornstars/simona-valli'}, + { 'name': 'Mandy Dee', 'url': 'https://ge.xhamster.com/pornstars/mandy-dee'}, + { 'name': 'Allison Wyte', 'url': 'https://ge.xhamster.com/pornstars/allison-wyte'}, + { 'name': 'Ben English', 'url': 'https://ge.xhamster.com/pornstars/ben-english'}, + { 'name': 'Chuck Martino', 'url': 'https://ge.xhamster.com/pornstars/chuck-martino'}, + { 'name': 'Erika Kole', 'url': 'https://ge.xhamster.com/pornstars/erika-kole'}, + { 'name': 'Katie Morgan', 'url': 'https://ge.xhamster.com/pornstars/katie-morgan'}, + { 'name': 'Misty Parks', 'url': 'https://ge.xhamster.com/pornstars/misty-parks'}, + { 'name': 'Mr. Pete', 'url': 'https://ge.xhamster.com/pornstars/mr-pete'}, + { 'name': 'Candie Luciani', 'url': 'https://ge.xhamster.com/pornstars/candie-luciani'}, + { 'name': 'Clara Mia', 'url': 'https://ge.xhamster.com/pornstars/clara-mia'}, + { 'name': 'Tommy Cabrio', 'url': 'https://ge.xhamster.com/pornstars/tommy-cabrio'}, + { 'name': 'Nathan Bronson', 'url': 'https://ge.xhamster.com/pornstars/nathan-bronson'}, + { 'name': 'Octavia Red', 'url': 'https://ge.xhamster.com/pornstars/octavia-red'}, + { 'name': 'Big George', 'url': 'https://ge.xhamster.com/pornstars/big-george'}, + { 'name': 'Cassy Young', 'url': 'https://ge.xhamster.com/pornstars/cassy-young'}, + { 'name': 'Egon Kowalski', 'url': 'https://ge.xhamster.com/pornstars/egon-kowalski'}, + { 'name': 'Mark Aurel', 'url': 'https://ge.xhamster.com/pornstars/mark-aurel'}, + { 'name': 'Samy Fox', 'url': 'https://ge.xhamster.com/pornstars/samy-fox'}, + { 'name': 'Valeria Jones', 'url': 'https://ge.xhamster.com/pornstars/valeria-jones'}, + { 'name': 'Dieter Von Stein', 'url': 'https://ge.xhamster.com/pornstars/dieter-von-stein'}, + { 'name': 'Donna Bell', 'url': 'https://ge.xhamster.com/pornstars/donna-bell'}, + { 'name': 'Molly Jane', 'url': 'https://ge.xhamster.com/pornstars/molly-jane'}, + { 'name': 'Mark Zane', 'url': 'https://ge.xhamster.com/pornstars/mark-zane'}, + { 'name': 'Titus Steel', 'url': 'https://ge.xhamster.com/pornstars/titus-steel'}, + { 'name': 'Mackenzie Mace', 'url': 'https://ge.xhamster.com/pornstars/mackenzie-mace'}, + { 'name': 'Christina Lang', 'url': 'https://ge.xhamster.com/pornstars/christina-lang'}, + { 'name': 'Jens Modena', 'url': 'https://ge.xhamster.com/pornstars/jens-modena'}, + { 'name': 'Karma Rosenberg', 'url': 'https://ge.xhamster.com/pornstars/karma-rosenberg'}, + { 'name': 'Dani Jensen', 'url': 'https://ge.xhamster.com/pornstars/dani-jensen'}, + { 'name': 'Crystal Ray', 'url': 'https://ge.xhamster.com/pornstars/crystal-ray'}, + { 'name': 'Andrea Szabo', 'url': 'https://ge.xhamster.com/pornstars/andrea-szabo'}, + { 'name': 'Desiree Barclay', 'url': 'https://ge.xhamster.com/pornstars/desiree-barclay'}, + { 'name': 'Jada Stevens', 'url': 'https://ge.xhamster.com/pornstars/jada-stevens'}, + { 'name': 'Syren Demer', 'url': 'https://ge.xhamster.com/pornstars/syren-demer'}, + { 'name': 'Ara Mix', 'url': 'https://ge.xhamster.com/pornstars/ara-mix'}, + { 'name': 'Redneck John', 'url': 'https://ge.xhamster.com/pornstars/redneck-john'}, + { 'name': 'Allysin Chaynes', 'url': 'https://ge.xhamster.com/pornstars/allysin-chaynes'}, + { 'name': 'Aspen Brock', 'url': 'https://ge.xhamster.com/pornstars/aspen-brock'}, + { 'name': 'Kaylynn', 'url': 'https://ge.xhamster.com/pornstars/kaylynn'}, + { 'name': 'Monica Cameron', 'url': 'https://ge.xhamster.com/pornstars/monica-cameron'}, + { 'name': 'Sheila Rossi', 'url': 'https://ge.xhamster.com/pornstars/sheila-rossi'}, + { 'name': 'Alex Ginger', 'url': 'https://ge.xhamster.com/pornstars/alex-ginger'}, + { 'name': 'Ally Style', 'url': 'https://ge.xhamster.com/pornstars/ally-style'}, + { 'name': 'Paola Mike', 'url': 'https://ge.xhamster.com/pornstars/paola-mike'}, + { 'name': 'Jeanette Littledove', 'url': 'https://ge.xhamster.com/pornstars/jeanette-littledove'}, + { 'name': 'Melissa Melendez', 'url': 'https://ge.xhamster.com/pornstars/melissa-melendez'}, + { 'name': 'Peter North', 'url': 'https://ge.xhamster.com/pornstars/peter-north'}, + { 'name': 'Siobhan Hunter', 'url': 'https://ge.xhamster.com/pornstars/siobhan-hunter'}, + { 'name': 'Tami White', 'url': 'https://ge.xhamster.com/pornstars/tami-white'}, + { 'name': 'Tracey Adams', 'url': 'https://ge.xhamster.com/pornstars/tracey-adams'}, + { 'name': 'Ashley Haze', 'url': 'https://ge.xhamster.com/pornstars/ashley-haze'}, + { 'name': 'Cailey Taylor', 'url': 'https://ge.xhamster.com/pornstars/cailey-taylor'}, + { 'name': 'Eve Laurence', 'url': 'https://ge.xhamster.com/pornstars/eve-laurence'}, + { 'name': 'Naudia Nyce', 'url': 'https://ge.xhamster.com/pornstars/naudia-nyce'}, + { 'name': 'Candy Apples', 'url': 'https://ge.xhamster.com/pornstars/candy-apples'}, + { 'name': 'Kate Rich', 'url': 'https://ge.xhamster.com/pornstars/kate-rich'}, + { 'name': 'Aniko Kaposi', 'url': 'https://ge.xhamster.com/pornstars/aniko-kaposi'}, + { 'name': 'Beatrice Poggi', 'url': 'https://ge.xhamster.com/pornstars/beatrice-poggi'}, + { 'name': 'Erika Bella', 'url': 'https://ge.xhamster.com/pornstars/erika-bella'}, + { 'name': 'Nikita Gross', 'url': 'https://ge.xhamster.com/pornstars/nikita-gross'}, + { 'name': 'Ursula Moore', 'url': 'https://ge.xhamster.com/pornstars/ursula-moore'}, + { 'name': 'Caty Kiss', 'url': 'https://ge.xhamster.com/pornstars/caty-kiss'}, + { 'name': 'Light Fairy', 'url': 'https://ge.xhamster.com/pornstars/light-fairy'}, + { 'name': 'Flame', 'url': 'https://ge.xhamster.com/pornstars/flame'}, + { 'name': 'Tiffany Tatum', 'url': 'https://ge.xhamster.com/pornstars/tiffany-tatum'}, + { 'name': 'Alyson Sykes', 'url': 'https://ge.xhamster.com/pornstars/alyson-sykes'}, + { 'name': 'Jenifer Stone', 'url': 'https://ge.xhamster.com/pornstars/jenifer-stone'}, + { 'name': 'Lucy Love', 'url': 'https://ge.xhamster.com/pornstars/lucy-love'}, + { 'name': 'Thomas Stone', 'url': 'https://ge.xhamster.com/pornstars/thomas-stone'}, + { 'name': 'Nikki Babe', 'url': 'https://ge.xhamster.com/pornstars/nikki-babe'}, + { 'name': 'Tyra Misoux', 'url': 'https://ge.xhamster.com/pornstars/tyra-misoux'}, + { 'name': 'Kenzie Reeves', 'url': 'https://ge.xhamster.com/pornstars/kenzie-reeves'}, + { 'name': 'Anissa Kate', 'url': 'https://ge.xhamster.com/pornstars/anissa-kate'}, + { 'name': 'Anna Polina', 'url': 'https://ge.xhamster.com/pornstars/anna-polina'}, + { 'name': 'Kimber Delice', 'url': 'https://ge.xhamster.com/pornstars/kimber-delice'}, + { 'name': 'Lucy Heart', 'url': 'https://ge.xhamster.com/pornstars/lucy-heart'}, + { 'name': 'John Strong', 'url': 'https://ge.xhamster.com/pornstars/john-strong'}, + { 'name': 'Markus Dupree', 'url': 'https://ge.xhamster.com/pornstars/markus-dupree'}, + { 'name': 'Mick Blue', 'url': 'https://ge.xhamster.com/pornstars/mick-blue'}, + { 'name': 'Natasha Nice', 'url': 'https://ge.xhamster.com/pornstars/natasha-nice'}, + { 'name': 'Lena Reif', 'url': 'https://ge.xhamster.com/pornstars/lena-reif'}, + { 'name': 'Sonia Paganini', 'url': 'https://ge.xhamster.com/pornstars/sonia-paganini'}, + { 'name': 'Demi Hawks', 'url': 'https://ge.xhamster.com/pornstars/demi-hawks'}, + { 'name': 'Juan El Caballo Loco', 'url': 'https://ge.xhamster.com/pornstars/juan-el-caballo-loco'}, + { 'name': 'Mike Mancini', 'url': 'https://ge.xhamster.com/pornstars/mike-mancini'}, + { 'name': 'Millie Morgan', 'url': 'https://ge.xhamster.com/pornstars/millie-morgan'}, + { 'name': 'Richard Allan', 'url': 'https://ge.xhamster.com/pornstars/richard-allan'}, + { 'name': 'Damon Dice', 'url': 'https://ge.xhamster.com/pornstars/damon-dice'}, + { 'name': 'Sera Ryder', 'url': 'https://ge.xhamster.com/pornstars/sera-ryder'}, + { 'name': 'Zoltan Kaabai', 'url': 'https://ge.xhamster.com/pornstars/zoltan-kabai'}, + { 'name': 'Cathy Heaven', 'url': 'https://ge.xhamster.com/pornstars/cathy-heaven'}, + { 'name': 'Coco Lovelock', 'url': 'https://ge.xhamster.com/pornstars/coco-lovelock'}, + { 'name': 'Percy Sires', 'url': 'https://ge.xhamster.com/pornstars/percy-sires'}, + { 'name': 'Meridian', 'url': 'https://ge.xhamster.com/pornstars/meridian'}, + { 'name': 'Pascal St. James', 'url': 'https://ge.xhamster.com/pornstars/pascal-st-james'}, + { 'name': 'Red Fox', 'url': 'https://ge.xhamster.com/pornstars/red-fox'}, + { 'name': 'Tony Art', 'url': 'https://ge.xhamster.com/pornstars/tony-art'}, + { 'name': 'Addison Lee', 'url': 'https://ge.xhamster.com/pornstars/addison-lee'}, + { 'name': 'Daria Glover', 'url': 'https://ge.xhamster.com/pornstars/daria-glover'}, + { 'name': 'Mandy Bright', 'url': 'https://ge.xhamster.com/pornstars/mandy-bright'}, + { 'name': 'Antonia Sainz', 'url': 'https://ge.xhamster.com/pornstars/antonia-sainz'}, + { 'name': 'Nicole Love', 'url': 'https://ge.xhamster.com/pornstars/nicole-love'}, + { 'name': 'Sarah Kay', 'url': 'https://ge.xhamster.com/pornstars/sarah-kay'}, + { 'name': 'Judith Kostner', 'url': 'https://ge.xhamster.com/pornstars/judith-kostner'}, + { 'name': 'Maria Bellucci', 'url': 'https://ge.xhamster.com/pornstars/maria-bellucci'}, + { 'name': 'Melissa Monet', 'url': 'https://ge.xhamster.com/pornstars/melissa-monet'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/stephanie-cane'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/will-steiger'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/katty-west'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/jean-pallett'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/conny-dachs'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/juicy-leyla'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/mandy-mystery'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/jack-vegas'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/jessica-ryan'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/nathan-bronson'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/lexi-lore'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/molly-little'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/dolly-leigh'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/marcus-london'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/kendra-sunderland'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/manuel-ferrara'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/christina-lang'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/kelly-trump'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/angelica-heaven'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/luna-lynx'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/princess-lili'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/alexa-wild'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/jessyka-swan'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/nikky-thorne'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/tristan-summers'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/rhaya-shyne'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/desiree-west'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/joan-devlon'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/jodi-thorpe'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/laurien-dominique'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/paul-scharf'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/ray-wells'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/sandy-carey'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/spender-travis'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/starlyn-simone'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/uschi-digard'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/katarina-muti'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/conny-dachs'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/julia-power'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/salma-de-nora'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/valeria-jones'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/brandy-canyon'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/ashby-winter'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/marie-berger'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/luna-rishi'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/colleen-brennan'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/roxanne-brewer'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/elle-denay'}, + # { 'name': '', 'url': 'https://ge.xhamster.com/pornstars/juan-largo'}, + ] + + for new_actor in new_actor_list: + if new_actor['url'] in actors: + log.warning(f"Actor {new_actor['url']} already persisted") + continue + actor_response = requests.post(f"http://127.0.0.1:8800/api/media/actors", json=new_actor) + log.warning(f"add status: {actor_response.status_code}") + if actor_response.status_code == 201: + log.warning(f"add Actor {new_actor['url']} to existing actor list") + actors[new_actor['url']] = new_actor + actor_data = actor_response.json() + log.warning(f"Actor {actor_data} persisted") + log.warning('kontor.add_actors finished')