Added a significant overhaul to the server manager.

This commit is contained in:
2025-12-29 16:07:30 -05:00
parent 4f4e5276a6
commit 216e18a7b4
796 changed files with 528631 additions and 2671 deletions
@@ -0,0 +1,31 @@
# Project Home Media Server Manager Web App
## Objectives
- Build a web app that will be used to manage various components of a file server with various services.
## Services to Manage
- Samba File Shares
- Video File Duplicate Identification
- Comics management
# Samba Share Information
- root of share 1: smb://192.168.6.254/isolation
- root of share 2: smb://192.168.6.254/media
- Comics: smb://192.168.6.254/isolation/Comics
- Adult Videos : smb://192.168.6.254/isolation/videos
- TV Shows: smb://192.168.6.254/media/tvshows
- Movies: smb://192.168.6.254/media/movies
- Music: smb://192.168.6.254/media/music
## Enumeration of Features
- Adult Video File Duplicate report must be able to discern a high likelihood of file pairs or groups being duplicate files by examining multiple attributes including video duration, visual similarity, file size, file name. When I a file group has an extremely high score of being duplicates of one another, this should be presented in a resulting report wherein the user can archive or delete one or multiple duplicates.
- Comics need to be converted from .zip files into .cbz files. These files must then be organized so that they are placed in a folder nested under the comics folder with the name of the comic (obtained from the file name.). Comics with the same name but some variation such as "chapter 2" should be sorted together under these folders.
- Users should be able to use the web interface to fully interact with the files as if they were accessing it from their own OS. This means being able to view any file in the web app, move, copy, delete, play them, download them, or upload files or drag and drop onto the site to upload to the file server location.
# Language
- The application should utilize python for flexibility and for storage of sessions, report data, and any other long term information should be stored in a very accessible database.
# SMB Share Credentials
- Username=home
- password=kifer
+5
View File
@@ -0,0 +1,5 @@
venv/
*.pyc
__pycache__/
.env
sql_app.db
@@ -0,0 +1,127 @@
import os
import re
from collections import defaultdict
import logging
from .samba_manager import SambaManager
from .config import Settings
from smb.smb_structs import OperationFailure
# --- Dedicated logger for ComicsManager ---
comics_logger = logging.getLogger('comics_manager')
comics_logger.setLevel(logging.INFO)
comics_logger.propagate = False
if not comics_logger.handlers:
comics_log_handler = logging.FileHandler("logs/comics_organization.log", mode='a')
comics_log_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
comics_logger.addHandler(comics_log_handler)
comics_logger.addHandler(logging.StreamHandler())
class ComicsManager:
@staticmethod
def _get_series_name(filename):
base_name, _ = os.path.splitext(filename)
pattern = re.compile(r'[-_\s]*(v(ol)?|c(h)?|chapter|issue|ep|episode)[-_\s]*\d+.*|[-_\s]+\d+$', re.IGNORECASE)
match = pattern.search(base_name)
if match:
return base_name[:match.start()].strip('-_ ')
return base_name.strip('-_ ')
def cleanup_toberead(self, samba_manager: SambaManager):
comics_logger.info("Starting cleanup of 'toberead' directory...")
comics_root = "/comics/toberead"
try:
items_in_toberead = samba_manager.list_path(comics_root)
if "error" in items_in_toberead:
raise Exception(f"Failed to list files in 'toberead': {items_in_toberead['error']}")
for item in items_in_toberead:
item_path = item["path"]
item_name = item["name"]
if item["is_directory"]:
comics_logger.info(f"Deleting directory '{item_name}' and all its contents.")
try:
samba_manager.delete_directory_recursive(item_path)
comics_logger.info(f"Successfully deleted directory: {item_name}")
except OperationFailure as e:
comics_logger.error(f"Failed to delete directory {item_name}: {e}")
else:
comics_logger.info(f"Deleting file '{item_name}'.")
try:
samba_manager.delete_file(item_path)
comics_logger.info(f"Successfully deleted file: {item_name}")
except OperationFailure as e:
comics_logger.error(f"Failed to delete file {item_name}: {e}")
comics_logger.info("Cleanup of 'toberead' finished.")
except Exception as e:
comics_logger.error(f"An error occurred during 'toberead' cleanup: {e}", exc_info=True)
def organize_comics(self, samba_manager: SambaManager):
comics_logger.info("Starting comics organization process...")
comics_root = "/comics/toberead"
comics_dest_root = "/comics/manga"
try:
items_in_toberead = samba_manager.list_path(comics_root)
if "error" in items_in_toberead:
raise Exception(f"Failed to list files in 'toberead': {items_in_toberead['error']}")
series_chapters = defaultdict(list)
for item in items_in_toberead:
if not item["is_directory"]:
series_name = self._get_series_name(item["name"])
series_chapters[series_name].append(item)
comics_logger.info(f"Found {len(series_chapters)} series to process.")
for series_name, chapters in series_chapters.items():
comics_logger.info(f"Processing series: {series_name}")
final_series_folder_path = f"{comics_dest_root}/{series_name}".replace("\\", "/")
try:
samba_manager.create_directory(final_series_folder_path)
except OperationFailure as e:
if "FILE_OBJECT_NAME_COLLISION" not in str(e):
comics_logger.error(f"Could not create directory {final_series_folder_path}: {e}")
for chapter_item in chapters:
original_path = chapter_item["path"].replace("\\", "/")
original_filename = chapter_item["name"]
path_to_move = ""
filename_to_move = ""
if original_filename.lower().endswith('.zip'):
cbz_filename = os.path.splitext(original_filename)[0] + '.cbz'
temp_cbz_path = f"{comics_root}/{cbz_filename}".replace("\\", "/")
try:
samba_manager.rename_file(original_path, temp_cbz_path)
path_to_move = temp_cbz_path
filename_to_move = cbz_filename
comics_logger.info(f"Renamed {original_filename} to {cbz_filename}")
except OperationFailure as e:
comics_logger.error(f"Failed to rename ZIP {original_filename}: {e}")
continue
elif original_filename.lower().endswith('.cbz'):
path_to_move = original_path
filename_to_move = original_filename
else:
continue
final_cbz_path = f"{final_series_folder_path}/{filename_to_move}".replace("\\", "/")
try:
samba_manager.rename_file(path_to_move, final_cbz_path)
comics_logger.info(f"Moved {filename_to_move} to {final_series_folder_path}")
except OperationFailure as e:
comics_logger.error(f"Failed to move {filename_to_move} to {final_series_folder_path}: {e}")
except Exception as e:
comics_logger.error(f"An error occurred during comics organization: {e}", exc_info=True)
comics_logger.info("Comics organization process finished.")
return
+40
View File
@@ -0,0 +1,40 @@
from pydantic_settings import BaseSettings, SettingsConfigDict
import subprocess
import logging
import shutil
logger = logging.getLogger(__name__)
# Configure logging early
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.StreamHandler() # Log to console
]
)
def check_gpu_support():
try:
logger.debug("Checking ffmpeg for CUDA support...")
result = subprocess.run("ffmpeg -hwaccels", shell=True, capture_output=True, text=True, check=True)
if "cuda" in result.stdout:
logger.info("ffmpeg with CUDA support detected. Enabling GPU acceleration.")
return True
except (FileNotFoundError, subprocess.CalledProcessError) as e:
logger.debug(f"GPU detection failed: {e}")
pass
logger.info("No ffmpeg with CUDA support detected. Falling back to CPU-based processing.")
return False
class Settings(BaseSettings):
samba_server_ip: str
samba_username: str
samba_password: str
gpu_enabled: bool = check_gpu_support()
model_config = SettingsConfigDict(env_file=".env")
settings = Settings()
@@ -0,0 +1,20 @@
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Session
SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
# Dependency
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@@ -0,0 +1,266 @@
import logging
import os
import subprocess
import tempfile
from PIL import Image
import imagehash
from sqlalchemy.orm import Session
from .samba_manager import SambaManager
from .config import Settings
from . import models
import itertools
import logging
import time
logger = logging.getLogger(__name__)
class DuplicatesManager:
def __init__(self, settings: Settings, db: Session):
self.settings = settings
self.db = db
self.videos_root = "/videos"
def _get_video_duration(self, filepath):
logger.debug(f"Running ffprobe for duration of {filepath}")
try:
command = [
"ffprobe",
"-v",
"error",
"-show_entries",
"format=duration",
"-of",
"default=noprint_wrappers=1:nokey=1",
filepath,
]
logger.debug(f"ffprobe command: {' '.join(command)}")
result = subprocess.run(
command,
capture_output=True,
text=True,
check=True,
)
logger.debug(f"ffprobe stdout: {result.stdout.strip()}")
logger.debug(f"ffprobe stderr: {result.stderr.strip()}")
return float(result.stdout)
except (subprocess.CalledProcessError, FileNotFoundError) as e:
logger.error(f"ffprobe failed for {filepath}: {e}")
return None
def _get_frame_hash(self, filepath):
logger.debug(f"Running ffmpeg for frame hash of {filepath}")
tmp_frame_path = ""
try:
with tempfile.NamedTemporaryFile(suffix=".jpg", delete=False) as tmp_frame:
tmp_frame_path = tmp_frame.name
command = ["ffmpeg"]
if self.settings.gpu_enabled:
command.extend(["-hwaccel", "cuda"])
command.extend([
"-i",
filepath,
"-ss",
"00:00:10",
"-vframes",
"1",
"-y",
tmp_frame_path,
])
logger.debug(f"ffmpeg command: {' '.join(command)}")
result = subprocess.run(
command,
capture_output=True,
check=True,
)
logger.debug(f"ffmpeg stdout: {result.stdout.strip()}")
logger.debug(f"ffmpeg stderr: {result.stderr.strip()}")
if os.path.exists(tmp_frame_path):
logger.debug(f"Temporary frame file exists: {tmp_frame_path}, size: {os.path.getsize(tmp_frame_path)} bytes")
phash = imagehash.phash(Image.open(tmp_frame_path))
return str(phash)
else:
logger.warning(f"Temporary frame file was not created: {tmp_frame_path}")
return None
except (subprocess.CalledProcessError, FileNotFoundError) as e:
logger.error(f"ffmpeg failed for {filepath}: {e}")
return None
except Image.UnidentifiedImageError as e:
logger.error(f"PIL.UnidentifiedImageError for {filepath} with temp file {tmp_frame_path}: {e}")
return None
finally:
if os.path.exists(tmp_frame_path):
os.remove(tmp_frame_path)
def _is_video_file(self, filename):
video_extensions = ['.mp4', '.mkv', '.avi', '.mov', '.wmv', '.flv', '.webm']
return any(filename.lower().endswith(ext) for ext in video_extensions)
def _process_video_file(self, samba_manager: SambaManager, filepath, filename, size):
logger.info(f"Processing video: {filepath} ({filename})")
existing_video = self.db.query(models.VideoFile).filter_by(filepath=filepath).first()
if existing_video:
if existing_video.size == size:
logger.info(f"Skipping already processed and unaltered video: {filepath}")
return
else:
logger.info(f"File {filepath} has altered size ({existing_video.size} -> {size}). Re-processing.")
self.db.delete(existing_video)
self.db.commit()
with tempfile.NamedTemporaryFile(delete=False) as tmp_video:
try:
samba_manager.download_file(filepath, tmp_video)
except Exception as e:
logger.error(f"Failed to download {filepath}: {e}")
return
duration = self._get_video_duration(tmp_video.name)
phash = self._get_frame_hash(tmp_video.name)
os.remove(tmp_video.name)
if duration is not None and phash is not None:
video_file = models.VideoFile(
filepath=filepath,
filename=filename,
size=size,
duration=duration,
phash=phash,
)
self.db.add(video_file)
self.db.commit()
logger.info(f"Processed video: {filepath}")
else:
logger.warning(f"Could not get duration or hash for {filepath}")
def scan_videos(self, samba_manager: SambaManager):
state_file = "logs/duplicates_scan.state"
progress_file = "logs/duplicates_scan.progress"
pause_file = "logs/duplicates_scan.pause"
dirs_to_scan = []
try:
if os.path.exists(progress_file):
with open(progress_file, 'r') as f:
last_processed_dir = f.read().strip()
logger.info(f"Resuming scan from last in-progress directory: {last_processed_dir}")
dirs_to_scan.append(last_processed_dir)
if os.path.exists(state_file):
with open(state_file, 'r') as f:
dirs_to_scan.extend([line.strip() for line in f if line.strip()])
logger.info(f"Loaded {len(dirs_to_scan)} directories from state file.")
if not dirs_to_scan:
dirs_to_scan = [self.videos_root]
logger.info(f"Starting scan for videos in {self.videos_root} on share 'isolation'")
while dirs_to_scan:
while os.path.exists(pause_file):
logger.info("Scan is paused. Waiting for resume signal...")
time.sleep(5)
current_path = dirs_to_scan.pop(0)
with open(progress_file, 'w') as f:
f.write(current_path)
logger.info(f"Scanning directory: {current_path}")
files_and_dirs = samba_manager.list_path(current_path)
if "error" in files_and_dirs:
logger.error(f"Failed to list path {current_path}: {files_and_dirs['error']}")
continue
subdirs = []
for item in files_and_dirs:
while os.path.exists(pause_file):
logger.info("Scan is paused. Waiting for resume signal...")
time.sleep(5)
if item["is_directory"]:
subdirs.append(item["path"])
elif self._is_video_file(item["name"]):
self._process_video_file(samba_manager, item["path"], item["name"], item["size"])
dirs_to_scan = subdirs + dirs_to_scan
if os.path.exists(progress_file):
os.remove(progress_file)
with open(state_file, 'w') as f:
for d in dirs_to_scan:
f.write(d + '\n')
if os.path.exists(state_file):
os.remove(state_file)
logger.info("Video scan complete.")
return {"status": "Scan complete"}
except Exception as e:
logger.error(f"An error occurred during video scan: {e}", exc_info=True)
return {"status": "Scan failed", "error": str(e)}
def _hamming_distance(self, s1, s2):
return sum(c1 != c2 for c1, c2 in zip(s1, s2))
def _calculate_similarity(self, file1: models.VideoFile, file2: models.VideoFile):
size_similarity = 1 - (abs(file1.size - file2.size) / max(file1.size, file2.size))
duration_similarity = 1 - (abs(file1.duration - file2.duration) / max(file1.duration, file2.duration))
hash_similarity = 1 - (self._hamming_distance(file1.phash, file2.phash) / len(file1.phash))
return (size_similarity * 0.2) + (duration_similarity * 0.3) + (hash_similarity * 0.5)
def find_duplicates(self, threshold=0.95):
report = models.DuplicateReport(status="running")
self.db.add(report)
self.db.commit()
videos = self.db.query(models.VideoFile).all()
groups = []
processed_videos = set()
for video1, video2 in itertools.combinations(videos, 2):
if video1.id in processed_videos or video2.id in processed_videos:
continue
score = self._calculate_similarity(video1, video2)
if score >= threshold:
existing_group = None
for group in groups:
if video1.id in group["video_ids"] or video2.id in group["video_ids"]:
existing_group = group
break
if existing_group:
existing_group["video_ids"].add(video1.id)
existing_group["video_ids"].add(video2.id)
existing_group["scores"].append(score)
else:
groups.append({"video_ids": {video1.id, video2.id}, "scores": [score]})
processed_videos.add(video1.id)
processed_videos.add(video2.id)
for group_data in groups:
avg_score = sum(group_data["scores"]) / len(group_data["scores"])
db_group = models.DuplicateFileGroup(report_id=report.id, score=avg_score)
self.db.add(db_group)
self.db.commit()
for video_id in group_data["video_ids"]:
db_file = models.DuplicateFile(group_id=db_group.id, video_file_id=video_id)
self.db.add(db_file)
report.status = "completed"
self.db.commit()
return {"report_id": report.id, "status": "completed"}
+37
View File
@@ -0,0 +1,37 @@
from fastapi import FastAPI, Depends
from fastapi.middleware.cors import CORSMiddleware
from sqlalchemy.orm import Session
from . import models
from .database import SessionLocal, engine, get_db
from .routers import samba, comics, duplicates
models.Base.metadata.create_all(bind=engine)
app = FastAPI()
origins = [
"http://localhost:5173", # Assuming frontend runs on this port during development
"http://127.0.0.1:5173",
# Add your production frontend URL(s) here when deploying
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(samba.router, prefix="/samba", tags=["samba"])
app.include_router(comics.router, prefix="/comics", tags=["comics"])
app.include_router(duplicates.router, prefix="/duplicates", tags=["duplicates"])
@app.get("/")
def read_root():
return {"Hello": "World"}
+44
View File
@@ -0,0 +1,44 @@
from sqlalchemy import Column, Integer, String, DateTime, Float, ForeignKey
from sqlalchemy.orm import relationship
from .database import Base
import datetime
class DuplicateReport(Base):
__tablename__ = "duplicate_reports"
id = Column(Integer, primary_key=True, index=True)
created_at = Column(DateTime, default=datetime.datetime.utcnow)
status = Column(String)
groups = relationship("DuplicateFileGroup", back_populates="report")
class VideoFile(Base):
__tablename__ = "video_files"
id = Column(Integer, primary_key=True, index=True)
filepath = Column(String, unique=True, index=True)
filename = Column(String)
size = Column(Integer)
duration = Column(Float)
phash = Column(String)
class DuplicateFileGroup(Base):
__tablename__ = "duplicate_file_groups"
id = Column(Integer, primary_key=True, index=True)
report_id = Column(Integer, ForeignKey("duplicate_reports.id"))
score = Column(Float)
report = relationship("DuplicateReport", back_populates="groups")
files = relationship("DuplicateFile", back_populates="group")
class DuplicateFile(Base):
__tablename__ = "duplicate_files"
id = Column(Integer, primary_key=True, index=True)
group_id = Column(Integer, ForeignKey("duplicate_file_groups.id"))
video_file_id = Column(Integer, ForeignKey("video_files.id"))
group = relationship("DuplicateFileGroup", back_populates="files")
video_file = relationship("VideoFile")
@@ -0,0 +1,40 @@
from fastapi import APIRouter, BackgroundTasks
from ..comics_manager import ComicsManager
from ..config import settings
from ..samba_manager import SambaManager
router = APIRouter()
def run_organize_comics_background():
app_settings = settings
manager = ComicsManager()
samba_manager = SambaManager(
app_settings.samba_server_ip,
"isolation",
app_settings.samba_username,
app_settings.samba_password,
)
manager.organize_comics(samba_manager)
samba_manager.close()
@router.post("/organize")
def organize_comics(background_tasks: BackgroundTasks):
background_tasks.add_task(run_organize_comics_background)
return {"message": "Comics organization started in the background."}
def run_cleanup_toberead_background():
app_settings = settings
manager = ComicsManager()
samba_manager = SambaManager(
app_settings.samba_server_ip,
"isolation",
app_settings.samba_username,
app_settings.samba_password,
)
manager.cleanup_toberead(samba_manager)
samba_manager.close()
@router.delete("/cleanup_toberead")
def cleanup_toberead(background_tasks: BackgroundTasks):
background_tasks.add_task(run_cleanup_toberead_background)
return {"message": "Comics cleanup started in the background."}
@@ -0,0 +1,57 @@
from fastapi import APIRouter, Depends, BackgroundTasks
from sqlalchemy.orm import Session
from ..duplicates_manager import DuplicatesManager
from ..config import settings, Settings
from ..database import get_db, SessionLocal
from ..samba_manager import SambaManager
import os
router = APIRouter()
def run_scan_videos_background():
db = SessionLocal()
app_settings = Settings()
manager = DuplicatesManager(app_settings, db)
samba_manager = SambaManager(
app_settings.samba_server_ip,
"isolation",
app_settings.samba_username,
app_settings.samba_password,
)
try:
manager.scan_videos(samba_manager)
finally:
samba_manager.close()
db.close()
@router.post("/scan")
def scan_videos(background_tasks: BackgroundTasks):
background_tasks.add_task(run_scan_videos_background)
return {"message": "Video scan started in the background."}
@router.post("/scan/pause")
def pause_scan():
with open("logs/duplicates_scan.pause", 'w') as f:
pass
return {"message": "Video scan paused."}
@router.post("/scan/resume")
def resume_scan():
if os.path.exists("logs/duplicates_scan.pause"):
os.remove("logs/duplicates_scan.pause")
return {"message": "Video scan resumed."}
@router.get("/scan/status")
def get_scan_status():
if os.path.exists("logs/duplicates_scan.pause"):
return {"status": "Paused"}
if os.path.exists("logs/duplicates_scan.progress") or os.path.exists("logs/duplicates_scan.state"):
return {"status": "Scanning"}
return {"status": "Idle"}
@router.post("/find")
def find_duplicates(threshold: float = 0.95, db: Session = Depends(get_db)):
manager = DuplicatesManager(settings, db)
result = manager.find_duplicates(threshold)
return result
@@ -0,0 +1,178 @@
from fastapi import APIRouter, UploadFile, File, Request, Response
from fastapi.responses import StreamingResponse
from pydantic import BaseModel
from ..samba_manager import SambaManager
from ..config import settings
import os
import io
import mimetypes
import zipfile
class RenameRequest(BaseModel):
old_path: str
new_path: str
router = APIRouter()
@router.get("/list/{share_name}")
def list_files(share_name: str, path: str = "/"):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
files = manager.list_path(path)
manager.close()
return files
@router.delete("/files/{share_name}")
def delete_file(share_name: str, path: str):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
result = manager.delete_file(path)
manager.close()
return result
@router.post("/files/upload/{share_name}")
def upload_file(share_name: str, path: str, file: UploadFile = File(...)):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
# The path in storeFile is service_name + path
remote_path = os.path.join(path, file.filename)
result = manager.upload_file(remote_path, file.file)
manager.close()
return result
@router.get("/files/download/{share_name}")
def download_file(share_name: str, path: str):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
file_obj = io.BytesIO()
manager.download_file(path, file_obj)
manager.close()
file_obj.seek(0)
return StreamingResponse(file_obj, media_type="application/octet-stream")
@router.get("/view/{share_name}")
def view_file(share_name: str, path: str, request: Request):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
try:
attributes = manager.get_attributes(path)
if isinstance(attributes, dict) and "error" in attributes:
return Response(status_code=404)
file_size = attributes.file_size
range_header = request.headers.get('Range')
media_type, _ = mimetypes.guess_type(path)
if media_type is None:
media_type = "application/octet-stream"
if range_header:
start_str, end_str = range_header.replace('bytes=', '').split('-')
start = int(start_str)
end = int(end_str) if end_str else file_size - 1
if start >= file_size:
return Response(status_code=416)
length = end - start + 1
file_obj = io.BytesIO()
manager.download_file_range(path, file_obj, offset=start, max_length=length)
file_obj.seek(0)
headers = {
'Content-Range': f'bytes {start}-{end}/{file_size}',
'Accept-Ranges': 'bytes',
'Content-Length': str(length),
}
return Response(file_obj.read(), status_code=206, headers=headers, media_type=media_type)
else:
file_obj = io.BytesIO()
manager.download_file(path, file_obj)
file_obj.seek(0)
return StreamingResponse(file_obj, media_type=media_type, headers={"Accept-Ranges": "bytes", "Content-Length": str(file_size)})
finally:
manager.close()
@router.get("/cbz/list/{share_name}")
def list_cbz_contents(share_name: str, path: str):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
file_obj = io.BytesIO()
manager.download_file(path, file_obj)
manager.close()
file_obj.seek(0)
image_files = []
with zipfile.ZipFile(file_obj, 'r') as zip_ref:
for file_info in zip_ref.infolist():
if file_info.filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp')):
image_files.append(file_info.filename)
return sorted(image_files)
@router.get("/cbz/image/{share_name}")
def get_cbz_image(share_name: str, path: str, image_name: str):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
file_obj = io.BytesIO()
manager.download_file(path, file_obj)
manager.close()
file_obj.seek(0)
with zipfile.ZipFile(file_obj, 'r') as zip_ref:
with zip_ref.open(image_name) as image_file:
image_data = io.BytesIO(image_file.read())
media_type, _ = mimetypes.guess_type(image_name)
if media_type is None:
media_type = "application/octet-stream"
return StreamingResponse(image_data, media_type=media_type)
@router.put("/files/rename/{share_name}")
def rename_file(share_name: str, request: RenameRequest):
manager = SambaManager(
settings.samba_server_ip,
share_name,
username=settings.samba_username,
password=settings.samba_password,
)
result = manager.rename_file(request.old_path, request.new_path)
manager.close()
return result
@@ -0,0 +1,109 @@
from smb.SMBConnection import SMBConnection
import logging
logger = logging.getLogger(__name__)
class SambaManager:
def __init__(self, server_ip, share_name, username, password, client_machine_name="smbclient"):
self.server_ip = server_ip
self.share_name = share_name
self.conn = SMBConnection(username, password, client_machine_name, "server_name", use_ntlm_v2=True)
self.conn.connect(server_ip, 139)
def list_path(self, current_dir_path="/"):
try:
files = self.conn.listPath(self.share_name, current_dir_path)
items = []
for f in files:
if f.filename in ['.', '..']:
continue
normalized_current_path = current_dir_path
if normalized_current_path != '/' and not normalized_current_path.endswith('/'):
normalized_current_path += '/'
full_item_path = f"{normalized_current_path}{f.filename}".replace("\\\\", "/")
items.append({
"name": f.filename,
"is_directory": f.isDirectory,
"size": f.file_size,
"path": full_item_path
})
return items
except Exception as e:
logger.error(f"Error listing path '{current_dir_path}' on share '{self.share_name}': {e}", exc_info=True)
return []
def delete_file(self, path):
try:
self.conn.deleteFiles(self.share_name, path)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def upload_file(self, path, file_obj):
try:
self.conn.storeFile(self.share_name, path, file_obj)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def download_file(self, path, file_obj):
try:
self.conn.retrieveFile(self.share_name, path, file_obj)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def download_file_range(self, path, file_obj, offset, max_length):
try:
self.conn.retrieveFileFromOffset(self.share_name, path, file_obj, offset, max_length)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def get_attributes(self, path):
try:
return self.conn.getAttributes(self.share_name, path)
except Exception as e:
return {"error": str(e)}
def rename_file(self, old_path, new_path):
try:
self.conn.rename(self.share_name, old_path, new_path)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def create_directory(self, path):
try:
self.conn.createDirectory(self.share_name, path)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def delete_directory(self, path):
try:
self.conn.deleteDirectory(self.share_name, path)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def delete_directory_recursive(self, path):
try:
items = self.list_path(path)
for item in items:
item_path = item["path"]
if item["is_directory"]:
self.delete_directory_recursive(item_path)
else:
self.delete_file(item_path)
self.delete_directory(path)
return {"success": True}
except Exception as e:
return {"error": str(e)}
def close(self):
self.conn.close()
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,867 @@
2025-12-29 10:34:48,029 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:34:48,044 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:34:48,044 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:34:48,047 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'9286c445fa58dac6'"
2025-12-29 10:34:48,047 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'9286c445fa58dac6'"
2025-12-29 10:34:48,048 - INFO - Server supports SMB signing
2025-12-29 10:34:48,048 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:34:48,054 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:34:53,833 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:34:53,864 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:34:53,864 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:34:53,868 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'61053209eb26997b'"
2025-12-29 10:34:53,868 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'61053209eb26997b'"
2025-12-29 10:34:53,868 - INFO - Server supports SMB signing
2025-12-29 10:34:53,868 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:34:53,874 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:34:59,823 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:34:59,838 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:34:59,839 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:34:59,842 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'7b4daa663b706ea0'"
2025-12-29 10:34:59,842 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'7b4daa663b706ea0'"
2025-12-29 10:34:59,842 - INFO - Server supports SMB signing
2025-12-29 10:34:59,842 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:34:59,848 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:34:59,848 - INFO - Starting scan for videos in /videos on share 'isolation'
2025-12-29 10:34:59,848 - INFO - Scanning directory: /videos
2025-12-29 10:34:59,920 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips
2025-12-29 10:34:59,937 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,945 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,945 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4 (Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4)
2025-12-29 10:34:59,945 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4
2025-12-29 10:34:59,945 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4 (Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,946 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,946 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4 (Lacy Vixxen gives a make-out lesson to her Brother.mp4)
2025-12-29 10:34:59,946 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4
2025-12-29 10:34:59,946 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4 (Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4)
2025-12-29 10:34:59,946 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4
2025-12-29 10:34:59,947 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4 (Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4)
2025-12-29 10:34:59,947 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4
2025-12-29 10:34:59,947 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4)
2025-12-29 10:34:59,947 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4
2025-12-29 10:34:59,947 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4 (Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4)
2025-12-29 10:34:59,948 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4
2025-12-29 10:34:59,948 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,948 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,948 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4 (Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,948 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,948 - INFO - Processing video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4 (A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4)
2025-12-29 10:34:59,949 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4
2025-12-29 10:34:59,949 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4 (Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,949 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,949 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4 (Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4)
2025-12-29 10:34:59,949 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4
2025-12-29 10:34:59,949 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4 (Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,950 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,950 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4 (Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4)
2025-12-29 10:34:59,950 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4
2025-12-29 10:34:59,950 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4 (Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,950 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,950 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4)
2025-12-29 10:34:59,951 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4
2025-12-29 10:34:59,951 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4)
2025-12-29 10:34:59,951 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4
2025-12-29 10:34:59,951 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4 (Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4)
2025-12-29 10:34:59,951 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4
2025-12-29 10:34:59,951 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4 (Ashley Fires - Mommys Special Diet.mp4)
2025-12-29 10:34:59,952 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4
2025-12-29 10:34:59,952 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4 (Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,952 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,952 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4 (Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4)
2025-12-29 10:34:59,952 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4
2025-12-29 10:34:59,952 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4 (Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,953 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,953 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4 (Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4)
2025-12-29 10:34:59,953 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4
2025-12-29 10:34:59,953 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4 (Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4)
2025-12-29 10:34:59,953 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4
2025-12-29 10:34:59,953 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4 (Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,954 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,954 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4 (Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,954 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,954 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4 (Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,954 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,955 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4 (Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4)
2025-12-29 10:34:59,955 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4
2025-12-29 10:34:59,955 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4 (Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,955 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,955 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4 (Lacy Vixxen returns the favour to her Brother.mp4)
2025-12-29 10:34:59,955 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4
2025-12-29 10:34:59,956 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4 (Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,956 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,956 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4 (Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,956 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,956 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,956 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,956 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4 (Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4)
2025-12-29 10:34:59,957 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4
2025-12-29 10:34:59,957 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4 (Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4)
2025-12-29 10:34:59,957 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4
2025-12-29 10:34:59,957 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4 (Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,957 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,957 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4 (Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4)
2025-12-29 10:34:59,957 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4
2025-12-29 10:34:59,957 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4 (Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4)
2025-12-29 10:34:59,958 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4
2025-12-29 10:34:59,958 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4 (Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,958 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,958 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4 (Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4)
2025-12-29 10:34:59,958 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4
2025-12-29 10:34:59,958 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4 (Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4)
2025-12-29 10:34:59,958 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4
2025-12-29 10:34:59,958 - INFO - Processing video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4 (The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4)
2025-12-29 10:34:59,959 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4
2025-12-29 10:34:59,959 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4 (Ashley Fires - My Son Joins The Service.mp4)
2025-12-29 10:34:59,959 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4
2025-12-29 10:34:59,959 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4)
2025-12-29 10:34:59,959 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4
2025-12-29 10:34:59,959 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4 (Lacy Vixxen - Brother Fucker.mp4)
2025-12-29 10:34:59,959 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4
2025-12-29 10:34:59,959 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,959 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,960 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4 (Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4)
2025-12-29 10:34:59,960 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4
2025-12-29 10:34:59,960 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4 (Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4)
2025-12-29 10:34:59,960 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4
2025-12-29 10:34:59,960 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4 (Ashley Fires - Mommy Gets Married.mp4)
2025-12-29 10:34:59,960 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4
2025-12-29 10:34:59,960 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen
2025-12-29 10:34:59,972 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:34:59,983 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4 (momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4)
2025-12-29 10:34:59,983 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4
2025-12-29 10:34:59,983 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4 (Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4)
2025-12-29 10:34:59,984 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4
2025-12-29 10:34:59,984 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4 (Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4)
2025-12-29 10:36:28,967 - ERROR - ffprobe failed for /tmp/tmpvovve7b3: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpvovve7b3']' returned non-zero exit status 1.
2025-12-29 10:36:28,984 - ERROR - ffmpeg failed for /tmp/tmpvovve7b3: Command '['ffmpeg', '-i', '/tmp/tmpvovve7b3', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpd413jt2_.jpg']' returned non-zero exit status 183.
2025-12-29 10:36:28,984 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4
2025-12-29 10:36:29,053 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT
2025-12-29 10:36:29,065 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4 (MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4)
2025-12-29 10:36:29,065 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4
2025-12-29 10:36:29,065 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.HEVC.x265.PRT
2025-12-29 10:36:29,075 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:36:29,086 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4 (momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4)
2025-12-29 10:37:59,992 - ERROR - ffmpeg failed for /tmp/tmpdgnd9l3n: Command '['ffmpeg', '-i', '/tmp/tmpdgnd9l3n', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpub8uelee.jpg']' returned non-zero exit status 228.
2025-12-29 10:37:59,992 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4
2025-12-29 10:38:00,064 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4 (Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4)
2025-12-29 10:38:00,065 - INFO - Skipping already processed video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4
2025-12-29 10:38:00,065 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:38:00,085 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4 (momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4)
2025-12-29 10:39:30,394 - ERROR - ffmpeg failed for /tmp/tmpaw9s6qjt: Command '['ffmpeg', '-i', '/tmp/tmpaw9s6qjt', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpq3cppq9z.jpg']' returned non-zero exit status 228.
2025-12-29 10:39:30,394 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4
2025-12-29 10:39:30,459 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.HEVC.x265.PRT
2025-12-29 10:39:30,470 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4 (Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4)
2025-12-29 10:41:01,691 - ERROR - ffprobe failed for /tmp/tmpyod2c_93: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpyod2c_93']' returned non-zero exit status 1.
2025-12-29 10:41:01,709 - ERROR - ffmpeg failed for /tmp/tmpyod2c_93: Command '['ffmpeg', '-i', '/tmp/tmpyod2c_93', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp258hzy7q.jpg']' returned non-zero exit status 183.
2025-12-29 10:41:01,709 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4
2025-12-29 10:41:01,786 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4 (FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4)
2025-12-29 10:42:02,468 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:42:02,486 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:42:02,487 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:42:02,490 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'271eb3fbbdfa31d2'"
2025-12-29 10:42:02,490 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'271eb3fbbdfa31d2'"
2025-12-29 10:42:02,490 - INFO - Server supports SMB signing
2025-12-29 10:42:02,490 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:42:02,496 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:42:05,777 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:42:05,797 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:42:05,797 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:42:05,801 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'661dea0b55af1633'"
2025-12-29 10:42:05,801 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'661dea0b55af1633'"
2025-12-29 10:42:05,801 - INFO - Server supports SMB signing
2025-12-29 10:42:05,801 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:42:05,806 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:42:05,806 - INFO - Starting scan for videos in /videos on share 'isolation'
2025-12-29 10:42:05,806 - INFO - Scanning directory: /videos
2025-12-29 10:42:05,857 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips
2025-12-29 10:42:05,872 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,879 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,879 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4 (Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4)
2025-12-29 10:42:05,879 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4
2025-12-29 10:42:05,879 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4 (Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,879 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,879 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4 (Lacy Vixxen gives a make-out lesson to her Brother.mp4)
2025-12-29 10:42:05,880 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4
2025-12-29 10:42:05,880 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4 (Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4)
2025-12-29 10:42:05,880 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4
2025-12-29 10:42:05,880 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4 (Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4)
2025-12-29 10:42:05,880 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4
2025-12-29 10:42:05,880 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4)
2025-12-29 10:42:05,880 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4
2025-12-29 10:42:05,880 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4 (Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4)
2025-12-29 10:42:05,881 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4
2025-12-29 10:42:05,881 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,881 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,881 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4 (Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,881 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,881 - INFO - Processing video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4 (A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4)
2025-12-29 10:42:05,882 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4
2025-12-29 10:42:05,882 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4 (Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,882 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,882 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4 (Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4)
2025-12-29 10:42:05,882 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4
2025-12-29 10:42:05,882 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4 (Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,882 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,882 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4 (Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4)
2025-12-29 10:42:05,883 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4
2025-12-29 10:42:05,883 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4 (Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,883 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,883 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4)
2025-12-29 10:42:05,883 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4
2025-12-29 10:42:05,883 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4)
2025-12-29 10:42:05,883 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4
2025-12-29 10:42:05,883 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4 (Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4)
2025-12-29 10:42:05,884 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4
2025-12-29 10:42:05,884 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4 (Ashley Fires - Mommys Special Diet.mp4)
2025-12-29 10:42:05,884 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4
2025-12-29 10:42:05,884 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4 (Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,884 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,884 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4 (Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4)
2025-12-29 10:42:05,884 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4
2025-12-29 10:42:05,884 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4 (Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,885 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,885 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4 (Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4)
2025-12-29 10:42:05,885 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4
2025-12-29 10:42:05,885 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4 (Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4)
2025-12-29 10:42:05,885 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4
2025-12-29 10:42:05,885 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4 (Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,885 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,885 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4 (Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,886 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,886 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4 (Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,886 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,886 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4 (Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4)
2025-12-29 10:42:05,886 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4
2025-12-29 10:42:05,886 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4 (Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,886 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,886 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4 (Lacy Vixxen returns the favour to her Brother.mp4)
2025-12-29 10:42:05,887 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4
2025-12-29 10:42:05,887 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4 (Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,887 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,887 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4 (Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,887 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,887 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,887 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,887 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4 (Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4)
2025-12-29 10:42:05,888 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4
2025-12-29 10:42:05,888 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4 (Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4)
2025-12-29 10:42:05,888 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4
2025-12-29 10:42:05,888 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4 (Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,888 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,888 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4 (Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4)
2025-12-29 10:42:05,888 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4
2025-12-29 10:42:05,888 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4 (Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4)
2025-12-29 10:42:05,888 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4
2025-12-29 10:42:05,889 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4 (Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,889 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,889 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4 (Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4)
2025-12-29 10:42:05,889 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4
2025-12-29 10:42:05,889 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4 (Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4)
2025-12-29 10:42:05,889 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4
2025-12-29 10:42:05,889 - INFO - Processing video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4 (The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4)
2025-12-29 10:42:05,889 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4
2025-12-29 10:42:05,890 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4 (Ashley Fires - My Son Joins The Service.mp4)
2025-12-29 10:42:05,890 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4
2025-12-29 10:42:05,890 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4)
2025-12-29 10:42:05,890 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4
2025-12-29 10:42:05,890 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4 (Lacy Vixxen - Brother Fucker.mp4)
2025-12-29 10:42:05,890 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4
2025-12-29 10:42:05,890 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,890 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,890 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4 (Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4)
2025-12-29 10:42:05,891 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4
2025-12-29 10:42:05,891 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4 (Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4)
2025-12-29 10:42:05,891 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4
2025-12-29 10:42:05,891 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4 (Ashley Fires - Mommy Gets Married.mp4)
2025-12-29 10:42:05,891 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4
2025-12-29 10:42:05,891 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen
2025-12-29 10:42:05,903 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:42:05,914 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4 (momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4)
2025-12-29 10:42:05,915 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4
2025-12-29 10:42:05,915 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4 (Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4)
2025-12-29 10:42:05,915 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4
2025-12-29 10:42:05,915 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4 (Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4)
2025-12-29 10:43:07,736 - ERROR - ffprobe failed for /tmp/tmp8elfmo_d: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmp8elfmo_d']' returned non-zero exit status 1.
2025-12-29 10:43:07,753 - ERROR - ffmpeg failed for /tmp/tmp8elfmo_d: Command '['ffmpeg', '-i', '/tmp/tmp8elfmo_d', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpk4g_dtuv.jpg']' returned non-zero exit status 183.
2025-12-29 10:43:07,753 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4
2025-12-29 10:43:07,790 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT
2025-12-29 10:43:07,801 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4 (MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4)
2025-12-29 10:43:07,802 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4
2025-12-29 10:43:07,802 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.HEVC.x265.PRT
2025-12-29 10:43:07,811 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:43:07,822 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4 (momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4)
2025-12-29 10:44:18,948 - ERROR - ffmpeg failed for /tmp/tmplbtvlnf1: Command '['ffmpeg', '-i', '/tmp/tmplbtvlnf1', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpilwelnr2.jpg']' returned non-zero exit status 228.
2025-12-29 10:44:18,948 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4
2025-12-29 10:44:18,986 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4 (Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4)
2025-12-29 10:44:18,987 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4
2025-12-29 10:44:18,987 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:44:18,997 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4 (momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4)
2025-12-29 10:45:28,839 - ERROR - ffmpeg failed for /tmp/tmpure0vviv: Command '['ffmpeg', '-i', '/tmp/tmpure0vviv', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpmejhwzfc.jpg']' returned non-zero exit status 228.
2025-12-29 10:45:28,839 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4
2025-12-29 10:45:28,881 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.HEVC.x265.PRT
2025-12-29 10:45:28,891 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4 (Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4)
2025-12-29 10:46:39,179 - ERROR - ffprobe failed for /tmp/tmpre5gc0t1: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpre5gc0t1']' returned non-zero exit status 1.
2025-12-29 10:46:39,197 - ERROR - ffmpeg failed for /tmp/tmpre5gc0t1: Command '['ffmpeg', '-i', '/tmp/tmpre5gc0t1', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp08x00qyz.jpg']' returned non-zero exit status 183.
2025-12-29 10:46:39,197 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4
2025-12-29 10:46:39,247 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4 (FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4)
2025-12-29 10:47:49,922 - ERROR - ffmpeg failed for /tmp/tmpxd2bebby: Command '['ffmpeg', '-i', '/tmp/tmpxd2bebby', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpnxp0i0zi.jpg']' returned non-zero exit status 228.
2025-12-29 10:47:49,922 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4
2025-12-29 10:47:49,965 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Helps Her Son Study by Ashley Fires Fetish Clips.mp4 (Lux Orchid in Mommy Helps Her Son Study by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:47:49,966 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Helps Her Son Study by Ashley Fires Fetish Clips.mp4
2025-12-29 10:47:49,966 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 1 by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen in Family Picnic Part 1 by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:47:49,966 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 1 by Ashley Fires Fetish Clips.mp4
2025-12-29 10:47:49,966 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Mom works at strip club.mp4 (Ashley Fires, Lux Orchid in Mom works at strip club.mp4)
2025-12-29 10:47:49,966 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Mom works at strip club.mp4
2025-12-29 10:47:49,966 - INFO - Processing video: /videos/ashley-fires-fetish-clips/My Two Brothers - Modern Taboo Family-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Double Blowjob, Family Roleplay, Missing Performer (Male), Step Brother, Step Sister, Threesome (BGG), creampie].mp4 (My Two Brothers - Modern Taboo Family-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Double Blowjob, Family Roleplay, Missing Performer (Male), Step Brother, Step Sister, Threesome (BGG), creampie].mp4)
2025-12-29 10:47:49,967 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/My Two Brothers - Modern Taboo Family-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Double Blowjob, Family Roleplay, Missing Performer (Male), Step Brother, Step Sister, Threesome (BGG), creampie].mp4
2025-12-29 10:47:49,967 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Mint Rose - The Devil In My Daughter.mp4 (Ashley Fires, Mint Rose - The Devil In My Daughter.mp4)
2025-12-29 10:47:49,967 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Mint Rose - The Devil In My Daughter.mp4
2025-12-29 10:47:49,967 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy is A Street Walking Whore - Ashley Fires Fetish Clips.mp4 (Lux Orchid - Mommy is A Street Walking Whore - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:47:49,967 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy is A Street Walking Whore - Ashley Fires Fetish Clips.mp4
2025-12-29 10:47:49,967 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother In Charge-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Gagging, Handjob, Step Sister].mp4 (Brother In Charge-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Gagging, Handjob, Step Sister].mp4)
2025-12-29 10:47:49,967 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother In Charge-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Gagging, Handjob, Step Sister].mp4
2025-12-29 10:47:49,967 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid, Anya Olsen - Aunt, Mother, Daughter Threesome - The Weekend.mp4 (Ashley Fires, Lux Orchid, Anya Olsen - Aunt, Mother, Daughter Threesome - The Weekend.mp4)
2025-12-29 10:47:49,967 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid, Anya Olsen - Aunt, Mother, Daughter Threesome - The Weekend.mp4
2025-12-29 10:47:49,967 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Daddy Does Daughter First - Ashley Fires Fetish Clips.mp4 (Anya Olsen - Daughter Exchange Club - Daddy Does Daughter First - Ashley Fires Fetish Clips.mp4)
2025-12-29 10:47:49,968 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Daddy Does Daughter First - Ashley Fires Fetish Clips.mp4
2025-12-29 10:47:49,968 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Chi in Daddy Knows Her Secret by Ashley Fires Fetish Clips.mp4 (Chi in Daddy Knows Her Secret by Ashley Fires Fetish Clips.mp4)
2025-12-29 10:47:49,968 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Chi in Daddy Knows Her Secret by Ashley Fires Fetish Clips.mp4
2025-12-29 10:47:49,968 - INFO - Scanning directory: /videos/lenna.lux
2025-12-29 10:47:49,979 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Impregnate the College Virgin – Taboofantazy.mp4 (Lenna Lux - Impregnate the College Virgin – Taboofantazy.mp4)
2025-12-29 10:47:49,979 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Impregnate the College Virgin – Taboofantazy.mp4
2025-12-29 10:47:49,979 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Step Sister Tit Fuck & Tease – Taboofantazy.mp4 (Lenna Lux - Step Sister Tit Fuck & Tease – Taboofantazy.mp4)
2025-12-29 10:47:49,980 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Step Sister Tit Fuck & Tease – Taboofantazy.mp4
2025-12-29 10:47:49,980 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Vacation with Daddy – Taboofantazy.mp4 (Lenna Lux - Vacation with Daddy – Taboofantazy.mp4)
2025-12-29 10:47:59,228 - ERROR - ffprobe failed for /tmp/tmpbxhisoz9: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpbxhisoz9']' returned non-zero exit status 1.
2025-12-29 10:47:59,247 - ERROR - ffmpeg failed for /tmp/tmpbxhisoz9: Command '['ffmpeg', '-i', '/tmp/tmpbxhisoz9', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmppdgwpj_v.jpg']' returned non-zero exit status 183.
2025-12-29 10:47:59,247 - WARNING - Could not get duration or hash for /videos/lenna.lux/Lenna Lux - Vacation with Daddy – Taboofantazy.mp4
2025-12-29 10:47:59,253 - INFO - Processing video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Truth or Dare with Mom And Sis - Fifi Foxx Fantasies.mp4 (Lenna Lux, Carmen Valentina - Truth or Dare with Mom And Sis - Fifi Foxx Fantasies.mp4)
2025-12-29 10:47:59,254 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Truth or Dare with Mom And Sis - Fifi Foxx Fantasies.mp4
2025-12-29 10:47:59,254 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Stepbrother Blackmail Brat into Creampie – Taboo.mp4 (Lenna Lux - Stepbrother Blackmail Brat into Creampie – Taboo.mp4)
2025-12-29 10:47:59,254 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Stepbrother Blackmail Brat into Creampie – Taboo.mp4
2025-12-29 10:47:59,254 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Teaching My Step Brother About Sex – Taboofantaz.mp4 (Lenna Lux - Teaching My Step Brother About Sex – Taboofantaz.mp4)
2025-12-29 10:47:59,254 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Teaching My Step Brother About Sex – Taboofantaz.mp4
2025-12-29 10:47:59,254 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddys impregnation secret – Taboofantazy.mp4 (Lenna Lux - Daddys impregnation secret – Taboofantazy.mp4)
2025-12-29 10:48:09,145 - ERROR - ffprobe failed for /tmp/tmpdox3y74p: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpdox3y74p']' returned non-zero exit status 1.
2025-12-29 10:48:09,163 - ERROR - ffmpeg failed for /tmp/tmpdox3y74p: Command '['ffmpeg', '-i', '/tmp/tmpdox3y74p', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp4g7mqjhc.jpg']' returned non-zero exit status 183.
2025-12-29 10:48:09,164 - WARNING - Could not get duration or hash for /videos/lenna.lux/Lenna Lux - Daddys impregnation secret – Taboofantazy.mp4
2025-12-29 10:48:09,170 - INFO - Processing video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Mother, Sister and Brother in Quarantine - Fifi Foxx Fantasies.mp4 (Lenna Lux, Carmen Valentina - Mother, Sister and Brother in Quarantine - Fifi Foxx Fantasies.mp4)
2025-12-29 10:48:09,171 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Mother, Sister and Brother in Quarantine - Fifi Foxx Fantasies.mp4
2025-12-29 10:48:09,171 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddy Can I Have Your Baby – Taboofantazy.mp4 (Lenna Lux - Daddy Can I Have Your Baby – Taboofantazy.mp4)
2025-12-29 10:48:09,171 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddy Can I Have Your Baby – Taboofantazy.mp4
2025-12-29 10:48:09,171 - INFO - Processing video: /videos/lenna.lux/The Deal-(Lenna Lux)-{Family Therapy XXX}-[Blowjob, Cumshot].mp4 (The Deal-(Lenna Lux)-{Family Therapy XXX}-[Blowjob, Cumshot].mp4)
2025-12-29 10:48:09,172 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/The Deal-(Lenna Lux)-{Family Therapy XXX}-[Blowjob, Cumshot].mp4
2025-12-29 10:48:09,172 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Shrunk My Step Brother – Taboofantazy.mp4 (Lenna Lux - Shrunk My Step Brother – Taboofantazy.mp4)
2025-12-29 10:48:09,172 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Shrunk My Step Brother – Taboofantazy.mp4
2025-12-29 10:48:09,172 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Teen in Cosplay Begs Daddy to Cum – Taboofantazy.mp4 (Lenna Lux - Teen in Cosplay Begs Daddy to Cum – Taboofantazy.mp4)
2025-12-29 10:48:09,172 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Teen in Cosplay Begs Daddy to Cum – Taboofantazy.mp4
2025-12-29 10:48:09,172 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Fucking Your Brat Step Sister – Taboofantazy.mp4 (Lenna Lux - Fucking Your Brat Step Sister – Taboofantazy.mp4)
2025-12-29 10:48:09,172 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Fucking Your Brat Step Sister – Taboofantazy.mp4
2025-12-29 10:48:09,172 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddy's Perfect Virgin – Taboofantazy.mp4 (Lenna Lux - Daddy's Perfect Virgin – Taboofantazy.mp4)
2025-12-29 10:48:09,172 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddy's Perfect Virgin – Taboofantazy.mp4
2025-12-29 10:48:09,172 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Step Brother Seduction – Taboofantazy.mp4 (Lenna Lux - Step Brother Seduction – Taboofantazy.mp4)
2025-12-29 10:48:09,173 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Step Brother Seduction – Taboofantazy.mp4
2025-12-29 10:48:09,173 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddys Perving On Me – Taboofantazy.mp4 (Lenna Lux - Daddys Perving On Me – Taboofantazy.mp4)
2025-12-29 10:48:09,173 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddys Perving On Me – Taboofantazy.mp4
2025-12-29 10:48:09,173 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Breed Me Step Brother I Need Your Cum – Taboofan.mp4 (Lenna Lux - Breed Me Step Brother I Need Your Cum – Taboofan.mp4)
2025-12-29 10:48:09,173 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Breed Me Step Brother I Need Your Cum – Taboofan.mp4
2025-12-29 10:48:09,173 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddy Fucks His Teen Daughter – Taboofantazy.mp4 (Lenna Lux - Daddy Fucks His Teen Daughter – Taboofantazy.mp4)
2025-12-29 10:48:09,173 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddy Fucks His Teen Daughter – Taboofantazy.mp4
2025-12-29 10:48:09,173 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - My Panty Sniffing Step Brother – Taboofantazy.mp4 (Lenna Lux - My Panty Sniffing Step Brother – Taboofantazy.mp4)
2025-12-29 10:48:09,174 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - My Panty Sniffing Step Brother – Taboofantazy.mp4
2025-12-29 10:48:09,174 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - The Night Before - Brother And Sister Find Out They Had Drunken Sex - Fifi Foxx Fantasies.mp4 (Lenna Lux - The Night Before - Brother And Sister Find Out They Had Drunken Sex - Fifi Foxx Fantasies.mp4)
2025-12-29 10:48:09,174 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - The Night Before - Brother And Sister Find Out They Had Drunken Sex - Fifi Foxx Fantasies.mp4
2025-12-29 10:48:09,174 - INFO - Scanning directory: /videos/lilibet.saunders
2025-12-29 10:48:09,185 - INFO - Processing video: /videos/lilibet.saunders/FamilyTherapyXXX - Lilibet Saunders - Little Step Sis Vs Boner (29.10.2025) rq.mp4 (FamilyTherapyXXX - Lilibet Saunders - Little Step Sis Vs Boner (29.10.2025) rq.mp4)
2025-12-29 10:48:09,186 - INFO - Skipping already processed and unaltered video: /videos/lilibet.saunders/FamilyTherapyXXX - Lilibet Saunders - Little Step Sis Vs Boner (29.10.2025) rq.mp4
2025-12-29 10:48:09,186 - INFO - Scanning directory: /videos/lilibet.saunders/BangBus.25.05.21.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:48:09,196 - INFO - Processing video: /videos/lilibet.saunders/BangBus.25.05.21.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/bangbus.25.05.21.lilibet.saunders.mp4 (bangbus.25.05.21.lilibet.saunders.mp4)
2025-12-29 10:49:17,630 - ERROR - ffmpeg failed for /tmp/tmpdhjx8rby: Command '['ffmpeg', '-i', '/tmp/tmpdhjx8rby', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp2_liyjae.jpg']' returned non-zero exit status 228.
2025-12-29 10:49:17,630 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/BangBus.25.05.21.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/bangbus.25.05.21.lilibet.saunders.mp4
2025-12-29 10:49:17,678 - INFO - Scanning directory: /videos/lilibet.saunders/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.MP4-Narcos[XC]
2025-12-29 10:49:17,689 - INFO - Processing video: /videos/lilibet.saunders/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.mp4 (TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.mp4)
2025-12-29 10:50:29,845 - ERROR - ffmpeg failed for /tmp/tmpp4s7f72i: Command '['ffmpeg', '-i', '/tmp/tmpp4s7f72i', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpf8at90lw.jpg']' returned non-zero exit status 228.
2025-12-29 10:50:29,845 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.mp4
2025-12-29 10:50:29,895 - INFO - Processing video: /videos/lilibet.saunders/Little Step Sis Wants To Try Sex ~ Lilibet Saunders-{Household Fantasy}-[Amateur, Big Ass, Big Tits, Brown Hair, Male - POV, Multiple Cumshots, Pawg, Roleplay, Teen Girl (18–22), creampie].mp4 (Little Step Sis Wants To Try Sex ~ Lilibet Saunders-{Household Fantasy}-[Amateur, Big Ass, Big Tits, Brown Hair, Male - POV, Multiple Cumshots, Pawg, Roleplay, Teen Girl (18–22), creampie].mp4)
2025-12-29 10:51:03,934 - INFO - Processed video: /videos/lilibet.saunders/Little Step Sis Wants To Try Sex ~ Lilibet Saunders-{Household Fantasy}-[Amateur, Big Ass, Big Tits, Brown Hair, Male - POV, Multiple Cumshots, Pawg, Roleplay, Teen Girl (18–22), creampie].mp4
2025-12-29 10:51:03,959 - INFO - Scanning directory: /videos/lilibet.saunders/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]
2025-12-29 10:51:03,971 - INFO - Processing video: /videos/lilibet.saunders/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4 (TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4)
2025-12-29 10:51:38,595 - INFO - Processed video: /videos/lilibet.saunders/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4
2025-12-29 10:51:38,620 - INFO - Scanning directory: /videos/lilibet.saunders/SisLovesMe.25.09.06.Nicole.Kitt.And.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:51:38,629 - INFO - Processing video: /videos/lilibet.saunders/SisLovesMe.25.09.06.Nicole.Kitt.And.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/Let’s Fuck Dad’s New Girlfriend Like Good Step-Siblings-(Nicole Kitt, Lilibet Saunders)-{Sis Loves Me}.mp4 (Let’s Fuck Dad’s New Girlfriend Like Good Step-Siblings-(Nicole Kitt, Lilibet Saunders)-{Sis Loves Me}.mp4)
2025-12-29 10:52:50,197 - ERROR - ffmpeg failed for /tmp/tmp1idpo5vk: Command '['ffmpeg', '-i', '/tmp/tmp1idpo5vk', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpl64ql73q.jpg']' returned non-zero exit status 228.
2025-12-29 10:52:50,198 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/SisLovesMe.25.09.06.Nicole.Kitt.And.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/Let’s Fuck Dad’s New Girlfriend Like Good Step-Siblings-(Nicole Kitt, Lilibet Saunders)-{Sis Loves Me}.mp4
2025-12-29 10:52:50,246 - INFO - Processing video: /videos/lilibet.saunders/BFFS - Brina Scarlet, Fun Sized Megan, Lil Bet Saunders (08.06.2025) rq.mp4 (BFFS - Brina Scarlet, Fun Sized Megan, Lil Bet Saunders (08.06.2025) rq.mp4)
2025-12-29 10:53:09,378 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:53:09,396 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:53:09,396 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:53:09,399 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'fa523d1e971a197d'"
2025-12-29 10:53:09,399 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'fa523d1e971a197d'"
2025-12-29 10:53:09,400 - INFO - Server supports SMB signing
2025-12-29 10:53:09,400 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:53:09,406 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:53:12,385 - INFO - Processed video: /videos/lilibet.saunders/BFFS - Brina Scarlet, Fun Sized Megan, Lil Bet Saunders (08.06.2025) rq.mp4
2025-12-29 10:53:12,398 - INFO - Processing video: /videos/lilibet.saunders/I Normally Don't Fuck Like This-(Lilibet Saunders)-{Exploited College Girls}-[Big Tits, Brown Hair, Deepthroat, Face Fuck, Facial, Freckles, Gagging, High School, Innocent, Rough, Shy, Teen (18–22), Titjob, Toys, squirting].mp4 (I Normally Don't Fuck Like This-(Lilibet Saunders)-{Exploited College Girls}-[Big Tits, Brown Hair, Deepthroat, Face Fuck, Facial, Freckles, Gagging, High School, Innocent, Rough, Shy, Teen (18–22), Titjob, Toys, squirting].mp4)
2025-12-29 10:53:15,156 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:53:15,172 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:53:15,172 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:53:15,175 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'e2e940ec41a4a265'"
2025-12-29 10:53:15,175 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'e2e940ec41a4a265'"
2025-12-29 10:53:15,175 - INFO - Server supports SMB signing
2025-12-29 10:53:15,175 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:53:15,182 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:53:15,292 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:53:15,304 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:53:15,304 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:53:15,308 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'aa54c65a2daf96dc'"
2025-12-29 10:53:15,308 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'aa54c65a2daf96dc'"
2025-12-29 10:53:15,308 - INFO - Server supports SMB signing
2025-12-29 10:53:15,308 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:53:15,314 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:54:00,938 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:54:00,946 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 10:54:00,954 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:54:00,954 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:54:00,957 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'd545388655935b0b'"
2025-12-29 10:54:00,957 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'd545388655935b0b'"
2025-12-29 10:54:00,958 - INFO - Server supports SMB signing
2025-12-29 10:54:00,958 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:54:00,962 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 10:54:00,962 - INFO - SMB2 dialect negotiation successful
2025-12-29 10:54:00,965 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:54:00,965 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'346f4e81cec46200'"
2025-12-29 10:54:00,965 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'346f4e81cec46200'"
2025-12-29 10:54:00,966 - INFO - Server supports SMB signing
2025-12-29 10:54:00,966 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 10:54:00,971 - INFO - Authentication (on SMB2) successful!
2025-12-29 10:54:23,719 - ERROR - ffprobe failed for /tmp/tmp7_2u7tz8: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmp7_2u7tz8']' returned non-zero exit status 1.
2025-12-29 10:54:23,737 - ERROR - ffmpeg failed for /tmp/tmp7_2u7tz8: Command '['ffmpeg', '-i', '/tmp/tmp7_2u7tz8', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp4rsurfzo.jpg']' returned non-zero exit status 183.
2025-12-29 10:54:23,737 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/I Normally Don't Fuck Like This-(Lilibet Saunders)-{Exploited College Girls}-[Big Tits, Brown Hair, Deepthroat, Face Fuck, Facial, Freckles, Gagging, High School, Innocent, Rough, Shy, Teen (18–22), Titjob, Toys, squirting].mp4
2025-12-29 10:54:23,787 - INFO - Scanning directory: /videos/lilibet.saunders/TeenFidelity.E683.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:54:23,797 - INFO - Processing video: /videos/lilibet.saunders/TeenFidelity.E683.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/A Little Bit-(Lilibet Saunders)-{Teenfidelity}-[18+, Big Dick, Big Tits, Bouncing Tits, Brown Hair, Corset, Hairless Pussy, Natural Tits, creampie].mp4 (A Little Bit-(Lilibet Saunders)-{Teenfidelity}-[18+, Big Dick, Big Tits, Bouncing Tits, Brown Hair, Corset, Hairless Pussy, Natural Tits, creampie].mp4)
2025-12-29 10:55:35,637 - ERROR - ffmpeg failed for /tmp/tmprsv2woao: Command '['ffmpeg', '-i', '/tmp/tmprsv2woao', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp60klseoi.jpg']' returned non-zero exit status 228.
2025-12-29 10:55:35,637 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/TeenFidelity.E683.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/A Little Bit-(Lilibet Saunders)-{Teenfidelity}-[18+, Big Dick, Big Tits, Bouncing Tits, Brown Hair, Corset, Hairless Pussy, Natural Tits, creampie].mp4
2025-12-29 10:55:35,687 - INFO - Processing video: /videos/lilibet.saunders/Redhead Horny Teen Gets Massage Creampie from her Step Daddy Par.mp4 (Redhead Horny Teen Gets Massage Creampie from her Step Daddy Par.mp4)
2025-12-29 10:55:51,200 - INFO - Processed video: /videos/lilibet.saunders/Redhead Horny Teen Gets Massage Creampie from her Step Daddy Par.mp4
2025-12-29 10:55:51,211 - INFO - Scanning directory: /videos/lilibet.saunders/TeenyTaboo.25.08.22.Lilibet.Saunders.XXX.1080p.HEVC.x265.PRT
2025-12-29 10:55:51,221 - INFO - Processing video: /videos/lilibet.saunders/Step Daddy Fucks Teen Step Daughter Leaving Mess on her Face and.mp4 (Step Daddy Fucks Teen Step Daughter Leaving Mess on her Face and.mp4)
2025-12-29 10:55:57,366 - ERROR - ffprobe failed for /tmp/tmpmpsynumn: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpmpsynumn']' returned non-zero exit status 1.
2025-12-29 10:55:57,385 - ERROR - ffmpeg failed for /tmp/tmpmpsynumn: Command '['ffmpeg', '-i', '/tmp/tmpmpsynumn', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpqkjc5ltg.jpg']' returned non-zero exit status 183.
2025-12-29 10:55:57,385 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/Step Daddy Fucks Teen Step Daughter Leaving Mess on her Face and.mp4
2025-12-29 10:55:57,389 - INFO - Scanning directory: /videos/lilibet.saunders/TabooHeat.25.10.06.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]
2025-12-29 10:55:57,400 - INFO - Processing video: /videos/lilibet.saunders/TabooHeat.25.10.06.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.10.06.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4 (TabooHeat.25.10.06.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4)
2025-12-29 10:57:10,935 - ERROR - ffmpeg failed for /tmp/tmpcadhq0i4: Command '['ffmpeg', '-i', '/tmp/tmpcadhq0i4', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpkpr8_16l.jpg']' returned non-zero exit status 228.
2025-12-29 10:57:10,935 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/TabooHeat.25.10.06.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.10.06.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4
2025-12-29 10:57:10,984 - INFO - Scanning directory: /videos/lilibet.saunders/ATKGalleria.25.06.23.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]
2025-12-29 10:57:10,995 - INFO - Processing video: /videos/lilibet.saunders/ATKGalleria.25.06.23.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/Lilibet Saunders Talks Sex And Porn-{ATK Galleria}-[Big Ass, Big Tits, Brown Hair, Curvy, Hairless Pussy, Interview, Leggings, Long Hair, Medium Skin, Pale Skin, Spread Ass, White Woman].mp4 (Lilibet Saunders Talks Sex And Porn-{ATK Galleria}-[Big Ass, Big Tits, Brown Hair, Curvy, Hairless Pussy, Interview, Leggings, Long Hair, Medium Skin, Pale Skin, Spread Ass, White Woman].mp4)
2025-12-29 10:58:05,916 - INFO - Processed video: /videos/lilibet.saunders/ATKGalleria.25.06.23.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/Lilibet Saunders Talks Sex And Porn-{ATK Galleria}-[Big Ass, Big Tits, Brown Hair, Curvy, Hairless Pussy, Interview, Leggings, Long Hair, Medium Skin, Pale Skin, Spread Ass, White Woman].mp4
2025-12-29 10:58:05,958 - INFO - Processing video: /videos/lilibet.saunders/Lilibet Saunders In Me & Step Dad Always Fuck When Step Mom Leaves - Parts (1-2)-{Taboo Heat}.mp4 (Lilibet Saunders In Me & Step Dad Always Fuck When Step Mom Leaves - Parts (1-2)-{Taboo Heat}.mp4)
2025-12-29 10:58:50,258 - INFO - Processed video: /videos/lilibet.saunders/Lilibet Saunders In Me & Step Dad Always Fuck When Step Mom Leaves - Parts (1-2)-{Taboo Heat}.mp4
2025-12-29 10:58:50,296 - INFO - Processing video: /videos/lilibet.saunders/EXCOGI Girls - Lilibet Ophelia Fae in Ive Never Kissed A Girl Before.mp4 (EXCOGI Girls - Lilibet Ophelia Fae in Ive Never Kissed A Girl Before.mp4)
2025-12-29 10:59:54,000 - INFO - Processed video: /videos/lilibet.saunders/EXCOGI Girls - Lilibet Ophelia Fae in Ive Never Kissed A Girl Before.mp4
2025-12-29 10:59:54,040 - INFO - Processing video: /videos/lilibet.saunders/BangBus - Lilibet Saunders - It's Too Big (21.05.2025) rq.mp4 (BangBus - Lilibet Saunders - It's Too Big (21.05.2025) rq.mp4)
2025-12-29 11:00:29,184 - INFO - Processed video: /videos/lilibet.saunders/BangBus - Lilibet Saunders - It's Too Big (21.05.2025) rq.mp4
2025-12-29 11:00:29,215 - INFO - Processing video: /videos/lilibet.saunders/Stepdaughter Psychology-(Lilibet Saunders)-{Taboo}.mp4 (Stepdaughter Psychology-(Lilibet Saunders)-{Taboo}.mp4)
2025-12-29 11:01:41,672 - ERROR - ffprobe failed for /tmp/tmp9r6cgpoz: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmp9r6cgpoz']' returned non-zero exit status 1.
2025-12-29 11:01:41,690 - ERROR - ffmpeg failed for /tmp/tmp9r6cgpoz: Command '['ffmpeg', '-i', '/tmp/tmp9r6cgpoz', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp_hxp86id.jpg']' returned non-zero exit status 183.
2025-12-29 11:01:41,690 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/Stepdaughter Psychology-(Lilibet Saunders)-{Taboo}.mp4
2025-12-29 11:01:41,746 - INFO - Scanning directory: /videos/lilibet.saunders/ATKGalleria.25.07.07.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:01:41,755 - INFO - Processing video: /videos/lilibet.saunders/ATKGalleria.25.07.07.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/Lilibet Saunders is spreading wide-{ATK Galleria}-[Big Ass, Big Tits, Brown Hair (Female), Curvy, Hairless Pussy, Long Hair, Pale Skin, Panties, Solo Female, Striptease, White, Yoga].mp4 (Lilibet Saunders is spreading wide-{ATK Galleria}-[Big Ass, Big Tits, Brown Hair (Female), Curvy, Hairless Pussy, Long Hair, Pale Skin, Panties, Solo Female, Striptease, White, Yoga].mp4)
2025-12-29 11:02:28,417 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 11:02:28,433 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 11:02:28,433 - INFO - SMB2 dialect negotiation successful
2025-12-29 11:02:28,436 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'6036e66cbef97048'"
2025-12-29 11:02:28,437 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'6036e66cbef97048'"
2025-12-29 11:02:28,437 - INFO - Server supports SMB signing
2025-12-29 11:02:28,437 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 11:02:28,443 - INFO - Authentication (on SMB2) successful!
2025-12-29 11:02:56,325 - INFO - No compatible GPU or ffmpeg build detected. Falling back to CPU-based processing.
2025-12-29 11:02:56,326 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 11:02:56,341 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 11:02:56,341 - INFO - SMB2 dialect negotiation successful
2025-12-29 11:02:56,344 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'b1db293491ebc338'"
2025-12-29 11:02:56,344 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'b1db293491ebc338'"
2025-12-29 11:02:56,345 - INFO - Server supports SMB signing
2025-12-29 11:02:56,345 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 11:02:56,353 - INFO - Authentication (on SMB2) successful!
2025-12-29 11:02:56,353 - INFO - Starting scan for videos in /videos on share 'isolation'
2025-12-29 11:02:56,353 - INFO - Scanning directory: /videos
2025-12-29 11:02:56,417 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips
2025-12-29 11:02:56,434 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,441 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,441 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4 (Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4)
2025-12-29 11:02:56,441 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4
2025-12-29 11:02:56,441 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4 (Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,442 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,442 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4 (Lacy Vixxen gives a make-out lesson to her Brother.mp4)
2025-12-29 11:02:56,442 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4
2025-12-29 11:02:56,442 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4 (Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4)
2025-12-29 11:02:56,442 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4
2025-12-29 11:02:56,442 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4 (Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4)
2025-12-29 11:02:56,442 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4
2025-12-29 11:02:56,442 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4)
2025-12-29 11:02:56,442 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4
2025-12-29 11:02:56,443 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4 (Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4)
2025-12-29 11:02:56,443 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4
2025-12-29 11:02:56,443 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,443 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,443 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4 (Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,443 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,443 - INFO - Processing video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4 (A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4)
2025-12-29 11:02:56,443 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4
2025-12-29 11:02:56,443 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4 (Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,444 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,444 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4 (Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4)
2025-12-29 11:02:56,444 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4
2025-12-29 11:02:56,444 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4 (Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,444 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,444 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4 (Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4)
2025-12-29 11:02:56,444 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4
2025-12-29 11:02:56,444 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4 (Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,445 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,445 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4)
2025-12-29 11:02:56,445 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4
2025-12-29 11:02:56,445 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4)
2025-12-29 11:02:56,445 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4
2025-12-29 11:02:56,445 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4 (Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4)
2025-12-29 11:02:56,445 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4
2025-12-29 11:02:56,445 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4 (Ashley Fires - Mommys Special Diet.mp4)
2025-12-29 11:02:56,446 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4
2025-12-29 11:02:56,446 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4 (Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,446 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,446 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4 (Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4)
2025-12-29 11:02:56,446 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4
2025-12-29 11:02:56,446 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4 (Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,446 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,446 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4 (Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4)
2025-12-29 11:02:56,446 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4
2025-12-29 11:02:56,446 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4 (Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4)
2025-12-29 11:02:56,446 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4
2025-12-29 11:02:56,446 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4 (Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,447 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,447 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4 (Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,447 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,447 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4 (Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,447 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,447 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4 (Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4)
2025-12-29 11:02:56,447 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4
2025-12-29 11:02:56,447 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4 (Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,447 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,447 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4 (Lacy Vixxen returns the favour to her Brother.mp4)
2025-12-29 11:02:56,448 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4
2025-12-29 11:02:56,448 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4 (Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,448 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,448 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4 (Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,448 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,448 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,448 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,448 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4 (Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4)
2025-12-29 11:02:56,448 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4
2025-12-29 11:02:56,448 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4 (Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4)
2025-12-29 11:02:56,449 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4
2025-12-29 11:02:56,449 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4 (Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,449 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,449 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4 (Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4)
2025-12-29 11:02:56,449 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4
2025-12-29 11:02:56,449 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4 (Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4)
2025-12-29 11:02:56,449 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4
2025-12-29 11:02:56,449 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4 (Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,450 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,450 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4 (Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4)
2025-12-29 11:02:56,450 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4
2025-12-29 11:02:56,450 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4 (Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4)
2025-12-29 11:02:56,450 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4
2025-12-29 11:02:56,450 - INFO - Processing video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4 (The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4)
2025-12-29 11:02:56,450 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4
2025-12-29 11:02:56,450 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4 (Ashley Fires - My Son Joins The Service.mp4)
2025-12-29 11:02:56,450 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4
2025-12-29 11:02:56,451 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4)
2025-12-29 11:02:56,451 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4
2025-12-29 11:02:56,451 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4 (Lacy Vixxen - Brother Fucker.mp4)
2025-12-29 11:02:56,451 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4
2025-12-29 11:02:56,451 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,451 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,451 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4 (Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4)
2025-12-29 11:02:56,451 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4
2025-12-29 11:02:56,451 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4 (Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4)
2025-12-29 11:02:56,452 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4
2025-12-29 11:02:56,452 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4 (Ashley Fires - Mommy Gets Married.mp4)
2025-12-29 11:02:56,452 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4
2025-12-29 11:02:56,452 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen
2025-12-29 11:02:56,464 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:02:56,479 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4 (momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4)
2025-12-29 11:02:56,479 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4
2025-12-29 11:02:56,479 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4 (Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4)
2025-12-29 11:02:56,479 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4
2025-12-29 11:02:56,479 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4 (Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4)
2025-12-29 11:03:30,298 - ERROR - ffprobe failed for /tmp/tmpim3mwqj_: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpim3mwqj_']' returned non-zero exit status 1.
2025-12-29 11:03:30,316 - ERROR - ffmpeg failed for /tmp/tmpim3mwqj_: Command '['ffmpeg', '-i', '/tmp/tmpim3mwqj_', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpmqw0iy01.jpg']' returned non-zero exit status 183.
2025-12-29 11:03:30,316 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4
2025-12-29 11:03:30,344 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT
2025-12-29 11:03:30,355 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4 (MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4)
2025-12-29 11:03:30,356 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4
2025-12-29 11:03:30,356 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.HEVC.x265.PRT
2025-12-29 11:03:30,367 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:03:30,377 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4 (momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4)
2025-12-29 11:04:04,359 - ERROR - ffmpeg failed for /tmp/tmpins41oud: Command '['ffmpeg', '-i', '/tmp/tmpins41oud', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp33ljw_9u.jpg']' returned non-zero exit status 228.
2025-12-29 11:04:04,359 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4
2025-12-29 11:04:04,388 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4 (Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4)
2025-12-29 11:04:04,389 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4
2025-12-29 11:04:04,389 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:04:04,399 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4 (momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4)
2025-12-29 11:04:38,563 - ERROR - ffmpeg failed for /tmp/tmpr9708rc0: Command '['ffmpeg', '-i', '/tmp/tmpr9708rc0', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpyjugp197.jpg']' returned non-zero exit status 228.
2025-12-29 11:04:38,563 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4
2025-12-29 11:04:38,587 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.HEVC.x265.PRT
2025-12-29 11:04:38,598 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4 (Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4)
2025-12-29 11:05:11,582 - ERROR - ffprobe failed for /tmp/tmp79aaspyq: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmp79aaspyq']' returned non-zero exit status 1.
2025-12-29 11:05:11,599 - ERROR - ffmpeg failed for /tmp/tmp79aaspyq: Command '['ffmpeg', '-i', '/tmp/tmp79aaspyq', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp4j3174ia.jpg']' returned non-zero exit status 183.
2025-12-29 11:05:11,599 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4
2025-12-29 11:05:11,626 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4 (FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4)
2025-12-29 11:05:44,924 - ERROR - ffmpeg failed for /tmp/tmp08lq9xns: Command '['ffmpeg', '-i', '/tmp/tmp08lq9xns', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpmqesa0ju.jpg']' returned non-zero exit status 228.
2025-12-29 11:05:44,925 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4
2025-12-29 11:05:44,949 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Helps Her Son Study by Ashley Fires Fetish Clips.mp4 (Lux Orchid in Mommy Helps Her Son Study by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:05:44,949 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Helps Her Son Study by Ashley Fires Fetish Clips.mp4
2025-12-29 11:05:44,949 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 1 by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen in Family Picnic Part 1 by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:05:44,949 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 1 by Ashley Fires Fetish Clips.mp4
2025-12-29 11:05:44,949 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Mom works at strip club.mp4 (Ashley Fires, Lux Orchid in Mom works at strip club.mp4)
2025-12-29 11:05:44,950 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Mom works at strip club.mp4
2025-12-29 11:05:44,950 - INFO - Processing video: /videos/ashley-fires-fetish-clips/My Two Brothers - Modern Taboo Family-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Double Blowjob, Family Roleplay, Missing Performer (Male), Step Brother, Step Sister, Threesome (BGG), creampie].mp4 (My Two Brothers - Modern Taboo Family-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Double Blowjob, Family Roleplay, Missing Performer (Male), Step Brother, Step Sister, Threesome (BGG), creampie].mp4)
2025-12-29 11:05:44,950 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/My Two Brothers - Modern Taboo Family-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Double Blowjob, Family Roleplay, Missing Performer (Male), Step Brother, Step Sister, Threesome (BGG), creampie].mp4
2025-12-29 11:05:44,950 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Mint Rose - The Devil In My Daughter.mp4 (Ashley Fires, Mint Rose - The Devil In My Daughter.mp4)
2025-12-29 11:05:44,950 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Mint Rose - The Devil In My Daughter.mp4
2025-12-29 11:05:44,950 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy is A Street Walking Whore - Ashley Fires Fetish Clips.mp4 (Lux Orchid - Mommy is A Street Walking Whore - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:05:44,950 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy is A Street Walking Whore - Ashley Fires Fetish Clips.mp4
2025-12-29 11:05:44,950 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother In Charge-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Gagging, Handjob, Step Sister].mp4 (Brother In Charge-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Gagging, Handjob, Step Sister].mp4)
2025-12-29 11:05:44,951 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother In Charge-(Anya Olsen)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, Gagging, Handjob, Step Sister].mp4
2025-12-29 11:05:44,951 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid, Anya Olsen - Aunt, Mother, Daughter Threesome - The Weekend.mp4 (Ashley Fires, Lux Orchid, Anya Olsen - Aunt, Mother, Daughter Threesome - The Weekend.mp4)
2025-12-29 11:05:44,951 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid, Anya Olsen - Aunt, Mother, Daughter Threesome - The Weekend.mp4
2025-12-29 11:05:44,951 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Daddy Does Daughter First - Ashley Fires Fetish Clips.mp4 (Anya Olsen - Daughter Exchange Club - Daddy Does Daughter First - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:05:44,951 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Daddy Does Daughter First - Ashley Fires Fetish Clips.mp4
2025-12-29 11:05:44,951 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Chi in Daddy Knows Her Secret by Ashley Fires Fetish Clips.mp4 (Chi in Daddy Knows Her Secret by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:05:44,953 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Chi in Daddy Knows Her Secret by Ashley Fires Fetish Clips.mp4
2025-12-29 11:05:44,953 - INFO - Scanning directory: /videos/lenna.lux
2025-12-29 11:05:44,964 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Impregnate the College Virgin – Taboofantazy.mp4 (Lenna Lux - Impregnate the College Virgin – Taboofantazy.mp4)
2025-12-29 11:05:44,964 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Impregnate the College Virgin – Taboofantazy.mp4
2025-12-29 11:05:44,964 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Step Sister Tit Fuck & Tease – Taboofantazy.mp4 (Lenna Lux - Step Sister Tit Fuck & Tease – Taboofantazy.mp4)
2025-12-29 11:05:44,964 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Step Sister Tit Fuck & Tease – Taboofantazy.mp4
2025-12-29 11:05:44,964 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Vacation with Daddy – Taboofantazy.mp4 (Lenna Lux - Vacation with Daddy – Taboofantazy.mp4)
2025-12-29 11:05:53,049 - ERROR - ffprobe failed for /tmp/tmpufqiyj_s: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpufqiyj_s']' returned non-zero exit status 1.
2025-12-29 11:05:53,067 - ERROR - ffmpeg failed for /tmp/tmpufqiyj_s: Command '['ffmpeg', '-i', '/tmp/tmpufqiyj_s', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpj449933c.jpg']' returned non-zero exit status 183.
2025-12-29 11:05:53,067 - WARNING - Could not get duration or hash for /videos/lenna.lux/Lenna Lux - Vacation with Daddy – Taboofantazy.mp4
2025-12-29 11:05:53,074 - INFO - Processing video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Truth or Dare with Mom And Sis - Fifi Foxx Fantasies.mp4 (Lenna Lux, Carmen Valentina - Truth or Dare with Mom And Sis - Fifi Foxx Fantasies.mp4)
2025-12-29 11:05:53,075 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Truth or Dare with Mom And Sis - Fifi Foxx Fantasies.mp4
2025-12-29 11:05:53,075 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Stepbrother Blackmail Brat into Creampie – Taboo.mp4 (Lenna Lux - Stepbrother Blackmail Brat into Creampie – Taboo.mp4)
2025-12-29 11:05:53,075 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Stepbrother Blackmail Brat into Creampie – Taboo.mp4
2025-12-29 11:05:53,075 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Teaching My Step Brother About Sex – Taboofantaz.mp4 (Lenna Lux - Teaching My Step Brother About Sex – Taboofantaz.mp4)
2025-12-29 11:05:53,076 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Teaching My Step Brother About Sex – Taboofantaz.mp4
2025-12-29 11:05:53,076 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddys impregnation secret – Taboofantazy.mp4 (Lenna Lux - Daddys impregnation secret – Taboofantazy.mp4)
2025-12-29 11:06:01,215 - ERROR - ffprobe failed for /tmp/tmp2mkk8eav: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmp2mkk8eav']' returned non-zero exit status 1.
2025-12-29 11:06:01,234 - ERROR - ffmpeg failed for /tmp/tmp2mkk8eav: Command '['ffmpeg', '-i', '/tmp/tmp2mkk8eav', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpvh1v_uva.jpg']' returned non-zero exit status 183.
2025-12-29 11:06:01,234 - WARNING - Could not get duration or hash for /videos/lenna.lux/Lenna Lux - Daddys impregnation secret – Taboofantazy.mp4
2025-12-29 11:06:01,241 - INFO - Processing video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Mother, Sister and Brother in Quarantine - Fifi Foxx Fantasies.mp4 (Lenna Lux, Carmen Valentina - Mother, Sister and Brother in Quarantine - Fifi Foxx Fantasies.mp4)
2025-12-29 11:06:01,241 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux, Carmen Valentina - Mother, Sister and Brother in Quarantine - Fifi Foxx Fantasies.mp4
2025-12-29 11:06:01,241 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddy Can I Have Your Baby – Taboofantazy.mp4 (Lenna Lux - Daddy Can I Have Your Baby – Taboofantazy.mp4)
2025-12-29 11:06:01,242 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddy Can I Have Your Baby – Taboofantazy.mp4
2025-12-29 11:06:01,242 - INFO - Processing video: /videos/lenna.lux/The Deal-(Lenna Lux)-{Family Therapy XXX}-[Blowjob, Cumshot].mp4 (The Deal-(Lenna Lux)-{Family Therapy XXX}-[Blowjob, Cumshot].mp4)
2025-12-29 11:06:01,242 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/The Deal-(Lenna Lux)-{Family Therapy XXX}-[Blowjob, Cumshot].mp4
2025-12-29 11:06:01,242 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Shrunk My Step Brother – Taboofantazy.mp4 (Lenna Lux - Shrunk My Step Brother – Taboofantazy.mp4)
2025-12-29 11:06:01,242 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Shrunk My Step Brother – Taboofantazy.mp4
2025-12-29 11:06:01,242 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Teen in Cosplay Begs Daddy to Cum – Taboofantazy.mp4 (Lenna Lux - Teen in Cosplay Begs Daddy to Cum – Taboofantazy.mp4)
2025-12-29 11:06:01,242 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Teen in Cosplay Begs Daddy to Cum – Taboofantazy.mp4
2025-12-29 11:06:01,242 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Fucking Your Brat Step Sister – Taboofantazy.mp4 (Lenna Lux - Fucking Your Brat Step Sister – Taboofantazy.mp4)
2025-12-29 11:06:01,242 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Fucking Your Brat Step Sister – Taboofantazy.mp4
2025-12-29 11:06:01,243 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddy's Perfect Virgin – Taboofantazy.mp4 (Lenna Lux - Daddy's Perfect Virgin – Taboofantazy.mp4)
2025-12-29 11:06:01,243 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddy's Perfect Virgin – Taboofantazy.mp4
2025-12-29 11:06:01,243 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Step Brother Seduction – Taboofantazy.mp4 (Lenna Lux - Step Brother Seduction – Taboofantazy.mp4)
2025-12-29 11:06:01,243 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Step Brother Seduction – Taboofantazy.mp4
2025-12-29 11:06:01,243 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddys Perving On Me – Taboofantazy.mp4 (Lenna Lux - Daddys Perving On Me – Taboofantazy.mp4)
2025-12-29 11:06:01,243 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddys Perving On Me – Taboofantazy.mp4
2025-12-29 11:06:01,243 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Breed Me Step Brother I Need Your Cum – Taboofan.mp4 (Lenna Lux - Breed Me Step Brother I Need Your Cum – Taboofan.mp4)
2025-12-29 11:06:01,243 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Breed Me Step Brother I Need Your Cum – Taboofan.mp4
2025-12-29 11:06:01,243 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - Daddy Fucks His Teen Daughter – Taboofantazy.mp4 (Lenna Lux - Daddy Fucks His Teen Daughter – Taboofantazy.mp4)
2025-12-29 11:06:01,244 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - Daddy Fucks His Teen Daughter – Taboofantazy.mp4
2025-12-29 11:06:01,244 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - My Panty Sniffing Step Brother – Taboofantazy.mp4 (Lenna Lux - My Panty Sniffing Step Brother – Taboofantazy.mp4)
2025-12-29 11:06:01,244 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - My Panty Sniffing Step Brother – Taboofantazy.mp4
2025-12-29 11:06:01,244 - INFO - Processing video: /videos/lenna.lux/Lenna Lux - The Night Before - Brother And Sister Find Out They Had Drunken Sex - Fifi Foxx Fantasies.mp4 (Lenna Lux - The Night Before - Brother And Sister Find Out They Had Drunken Sex - Fifi Foxx Fantasies.mp4)
2025-12-29 11:06:01,244 - INFO - Skipping already processed and unaltered video: /videos/lenna.lux/Lenna Lux - The Night Before - Brother And Sister Find Out They Had Drunken Sex - Fifi Foxx Fantasies.mp4
2025-12-29 11:06:01,244 - INFO - Scanning directory: /videos/lilibet.saunders
2025-12-29 11:06:01,260 - INFO - Processing video: /videos/lilibet.saunders/FamilyTherapyXXX - Lilibet Saunders - Little Step Sis Vs Boner (29.10.2025) rq.mp4 (FamilyTherapyXXX - Lilibet Saunders - Little Step Sis Vs Boner (29.10.2025) rq.mp4)
2025-12-29 11:06:01,260 - INFO - Skipping already processed and unaltered video: /videos/lilibet.saunders/FamilyTherapyXXX - Lilibet Saunders - Little Step Sis Vs Boner (29.10.2025) rq.mp4
2025-12-29 11:06:01,260 - INFO - Scanning directory: /videos/lilibet.saunders/BangBus.25.05.21.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:06:01,272 - INFO - Processing video: /videos/lilibet.saunders/BangBus.25.05.21.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/bangbus.25.05.21.lilibet.saunders.mp4 (bangbus.25.05.21.lilibet.saunders.mp4)
2025-12-29 11:06:33,727 - ERROR - ffmpeg failed for /tmp/tmpi57liwas: Command '['ffmpeg', '-i', '/tmp/tmpi57liwas', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpgw1gikui.jpg']' returned non-zero exit status 228.
2025-12-29 11:06:33,727 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/BangBus.25.05.21.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/bangbus.25.05.21.lilibet.saunders.mp4
2025-12-29 11:06:33,755 - INFO - Scanning directory: /videos/lilibet.saunders/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.MP4-Narcos[XC]
2025-12-29 11:06:33,765 - INFO - Processing video: /videos/lilibet.saunders/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.mp4 (TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.mp4)
2025-12-29 11:07:06,828 - ERROR - ffmpeg failed for /tmp/tmp91ul5cov: Command '['ffmpeg', '-i', '/tmp/tmp91ul5cov', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp5l7z9ch8.jpg']' returned non-zero exit status 228.
2025-12-29 11:07:06,828 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.11.13.Lilibet.Saunders.Lily.Lane.XXX.1080p.mp4
2025-12-29 11:07:06,857 - INFO - Processing video: /videos/lilibet.saunders/Little Step Sis Wants To Try Sex ~ Lilibet Saunders-{Household Fantasy}-[Amateur, Big Ass, Big Tits, Brown Hair, Male - POV, Multiple Cumshots, Pawg, Roleplay, Teen Girl (18–22), creampie].mp4 (Little Step Sis Wants To Try Sex ~ Lilibet Saunders-{Household Fantasy}-[Amateur, Big Ass, Big Tits, Brown Hair, Male - POV, Multiple Cumshots, Pawg, Roleplay, Teen Girl (18–22), creampie].mp4)
2025-12-29 11:07:06,857 - INFO - Skipping already processed and unaltered video: /videos/lilibet.saunders/Little Step Sis Wants To Try Sex ~ Lilibet Saunders-{Household Fantasy}-[Amateur, Big Ass, Big Tits, Brown Hair, Male - POV, Multiple Cumshots, Pawg, Roleplay, Teen Girl (18–22), creampie].mp4
2025-12-29 11:07:06,857 - INFO - Scanning directory: /videos/lilibet.saunders/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]
2025-12-29 11:07:06,867 - INFO - Processing video: /videos/lilibet.saunders/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4 (TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4)
2025-12-29 11:07:06,868 - INFO - Skipping already processed and unaltered video: /videos/lilibet.saunders/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.MP4-Narcos[XC]/TabooHeat.25.07.08.Cory.Chase.Lilibet.Saunders.XXX.1080p.mp4
2025-12-29 11:07:06,868 - INFO - Scanning directory: /videos/lilibet.saunders/SisLovesMe.25.09.06.Nicole.Kitt.And.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:07:06,877 - INFO - Processing video: /videos/lilibet.saunders/SisLovesMe.25.09.06.Nicole.Kitt.And.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/Let’s Fuck Dad’s New Girlfriend Like Good Step-Siblings-(Nicole Kitt, Lilibet Saunders)-{Sis Loves Me}.mp4 (Let’s Fuck Dad’s New Girlfriend Like Good Step-Siblings-(Nicole Kitt, Lilibet Saunders)-{Sis Loves Me}.mp4)
2025-12-29 11:07:39,621 - ERROR - ffmpeg failed for /tmp/tmp3fhmxlfb: Command '['ffmpeg', '-i', '/tmp/tmp3fhmxlfb', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp68owufqj.jpg']' returned non-zero exit status 228.
2025-12-29 11:07:39,621 - WARNING - Could not get duration or hash for /videos/lilibet.saunders/SisLovesMe.25.09.06.Nicole.Kitt.And.Lilibet.Saunders.XXX.1080p.MP4-WRB[XC]/Let’s Fuck Dad’s New Girlfriend Like Good Step-Siblings-(Nicole Kitt, Lilibet Saunders)-{Sis Loves Me}.mp4
2025-12-29 11:07:39,649 - INFO - Processing video: /videos/lilibet.saunders/BFFS - Brina Scarlet, Fun Sized Megan, Lil Bet Saunders (08.06.2025) rq.mp4 (BFFS - Brina Scarlet, Fun Sized Megan, Lil Bet Saunders (08.06.2025) rq.mp4)
2025-12-29 11:07:39,650 - INFO - Skipping already processed and unaltered video: /videos/lilibet.saunders/BFFS - Brina Scarlet, Fun Sized Megan, Lil Bet Saunders (08.06.2025) rq.mp4
2025-12-29 11:07:39,650 - INFO - Processing video: /videos/lilibet.saunders/I Normally Don't Fuck Like This-(Lilibet Saunders)-{Exploited College Girls}-[Big Tits, Brown Hair, Deepthroat, Face Fuck, Facial, Freckles, Gagging, High School, Innocent, Rough, Shy, Teen (18–22), Titjob, Toys, squirting].mp4 (I Normally Don't Fuck Like This-(Lilibet Saunders)-{Exploited College Girls}-[Big Tits, Brown Hair, Deepthroat, Face Fuck, Facial, Freckles, Gagging, High School, Innocent, Rough, Shy, Teen (18–22), Titjob, Toys, squirting].mp4)
2025-12-29 11:08:34,093 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 11:08:34,109 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 11:08:34,109 - INFO - SMB2 dialect negotiation successful
2025-12-29 11:08:34,113 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'6c943596e16b474b'"
2025-12-29 11:08:34,113 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'6c943596e16b474b'"
2025-12-29 11:08:34,113 - INFO - Server supports SMB signing
2025-12-29 11:08:34,113 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 11:08:34,121 - INFO - Authentication (on SMB2) successful!
2025-12-29 11:08:41,125 - INFO - No compatible GPU or ffmpeg build detected. Falling back to CPU-based processing.
2025-12-29 11:08:41,125 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 11:08:41,138 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 11:08:41,139 - INFO - SMB2 dialect negotiation successful
2025-12-29 11:08:41,142 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'd513e0b6030dc991'"
2025-12-29 11:08:41,142 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'd513e0b6030dc991'"
2025-12-29 11:08:41,142 - INFO - Server supports SMB signing
2025-12-29 11:08:41,143 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 11:08:41,149 - INFO - Authentication (on SMB2) successful!
2025-12-29 11:08:41,149 - INFO - Starting scan for videos in /videos on share 'isolation'
2025-12-29 11:08:41,149 - INFO - Scanning directory: /videos
2025-12-29 11:08:41,211 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips
2025-12-29 11:08:41,227 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,233 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Preparing For The Big Game - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,233 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4 (Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4)
2025-12-29 11:08:41,233 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires in Elder Sister Fucks Her Virgin Brother.mp4
2025-12-29 11:08:41,233 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4 (Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,233 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - My Sister Needs Me - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,233 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4 (Lacy Vixxen gives a make-out lesson to her Brother.mp4)
2025-12-29 11:08:41,233 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen gives a make-out lesson to her Brother.mp4
2025-12-29 11:08:41,233 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4 (Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4)
2025-12-29 11:08:41,234 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 1 - Ashley Fires Fetish Clips. Dad made Son fuck Mom after he caught him watching his parents have sex.mp4
2025-12-29 11:08:41,234 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4 (Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4)
2025-12-29 11:08:41,234 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy needs Him - Modern Taboo Family.mp4
2025-12-29 11:08:41,234 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4)
2025-12-29 11:08:41,234 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (1) - Modern Taboo Family.mp4
2025-12-29 11:08:41,234 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4 (Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4)
2025-12-29 11:08:41,234 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Family Picnic - Part 3 - Modern Taboo Family-(Anya Olsen, Ashley Fires)-{Ashley Fires Fetish Clips}.mp4
2025-12-29 11:08:41,234 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,234 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen, Harlo Adams in Family Playdate by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,234 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4 (Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,235 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Doctor Mom Gets Double Penetrated By Her Brother and Son - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,235 - INFO - Processing video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4 (A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4)
2025-12-29 11:08:41,235 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/A Daughters Family Initiation - Modern Taboo Family - HD VERSION-(Anya Olsen, Madeline Blue)-{Ashley Fires Fetish Clips}-[Cum Swapping, Older Woman - Younger Man, Step Dad, Step Daughter, Step Mother].mp4
2025-12-29 11:08:41,235 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4 (Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,235 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Elder Sister punishes younger Sister for sleeping with Dad. Lacy Vixxen, Lexy Lynne in Little Sister gets Airtight by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,235 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4 (Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4)
2025-12-29 11:08:41,235 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Dad caught Anya making out with her Brother. Anya Olsen - Mommy Made Me Do It.mp4
2025-12-29 11:08:41,235 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4 (Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,235 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - Daughter Exchange Club - Teaching Daughter To Be A Whore - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,235 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4 (Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4)
2025-12-29 11:08:41,235 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother force-fucks Lacy Vixxen in bathroom, get caught by their Moms friend, then tries to comfort her by fucking her again.mp4
2025-12-29 11:08:41,235 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4 (Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,236 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen - She Lets Daddy Inside - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,236 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4)
2025-12-29 11:08:41,236 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 2.mp4
2025-12-29 11:08:41,236 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4 (Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4)
2025-12-29 11:08:41,236 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Krystal Star - Help Mommy Get Pregnant Part (2) - Modern Taboo Family.mp4
2025-12-29 11:08:41,236 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4 (Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4)
2025-12-29 11:08:41,236 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen, Ashley Fires - Homewrecking Daughter Punished By Mom.mp4
2025-12-29 11:08:41,236 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4 (Ashley Fires - Mommys Special Diet.mp4)
2025-12-29 11:08:41,236 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Special Diet.mp4
2025-12-29 11:08:41,236 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4 (Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,237 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Megan Maiden - Mom Is Clueless - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,237 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4 (Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4)
2025-12-29 11:08:41,237 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Step-Brother Gets His Christmas Wish - PART 1-(Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Cum in Mouth, From Chapter, Pussy Licking, Step Brother, taboo].mp4
2025-12-29 11:08:41,237 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4 (Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,237 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Sadie Holmes, Ashley Fires - Brothers Homecoming - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,237 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4 (Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4)
2025-12-29 11:08:41,237 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Turns Her Boy Into A Man - A Mothers Love - Modern Taboo Family.mp4
2025-12-29 11:08:41,237 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4 (Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4)
2025-12-29 11:08:41,237 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Lux Orchid in Son Gets Anal With Mom And Aunt.mp4
2025-12-29 11:08:41,237 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4 (Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,238 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anya Olsen, Lux Orchid in Mommy and Brothers House Rules by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,238 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4 (Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,238 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in My Mother My Whore by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,238 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4 (Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,238 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Brother creampies his Sister Chi. Brother Gets His Christmas Wish Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,238 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4 (Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4)
2025-12-29 11:08:41,238 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires in Dont Leave Mommy - Modern Taboo Family.mp4
2025-12-29 11:08:41,238 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4 (Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,238 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid in Mommy Says Good Night by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,238 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4 (Lacy Vixxen returns the favour to her Brother.mp4)
2025-12-29 11:08:41,238 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen returns the favour to her Brother.mp4
2025-12-29 11:08:41,238 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4 (Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,239 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - Mommy Says Good Morning - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,239 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4 (Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,239 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - This Hurts Mommy More - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,239 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4 (Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,239 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Anya Olsen in Family Picnic Part 2 by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,239 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4 (Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4)
2025-12-29 11:08:41,239 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - The Lake House Part 2 - Ashley Fires Fetish Clips. Son Is The Man Of The House Now.mp4
2025-12-29 11:08:41,239 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4 (Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4)
2025-12-29 11:08:41,239 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Forced-feminization of Brother. Lacy Vixxen - My Brother is My Sister.mp4
2025-12-29 11:08:41,239 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4 (Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,239 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Sister has to do the unthinkable. Anya Olsen in Modern Taboo Family by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,239 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4 (Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4)
2025-12-29 11:08:41,240 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Mommy Makes Her Sons Cum Together. Ashley Fires in A Mothers Love.mp4
2025-12-29 11:08:41,240 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4 (Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4)
2025-12-29 11:08:41,240 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Anal Lessons From Step-Mom-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Anal Creampie, Cum Swapping, MILF (30+), Rimming, creampie, taboo].mp4
2025-12-29 11:08:41,240 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4 (Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,240 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Daughter blows her asleep Daddy. Chi in Waking Daddy by Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,240 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4 (Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4)
2025-12-29 11:08:41,240 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Family Fraternity-(Ashley Fires, Chi)-{Ashley Fires Fetish Clips}-[Blowjob, Doggy Style, Missionary, Pussy Licking, cowgirl, taboo].mp4
2025-12-29 11:08:41,240 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4 (Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4)
2025-12-29 11:08:41,240 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Modern Taboo Family - Step-Brother Step-Sister Prom Date-(Ashley Fires, Riley Reyes)-{Ashley Fires Fetish Clips}-[Foursome].mp4
2025-12-29 11:08:41,240 - INFO - Processing video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4 (The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4)
2025-12-29 11:08:41,240 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/The Manchurian Step-Son - Modern Family Taboo-(Ashley Fires)-{Ashley Fires Fetish Clips}-[Kissing, Mind Fuck, Smoking Fetish].mp4
2025-12-29 11:08:41,241 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4 (Ashley Fires - My Son Joins The Service.mp4)
2025-12-29 11:08:41,241 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - My Son Joins The Service.mp4
2025-12-29 11:08:41,241 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4 (Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4)
2025-12-29 11:08:41,241 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires, Alana X, Andreina Deluxe - The Unfortunate Orphan - Last Chance Part 1.mp4
2025-12-29 11:08:41,241 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4 (Lacy Vixxen - Brother Fucker.mp4)
2025-12-29 11:08:41,241 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen - Brother Fucker.mp4
2025-12-29 11:08:41,241 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4 (Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,241 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommys Party - Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,241 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4 (Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4)
2025-12-29 11:08:41,241 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lacy Vixxen looks up to her Brother after getting zero action at the party.mp4
2025-12-29 11:08:41,241 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4 (Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4)
2025-12-29 11:08:41,242 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Lux Orchid - My Son Is Ashamed Of Me - Modern Taboo Family ⁄ Ashley Fires Fetish Clips.mp4
2025-12-29 11:08:41,242 - INFO - Processing video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4 (Ashley Fires - Mommy Gets Married.mp4)
2025-12-29 11:08:41,242 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/Ashley Fires - Mommy Gets Married.mp4
2025-12-29 11:08:41,242 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen
2025-12-29 11:08:41,253 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:08:41,264 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4 (momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4)
2025-12-29 11:08:41,264 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/MomsTeachSex.25.07.07.Anya.Olsen.Going.Around.The.World.With.Stepmom.XXX.1080p.MP4-WRB[XC]/momsteachsex.25.07.07.anya.olsen.going.around.the.world.with.stepmom.mp4
2025-12-29 11:08:41,264 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4 (Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4)
2025-12-29 11:08:41,264 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/Sweet Step Mom Vacation Sex-(Anya Olsen)-{Household Fantasy}-[Blond Hair, Blowjob, Cumshot, Male - POV, cowgirl, creampie].mp4
2025-12-29 11:08:41,265 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4 (Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4)
2025-12-29 11:08:46,712 - ERROR - ffprobe failed for /tmp/tmpabos2dgk: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpabos2dgk']' returned non-zero exit status 1.
2025-12-29 11:08:46,730 - ERROR - ffmpeg failed for /tmp/tmpabos2dgk: Command '['ffmpeg', '-i', '/tmp/tmpabos2dgk', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpqa60b3sf.jpg']' returned non-zero exit status 183.
2025-12-29 11:08:46,730 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Watching Porn with Anya-(Anya Olsen)-{MissaX}-[Blowjob, Handjob, Natural Tits, Short Woman, creampie].mp4
2025-12-29 11:08:46,735 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT
2025-12-29 11:08:46,749 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4 (MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4)
2025-12-29 11:08:46,750 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT/MomSwapped.25.01.09.Anya.Olsen.And.Sophia.Locke.XXX.1080p.HEVC.x265.PRT.mp4
2025-12-29 11:08:46,750 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.HEVC.x265.PRT
2025-12-29 11:08:46,760 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:08:46,770 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4 (momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4)
2025-12-29 11:08:52,465 - ERROR - ffmpeg failed for /tmp/tmppetijreb: Command '['ffmpeg', '-i', '/tmp/tmppetijreb', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpgr0a_hkd.jpg']' returned non-zero exit status 228.
2025-12-29 11:08:52,465 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.MP4-WRB[XC]/momwantstobreed.25.07.04.anya.olsen.if.you.cum.in.me.ill.get.pregnant.mp4
2025-12-29 11:08:52,469 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4 (Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4)
2025-12-29 11:08:52,469 - INFO - Skipping already processed and unaltered video: /videos/ashley-fires-fetish-clips/anya.olsen/Anya Olsen Sophia Locke - Our Hot Moms Know How To Play - MomSwa.mp4
2025-12-29 11:08:52,469 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]
2025-12-29 11:08:52,480 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4 (momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4)
2025-12-29 11:08:58,432 - ERROR - ffmpeg failed for /tmp/tmp9y8vgze3: Command '['ffmpeg', '-i', '/tmp/tmp9y8vgze3', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmpx2og8fkq.jpg']' returned non-zero exit status 228.
2025-12-29 11:08:58,432 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsCreampie.25.10.11.Anya.Olsen.Your.Turn.To.Take.Care.Of.Me.Stepson.XXX.1080p.MP4-WRB[XC]/momwantscreampie.25.10.11.anya.olsen.your.turn.to.take.care.of.me.stepson.mp4
2025-12-29 11:08:58,436 - INFO - Scanning directory: /videos/ashley-fires-fetish-clips/anya.olsen/MomWantsToBreed.25.07.04.Anya.Olsen.If.You.Cum.In.Me.Ill.Get.Pregnant.XXX.1080p.HEVC.x265.PRT
2025-12-29 11:08:58,448 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4 (Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4)
2025-12-29 11:09:04,262 - ERROR - ffprobe failed for /tmp/tmpcqsdiwex: Command '['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', '/tmp/tmpcqsdiwex']' returned non-zero exit status 1.
2025-12-29 11:09:04,279 - ERROR - ffmpeg failed for /tmp/tmpcqsdiwex: Command '['ffmpeg', '-i', '/tmp/tmpcqsdiwex', '-ss', '00:00:10', '-vframes', '1', '-y', '/tmp/tmp5gyv9jbe.jpg']' returned non-zero exit status 183.
2025-12-29 11:09:04,279 - WARNING - Could not get duration or hash for /videos/ashley-fires-fetish-clips/anya.olsen/Lonely Step-Mom Needs Attention ~ Anya Olsen-{Household Fantasy}.mp4
2025-12-29 11:09:04,284 - INFO - Processing video: /videos/ashley-fires-fetish-clips/anya.olsen/FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4 (FamilySwap.25.02.04.Anya.Olsen.And.Kimmy.Kimm.Coming.Together.On.Valentines.Day.XXX.1080p.mp4)
2025-12-29 11:30:40,557 - INFO - Authentication with remote machine "SERVER_NAME" for user "home" will be using NTLM v2 authentication (with extended security)
2025-12-29 11:30:40,573 - INFO - Now switching over to SMB2 protocol communication
2025-12-29 11:30:40,573 - INFO - SMB2 dialect negotiation successful
2025-12-29 11:30:40,576 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'3ae84ce30004e356'"
2025-12-29 11:30:40,576 - INFO - Performing NTLMv2 authentication (on SMB2) with server challenge "b'3ae84ce30004e356'"
2025-12-29 11:30:40,577 - INFO - Server supports SMB signing
2025-12-29 11:30:40,577 - INFO - SMB signing deactivated. SMB messages will NOT be signed.
2025-12-29 11:30:40,583 - INFO - Authentication (on SMB2) successful!
@@ -0,0 +1 @@
/videos/castingcurvy/Videos
@@ -0,0 +1,8 @@
fastapi
uvicorn[standard]
pysmb
imagehash
python-multipart
SQLAlchemy
python-dotenv
pydantic-settings
+5
View File
@@ -0,0 +1,5 @@
# Vue 3 + Vite
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
Learn more about IDE Support for Vue in the [Vue Docs Scaling up Guide](https://vuejs.org/guide/scaling-up/tooling.html#ide-support).
+13
View File
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>webapp</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
+1
View File
@@ -0,0 +1 @@
../esbuild/bin/esbuild
+1
View File
@@ -0,0 +1 @@
../nanoid/bin/nanoid.cjs
+1
View File
@@ -0,0 +1 @@
../@babel/parser/bin/babel-parser.js
+1
View File
@@ -0,0 +1 @@
../rollup/dist/bin/rollup
+1
View File
@@ -0,0 +1 @@
../vite/bin/vite.js
+547
View File
@@ -0,0 +1,547 @@
{
"name": "webapp",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.28.5"
},
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/types": {
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz",
"integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"license": "MIT"
},
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-beta.53",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz",
"integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz",
"integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"dev": true,
"license": "MIT"
},
"node_modules/@vitejs/plugin-vue": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.3.tgz",
"integrity": "sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@rolldown/pluginutils": "1.0.0-beta.53"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"peerDependencies": {
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0",
"vue": "^3.2.25"
}
},
"node_modules/@vue/compiler-core": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.26",
"entities": "^7.0.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
"integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
"license": "MIT",
"dependencies": {
"@vue/compiler-core": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.5.26",
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/reactivity": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.26.tgz",
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
"license": "MIT",
"dependencies": {
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.26.tgz",
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz",
"integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.26",
"@vue/runtime-core": "3.5.26",
"@vue/shared": "3.5.26",
"csstype": "^3.2.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.26.tgz",
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
"license": "MIT",
"dependencies": {
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26"
},
"peerDependencies": {
"vue": "3.5.26"
}
},
"node_modules/@vue/shared": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.26.tgz",
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==",
"license": "MIT"
},
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"license": "MIT"
},
"node_modules/entities": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz",
"integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/esbuild": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz",
"integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.27.2",
"@esbuild/android-arm": "0.27.2",
"@esbuild/android-arm64": "0.27.2",
"@esbuild/android-x64": "0.27.2",
"@esbuild/darwin-arm64": "0.27.2",
"@esbuild/darwin-x64": "0.27.2",
"@esbuild/freebsd-arm64": "0.27.2",
"@esbuild/freebsd-x64": "0.27.2",
"@esbuild/linux-arm": "0.27.2",
"@esbuild/linux-arm64": "0.27.2",
"@esbuild/linux-ia32": "0.27.2",
"@esbuild/linux-loong64": "0.27.2",
"@esbuild/linux-mips64el": "0.27.2",
"@esbuild/linux-ppc64": "0.27.2",
"@esbuild/linux-riscv64": "0.27.2",
"@esbuild/linux-s390x": "0.27.2",
"@esbuild/linux-x64": "0.27.2",
"@esbuild/netbsd-arm64": "0.27.2",
"@esbuild/netbsd-x64": "0.27.2",
"@esbuild/openbsd-arm64": "0.27.2",
"@esbuild/openbsd-x64": "0.27.2",
"@esbuild/openharmony-arm64": "0.27.2",
"@esbuild/sunos-x64": "0.27.2",
"@esbuild/win32-arm64": "0.27.2",
"@esbuild/win32-ia32": "0.27.2",
"@esbuild/win32-x64": "0.27.2"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12.0.0"
},
"peerDependencies": {
"picomatch": "^3 || ^4"
},
"peerDependenciesMeta": {
"picomatch": {
"optional": true
}
}
},
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
"node_modules/picomatch": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/rollup": {
"version": "4.54.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz",
"integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/estree": "1.0.8"
},
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
"node": ">=18.0.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.54.0",
"@rollup/rollup-android-arm64": "4.54.0",
"@rollup/rollup-darwin-arm64": "4.54.0",
"@rollup/rollup-darwin-x64": "4.54.0",
"@rollup/rollup-freebsd-arm64": "4.54.0",
"@rollup/rollup-freebsd-x64": "4.54.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.54.0",
"@rollup/rollup-linux-arm-musleabihf": "4.54.0",
"@rollup/rollup-linux-arm64-gnu": "4.54.0",
"@rollup/rollup-linux-arm64-musl": "4.54.0",
"@rollup/rollup-linux-loong64-gnu": "4.54.0",
"@rollup/rollup-linux-ppc64-gnu": "4.54.0",
"@rollup/rollup-linux-riscv64-gnu": "4.54.0",
"@rollup/rollup-linux-riscv64-musl": "4.54.0",
"@rollup/rollup-linux-s390x-gnu": "4.54.0",
"@rollup/rollup-linux-x64-gnu": "4.54.0",
"@rollup/rollup-linux-x64-musl": "4.54.0",
"@rollup/rollup-openharmony-arm64": "4.54.0",
"@rollup/rollup-win32-arm64-msvc": "4.54.0",
"@rollup/rollup-win32-ia32-msvc": "4.54.0",
"@rollup/rollup-win32-x64-gnu": "4.54.0",
"@rollup/rollup-win32-x64-msvc": "4.54.0",
"fsevents": "~2.3.2"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/tinyglobby": {
"version": "0.2.15",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
"picomatch": "^4.0.3"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/vite": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz",
"integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.27.0",
"fdir": "^6.5.0",
"picomatch": "^4.0.3",
"postcss": "^8.5.6",
"rollup": "^4.43.0",
"tinyglobby": "^0.2.15"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
},
"peerDependencies": {
"@types/node": "^20.19.0 || >=22.12.0",
"jiti": ">=1.21.0",
"less": "^4.0.0",
"lightningcss": "^1.21.0",
"sass": "^1.70.0",
"sass-embedded": "^1.70.0",
"stylus": ">=0.54.8",
"sugarss": "^5.0.0",
"terser": "^5.16.0",
"tsx": "^4.8.1",
"yaml": "^2.4.2"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
"jiti": {
"optional": true
},
"less": {
"optional": true
},
"lightningcss": {
"optional": true
},
"sass": {
"optional": true
},
"sass-embedded": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"terser": {
"optional": true
},
"tsx": {
"optional": true
},
"yaml": {
"optional": true
}
}
},
"node_modules/vue": {
"version": "3.5.26",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz",
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-sfc": "3.5.26",
"@vue/runtime-dom": "3.5.26",
"@vue/server-renderer": "3.5.26",
"@vue/shared": "3.5.26"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
}
}
}
+15
View File
@@ -0,0 +1,15 @@
{
"hash": "de5351f0",
"configHash": "ad9d2ba9",
"lockfileHash": "d8cac6d1",
"browserHash": "85657f81",
"optimized": {
"vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "936bccf3",
"needsInterop": false
}
},
"chunks": {}
}
+3
View File
@@ -0,0 +1,3 @@
{
"type": "module"
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,22 @@
MIT License
Copyright (c) 2014-present Sebastian McKenzie and other contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,19 @@
# @babel/helper-string-parser
> A utility package to parse strings
See our website [@babel/helper-string-parser](https://babeljs.io/docs/babel-helper-string-parser) for more information.
## Install
Using npm:
```sh
npm install --save @babel/helper-string-parser
```
or using yarn:
```sh
yarn add @babel/helper-string-parser
```
@@ -0,0 +1,295 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.readCodePoint = readCodePoint;
exports.readInt = readInt;
exports.readStringContents = readStringContents;
var _isDigit = function isDigit(code) {
return code >= 48 && code <= 57;
};
const forbiddenNumericSeparatorSiblings = {
decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
hex: new Set([46, 88, 95, 120])
};
const isAllowedNumericSeparatorSibling = {
bin: ch => ch === 48 || ch === 49,
oct: ch => ch >= 48 && ch <= 55,
dec: ch => ch >= 48 && ch <= 57,
hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
};
function readStringContents(type, input, pos, lineStart, curLine, errors) {
const initialPos = pos;
const initialLineStart = lineStart;
const initialCurLine = curLine;
let out = "";
let firstInvalidLoc = null;
let chunkStart = pos;
const {
length
} = input;
for (;;) {
if (pos >= length) {
errors.unterminated(initialPos, initialLineStart, initialCurLine);
out += input.slice(chunkStart, pos);
break;
}
const ch = input.charCodeAt(pos);
if (isStringEnd(type, ch, input, pos)) {
out += input.slice(chunkStart, pos);
break;
}
if (ch === 92) {
out += input.slice(chunkStart, pos);
const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
if (res.ch === null && !firstInvalidLoc) {
firstInvalidLoc = {
pos,
lineStart,
curLine
};
} else {
out += res.ch;
}
({
pos,
lineStart,
curLine
} = res);
chunkStart = pos;
} else if (ch === 8232 || ch === 8233) {
++pos;
++curLine;
lineStart = pos;
} else if (ch === 10 || ch === 13) {
if (type === "template") {
out += input.slice(chunkStart, pos) + "\n";
++pos;
if (ch === 13 && input.charCodeAt(pos) === 10) {
++pos;
}
++curLine;
chunkStart = lineStart = pos;
} else {
errors.unterminated(initialPos, initialLineStart, initialCurLine);
}
} else {
++pos;
}
}
return {
pos,
str: out,
firstInvalidLoc,
lineStart,
curLine,
containsInvalid: !!firstInvalidLoc
};
}
function isStringEnd(type, ch, input, pos) {
if (type === "template") {
return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
}
return ch === (type === "double" ? 34 : 39);
}
function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
const throwOnInvalid = !inTemplate;
pos++;
const res = ch => ({
pos,
ch,
lineStart,
curLine
});
const ch = input.charCodeAt(pos++);
switch (ch) {
case 110:
return res("\n");
case 114:
return res("\r");
case 120:
{
let code;
({
code,
pos
} = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
return res(code === null ? null : String.fromCharCode(code));
}
case 117:
{
let code;
({
code,
pos
} = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
return res(code === null ? null : String.fromCodePoint(code));
}
case 116:
return res("\t");
case 98:
return res("\b");
case 118:
return res("\u000b");
case 102:
return res("\f");
case 13:
if (input.charCodeAt(pos) === 10) {
++pos;
}
case 10:
lineStart = pos;
++curLine;
case 8232:
case 8233:
return res("");
case 56:
case 57:
if (inTemplate) {
return res(null);
} else {
errors.strictNumericEscape(pos - 1, lineStart, curLine);
}
default:
if (ch >= 48 && ch <= 55) {
const startPos = pos - 1;
const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
let octalStr = match[0];
let octal = parseInt(octalStr, 8);
if (octal > 255) {
octalStr = octalStr.slice(0, -1);
octal = parseInt(octalStr, 8);
}
pos += octalStr.length - 1;
const next = input.charCodeAt(pos);
if (octalStr !== "0" || next === 56 || next === 57) {
if (inTemplate) {
return res(null);
} else {
errors.strictNumericEscape(startPos, lineStart, curLine);
}
}
return res(String.fromCharCode(octal));
}
return res(String.fromCharCode(ch));
}
}
function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
const initialPos = pos;
let n;
({
n,
pos
} = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
if (n === null) {
if (throwOnInvalid) {
errors.invalidEscapeSequence(initialPos, lineStart, curLine);
} else {
pos = initialPos - 1;
}
}
return {
code: n,
pos
};
}
function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
const start = pos;
const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
let invalid = false;
let total = 0;
for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
const code = input.charCodeAt(pos);
let val;
if (code === 95 && allowNumSeparator !== "bail") {
const prev = input.charCodeAt(pos - 1);
const next = input.charCodeAt(pos + 1);
if (!allowNumSeparator) {
if (bailOnError) return {
n: null,
pos
};
errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
} else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
if (bailOnError) return {
n: null,
pos
};
errors.unexpectedNumericSeparator(pos, lineStart, curLine);
}
++pos;
continue;
}
if (code >= 97) {
val = code - 97 + 10;
} else if (code >= 65) {
val = code - 65 + 10;
} else if (_isDigit(code)) {
val = code - 48;
} else {
val = Infinity;
}
if (val >= radix) {
if (val <= 9 && bailOnError) {
return {
n: null,
pos
};
} else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
val = 0;
} else if (forceLen) {
val = 0;
invalid = true;
} else {
break;
}
}
++pos;
total = total * radix + val;
}
if (pos === start || len != null && pos - start !== len || invalid) {
return {
n: null,
pos
};
}
return {
n: total,
pos
};
}
function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
const ch = input.charCodeAt(pos);
let code;
if (ch === 123) {
++pos;
({
code,
pos
} = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
++pos;
if (code !== null && code > 0x10ffff) {
if (throwOnInvalid) {
errors.invalidCodePoint(pos, lineStart, curLine);
} else {
return {
code: null,
pos
};
}
}
} else {
({
code,
pos
} = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
}
return {
code,
pos
};
}
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,31 @@
{
"name": "@babel/helper-string-parser",
"version": "7.27.1",
"description": "A utility package to parse strings",
"repository": {
"type": "git",
"url": "https://github.com/babel/babel.git",
"directory": "packages/babel-helper-string-parser"
},
"homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"main": "./lib/index.js",
"devDependencies": {
"charcodes": "^0.2.0"
},
"engines": {
"node": ">=6.9.0"
},
"author": "The Babel Team (https://babel.dev/team)",
"exports": {
".": {
"types": "./lib/index.d.ts",
"default": "./lib/index.js"
},
"./package.json": "./package.json"
},
"type": "commonjs"
}
@@ -0,0 +1,22 @@
MIT License
Copyright (c) 2014-present Sebastian McKenzie and other contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,19 @@
# @babel/helper-validator-identifier
> Validate identifier/keywords name
See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information.
## Install
Using npm:
```sh
npm install --save @babel/helper-validator-identifier
```
or using yarn:
```sh
yarn add @babel/helper-validator-identifier
```
@@ -0,0 +1,70 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isIdentifierChar = isIdentifierChar;
exports.isIdentifierName = isIdentifierName;
exports.isIdentifierStart = isIdentifierStart;
let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
function isInAstralSet(code, set) {
let pos = 0x10000;
for (let i = 0, length = set.length; i < length; i += 2) {
pos += set[i];
if (pos > code) return false;
pos += set[i + 1];
if (pos >= code) return true;
}
return false;
}
function isIdentifierStart(code) {
if (code < 65) return code === 36;
if (code <= 90) return true;
if (code < 97) return code === 95;
if (code <= 122) return true;
if (code <= 0xffff) {
return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
}
return isInAstralSet(code, astralIdentifierStartCodes);
}
function isIdentifierChar(code) {
if (code < 48) return code === 36;
if (code < 58) return true;
if (code < 65) return false;
if (code <= 90) return true;
if (code < 97) return code === 95;
if (code <= 122) return true;
if (code <= 0xffff) {
return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
}
return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
}
function isIdentifierName(name) {
let isFirst = true;
for (let i = 0; i < name.length; i++) {
let cp = name.charCodeAt(i);
if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
const trail = name.charCodeAt(++i);
if ((trail & 0xfc00) === 0xdc00) {
cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
}
}
if (isFirst) {
isFirst = false;
if (!isIdentifierStart(cp)) {
return false;
}
} else if (!isIdentifierChar(cp)) {
return false;
}
}
return !isFirst;
}
//# sourceMappingURL=identifier.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,57 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "isIdentifierChar", {
enumerable: true,
get: function () {
return _identifier.isIdentifierChar;
}
});
Object.defineProperty(exports, "isIdentifierName", {
enumerable: true,
get: function () {
return _identifier.isIdentifierName;
}
});
Object.defineProperty(exports, "isIdentifierStart", {
enumerable: true,
get: function () {
return _identifier.isIdentifierStart;
}
});
Object.defineProperty(exports, "isKeyword", {
enumerable: true,
get: function () {
return _keyword.isKeyword;
}
});
Object.defineProperty(exports, "isReservedWord", {
enumerable: true,
get: function () {
return _keyword.isReservedWord;
}
});
Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
enumerable: true,
get: function () {
return _keyword.isStrictBindOnlyReservedWord;
}
});
Object.defineProperty(exports, "isStrictBindReservedWord", {
enumerable: true,
get: function () {
return _keyword.isStrictBindReservedWord;
}
});
Object.defineProperty(exports, "isStrictReservedWord", {
enumerable: true,
get: function () {
return _keyword.isStrictReservedWord;
}
});
var _identifier = require("./identifier.js");
var _keyword = require("./keyword.js");
//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]}
@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isKeyword = isKeyword;
exports.isReservedWord = isReservedWord;
exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
exports.isStrictBindReservedWord = isStrictBindReservedWord;
exports.isStrictReservedWord = isStrictReservedWord;
const reservedWords = {
keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
strictBind: ["eval", "arguments"]
};
const keywords = new Set(reservedWords.keyword);
const reservedWordsStrictSet = new Set(reservedWords.strict);
const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
function isReservedWord(word, inModule) {
return inModule && word === "await" || word === "enum";
}
function isStrictReservedWord(word, inModule) {
return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
}
function isStrictBindOnlyReservedWord(word) {
return reservedWordsStrictBindSet.has(word);
}
function isStrictBindReservedWord(word, inModule) {
return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
}
function isKeyword(word) {
return keywords.has(word);
}
//# sourceMappingURL=keyword.js.map
@@ -0,0 +1 @@
{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]}
@@ -0,0 +1,31 @@
{
"name": "@babel/helper-validator-identifier",
"version": "7.28.5",
"description": "Validate identifier/keywords name",
"repository": {
"type": "git",
"url": "https://github.com/babel/babel.git",
"directory": "packages/babel-helper-validator-identifier"
},
"license": "MIT",
"publishConfig": {
"access": "public"
},
"main": "./lib/index.js",
"exports": {
".": {
"types": "./lib/index.d.ts",
"default": "./lib/index.js"
},
"./package.json": "./package.json"
},
"devDependencies": {
"@unicode/unicode-17.0.0": "^1.6.10",
"charcodes": "^0.2.0"
},
"engines": {
"node": ">=6.9.0"
},
"author": "The Babel Team (https://babel.dev/team)",
"type": "commonjs"
}
File diff suppressed because it is too large Load Diff
+19
View File
@@ -0,0 +1,19 @@
Copyright (C) 2012-2014 by various contributors (see AUTHORS)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+19
View File
@@ -0,0 +1,19 @@
# @babel/parser
> A JavaScript parser
See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package.
## Install
Using npm:
```sh
npm install --save-dev @babel/parser
```
or using yarn:
```sh
yarn add @babel/parser --dev
```
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env node
/* eslint-disable no-var, unicorn/prefer-node-protocol */
var parser = require("..");
var fs = require("fs");
var filename = process.argv[2];
if (!filename) {
console.error("no filename specified");
} else {
var file = fs.readFileSync(filename, "utf8");
var ast = parser.parse(file);
console.log(JSON.stringify(ast, null, " "));
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+50
View File
@@ -0,0 +1,50 @@
{
"name": "@babel/parser",
"version": "7.28.5",
"description": "A JavaScript parser",
"author": "The Babel Team (https://babel.dev/team)",
"homepage": "https://babel.dev/docs/en/next/babel-parser",
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"keywords": [
"babel",
"javascript",
"parser",
"tc39",
"ecmascript",
"@babel/parser"
],
"repository": {
"type": "git",
"url": "https://github.com/babel/babel.git",
"directory": "packages/babel-parser"
},
"main": "./lib/index.js",
"types": "./typings/babel-parser.d.ts",
"files": [
"bin",
"lib",
"typings/babel-parser.d.ts",
"index.cjs"
],
"engines": {
"node": ">=6.0.0"
},
"# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.",
"dependencies": {
"@babel/types": "^7.28.5"
},
"devDependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/helper-check-duplicate-nodes": "^7.27.1",
"@babel/helper-fixtures": "^7.28.0",
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5",
"charcodes": "^0.2.0"
},
"bin": "./bin/babel-parser.js",
"type": "commonjs"
}
@@ -0,0 +1,262 @@
// This file is auto-generated! Do not modify it directly.
// Run `yarn gulp bundle-dts` to re-generate it.
/* eslint-disable @typescript-eslint/consistent-type-imports, @typescript-eslint/no-redundant-type-constituents */
import { File, Expression } from '@babel/types';
declare class Position {
line: number;
column: number;
index: number;
constructor(line: number, col: number, index: number);
}
type SyntaxPlugin = "flow" | "typescript" | "jsx" | "pipelineOperator" | "placeholders";
type ParseErrorCode = "BABEL_PARSER_SYNTAX_ERROR" | "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED";
interface ParseErrorSpecification<ErrorDetails> {
code: ParseErrorCode;
reasonCode: string;
syntaxPlugin?: SyntaxPlugin;
missingPlugin?: string | string[];
loc: Position;
details: ErrorDetails;
pos: number;
}
type ParseError$1<ErrorDetails> = SyntaxError & ParseErrorSpecification<ErrorDetails>;
type BABEL_8_BREAKING = false;
type IF_BABEL_7<V> = false extends BABEL_8_BREAKING ? V : never;
type Plugin$1 =
| "asyncDoExpressions"
| IF_BABEL_7<"asyncGenerators">
| IF_BABEL_7<"bigInt">
| IF_BABEL_7<"classPrivateMethods">
| IF_BABEL_7<"classPrivateProperties">
| IF_BABEL_7<"classProperties">
| IF_BABEL_7<"classStaticBlock">
| IF_BABEL_7<"decimal">
| "decorators-legacy"
| "deferredImportEvaluation"
| "decoratorAutoAccessors"
| "destructuringPrivate"
| "deprecatedImportAssert"
| "doExpressions"
| IF_BABEL_7<"dynamicImport">
| IF_BABEL_7<"explicitResourceManagement">
| "exportDefaultFrom"
| IF_BABEL_7<"exportNamespaceFrom">
| "flow"
| "flowComments"
| "functionBind"
| "functionSent"
| "importMeta"
| "jsx"
| IF_BABEL_7<"jsonStrings">
| IF_BABEL_7<"logicalAssignment">
| IF_BABEL_7<"importAssertions">
| IF_BABEL_7<"importReflection">
| "moduleBlocks"
| IF_BABEL_7<"moduleStringNames">
| IF_BABEL_7<"nullishCoalescingOperator">
| IF_BABEL_7<"numericSeparator">
| IF_BABEL_7<"objectRestSpread">
| IF_BABEL_7<"optionalCatchBinding">
| IF_BABEL_7<"optionalChaining">
| "partialApplication"
| "placeholders"
| IF_BABEL_7<"privateIn">
| IF_BABEL_7<"regexpUnicodeSets">
| "sourcePhaseImports"
| "throwExpressions"
| IF_BABEL_7<"topLevelAwait">
| "v8intrinsic"
| ParserPluginWithOptions[0];
type ParserPluginWithOptions =
| ["decorators", DecoratorsPluginOptions]
| ["discardBinding", { syntaxType: "void" }]
| ["estree", { classFeatures?: boolean }]
| IF_BABEL_7<["importAttributes", { deprecatedAssertSyntax: boolean }]>
| IF_BABEL_7<["moduleAttributes", { version: "may-2020" }]>
| ["optionalChainingAssign", { version: "2023-07" }]
| ["pipelineOperator", PipelineOperatorPluginOptions]
| ["recordAndTuple", RecordAndTuplePluginOptions]
| ["flow", FlowPluginOptions]
| ["typescript", TypeScriptPluginOptions];
type PluginConfig = Plugin$1 | ParserPluginWithOptions;
interface DecoratorsPluginOptions {
decoratorsBeforeExport?: boolean;
allowCallParenthesized?: boolean;
}
interface PipelineOperatorPluginOptions {
proposal: BABEL_8_BREAKING extends false
? "minimal" | "fsharp" | "hack" | "smart"
: "fsharp" | "hack";
topicToken?: "%" | "#" | "@@" | "^^" | "^";
}
interface RecordAndTuplePluginOptions {
syntaxType: "bar" | "hash";
}
type FlowPluginOptions = BABEL_8_BREAKING extends true
? {
all?: boolean;
enums?: boolean;
}
: {
all?: boolean;
};
interface TypeScriptPluginOptions {
dts?: boolean;
disallowAmbiguousJSXLike?: boolean;
}
type Plugin = PluginConfig;
type SourceType = "script" | "commonjs" | "module" | "unambiguous";
interface Options {
/**
* By default, import and export declarations can only appear at a program's top level.
* Setting this option to true allows them anywhere where a statement is allowed.
*/
allowImportExportEverywhere?: boolean;
/**
* By default, await use is not allowed outside of an async function.
* Set this to true to accept such code.
*/
allowAwaitOutsideFunction?: boolean;
/**
* By default, a return statement at the top level raises an error.
* Set this to true to accept such code.
*/
allowReturnOutsideFunction?: boolean;
/**
* By default, new.target use is not allowed outside of a function or class.
* Set this to true to accept such code.
*/
allowNewTargetOutsideFunction?: boolean;
/**
* By default, super calls are not allowed outside of a method.
* Set this to true to accept such code.
*/
allowSuperOutsideMethod?: boolean;
/**
* By default, exported identifiers must refer to a declared variable.
* Set this to true to allow export statements to reference undeclared variables.
*/
allowUndeclaredExports?: boolean;
/**
* By default, yield use is not allowed outside of a generator function.
* Set this to true to accept such code.
*/
allowYieldOutsideFunction?: boolean;
/**
* By default, Babel parser JavaScript code according to Annex B syntax.
* Set this to `false` to disable such behavior.
*/
annexB?: boolean;
/**
* By default, Babel attaches comments to adjacent AST nodes.
* When this option is set to false, comments are not attached.
* It can provide up to 30% performance improvement when the input code has many comments.
* @babel/eslint-parser will set it for you.
* It is not recommended to use attachComment: false with Babel transform,
* as doing so removes all the comments in output code, and renders annotations such as
* /* istanbul ignore next *\/ nonfunctional.
*/
attachComment?: boolean;
/**
* By default, Babel always throws an error when it finds some invalid code.
* When this option is set to true, it will store the parsing error and
* try to continue parsing the invalid input file.
*/
errorRecovery?: boolean;
/**
* Indicate the mode the code should be parsed in.
* Can be one of "script", "commonjs", "module", or "unambiguous". Defaults to "script".
* "unambiguous" will make @babel/parser attempt to guess, based on the presence
* of ES6 import or export statements.
* Files with ES6 imports and exports are considered "module" and are otherwise "script".
*
* Use "commonjs" to parse code that is intended to be run in a CommonJS environment such as Node.js.
*/
sourceType?: SourceType;
/**
* Correlate output AST nodes with their source filename.
* Useful when generating code and source maps from the ASTs of multiple input files.
*/
sourceFilename?: string;
/**
* By default, all source indexes start from 0.
* You can provide a start index to alternatively start with.
* Useful for integration with other source tools.
*/
startIndex?: number;
/**
* By default, the first line of code parsed is treated as line 1.
* You can provide a line number to alternatively start with.
* Useful for integration with other source tools.
*/
startLine?: number;
/**
* By default, the parsed code is treated as if it starts from line 1, column 0.
* You can provide a column number to alternatively start with.
* Useful for integration with other source tools.
*/
startColumn?: number;
/**
* Array containing the plugins that you want to enable.
*/
plugins?: Plugin[];
/**
* Should the parser work in strict mode.
* Defaults to true if sourceType === 'module'. Otherwise, false.
*/
strictMode?: boolean;
/**
* Adds a ranges property to each node: [node.start, node.end]
*/
ranges?: boolean;
/**
* Adds all parsed tokens to a tokens property on the File node.
*/
tokens?: boolean;
/**
* By default, the parser adds information about parentheses by setting
* `extra.parenthesized` to `true` as needed.
* When this option is `true` the parser creates `ParenthesizedExpression`
* AST nodes instead of using the `extra` property.
*/
createParenthesizedExpressions?: boolean;
/**
* The default is false in Babel 7 and true in Babel 8
* Set this to true to parse it as an `ImportExpression` node.
* Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.
*/
createImportExpressions?: boolean;
}
type ParserOptions = Partial<Options>;
type ParseError = ParseError$1<object>;
type ParseResult<Result extends File | Expression = File> = Result & {
comments: File["comments"];
errors: null | ParseError[];
tokens?: File["tokens"];
};
/**
* Parse the provided code as an entire ECMAScript program.
*/
declare function parse(input: string, options?: ParserOptions): ParseResult<File>;
declare function parseExpression(input: string, options?: ParserOptions): ParseResult<Expression>;
declare const tokTypes: {
// todo(flow->ts) real token type
[name: string]: any;
};
export { DecoratorsPluginOptions, FlowPluginOptions, ParseError, ParseResult, ParserOptions, PluginConfig as ParserPlugin, ParserPluginWithOptions, PipelineOperatorPluginOptions, RecordAndTuplePluginOptions, TypeScriptPluginOptions, parse, parseExpression, tokTypes };
+22
View File
@@ -0,0 +1,22 @@
MIT License
Copyright (c) 2014-present Sebastian McKenzie and other contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+19
View File
@@ -0,0 +1,19 @@
# @babel/types
> Babel Types is a Lodash-esque utility library for AST nodes
See our website [@babel/types](https://babeljs.io/docs/babel-types) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen) associated with this package.
## Install
Using npm:
```sh
npm install --save-dev @babel/types
```
or using yarn:
```sh
yarn add @babel/types --dev
```
@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = assertNode;
var _isNode = require("../validators/isNode.js");
function assertNode(node) {
if (!(0, _isNode.default)(node)) {
var _node$type;
const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);
throw new TypeError(`Not a valid node of type "${type}"`);
}
}
//# sourceMappingURL=assertNode.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_isNode","require","assertNode","node","isNode","_node$type","type","JSON","stringify","TypeError"],"sources":["../../src/asserts/assertNode.ts"],"sourcesContent":["import isNode from \"../validators/isNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function assertNode(node?: any): asserts node is t.Node {\n if (!isNode(node)) {\n const type = node?.type ?? JSON.stringify(node);\n throw new TypeError(`Not a valid node of type \"${type}\"`);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGe,SAASC,UAAUA,CAACC,IAAU,EAA0B;EACrE,IAAI,CAAC,IAAAC,eAAM,EAACD,IAAI,CAAC,EAAE;IAAA,IAAAE,UAAA;IACjB,MAAMC,IAAI,IAAAD,UAAA,GAAGF,IAAI,oBAAJA,IAAI,CAAEG,IAAI,YAAAD,UAAA,GAAIE,IAAI,CAACC,SAAS,CAACL,IAAI,CAAC;IAC/C,MAAM,IAAIM,SAAS,CAAC,6BAA6BH,IAAI,GAAG,CAAC;EAC3D;AACF","ignoreList":[]}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
"use strict";
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createFlowUnionType;
var _index = require("../generated/index.js");
var _removeTypeDuplicates = require("../../modifications/flow/removeTypeDuplicates.js");
function createFlowUnionType(types) {
const flattened = (0, _removeTypeDuplicates.default)(types);
if (flattened.length === 1) {
return flattened[0];
} else {
return (0, _index.unionTypeAnnotation)(flattened);
}
}
//# sourceMappingURL=createFlowUnionType.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_index","require","_removeTypeDuplicates","createFlowUnionType","types","flattened","removeTypeDuplicates","length","unionTypeAnnotation"],"sources":["../../../src/builders/flow/createFlowUnionType.ts"],"sourcesContent":["import { unionTypeAnnotation } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/flow/removeTypeDuplicates.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createFlowUnionType<T extends t.FlowType>(\n types: [T] | Array<T>,\n): T | t.UnionTypeAnnotation {\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0] as T;\n } else {\n return unionTypeAnnotation(flattened);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAOe,SAASE,mBAAmBA,CACzCC,KAAqB,EACM;EAC3B,MAAMC,SAAS,GAAG,IAAAC,6BAAoB,EAACF,KAAK,CAAC;EAE7C,IAAIC,SAAS,CAACE,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAOF,SAAS,CAAC,CAAC,CAAC;EACrB,CAAC,MAAM;IACL,OAAO,IAAAG,0BAAmB,EAACH,SAAS,CAAC;EACvC;AACF","ignoreList":[]}
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _index = require("../generated/index.js");
var _default = exports.default = createTypeAnnotationBasedOnTypeof;
function createTypeAnnotationBasedOnTypeof(type) {
switch (type) {
case "string":
return (0, _index.stringTypeAnnotation)();
case "number":
return (0, _index.numberTypeAnnotation)();
case "undefined":
return (0, _index.voidTypeAnnotation)();
case "boolean":
return (0, _index.booleanTypeAnnotation)();
case "function":
return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Function"));
case "object":
return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Object"));
case "symbol":
return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Symbol"));
case "bigint":
return (0, _index.anyTypeAnnotation)();
}
throw new Error("Invalid typeof value: " + type);
}
//# sourceMappingURL=createTypeAnnotationBasedOnTypeof.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_index","require","_default","exports","default","createTypeAnnotationBasedOnTypeof","type","stringTypeAnnotation","numberTypeAnnotation","voidTypeAnnotation","booleanTypeAnnotation","genericTypeAnnotation","identifier","anyTypeAnnotation","Error"],"sources":["../../../src/builders/flow/createTypeAnnotationBasedOnTypeof.ts"],"sourcesContent":["import {\n anyTypeAnnotation,\n stringTypeAnnotation,\n numberTypeAnnotation,\n voidTypeAnnotation,\n booleanTypeAnnotation,\n genericTypeAnnotation,\n identifier,\n} from \"../generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nexport default createTypeAnnotationBasedOnTypeof as {\n (type: \"string\"): t.StringTypeAnnotation;\n (type: \"number\"): t.NumberTypeAnnotation;\n (type: \"undefined\"): t.VoidTypeAnnotation;\n (type: \"boolean\"): t.BooleanTypeAnnotation;\n (type: \"function\"): t.GenericTypeAnnotation;\n (type: \"object\"): t.GenericTypeAnnotation;\n (type: \"symbol\"): t.GenericTypeAnnotation;\n (type: \"bigint\"): t.AnyTypeAnnotation;\n};\n\n/**\n * Create a type annotation based on typeof expression.\n */\nfunction createTypeAnnotationBasedOnTypeof(type: string): t.FlowType {\n switch (type) {\n case \"string\":\n return stringTypeAnnotation();\n case \"number\":\n return numberTypeAnnotation();\n case \"undefined\":\n return voidTypeAnnotation();\n case \"boolean\":\n return booleanTypeAnnotation();\n case \"function\":\n return genericTypeAnnotation(identifier(\"Function\"));\n case \"object\":\n return genericTypeAnnotation(identifier(\"Object\"));\n case \"symbol\":\n return genericTypeAnnotation(identifier(\"Symbol\"));\n case \"bigint\":\n // todo: use BigInt annotation when Flow supports BigInt\n // https://github.com/facebook/flow/issues/6639\n return anyTypeAnnotation();\n }\n throw new Error(\"Invalid typeof value: \" + type);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQ+B,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAGhBC,iCAAiC;AAchD,SAASA,iCAAiCA,CAACC,IAAY,EAAc;EACnE,QAAQA,IAAI;IACV,KAAK,QAAQ;MACX,OAAO,IAAAC,2BAAoB,EAAC,CAAC;IAC/B,KAAK,QAAQ;MACX,OAAO,IAAAC,2BAAoB,EAAC,CAAC;IAC/B,KAAK,WAAW;MACd,OAAO,IAAAC,yBAAkB,EAAC,CAAC;IAC7B,KAAK,SAAS;MACZ,OAAO,IAAAC,4BAAqB,EAAC,CAAC;IAChC,KAAK,UAAU;MACb,OAAO,IAAAC,4BAAqB,EAAC,IAAAC,iBAAU,EAAC,UAAU,CAAC,CAAC;IACtD,KAAK,QAAQ;MACX,OAAO,IAAAD,4BAAqB,EAAC,IAAAC,iBAAU,EAAC,QAAQ,CAAC,CAAC;IACpD,KAAK,QAAQ;MACX,OAAO,IAAAD,4BAAqB,EAAC,IAAAC,iBAAU,EAAC,QAAQ,CAAC,CAAC;IACpD,KAAK,QAAQ;MAGX,OAAO,IAAAC,wBAAiB,EAAC,CAAC;EAC9B;EACA,MAAM,IAAIC,KAAK,CAAC,wBAAwB,GAAGR,IAAI,CAAC;AAClD","ignoreList":[]}
@@ -0,0 +1,29 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lowercase = require("./lowercase.js");
Object.keys(_lowercase).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _lowercase[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _lowercase[key];
}
});
});
var _uppercase = require("./uppercase.js");
Object.keys(_uppercase).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _uppercase[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _uppercase[key];
}
});
});
//# sourceMappingURL=index.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,274 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.JSXIdentifier = exports.JSXFragment = exports.JSXExpressionContainer = exports.JSXEmptyExpression = exports.JSXElement = exports.JSXClosingFragment = exports.JSXClosingElement = exports.JSXAttribute = exports.IntersectionTypeAnnotation = exports.InterpreterDirective = exports.InterfaceTypeAnnotation = exports.InterfaceExtends = exports.InterfaceDeclaration = exports.InferredPredicate = exports.IndexedAccessType = exports.ImportSpecifier = exports.ImportNamespaceSpecifier = exports.ImportExpression = exports.ImportDefaultSpecifier = exports.ImportDeclaration = exports.ImportAttribute = exports.Import = exports.IfStatement = exports.Identifier = exports.GenericTypeAnnotation = exports.FunctionTypeParam = exports.FunctionTypeAnnotation = exports.FunctionExpression = exports.FunctionDeclaration = exports.ForStatement = exports.ForOfStatement = exports.ForInStatement = exports.File = exports.ExpressionStatement = exports.ExportSpecifier = exports.ExportNamespaceSpecifier = exports.ExportNamedDeclaration = exports.ExportDefaultSpecifier = exports.ExportDefaultDeclaration = exports.ExportAllDeclaration = exports.ExistsTypeAnnotation = exports.EnumSymbolBody = exports.EnumStringMember = exports.EnumStringBody = exports.EnumNumberMember = exports.EnumNumberBody = exports.EnumDefaultedMember = exports.EnumDeclaration = exports.EnumBooleanMember = exports.EnumBooleanBody = exports.EmptyTypeAnnotation = exports.EmptyStatement = exports.DoWhileStatement = exports.DoExpression = exports.DirectiveLiteral = exports.Directive = exports.Decorator = exports.DeclaredPredicate = exports.DeclareVariable = exports.DeclareTypeAlias = exports.DeclareOpaqueType = exports.DeclareModuleExports = exports.DeclareModule = exports.DeclareInterface = exports.DeclareFunction = exports.DeclareExportDeclaration = exports.DeclareExportAllDeclaration = exports.DeclareClass = exports.DecimalLiteral = exports.DebuggerStatement = exports.ContinueStatement = exports.ConditionalExpression = exports.ClassProperty = exports.ClassPrivateProperty = exports.ClassPrivateMethod = exports.ClassMethod = exports.ClassImplements = exports.ClassExpression = exports.ClassDeclaration = exports.ClassBody = exports.ClassAccessorProperty = exports.CatchClause = exports.CallExpression = exports.BreakStatement = exports.BooleanTypeAnnotation = exports.BooleanLiteralTypeAnnotation = exports.BooleanLiteral = exports.BlockStatement = exports.BindExpression = exports.BinaryExpression = exports.BigIntLiteral = exports.AwaitExpression = exports.AssignmentPattern = exports.AssignmentExpression = exports.ArrowFunctionExpression = exports.ArrayTypeAnnotation = exports.ArrayPattern = exports.ArrayExpression = exports.ArgumentPlaceholder = exports.AnyTypeAnnotation = void 0;
exports.TSNumberKeyword = exports.TSNullKeyword = exports.TSNonNullExpression = exports.TSNeverKeyword = exports.TSNamespaceExportDeclaration = exports.TSNamedTupleMember = exports.TSModuleDeclaration = exports.TSModuleBlock = exports.TSMethodSignature = exports.TSMappedType = exports.TSLiteralType = exports.TSIntrinsicKeyword = exports.TSIntersectionType = exports.TSInterfaceDeclaration = exports.TSInterfaceBody = exports.TSInstantiationExpression = exports.TSInferType = exports.TSIndexedAccessType = exports.TSIndexSignature = exports.TSImportType = exports.TSImportEqualsDeclaration = exports.TSFunctionType = exports.TSExternalModuleReference = exports.TSExpressionWithTypeArguments = exports.TSExportAssignment = exports.TSEnumMember = exports.TSEnumDeclaration = exports.TSEnumBody = exports.TSDeclareMethod = exports.TSDeclareFunction = exports.TSConstructorType = exports.TSConstructSignatureDeclaration = exports.TSConditionalType = exports.TSCallSignatureDeclaration = exports.TSBooleanKeyword = exports.TSBigIntKeyword = exports.TSAsExpression = exports.TSArrayType = exports.TSAnyKeyword = exports.SymbolTypeAnnotation = exports.SwitchStatement = exports.SwitchCase = exports.Super = exports.StringTypeAnnotation = exports.StringLiteralTypeAnnotation = exports.StringLiteral = exports.StaticBlock = exports.SpreadProperty = exports.SpreadElement = exports.SequenceExpression = exports.ReturnStatement = exports.RestProperty = exports.RestElement = exports.RegexLiteral = exports.RegExpLiteral = exports.RecordExpression = exports.QualifiedTypeIdentifier = exports.Program = exports.PrivateName = exports.Placeholder = exports.PipelineTopicExpression = exports.PipelinePrimaryTopicReference = exports.PipelineBareFunction = exports.ParenthesizedExpression = exports.OptionalMemberExpression = exports.OptionalIndexedAccessType = exports.OptionalCallExpression = exports.OpaqueType = exports.ObjectTypeSpreadProperty = exports.ObjectTypeProperty = exports.ObjectTypeInternalSlot = exports.ObjectTypeIndexer = exports.ObjectTypeCallProperty = exports.ObjectTypeAnnotation = exports.ObjectProperty = exports.ObjectPattern = exports.ObjectMethod = exports.ObjectExpression = exports.NumericLiteral = exports.NumberTypeAnnotation = exports.NumberLiteralTypeAnnotation = exports.NumberLiteral = exports.NullableTypeAnnotation = exports.NullLiteralTypeAnnotation = exports.NullLiteral = exports.Noop = exports.NewExpression = exports.ModuleExpression = exports.MixedTypeAnnotation = exports.MetaProperty = exports.MemberExpression = exports.LogicalExpression = exports.LabeledStatement = exports.JSXText = exports.JSXSpreadChild = exports.JSXSpreadAttribute = exports.JSXOpeningFragment = exports.JSXOpeningElement = exports.JSXNamespacedName = exports.JSXMemberExpression = void 0;
exports.YieldExpression = exports.WithStatement = exports.WhileStatement = exports.VoidTypeAnnotation = exports.VoidPattern = exports.Variance = exports.VariableDeclarator = exports.VariableDeclaration = exports.V8IntrinsicIdentifier = exports.UpdateExpression = exports.UnionTypeAnnotation = exports.UnaryExpression = exports.TypeofTypeAnnotation = exports.TypeParameterInstantiation = exports.TypeParameterDeclaration = exports.TypeParameter = exports.TypeCastExpression = exports.TypeAnnotation = exports.TypeAlias = exports.TupleTypeAnnotation = exports.TupleExpression = exports.TryStatement = exports.TopicReference = exports.ThrowStatement = exports.ThisTypeAnnotation = exports.ThisExpression = exports.TemplateLiteral = exports.TemplateElement = exports.TaggedTemplateExpression = exports.TSVoidKeyword = exports.TSUnknownKeyword = exports.TSUnionType = exports.TSUndefinedKeyword = exports.TSTypeReference = exports.TSTypeQuery = exports.TSTypePredicate = exports.TSTypeParameterInstantiation = exports.TSTypeParameterDeclaration = exports.TSTypeParameter = exports.TSTypeOperator = exports.TSTypeLiteral = exports.TSTypeAssertion = exports.TSTypeAnnotation = exports.TSTypeAliasDeclaration = exports.TSTupleType = exports.TSThisType = exports.TSTemplateLiteralType = exports.TSSymbolKeyword = exports.TSStringKeyword = exports.TSSatisfiesExpression = exports.TSRestType = exports.TSQualifiedName = exports.TSPropertySignature = exports.TSParenthesizedType = exports.TSParameterProperty = exports.TSOptionalType = exports.TSObjectKeyword = void 0;
var b = require("./lowercase.js");
var _deprecationWarning = require("../../utils/deprecationWarning.js");
function alias(lowercase) {
{
return b[lowercase];
}
}
const ArrayExpression = exports.ArrayExpression = alias("arrayExpression"),
AssignmentExpression = exports.AssignmentExpression = alias("assignmentExpression"),
BinaryExpression = exports.BinaryExpression = alias("binaryExpression"),
InterpreterDirective = exports.InterpreterDirective = alias("interpreterDirective"),
Directive = exports.Directive = alias("directive"),
DirectiveLiteral = exports.DirectiveLiteral = alias("directiveLiteral"),
BlockStatement = exports.BlockStatement = alias("blockStatement"),
BreakStatement = exports.BreakStatement = alias("breakStatement"),
CallExpression = exports.CallExpression = alias("callExpression"),
CatchClause = exports.CatchClause = alias("catchClause"),
ConditionalExpression = exports.ConditionalExpression = alias("conditionalExpression"),
ContinueStatement = exports.ContinueStatement = alias("continueStatement"),
DebuggerStatement = exports.DebuggerStatement = alias("debuggerStatement"),
DoWhileStatement = exports.DoWhileStatement = alias("doWhileStatement"),
EmptyStatement = exports.EmptyStatement = alias("emptyStatement"),
ExpressionStatement = exports.ExpressionStatement = alias("expressionStatement"),
File = exports.File = alias("file"),
ForInStatement = exports.ForInStatement = alias("forInStatement"),
ForStatement = exports.ForStatement = alias("forStatement"),
FunctionDeclaration = exports.FunctionDeclaration = alias("functionDeclaration"),
FunctionExpression = exports.FunctionExpression = alias("functionExpression"),
Identifier = exports.Identifier = alias("identifier"),
IfStatement = exports.IfStatement = alias("ifStatement"),
LabeledStatement = exports.LabeledStatement = alias("labeledStatement"),
StringLiteral = exports.StringLiteral = alias("stringLiteral"),
NumericLiteral = exports.NumericLiteral = alias("numericLiteral"),
NullLiteral = exports.NullLiteral = alias("nullLiteral"),
BooleanLiteral = exports.BooleanLiteral = alias("booleanLiteral"),
RegExpLiteral = exports.RegExpLiteral = alias("regExpLiteral"),
LogicalExpression = exports.LogicalExpression = alias("logicalExpression"),
MemberExpression = exports.MemberExpression = alias("memberExpression"),
NewExpression = exports.NewExpression = alias("newExpression"),
Program = exports.Program = alias("program"),
ObjectExpression = exports.ObjectExpression = alias("objectExpression"),
ObjectMethod = exports.ObjectMethod = alias("objectMethod"),
ObjectProperty = exports.ObjectProperty = alias("objectProperty"),
RestElement = exports.RestElement = alias("restElement"),
ReturnStatement = exports.ReturnStatement = alias("returnStatement"),
SequenceExpression = exports.SequenceExpression = alias("sequenceExpression"),
ParenthesizedExpression = exports.ParenthesizedExpression = alias("parenthesizedExpression"),
SwitchCase = exports.SwitchCase = alias("switchCase"),
SwitchStatement = exports.SwitchStatement = alias("switchStatement"),
ThisExpression = exports.ThisExpression = alias("thisExpression"),
ThrowStatement = exports.ThrowStatement = alias("throwStatement"),
TryStatement = exports.TryStatement = alias("tryStatement"),
UnaryExpression = exports.UnaryExpression = alias("unaryExpression"),
UpdateExpression = exports.UpdateExpression = alias("updateExpression"),
VariableDeclaration = exports.VariableDeclaration = alias("variableDeclaration"),
VariableDeclarator = exports.VariableDeclarator = alias("variableDeclarator"),
WhileStatement = exports.WhileStatement = alias("whileStatement"),
WithStatement = exports.WithStatement = alias("withStatement"),
AssignmentPattern = exports.AssignmentPattern = alias("assignmentPattern"),
ArrayPattern = exports.ArrayPattern = alias("arrayPattern"),
ArrowFunctionExpression = exports.ArrowFunctionExpression = alias("arrowFunctionExpression"),
ClassBody = exports.ClassBody = alias("classBody"),
ClassExpression = exports.ClassExpression = alias("classExpression"),
ClassDeclaration = exports.ClassDeclaration = alias("classDeclaration"),
ExportAllDeclaration = exports.ExportAllDeclaration = alias("exportAllDeclaration"),
ExportDefaultDeclaration = exports.ExportDefaultDeclaration = alias("exportDefaultDeclaration"),
ExportNamedDeclaration = exports.ExportNamedDeclaration = alias("exportNamedDeclaration"),
ExportSpecifier = exports.ExportSpecifier = alias("exportSpecifier"),
ForOfStatement = exports.ForOfStatement = alias("forOfStatement"),
ImportDeclaration = exports.ImportDeclaration = alias("importDeclaration"),
ImportDefaultSpecifier = exports.ImportDefaultSpecifier = alias("importDefaultSpecifier"),
ImportNamespaceSpecifier = exports.ImportNamespaceSpecifier = alias("importNamespaceSpecifier"),
ImportSpecifier = exports.ImportSpecifier = alias("importSpecifier"),
ImportExpression = exports.ImportExpression = alias("importExpression"),
MetaProperty = exports.MetaProperty = alias("metaProperty"),
ClassMethod = exports.ClassMethod = alias("classMethod"),
ObjectPattern = exports.ObjectPattern = alias("objectPattern"),
SpreadElement = exports.SpreadElement = alias("spreadElement"),
Super = exports.Super = alias("super"),
TaggedTemplateExpression = exports.TaggedTemplateExpression = alias("taggedTemplateExpression"),
TemplateElement = exports.TemplateElement = alias("templateElement"),
TemplateLiteral = exports.TemplateLiteral = alias("templateLiteral"),
YieldExpression = exports.YieldExpression = alias("yieldExpression"),
AwaitExpression = exports.AwaitExpression = alias("awaitExpression"),
Import = exports.Import = alias("import"),
BigIntLiteral = exports.BigIntLiteral = alias("bigIntLiteral"),
ExportNamespaceSpecifier = exports.ExportNamespaceSpecifier = alias("exportNamespaceSpecifier"),
OptionalMemberExpression = exports.OptionalMemberExpression = alias("optionalMemberExpression"),
OptionalCallExpression = exports.OptionalCallExpression = alias("optionalCallExpression"),
ClassProperty = exports.ClassProperty = alias("classProperty"),
ClassAccessorProperty = exports.ClassAccessorProperty = alias("classAccessorProperty"),
ClassPrivateProperty = exports.ClassPrivateProperty = alias("classPrivateProperty"),
ClassPrivateMethod = exports.ClassPrivateMethod = alias("classPrivateMethod"),
PrivateName = exports.PrivateName = alias("privateName"),
StaticBlock = exports.StaticBlock = alias("staticBlock"),
ImportAttribute = exports.ImportAttribute = alias("importAttribute"),
AnyTypeAnnotation = exports.AnyTypeAnnotation = alias("anyTypeAnnotation"),
ArrayTypeAnnotation = exports.ArrayTypeAnnotation = alias("arrayTypeAnnotation"),
BooleanTypeAnnotation = exports.BooleanTypeAnnotation = alias("booleanTypeAnnotation"),
BooleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = alias("booleanLiteralTypeAnnotation"),
NullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = alias("nullLiteralTypeAnnotation"),
ClassImplements = exports.ClassImplements = alias("classImplements"),
DeclareClass = exports.DeclareClass = alias("declareClass"),
DeclareFunction = exports.DeclareFunction = alias("declareFunction"),
DeclareInterface = exports.DeclareInterface = alias("declareInterface"),
DeclareModule = exports.DeclareModule = alias("declareModule"),
DeclareModuleExports = exports.DeclareModuleExports = alias("declareModuleExports"),
DeclareTypeAlias = exports.DeclareTypeAlias = alias("declareTypeAlias"),
DeclareOpaqueType = exports.DeclareOpaqueType = alias("declareOpaqueType"),
DeclareVariable = exports.DeclareVariable = alias("declareVariable"),
DeclareExportDeclaration = exports.DeclareExportDeclaration = alias("declareExportDeclaration"),
DeclareExportAllDeclaration = exports.DeclareExportAllDeclaration = alias("declareExportAllDeclaration"),
DeclaredPredicate = exports.DeclaredPredicate = alias("declaredPredicate"),
ExistsTypeAnnotation = exports.ExistsTypeAnnotation = alias("existsTypeAnnotation"),
FunctionTypeAnnotation = exports.FunctionTypeAnnotation = alias("functionTypeAnnotation"),
FunctionTypeParam = exports.FunctionTypeParam = alias("functionTypeParam"),
GenericTypeAnnotation = exports.GenericTypeAnnotation = alias("genericTypeAnnotation"),
InferredPredicate = exports.InferredPredicate = alias("inferredPredicate"),
InterfaceExtends = exports.InterfaceExtends = alias("interfaceExtends"),
InterfaceDeclaration = exports.InterfaceDeclaration = alias("interfaceDeclaration"),
InterfaceTypeAnnotation = exports.InterfaceTypeAnnotation = alias("interfaceTypeAnnotation"),
IntersectionTypeAnnotation = exports.IntersectionTypeAnnotation = alias("intersectionTypeAnnotation"),
MixedTypeAnnotation = exports.MixedTypeAnnotation = alias("mixedTypeAnnotation"),
EmptyTypeAnnotation = exports.EmptyTypeAnnotation = alias("emptyTypeAnnotation"),
NullableTypeAnnotation = exports.NullableTypeAnnotation = alias("nullableTypeAnnotation"),
NumberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = alias("numberLiteralTypeAnnotation"),
NumberTypeAnnotation = exports.NumberTypeAnnotation = alias("numberTypeAnnotation"),
ObjectTypeAnnotation = exports.ObjectTypeAnnotation = alias("objectTypeAnnotation"),
ObjectTypeInternalSlot = exports.ObjectTypeInternalSlot = alias("objectTypeInternalSlot"),
ObjectTypeCallProperty = exports.ObjectTypeCallProperty = alias("objectTypeCallProperty"),
ObjectTypeIndexer = exports.ObjectTypeIndexer = alias("objectTypeIndexer"),
ObjectTypeProperty = exports.ObjectTypeProperty = alias("objectTypeProperty"),
ObjectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = alias("objectTypeSpreadProperty"),
OpaqueType = exports.OpaqueType = alias("opaqueType"),
QualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = alias("qualifiedTypeIdentifier"),
StringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = alias("stringLiteralTypeAnnotation"),
StringTypeAnnotation = exports.StringTypeAnnotation = alias("stringTypeAnnotation"),
SymbolTypeAnnotation = exports.SymbolTypeAnnotation = alias("symbolTypeAnnotation"),
ThisTypeAnnotation = exports.ThisTypeAnnotation = alias("thisTypeAnnotation"),
TupleTypeAnnotation = exports.TupleTypeAnnotation = alias("tupleTypeAnnotation"),
TypeofTypeAnnotation = exports.TypeofTypeAnnotation = alias("typeofTypeAnnotation"),
TypeAlias = exports.TypeAlias = alias("typeAlias"),
TypeAnnotation = exports.TypeAnnotation = alias("typeAnnotation"),
TypeCastExpression = exports.TypeCastExpression = alias("typeCastExpression"),
TypeParameter = exports.TypeParameter = alias("typeParameter"),
TypeParameterDeclaration = exports.TypeParameterDeclaration = alias("typeParameterDeclaration"),
TypeParameterInstantiation = exports.TypeParameterInstantiation = alias("typeParameterInstantiation"),
UnionTypeAnnotation = exports.UnionTypeAnnotation = alias("unionTypeAnnotation"),
Variance = exports.Variance = alias("variance"),
VoidTypeAnnotation = exports.VoidTypeAnnotation = alias("voidTypeAnnotation"),
EnumDeclaration = exports.EnumDeclaration = alias("enumDeclaration"),
EnumBooleanBody = exports.EnumBooleanBody = alias("enumBooleanBody"),
EnumNumberBody = exports.EnumNumberBody = alias("enumNumberBody"),
EnumStringBody = exports.EnumStringBody = alias("enumStringBody"),
EnumSymbolBody = exports.EnumSymbolBody = alias("enumSymbolBody"),
EnumBooleanMember = exports.EnumBooleanMember = alias("enumBooleanMember"),
EnumNumberMember = exports.EnumNumberMember = alias("enumNumberMember"),
EnumStringMember = exports.EnumStringMember = alias("enumStringMember"),
EnumDefaultedMember = exports.EnumDefaultedMember = alias("enumDefaultedMember"),
IndexedAccessType = exports.IndexedAccessType = alias("indexedAccessType"),
OptionalIndexedAccessType = exports.OptionalIndexedAccessType = alias("optionalIndexedAccessType"),
JSXAttribute = exports.JSXAttribute = alias("jsxAttribute"),
JSXClosingElement = exports.JSXClosingElement = alias("jsxClosingElement"),
JSXElement = exports.JSXElement = alias("jsxElement"),
JSXEmptyExpression = exports.JSXEmptyExpression = alias("jsxEmptyExpression"),
JSXExpressionContainer = exports.JSXExpressionContainer = alias("jsxExpressionContainer"),
JSXSpreadChild = exports.JSXSpreadChild = alias("jsxSpreadChild"),
JSXIdentifier = exports.JSXIdentifier = alias("jsxIdentifier"),
JSXMemberExpression = exports.JSXMemberExpression = alias("jsxMemberExpression"),
JSXNamespacedName = exports.JSXNamespacedName = alias("jsxNamespacedName"),
JSXOpeningElement = exports.JSXOpeningElement = alias("jsxOpeningElement"),
JSXSpreadAttribute = exports.JSXSpreadAttribute = alias("jsxSpreadAttribute"),
JSXText = exports.JSXText = alias("jsxText"),
JSXFragment = exports.JSXFragment = alias("jsxFragment"),
JSXOpeningFragment = exports.JSXOpeningFragment = alias("jsxOpeningFragment"),
JSXClosingFragment = exports.JSXClosingFragment = alias("jsxClosingFragment"),
Noop = exports.Noop = alias("noop"),
Placeholder = exports.Placeholder = alias("placeholder"),
V8IntrinsicIdentifier = exports.V8IntrinsicIdentifier = alias("v8IntrinsicIdentifier"),
ArgumentPlaceholder = exports.ArgumentPlaceholder = alias("argumentPlaceholder"),
BindExpression = exports.BindExpression = alias("bindExpression"),
Decorator = exports.Decorator = alias("decorator"),
DoExpression = exports.DoExpression = alias("doExpression"),
ExportDefaultSpecifier = exports.ExportDefaultSpecifier = alias("exportDefaultSpecifier"),
RecordExpression = exports.RecordExpression = alias("recordExpression"),
TupleExpression = exports.TupleExpression = alias("tupleExpression"),
DecimalLiteral = exports.DecimalLiteral = alias("decimalLiteral"),
ModuleExpression = exports.ModuleExpression = alias("moduleExpression"),
TopicReference = exports.TopicReference = alias("topicReference"),
PipelineTopicExpression = exports.PipelineTopicExpression = alias("pipelineTopicExpression"),
PipelineBareFunction = exports.PipelineBareFunction = alias("pipelineBareFunction"),
PipelinePrimaryTopicReference = exports.PipelinePrimaryTopicReference = alias("pipelinePrimaryTopicReference"),
VoidPattern = exports.VoidPattern = alias("voidPattern"),
TSParameterProperty = exports.TSParameterProperty = alias("tsParameterProperty"),
TSDeclareFunction = exports.TSDeclareFunction = alias("tsDeclareFunction"),
TSDeclareMethod = exports.TSDeclareMethod = alias("tsDeclareMethod"),
TSQualifiedName = exports.TSQualifiedName = alias("tsQualifiedName"),
TSCallSignatureDeclaration = exports.TSCallSignatureDeclaration = alias("tsCallSignatureDeclaration"),
TSConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = alias("tsConstructSignatureDeclaration"),
TSPropertySignature = exports.TSPropertySignature = alias("tsPropertySignature"),
TSMethodSignature = exports.TSMethodSignature = alias("tsMethodSignature"),
TSIndexSignature = exports.TSIndexSignature = alias("tsIndexSignature"),
TSAnyKeyword = exports.TSAnyKeyword = alias("tsAnyKeyword"),
TSBooleanKeyword = exports.TSBooleanKeyword = alias("tsBooleanKeyword"),
TSBigIntKeyword = exports.TSBigIntKeyword = alias("tsBigIntKeyword"),
TSIntrinsicKeyword = exports.TSIntrinsicKeyword = alias("tsIntrinsicKeyword"),
TSNeverKeyword = exports.TSNeverKeyword = alias("tsNeverKeyword"),
TSNullKeyword = exports.TSNullKeyword = alias("tsNullKeyword"),
TSNumberKeyword = exports.TSNumberKeyword = alias("tsNumberKeyword"),
TSObjectKeyword = exports.TSObjectKeyword = alias("tsObjectKeyword"),
TSStringKeyword = exports.TSStringKeyword = alias("tsStringKeyword"),
TSSymbolKeyword = exports.TSSymbolKeyword = alias("tsSymbolKeyword"),
TSUndefinedKeyword = exports.TSUndefinedKeyword = alias("tsUndefinedKeyword"),
TSUnknownKeyword = exports.TSUnknownKeyword = alias("tsUnknownKeyword"),
TSVoidKeyword = exports.TSVoidKeyword = alias("tsVoidKeyword"),
TSThisType = exports.TSThisType = alias("tsThisType"),
TSFunctionType = exports.TSFunctionType = alias("tsFunctionType"),
TSConstructorType = exports.TSConstructorType = alias("tsConstructorType"),
TSTypeReference = exports.TSTypeReference = alias("tsTypeReference"),
TSTypePredicate = exports.TSTypePredicate = alias("tsTypePredicate"),
TSTypeQuery = exports.TSTypeQuery = alias("tsTypeQuery"),
TSTypeLiteral = exports.TSTypeLiteral = alias("tsTypeLiteral"),
TSArrayType = exports.TSArrayType = alias("tsArrayType"),
TSTupleType = exports.TSTupleType = alias("tsTupleType"),
TSOptionalType = exports.TSOptionalType = alias("tsOptionalType"),
TSRestType = exports.TSRestType = alias("tsRestType"),
TSNamedTupleMember = exports.TSNamedTupleMember = alias("tsNamedTupleMember"),
TSUnionType = exports.TSUnionType = alias("tsUnionType"),
TSIntersectionType = exports.TSIntersectionType = alias("tsIntersectionType"),
TSConditionalType = exports.TSConditionalType = alias("tsConditionalType"),
TSInferType = exports.TSInferType = alias("tsInferType"),
TSParenthesizedType = exports.TSParenthesizedType = alias("tsParenthesizedType"),
TSTypeOperator = exports.TSTypeOperator = alias("tsTypeOperator"),
TSIndexedAccessType = exports.TSIndexedAccessType = alias("tsIndexedAccessType"),
TSMappedType = exports.TSMappedType = alias("tsMappedType"),
TSTemplateLiteralType = exports.TSTemplateLiteralType = alias("tsTemplateLiteralType"),
TSLiteralType = exports.TSLiteralType = alias("tsLiteralType"),
TSExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = alias("tsExpressionWithTypeArguments"),
TSInterfaceDeclaration = exports.TSInterfaceDeclaration = alias("tsInterfaceDeclaration"),
TSInterfaceBody = exports.TSInterfaceBody = alias("tsInterfaceBody"),
TSTypeAliasDeclaration = exports.TSTypeAliasDeclaration = alias("tsTypeAliasDeclaration"),
TSInstantiationExpression = exports.TSInstantiationExpression = alias("tsInstantiationExpression"),
TSAsExpression = exports.TSAsExpression = alias("tsAsExpression"),
TSSatisfiesExpression = exports.TSSatisfiesExpression = alias("tsSatisfiesExpression"),
TSTypeAssertion = exports.TSTypeAssertion = alias("tsTypeAssertion"),
TSEnumBody = exports.TSEnumBody = alias("tsEnumBody"),
TSEnumDeclaration = exports.TSEnumDeclaration = alias("tsEnumDeclaration"),
TSEnumMember = exports.TSEnumMember = alias("tsEnumMember"),
TSModuleDeclaration = exports.TSModuleDeclaration = alias("tsModuleDeclaration"),
TSModuleBlock = exports.TSModuleBlock = alias("tsModuleBlock"),
TSImportType = exports.TSImportType = alias("tsImportType"),
TSImportEqualsDeclaration = exports.TSImportEqualsDeclaration = alias("tsImportEqualsDeclaration"),
TSExternalModuleReference = exports.TSExternalModuleReference = alias("tsExternalModuleReference"),
TSNonNullExpression = exports.TSNonNullExpression = alias("tsNonNullExpression"),
TSExportAssignment = exports.TSExportAssignment = alias("tsExportAssignment"),
TSNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = alias("tsNamespaceExportDeclaration"),
TSTypeAnnotation = exports.TSTypeAnnotation = alias("tsTypeAnnotation"),
TSTypeParameterInstantiation = exports.TSTypeParameterInstantiation = alias("tsTypeParameterInstantiation"),
TSTypeParameterDeclaration = exports.TSTypeParameterDeclaration = alias("tsTypeParameterDeclaration"),
TSTypeParameter = exports.TSTypeParameter = alias("tsTypeParameter");
const NumberLiteral = exports.NumberLiteral = b.numberLiteral,
RegexLiteral = exports.RegexLiteral = b.regexLiteral,
RestProperty = exports.RestProperty = b.restProperty,
SpreadProperty = exports.SpreadProperty = b.spreadProperty;
//# sourceMappingURL=uppercase.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.buildUndefinedNode = buildUndefinedNode;
var _index = require("./generated/index.js");
function buildUndefinedNode() {
return (0, _index.unaryExpression)("void", (0, _index.numericLiteral)(0), true);
}
//# sourceMappingURL=productions.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_index","require","buildUndefinedNode","unaryExpression","numericLiteral"],"sources":["../../src/builders/productions.ts"],"sourcesContent":["import { numericLiteral, unaryExpression } from \"./generated/index.ts\";\n\nexport function buildUndefinedNode() {\n return unaryExpression(\"void\", numericLiteral(0), true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,OAAO,IAAAC,sBAAe,EAAC,MAAM,EAAE,IAAAC,qBAAc,EAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACzD","ignoreList":[]}
@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = buildChildren;
var _index = require("../../validators/generated/index.js");
var _cleanJSXElementLiteralChild = require("../../utils/react/cleanJSXElementLiteralChild.js");
function buildChildren(node) {
const elements = [];
for (let i = 0; i < node.children.length; i++) {
let child = node.children[i];
if ((0, _index.isJSXText)(child)) {
(0, _cleanJSXElementLiteralChild.default)(child, elements);
continue;
}
if ((0, _index.isJSXExpressionContainer)(child)) child = child.expression;
if ((0, _index.isJSXEmptyExpression)(child)) continue;
elements.push(child);
}
return elements;
}
//# sourceMappingURL=buildChildren.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_index","require","_cleanJSXElementLiteralChild","buildChildren","node","elements","i","children","length","child","isJSXText","cleanJSXElementLiteralChild","isJSXExpressionContainer","expression","isJSXEmptyExpression","push"],"sources":["../../../src/builders/react/buildChildren.ts"],"sourcesContent":["import {\n isJSXText,\n isJSXExpressionContainer,\n isJSXEmptyExpression,\n} from \"../../validators/generated/index.ts\";\nimport cleanJSXElementLiteralChild from \"../../utils/react/cleanJSXElementLiteralChild.ts\";\nimport type * as t from \"../../index.ts\";\n\ntype ReturnedChild =\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n | t.Expression;\n\nexport default function buildChildren(\n node: t.JSXElement | t.JSXFragment,\n): ReturnedChild[] {\n const elements = [];\n\n for (let i = 0; i < node.children.length; i++) {\n let child: any = node.children[i];\n\n if (isJSXText(child)) {\n cleanJSXElementLiteralChild(child, elements);\n continue;\n }\n\n if (isJSXExpressionContainer(child)) child = child.expression;\n if (isJSXEmptyExpression(child)) continue;\n\n elements.push(child);\n }\n\n return elements;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAKA,IAAAC,4BAAA,GAAAD,OAAA;AASe,SAASE,aAAaA,CACnCC,IAAkC,EACjB;EACjB,MAAMC,QAAQ,GAAG,EAAE;EAEnB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,QAAQ,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;IAC7C,IAAIG,KAAU,GAAGL,IAAI,CAACG,QAAQ,CAACD,CAAC,CAAC;IAEjC,IAAI,IAAAI,gBAAS,EAACD,KAAK,CAAC,EAAE;MACpB,IAAAE,oCAA2B,EAACF,KAAK,EAAEJ,QAAQ,CAAC;MAC5C;IACF;IAEA,IAAI,IAAAO,+BAAwB,EAACH,KAAK,CAAC,EAAEA,KAAK,GAAGA,KAAK,CAACI,UAAU;IAC7D,IAAI,IAAAC,2BAAoB,EAACL,KAAK,CAAC,EAAE;IAEjCJ,QAAQ,CAACU,IAAI,CAACN,KAAK,CAAC;EACtB;EAEA,OAAOJ,QAAQ;AACjB","ignoreList":[]}
@@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createTSUnionType;
var _index = require("../generated/index.js");
var _removeTypeDuplicates = require("../../modifications/typescript/removeTypeDuplicates.js");
var _index2 = require("../../validators/generated/index.js");
function createTSUnionType(typeAnnotations) {
const types = typeAnnotations.map(type => {
return (0, _index2.isTSTypeAnnotation)(type) ? type.typeAnnotation : type;
});
const flattened = (0, _removeTypeDuplicates.default)(types);
if (flattened.length === 1) {
return flattened[0];
} else {
return (0, _index.tsUnionType)(flattened);
}
}
//# sourceMappingURL=createTSUnionType.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_index","require","_removeTypeDuplicates","_index2","createTSUnionType","typeAnnotations","types","map","type","isTSTypeAnnotation","typeAnnotation","flattened","removeTypeDuplicates","length","tsUnionType"],"sources":["../../../src/builders/typescript/createTSUnionType.ts"],"sourcesContent":["import { tsUnionType } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/typescript/removeTypeDuplicates.ts\";\nimport { isTSTypeAnnotation } from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createTSUnionType(\n typeAnnotations: Array<t.TSTypeAnnotation | t.TSType>,\n): t.TSType {\n const types = typeAnnotations.map(type => {\n return isTSTypeAnnotation(type) ? type.typeAnnotation : type;\n });\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return tsUnionType(flattened);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAOe,SAASG,iBAAiBA,CACvCC,eAAqD,EAC3C;EACV,MAAMC,KAAK,GAAGD,eAAe,CAACE,GAAG,CAACC,IAAI,IAAI;IACxC,OAAO,IAAAC,0BAAkB,EAACD,IAAI,CAAC,GAAGA,IAAI,CAACE,cAAc,GAAGF,IAAI;EAC9D,CAAC,CAAC;EACF,MAAMG,SAAS,GAAG,IAAAC,6BAAoB,EAACN,KAAK,CAAC;EAE7C,IAAIK,SAAS,CAACE,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAOF,SAAS,CAAC,CAAC,CAAC;EACrB,CAAC,MAAM;IACL,OAAO,IAAAG,kBAAW,EAACH,SAAS,CAAC;EAC/B;AACF","ignoreList":[]}
@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = validateNode;
var _validate = require("../validators/validate.js");
var _index = require("../index.js");
function validateNode(node) {
if (node == null || typeof node !== "object") return;
const fields = _index.NODE_FIELDS[node.type];
if (!fields) return;
const keys = _index.BUILDER_KEYS[node.type];
for (const key of keys) {
const field = fields[key];
if (field != null) (0, _validate.validateInternal)(field, node, key, node[key]);
}
return node;
}
//# sourceMappingURL=validateNode.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_validate","require","_index","validateNode","node","fields","NODE_FIELDS","type","keys","BUILDER_KEYS","key","field","validateInternal"],"sources":["../../src/builders/validateNode.ts"],"sourcesContent":["import { validateInternal } from \"../validators/validate.ts\";\nimport type * as t from \"../index.ts\";\nimport { BUILDER_KEYS, NODE_FIELDS } from \"../index.ts\";\n\nexport default function validateNode<N extends t.Node>(node: N) {\n if (node == null || typeof node !== \"object\") return;\n const fields = NODE_FIELDS[node.type];\n if (!fields) return;\n\n // todo: because keys not in BUILDER_KEYS are not validated - this actually allows invalid nodes in some cases\n const keys = BUILDER_KEYS[node.type] as (keyof N & string)[];\n for (const key of keys) {\n const field = fields[key];\n if (field != null) validateInternal(field, node, key, node[key]);\n }\n return node;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEe,SAASE,YAAYA,CAAmBC,IAAO,EAAE;EAC9D,IAAIA,IAAI,IAAI,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;EAC9C,MAAMC,MAAM,GAAGC,kBAAW,CAACF,IAAI,CAACG,IAAI,CAAC;EACrC,IAAI,CAACF,MAAM,EAAE;EAGb,MAAMG,IAAI,GAAGC,mBAAY,CAACL,IAAI,CAACG,IAAI,CAAyB;EAC5D,KAAK,MAAMG,GAAG,IAAIF,IAAI,EAAE;IACtB,MAAMG,KAAK,GAAGN,MAAM,CAACK,GAAG,CAAC;IACzB,IAAIC,KAAK,IAAI,IAAI,EAAE,IAAAC,0BAAgB,EAACD,KAAK,EAAEP,IAAI,EAAEM,GAAG,EAAEN,IAAI,CAACM,GAAG,CAAC,CAAC;EAClE;EACA,OAAON,IAAI;AACb","ignoreList":[]}
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = clone;
var _cloneNode = require("./cloneNode.js");
function clone(node) {
return (0, _cloneNode.default)(node, false);
}
//# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_cloneNode","require","clone","node","cloneNode"],"sources":["../../src/clone/clone.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node`, including only\n * properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function clone<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAQe,SAASC,KAAKA,CAAmBC,IAAO,EAAK;EAC1D,OAAO,IAAAC,kBAAS,EAACD,IAAI,EAAa,KAAK,CAAC;AAC1C","ignoreList":[]}
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = cloneDeep;
var _cloneNode = require("./cloneNode.js");
function cloneDeep(node) {
return (0, _cloneNode.default)(node);
}
//# sourceMappingURL=cloneDeep.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_cloneNode","require","cloneDeep","node","cloneNode"],"sources":["../../src/clone/cloneDeep.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function cloneDeep<T extends t.Node>(node: T): T {\n return cloneNode(node);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAQe,SAASC,SAASA,CAAmBC,IAAO,EAAK;EAC9D,OAAO,IAAAC,kBAAS,EAACD,IAAI,CAAC;AACxB","ignoreList":[]}
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = cloneDeepWithoutLoc;
var _cloneNode = require("./cloneNode.js");
function cloneDeepWithoutLoc(node) {
return (0, _cloneNode.default)(node, true, true);
}
//# sourceMappingURL=cloneDeepWithoutLoc.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_cloneNode","require","cloneDeepWithoutLoc","node","cloneNode"],"sources":["../../src/clone/cloneDeepWithoutLoc.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * excluding `_private` and location properties.\n */\nexport default function cloneDeepWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ true, /* withoutLoc */ true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAOe,SAASC,mBAAmBA,CAAmBC,IAAO,EAAK;EACxE,OAAO,IAAAC,kBAAS,EAACD,IAAI,EAAa,IAAI,EAAmB,IAAI,CAAC;AAChE","ignoreList":[]}
@@ -0,0 +1,107 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = cloneNode;
var _index = require("../definitions/index.js");
var _index2 = require("../validators/generated/index.js");
const {
hasOwn
} = {
hasOwn: Function.call.bind(Object.prototype.hasOwnProperty)
};
function cloneIfNode(obj, deep, withoutLoc, commentsCache) {
if (obj && typeof obj.type === "string") {
return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);
}
return obj;
}
function cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) {
if (Array.isArray(obj)) {
return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));
}
return cloneIfNode(obj, deep, withoutLoc, commentsCache);
}
function cloneNode(node, deep = true, withoutLoc = false) {
return cloneNodeInternal(node, deep, withoutLoc, new Map());
}
function cloneNodeInternal(node, deep = true, withoutLoc = false, commentsCache) {
if (!node) return node;
const {
type
} = node;
const newNode = {
type: node.type
};
if ((0, _index2.isIdentifier)(node)) {
newNode.name = node.name;
if (hasOwn(node, "optional") && typeof node.optional === "boolean") {
newNode.optional = node.optional;
}
if (hasOwn(node, "typeAnnotation")) {
newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation;
}
if (hasOwn(node, "decorators")) {
newNode.decorators = deep ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache) : node.decorators;
}
} else if (!hasOwn(_index.NODE_FIELDS, type)) {
throw new Error(`Unknown node type: "${type}"`);
} else {
for (const field of Object.keys(_index.NODE_FIELDS[type])) {
if (hasOwn(node, field)) {
if (deep) {
newNode[field] = (0, _index2.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache);
} else {
newNode[field] = node[field];
}
}
}
}
if (hasOwn(node, "loc")) {
if (withoutLoc) {
newNode.loc = null;
} else {
newNode.loc = node.loc;
}
}
if (hasOwn(node, "leadingComments")) {
newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache);
}
if (hasOwn(node, "innerComments")) {
newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache);
}
if (hasOwn(node, "trailingComments")) {
newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache);
}
if (hasOwn(node, "extra")) {
newNode.extra = Object.assign({}, node.extra);
}
return newNode;
}
function maybeCloneComments(comments, deep, withoutLoc, commentsCache) {
if (!comments || !deep) {
return comments;
}
return comments.map(comment => {
const cache = commentsCache.get(comment);
if (cache) return cache;
const {
type,
value,
loc
} = comment;
const ret = {
type,
value,
loc
};
if (withoutLoc) {
ret.loc = null;
}
commentsCache.set(comment, ret);
return ret;
});
}
//# sourceMappingURL=cloneNode.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = cloneWithoutLoc;
var _cloneNode = require("./cloneNode.js");
function cloneWithoutLoc(node) {
return (0, _cloneNode.default)(node, false, true);
}
//# sourceMappingURL=cloneWithoutLoc.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_cloneNode","require","cloneWithoutLoc","node","cloneNode"],"sources":["../../src/clone/cloneWithoutLoc.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node` excluding `_private` and location properties.\n */\nexport default function cloneWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false, /* withoutLoc */ true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAMe,SAASC,eAAeA,CAAmBC,IAAO,EAAK;EACpE,OAAO,IAAAC,kBAAS,EAACD,IAAI,EAAa,KAAK,EAAmB,IAAI,CAAC;AACjE","ignoreList":[]}
@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = addComment;
var _addComments = require("./addComments.js");
function addComment(node, type, content, line) {
return (0, _addComments.default)(node, type, [{
type: line ? "CommentLine" : "CommentBlock",
value: content
}]);
}
//# sourceMappingURL=addComment.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_addComments","require","addComment","node","type","content","line","addComments","value"],"sources":["../../src/comments/addComment.ts"],"sourcesContent":["import addComments from \"./addComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Add comment of certain type to a node.\n */\nexport default function addComment<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n content: string,\n line?: boolean,\n): T {\n return addComments(node, type, [\n {\n type: line ? \"CommentLine\" : \"CommentBlock\",\n value: content,\n } as t.Comment,\n ]);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMe,SAASC,UAAUA,CAChCC,IAAO,EACPC,IAA4B,EAC5BC,OAAe,EACfC,IAAc,EACX;EACH,OAAO,IAAAC,oBAAW,EAACJ,IAAI,EAAEC,IAAI,EAAE,CAC7B;IACEA,IAAI,EAAEE,IAAI,GAAG,aAAa,GAAG,cAAc;IAC3CE,KAAK,EAAEH;EACT,CAAC,CACF,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = addComments;
function addComments(node, type, comments) {
if (!comments || !node) return node;
const key = `${type}Comments`;
if (node[key]) {
if (type === "leading") {
node[key] = comments.concat(node[key]);
} else {
node[key].push(...comments);
}
} else {
node[key] = comments;
}
return node;
}
//# sourceMappingURL=addComments.js.map
@@ -0,0 +1 @@
{"version":3,"names":["addComments","node","type","comments","key","concat","push"],"sources":["../../src/comments/addComments.ts"],"sourcesContent":["import type * as t from \"../index.ts\";\n\n/**\n * Add comments of certain type to a node.\n */\nexport default function addComments<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n comments: Array<t.Comment>,\n): T {\n if (!comments || !node) return node;\n\n const key = `${type}Comments` as const;\n\n if (node[key]) {\n if (type === \"leading\") {\n node[key] = comments.concat(node[key]);\n } else {\n node[key].push(...comments);\n }\n } else {\n node[key] = comments;\n }\n\n return node;\n}\n"],"mappings":";;;;;;AAKe,SAASA,WAAWA,CACjCC,IAAO,EACPC,IAA4B,EAC5BC,QAA0B,EACvB;EACH,IAAI,CAACA,QAAQ,IAAI,CAACF,IAAI,EAAE,OAAOA,IAAI;EAEnC,MAAMG,GAAG,GAAG,GAAGF,IAAI,UAAmB;EAEtC,IAAID,IAAI,CAACG,GAAG,CAAC,EAAE;IACb,IAAIF,IAAI,KAAK,SAAS,EAAE;MACtBD,IAAI,CAACG,GAAG,CAAC,GAAGD,QAAQ,CAACE,MAAM,CAACJ,IAAI,CAACG,GAAG,CAAC,CAAC;IACxC,CAAC,MAAM;MACLH,IAAI,CAACG,GAAG,CAAC,CAACE,IAAI,CAAC,GAAGH,QAAQ,CAAC;IAC7B;EACF,CAAC,MAAM;IACLF,IAAI,CAACG,GAAG,CAAC,GAAGD,QAAQ;EACtB;EAEA,OAAOF,IAAI;AACb","ignoreList":[]}
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = inheritInnerComments;
var _inherit = require("../utils/inherit.js");
function inheritInnerComments(child, parent) {
(0, _inherit.default)("innerComments", child, parent);
}
//# sourceMappingURL=inheritInnerComments.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_inherit","require","inheritInnerComments","child","parent","inherit"],"sources":["../../src/comments/inheritInnerComments.ts"],"sourcesContent":["import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritInnerComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"innerComments\", child, parent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGe,SAASC,oBAAoBA,CAC1CC,KAAa,EACbC,MAAc,EACR;EACN,IAAAC,gBAAO,EAAC,eAAe,EAAEF,KAAK,EAAEC,MAAM,CAAC;AACzC","ignoreList":[]}
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = inheritLeadingComments;
var _inherit = require("../utils/inherit.js");
function inheritLeadingComments(child, parent) {
(0, _inherit.default)("leadingComments", child, parent);
}
//# sourceMappingURL=inheritLeadingComments.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_inherit","require","inheritLeadingComments","child","parent","inherit"],"sources":["../../src/comments/inheritLeadingComments.ts"],"sourcesContent":["import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritLeadingComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"leadingComments\", child, parent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGe,SAASC,sBAAsBA,CAC5CC,KAAa,EACbC,MAAc,EACR;EACN,IAAAC,gBAAO,EAAC,iBAAiB,EAAEF,KAAK,EAAEC,MAAM,CAAC;AAC3C","ignoreList":[]}
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = inheritTrailingComments;
var _inherit = require("../utils/inherit.js");
function inheritTrailingComments(child, parent) {
(0, _inherit.default)("trailingComments", child, parent);
}
//# sourceMappingURL=inheritTrailingComments.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_inherit","require","inheritTrailingComments","child","parent","inherit"],"sources":["../../src/comments/inheritTrailingComments.ts"],"sourcesContent":["import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritTrailingComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"trailingComments\", child, parent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGe,SAASC,uBAAuBA,CAC7CC,KAAa,EACbC,MAAc,EACR;EACN,IAAAC,gBAAO,EAAC,kBAAkB,EAAEF,KAAK,EAAEC,MAAM,CAAC;AAC5C","ignoreList":[]}
@@ -0,0 +1,17 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = inheritsComments;
var _inheritTrailingComments = require("./inheritTrailingComments.js");
var _inheritLeadingComments = require("./inheritLeadingComments.js");
var _inheritInnerComments = require("./inheritInnerComments.js");
function inheritsComments(child, parent) {
(0, _inheritTrailingComments.default)(child, parent);
(0, _inheritLeadingComments.default)(child, parent);
(0, _inheritInnerComments.default)(child, parent);
return child;
}
//# sourceMappingURL=inheritsComments.js.map
@@ -0,0 +1 @@
{"version":3,"names":["_inheritTrailingComments","require","_inheritLeadingComments","_inheritInnerComments","inheritsComments","child","parent","inheritTrailingComments","inheritLeadingComments","inheritInnerComments"],"sources":["../../src/comments/inheritsComments.ts"],"sourcesContent":["import inheritTrailingComments from \"./inheritTrailingComments.ts\";\nimport inheritLeadingComments from \"./inheritLeadingComments.ts\";\nimport inheritInnerComments from \"./inheritInnerComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all unique comments from `parent` node to `child` node.\n */\nexport default function inheritsComments<T extends t.Node>(\n child: T,\n parent: t.Node,\n): T {\n inheritTrailingComments(child, parent);\n inheritLeadingComments(child, parent);\n inheritInnerComments(child, parent);\n\n return child;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAMe,SAASG,gBAAgBA,CACtCC,KAAQ,EACRC,MAAc,EACX;EACH,IAAAC,gCAAuB,EAACF,KAAK,EAAEC,MAAM,CAAC;EACtC,IAAAE,+BAAsB,EAACH,KAAK,EAAEC,MAAM,CAAC;EACrC,IAAAG,6BAAoB,EAACJ,KAAK,EAAEC,MAAM,CAAC;EAEnC,OAAOD,KAAK;AACd","ignoreList":[]}

Some files were not shown because too many files have changed in this diff Show More