PageSourceSearch

https://onefap.ai/assets/Scenes-Bigya13S.js

js onefap.ai collected 2026-10-05 15:15:07 UTC 12,850 bytes, 1 lines download raw bytes

1import{B as v,r as f,ax as x,aZ as A,u as j,t as I,m as k,j as e,N,L as b,e as S,A as y,d as T}from"./index-C9eo8hQZ.js";import{u as P}from"./useAdLink-D0uQo2T0.js";const w={"/start":"AI Porn Video Generator — Photo to Video","/scenes/sex":"AI Sex Video Generator — Photo to Video","/scenes/pov":"AI POV Porn Generator — First-Person Scenes","/scenes/blowjob":"AI Blowjob Video Generator — From One Photo","/scenes/undress":"AI Undress Video Generator — Clothes Off on Camera","/scenes/solo":"AI Solo Girl Video Generator — One Person","/scenes/nudes":"AI Nudes Generator — Short Reveal Scenes","/scenes/cum":"AI Cumshot Video Generator — From a Photo","/scenes/cowgirl":"AI Cowgirl Sex Video — Face in Frame","/scenes/missionary":"AI Missionary Sex Video — From One Photo","/scenes/doggy":"AI Doggystyle Porn Generator — From a Photo"},F={"/start":"Turn one photo into an AI porn video in about two minutes. 500+ scenes, or describe a picture and get it in seconds. First generation free.","/scenes/sex":"Turn one photo into an AI sex video. Full scenes, five to ten seconds, rendered in about two minutes. First generation free.","/scenes/pov":"POV scenes from one photograph: shot from the eyeline, so she looks at the camera. Renders in about two minutes. First one free.","/scenes/blowjob":"Make an AI blowjob video from a single photo. Eye-contact close-ups and POV framing, about two minutes a render. First one free.","/scenes/undress":"AI undress videos from one picture: the reveal happens on camera rather than before it. About two minutes a render, first one free.","/scenes/solo":"Solo AI videos from one photo — one person, no second body in frame. Renders in about two minutes. First generation free.","/scenes/nudes":"Short AI nude scenes built around the reveal. Faster and cheaper than the longer shelves, and the first one is free.","/scenes/cum":"AI cumshot videos from a single photograph. Face and body framing, about two minutes a render, first generation free.","/scenes/cowgirl":"Cowgirl scenes from one photo — she is on top and facing camera, so the face stays in frame. First generation free.","/scenes/missionary":"Missionary scenes from a single photo, shot from above or the partner eyeline. The steadiest camera here. First one free.","/scenes/doggy":"Doggystyle AI videos from one picture, shot from behind or over the shoulder. About two minutes a render, first one free."};function O(s){var l;const t=s.replace(/\/+$/,"")||"/";return Object.prototype.hasOwnProperty.call(w,t)?{title:"".concat(w[t]," | ").concat(v),description:(l=F[t])!=null?l:""}:null}function C(s){f.useEffect(()=>{var r,d,u,m,p;const t=O(s);if(!t)return;const l=x?"".concat(x).concat(s.replace(/\/+$/,"")):"",a=document.querySelector('meta[name="description"]'),i=document.querySelector('link[rel="canonical"]'),h=document.querySelector('meta[property="og:title"]'),c=document.querySelector('meta[property="og:description"]'),o=document.querySelector('meta[property="og:url"]'),n={title:document.title,description:(r=a==null?void 0:a.getAttribute("content"))!=null?r:null,canonical:(d=i==null?void 0:i.getAttribute("href"))!=null?d:null,ogTitle:(u=h==null?void 0:h.getAttribute("content"))!=null?u:null,ogDescription:(m=c==null?void 0:c.getAttribute("content"))!=null?m:null,ogUrl:(p=o==null?void 0:o.getAttribute("content"))!=null?p:null};return document.title=t.title,t.description&&(a==null||a.setAttribute("content",t.description)),l&&(i==null||i.setAttribute("href",l)),h==null||h.setAttribute("content",t.title),t.description&&(c==null||c.setAttribute("content",t.description)),l&&(o==null||o.setAttribute("content",l)),()=>{document.title=n.title,n.description!==null&&(a==null||a.setAttribute("content",n.description)),n.canonical!==null&&(i==null||i.setAttribute("href",n.canonical)),n.ogTitle!==null&&(h==null||h.setAttribute("content",n.ogTitle)),n.ogDescription!==null&&(c==null||c.setAttribute("content",n.ogDescription)),n.ogUrl!==null&&(o==null||o.setAttribute("content",n.ogUrl))}},[s])}const g={sex:{h1:"AI sex video generator",intro:"The widest shelf here: full scenes rather than a single act, from slow and close to fast and loud. If you are not sure what you want yet, start on this one — it holds most of what the catalogue does, and every other shelf on this page is a narrower cut of it.",tip:"Pick by camera rather than by act: the covers show whether a scene stays wide or moves in close, and that decides how much of the face survives. A p
1hoto taken at eye level with even light works on almost everything here."},pov:{h1:"AI POV porn generator",intro:'Shot from the eyeline, so the person you upload is looking at the camera rather than at somebody else in frame. This is the shelf that reads as first person, and it is the one most people who came here for "a video of her" actually mean.',tip:"These are the least forgiving of a bad source photo, because the face is the whole frame. Use a picture taken straight on rather than from above, and avoid anything where she is looking away from the lens."},blowjob:{h1:"AI blowjob video generator",intro:"Oral scenes, from eye-contact close-ups to deeper and longer. The shelf splits fairly evenly between point-of-view framing and a fixed camera, so both of the two things people mean by this are here rather than one of them.",tip:"The close-up scenes hold the face for longer than the wider ones, so if the likeness is the point, choose from the first row. A source photo with the chin and jaw visible does noticeably better here than a cropped headshot."},undress:{h1:"AI undress video generator",intro:"The clothes come off on camera rather than the scene starting after they have. Some of these are a slow reveal and some are a single motion; the covers show which, and both start from one ordinary photograph.",tip:"What she is wearing in the source photo does not have to match the scene — the render decides the clothes. What does matter is that the shoulders and upper body are in frame, because that is where the motion starts."},solo:{h1:"AI solo girl video generator",intro:"One person, no second body in frame. This is the shelf for anybody putting somebody they know into a video, because nothing on it introduces a partner they did not ask for — and it is the closest thing here to a straightforward moving portrait.",tip:"The safest shelf to start on. Nothing here introduces a second person, the camera stays still, and a plain phone photo with the face lit is enough. If you are trying the site out on somebody you know, try it here first."},nudes:{h1:"AI nudes generator",intro:"Short scenes built around the reveal itself — a top pulled aside, a strap dropped, a turn to camera. They render faster than the longer shelves because there is less happening, which makes this a cheap place to see what the site does with your photograph.",tip:"The shortest renders on the site, which makes this the cheapest place to find out how the model handles a particular photo. If the result is close but not right, it costs little to run the same picture again."},cum:{h1:"AI cumshot video generator",intro:"Scenes that end on a finish rather than fading out before one. Framing varies from face to body, and the cover on each card is a real frame from that template, so what you see is what that scene actually does.",tip:"Framing is the choice worth making here, and the cover of each card shows it plainly. Scenes that finish on the face keep the likeness longer; the rest are about the body and are more forgiving of a weaker source photo."},cowgirl:{h1:"AI cowgirl sex video",intro:"She is on top and facing the camera, which is why this shelf keeps the face in frame more consistently than any other position here. If the point is that it looks like her, this is the position that shows it.",tip:"The best shelf here for a recognisable result: she faces the camera throughout, so the face is in frame for most of the five seconds rather than a fraction of them. Use the clearest photo you have."},missionary:{h1:"AI missionary sex video",intro:"The classic angle, mostly shot from above or from the partner’s eyeline. It is the steadiest camera on the site, so it is the shelf that survives a slightly imperfect source photo better than the busier ones.",tip:"Because so little moves, this is the shelf where a longer run is worth paying for: ten seconds of a steady camera reads as a scene, where ten seconds of a busy one reads as a loop. A good place to retry a photo that failed elsewhere."},doggy:{h1:"AI doggystyle porn generator",intro:"From behind, with the camera either over the shoulder or off to the side. The face is in frame on about half of these — the covers make it obvious which, and that is the thing worth choosing on before you spend a run.",tip:"
1Check the cover before spending a run: about half of these keep the face in shot and half do not, and that is the single thing that decides whether the result looks like the person you uploaded."}},V=18;function E(){const{tag:s=""}=A(),{t}=j(),l=P("scene_".concat(s)),[a,i]=f.useState([]),[h,c]=f.useState(null),o=Object.prototype.hasOwnProperty.call(g,s)?g[s]:void 0;if(f.useEffect(()=>{o&&I("scene_page_view")},[o]),f.useEffect(()=>{if(!o)return;let r=!0;return i([]),c(null),k.getAll({tag:s,limit:V,sort:"all"}).then(d=>{var u,m;r&&(i(d.models.filter(p=>p.posterUrl)),c((m=(u=d.pagination)==null?void 0:u.total)!=null?m:null))}).catch(()=>{}),()=>{r=!1}},[s,o]),C("/scenes/".concat(s)),!o)return e.jsx(N,{to:"/start",replace:!0});const n=Object.entries(g).filter(([r])=>r!==s);return e.jsxs("div",{className:"animate-fade-in pb-10",children:[e.jsxs("nav",{"aria-label":"Breadcrumb",className:"pt-2 text-xs text-foreground-dim",children:[e.jsx(b,{to:"/start",className:"hover:text-foreground-muted",children:t("startFooterHome")}),e.jsx("span",{className:"mx-1.5",children:"/"}),e.jsx("span",{children:o.h1})]}),e.jsxs("header",{className:"mt-4 max-w-3xl",children:[e.jsx("h1",{className:"text-[30px] font-extrabold leading-tight text-foreground sm:text-[42px]",children:o.h1}),e.jsx("p",{className:"mt-3 text-sm leading-relaxed text-foreground-muted sm:text-base",children:o.intro}),e.jsx("p",{className:"mt-3 text-sm leading-relaxed text-foreground-muted sm:text-base",children:o.tip}),e.jsx("p",{className:"mt-3 text-sm text-foreground-dim",children:h!==null?t("sceneCount").replace("{{n}}",S(h,"en")):t("sceneCountUnknown")}),e.jsxs("div",{className:"mt-6 flex flex-col gap-3 sm:flex-row",children:[e.jsxs("a",{...l,rel:"noopener",className:"inline-flex h-13 items-center justify-center gap-2 rounded-full bg-accent px-8 py-4 text-base font-bold text-white transition-colors hover:bg-accent-hover",children:[t("startCta"),e.jsx(y,{className:"h-5 w-5 shrink-0 rtl:rotate-180","aria-hidden":"true"})]}),e.jsx(b,{to:"/?tag=".concat(encodeURIComponent(s)),className:"inline-flex items-center justify-center gap-2 rounded-full border border-border-strong px-8 py-4 text-base font-semibold text-foreground transition-colors hover:border-accent",children:t("sceneBrowse")})]})]}),a.length>0&&e.jsx("ul",{className:"mt-10 grid grid-cols-2 gap-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6",children:a.map(r=>e.jsx("li",{className:"overflow-hidden rounded-xl border border-border bg-background-elevated",children:e.jsx(T,{model:r,children:e.jsx("span",{className:"absolute inset-x-0 bottom-0 truncate bg-[linear-gradient(0deg,rgb(0_0_0/0.75),transparent)] px-2 pb-1.5 pt-5 text-[11px] font-semibold text-white",children:r.name})})},r.id))}),e.jsxs("section",{className:"mt-14",children:[e.jsx("h2",{className:"text-xl font-extrabold text-foreground",children:t("sceneMoreTitle")}),e.jsx("ul",{className:"mt-4 grid gap-2 sm:grid-cols-2 lg:grid-cols-3",children:n.map(([r,d])=>e.jsx("li",{children:e.jsx(b,{to:"/scenes/".concat(r),className:"block truncate rounded-xl border border-border bg-background-card px-4 py-3 text-sm font-semibold text-foreground transition-colors hover:border-accent",children:d.h1})},r))})]}),e.jsxs("section",{className:"mt-14 rounded-2xl border border-border bg-background-card p-6 text-center sm:p-8",children:[e.jsx("h2",{className:"text-xl font-extrabold text-foreground sm:text-2xl",children:t("sceneLastTitle").replace("{{scene}}",o.h1.replace(/^AI /,""))}),e.jsx("p",{className:"mx-auto mt-2 max-w-lg text-sm text-foreground-muted",children:t("startLastBody")}),e.jsxs("a",{...l,rel:"noopener",className:"mt-5 inline-flex items-center justify-center gap-2 rounded-full bg-accent px-8 py-4 text-base font-bold text-white transition-colors hover:bg-accent-hover",children:[t("startCta"),e.jsx(y,{className:"h-5 w-5 shrink-0 rtl:rotate-180","aria-hidden":"true"})]})]})]})}const $=Object.freeze(Object.defineProperty({__proto__:null,SCENES:g,default:E},Symbol.toStringTag,{value:"Module"}));export{g as S,$ as a,C as u};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.