Sexfullmovies.net - Search Grid View

from list layout to clean and responsive grid view.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         Sexfullmovies.net - Search Grid View
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  from list layout to clean and responsive grid view.
// @license      MIT
// @author       6969RandomGuy6969
// @match        https://sexfullmovies.net/?s=*
// @match        https://sexfullmovies.net/page/*/?s=*
// @icon         https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://sexfullmovies.net&size=256
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  // Hide container early with minimal style injection
  const hideStyle = document.createElement('style');
  hideStyle.textContent = `
    main, #main, .content, .search-results, .content-area, section {
      visibility: hidden !important;
    }
  `;
  document.head.appendChild(hideStyle);

  function applyGridLayout() {
    const articles = Array.from(document.querySelectorAll('article'));
    if (!articles.length) return;

    const parent = articles[0].parentNode;
    if (!parent) return;

    // Create a document fragment for performance
    const fragment = document.createDocumentFragment();

    // Grid wrapper styles as a class for better performance
    const wrapper = document.createElement('div');
    wrapper.className = 'custom-grid-wrapper';

    // Apply grid wrapper styles only once via stylesheet injection for faster painting
    const style = document.createElement('style');
    style.textContent = `
      .custom-grid-wrapper {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
        gap: 20px;
        padding: 20px;
      }
      .custom-grid-wrapper article {
        background: #1c1c1c;
        border-radius: 0;
        overflow: hidden;
        padding: 0;
        display: block;
        box-shadow: none;
        transition: transform 0.2s ease, box-shadow 0.2s ease;
        position: relative;
        cursor: pointer;
        margin: 0;
      }
      .custom-grid-wrapper article:hover {
        transform: scale(1.02);
        box-shadow: 0 0 12px rgba(255,255,255,0.08);
      }
      .custom-grid-wrapper article * {
        margin: 0 !important;
        padding: 0 !important;
        box-sizing: border-box !important;
      }
      .custom-grid-wrapper .image-wrap {
        position: relative;
        width: 100%;
        display: block;
      }
      .custom-grid-wrapper img {
        width: 100% !important;
        height: auto !important;
        object-fit: cover !important;
        border-radius: 0 !important;
        display: block !important;
      }
      .custom-grid-wrapper span.movies {
        position: absolute;
        top: 8px;
        left: 8px;
        background-color: #06ad0c;
        color: #fff;
        font-size: 11px;
        padding: 2px 6px;
        border-radius: 0;
        z-index: 10;
        font-weight: bold;
        box-shadow: 0 2px 6px rgba(0,0,0,0.4);
      }
      .custom-grid-wrapper .info-wrap {
        padding: 10px 12px;
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
      }
      .custom-grid-wrapper .title {
        font-size: 14.5px;
        font-weight: 600;
        line-height: 1.4;
        text-align: left;
      }
      .custom-grid-wrapper .title a {
        color: rgba(255, 255, 255, 0.7);
        text-decoration: none;
      }
      .custom-grid-wrapper .meta {
        font-size: 12px;
        color: #aaa;
        text-align: left;
      }
      .custom-grid-wrapper .contenido {
        font-size: 12px;
        line-height: 1.4;
        color: #ccc;
        text-align: left;
      }
    `;
    document.head.appendChild(style);

    articles.forEach(article => {
      const img = article.querySelector('img');
      const spanMovies = article.querySelector('span.movies');
      const title = article.querySelector('.title');
      const meta = article.querySelector('.meta');
      const desc = article.querySelector('.contenido');

      // Extract link from title if available
      let linkHref = '';
      if (title) {
        const aTag = title.querySelector('a');
        if (aTag) linkHref = aTag.href;
      }

      // Clear article content once before rebuilding
      article.textContent = '';

      // Image wrapper and image with link
      const imageWrap = document.createElement('div');
      imageWrap.className = 'image-wrap';

      if (img) {
        if (linkHref) {
          const imgLink = document.createElement('a');
          imgLink.href = linkHref;
          imgLink.appendChild(img);
          imageWrap.appendChild(imgLink);
        } else {
          imageWrap.appendChild(img);
        }
      }

      if (spanMovies) {
        imageWrap.appendChild(spanMovies);
      }

      // Info wrapper
      const infoWrap = document.createElement('div');
      infoWrap.className = 'info-wrap';

      if (title) infoWrap.appendChild(title);
      if (meta) infoWrap.appendChild(meta);
      if (desc) infoWrap.appendChild(desc);

      article.appendChild(imageWrap);
      article.appendChild(infoWrap);

      // Click handler outside links
      if (linkHref) {
        article.onclick = e => {
          if (!e.target.closest('a')) {
            window.location.href = linkHref;
          }
        };
      }

      fragment.appendChild(article);
    });

    // Empty parent and append fragment wrapped by wrapper
    parent.innerHTML = '';
    wrapper.appendChild(fragment);
    parent.appendChild(wrapper);

    // Remove sidebar and scroll overlays quickly
    document.querySelector('.sidebar.right.scrolling')?.remove();
    document.querySelector('.mCustomScrollBox')?.parentElement?.remove();

    // Show content by removing hide style
    hideStyle.remove();
    parent.style.visibility = 'visible';
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', applyGridLayout);
  } else {
    applyGridLayout();
  }
})();