VVidLove

VidLove Player

Build the iframe URL, toggle the documented controls, preview the embed, and copy the production link for https://vidlove.cc.

https://vidlove.cc/movie/324857
Open
Live preview Ready

Embed Options

These controls are backed by query parameters that the embed currently parses. The generated URL above is the easiest way to test combinations.

themeHex color for progress and toggles.
autoPlayStarts playback automatically.
mutedMutes on load for autoplay.
startAtStarts at a second offset.
posterShows or hides TMDB artwork.
titleShows or hides the title block.
serverSelects Auto, Skibidi Sigma, or Rizzler.
hideServerHides the server selector. Default true.
fullscreenButtonShows or hides fullscreen.
chromecastShows Chromecast when true. Default false.
subDefault subtitle language, or off.

Movie Embed

Use a TMDB or IMDb movie identifier.

https://vidlove.cc/movie/{id}?autoPlay=true

TV Embed

Use show id, season, and episode.

https://vidlove.cc/tv/{id}/{season}/{episode}?autoPlay=true

Complete Example

Combine appearance and controls.

https://vidlove.cc/movie/533535?autoPlay=true&theme=f5f5f5&poster=true&fullscreenButton=true

Watch Progress

The iframe sends playback events to the parent and also resumes locally on refresh when no explicit startAt is supplied.

PLAYER_EVENT

play, pause, seeked, ended, timeupdate, and playerstatus.

window.addEventListener('message', ({ origin, data }) => {
  if (origin !== 'https://vidlove.cc' || !data) return;

  if (data.type === 'PLAYER_EVENT') {
    const { event, currentTime, duration } = data.data;
    console.log(event, currentTime, duration);
  }
});

MEDIA_DATA

Stores movie/show progress in a parent page.

window.addEventListener('message', ({ origin, data }) => {
  if (origin !== 'https://vidlove.cc' || !data) return;

  if (data.type === 'MEDIA_DATA') {
    localStorage.setItem('VidLoveProgress', JSON.stringify(data.data));
  }
});

Current Selection

Visible controls from the studio.