fc2ppvdb-improved

fc2ppvdb.com Improved for better browsing

As of 23.11.2024. See ბოლო ვერსია.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name       fc2ppvdb-improved
// @namespace  fc2ppvdb.com-improved
// @version    1.0.3.1
// @author     KememChan
// @icon       https://www.google.com/s2/favicons?sz=32&domain_url=https%3A%2F%2Ffc2ppvdb.com%2Farticles%2F4558488
// @match      https://fc2ppvdb.com/*
// @require    https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @grant      GM_addStyle
// @grant      GM_xmlhttpRequest
// @description fc2ppvdb.com Improved for better browsing
// ==/UserScript==

(e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const t=document.createElement("style");t.textContent=e,document.head.append(t)})(' @import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css";.resources.svelte-mhmjd3.svelte-mhmjd3{display:flex;justify-content:flex-end;gap:5px;list-style-type:none}.resources.svelte-mhmjd3>.svelte-mhmjd3{transition:transform .3s ease-in-out,color .3s ease-in-out;color:#fff}.seed.svelte-mhmjd3.svelte-mhmjd3{color:#adff2f;transition:all .3s ease-in-out}.resources.svelte-mhmjd3>.svelte-mhmjd3:hover{color:#0f0}.grid-item-wrapper.svelte-zi5z1m.svelte-zi5z1m{transition:transform .3s ease-in-out,filter .3s ease-in-out;will-change:transform,filter}.grid-item-wrapper.svelte-zi5z1m.svelte-zi5z1m:hover{animation:none;transform:scale(1.05)}.grid-item.svelte-zi5z1m.svelte-zi5z1m{position:relative;width:100%;padding-top:56.25%;overflow:hidden;transition:transform .3s ease-in-out;will-change:transform}.grid-item.svelte-zi5z1m.svelte-zi5z1m:hover{animation:none;transform:scale(1.02)}.grid-item.svelte-zi5z1m img.svelte-zi5z1m{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;background-color:#1f2937;transition:filter .3s ease-in-out;will-change:filter}.grid-item.svelte-zi5z1m:hover img.svelte-zi5z1m{animation:none;filter:blur(2px) brightness(.5)}video.svelte-zi5z1m.svelte-zi5z1m{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.code.svelte-zi5z1m.svelte-zi5z1m{color:#fff;position:absolute;top:0;background-color:#1f2937e6;padding:5px;font-size:.8rem}.no-video.svelte-zi5z1m.svelte-zi5z1m{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.2rem;padding:10px;background-color:#000c;border-radius:8px;color:#fff;opacity:0;animation:svelte-zi5z1m-popup .3s ease-in-out forwards;will-change:transform,opacity}.flex.svelte-zi5z1m.svelte-zi5z1m{display:flex;justify-content:space-between;align-items:center;transition:transform .3s ease-in-out}.grid-item-title.svelte-zi5z1m.svelte-zi5z1m{color:#fff;font-size:14px;margin-top:5px;width:100%;transition:transform .3s ease-in-out}.title.svelte-zi5z1m.svelte-zi5z1m{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.maker.svelte-zi5z1m.svelte-zi5z1m{color:#6495ed;transition:color .3s ease-in-out,transform .3s ease-in-out}.maker.svelte-zi5z1m.svelte-zi5z1m:hover{color:#1e90ff;transform:scale(1.1)}@keyframes svelte-zi5z1m-popup{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes svelte-zi5z1m-flash{0%{background-color:#1f2937e6}50%{background-color:#333333e6}to{background-color:#1f2937e6}}@keyframes svelte-zi5z1m-blur{0%{filter:blur(0) brightness(1)}50%{filter:blur(1px) brightness(.7)}to{filter:blur(2px) brightness(.5)}}@keyframes svelte-zi5z1m-scale{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1.05)}}.grid-container.svelte-y69kqa{display:grid;grid-template-columns:repeat(4,minmax(300px,1fr));gap:1rem;margin:0 auto;animation:svelte-y69kqa-fadeIn 1s ease-out forwards}@media (min-width: 2000px){.grid-container.svelte-y69kqa{grid-template-columns:repeat(5,1fr);font-size:.9em}}@media (max-width: 1600px){.grid-container.svelte-y69kqa{grid-template-columns:repeat(4,1fr);font-size:.85em}}@media (max-width: 1200px){.grid-container.svelte-y69kqa{grid-template-columns:repeat(3,1fr);font-size:.8em}}@media (max-width: 900px){.grid-container.svelte-y69kqa{grid-template-columns:repeat(2,1fr);font-size:.75em}}@media (max-width: 600px){.grid-container.svelte-y69kqa{grid-template-columns:1fr;font-size:.7em}}@keyframes svelte-y69kqa-fadeIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}div.svelte-we16u3{display:inline-block;position:relative;width:100%;height:0;padding-top:56.25%;overflow:hidden}img.svelte-we16u3,video.svelte-we16u3{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;transition:filter .3s ease-in-out;background-color:#1f2937}img.svelte-we16u3:hover{filter:brightness(.5)}.no-video.svelte-we16u3{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:1.5rem} ');

(function ($) {
  'use strict';

  var __defProp = Object.defineProperty;
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
  async function getMovieList() {
    const movies = $("div.flex.flex-wrap.-m-4 > *");
    return await Promise.all(
      Array.from(movies).map(
        async (movie) => ({
          code: $(movie).find("span").first().text(),
          thumbnail: $(movie).find("img").attr("data-src"),
          title: $(movie).find("div.mt-1 a:eq(0)").text(),
          titleUrl: $(movie).find("div.mt-1 a:eq(0)").attr("href"),
          maker: $(movie).find("div.mt-1 a:eq(1)").text(),
          makerUrl: $(movie).find("div.mt-1 a:eq(1)").attr("href")
        })
      )
    );
  }
  function noop() {
  }
  function is_promise(value) {
    return !!value && (typeof value === "object" || typeof value === "function") && typeof /** @type {any} */
    value.then === "function";
  }
  function run(fn) {
    return fn();
  }
  function blank_object() {
    return /* @__PURE__ */ Object.create(null);
  }
  function run_all(fns) {
    fns.forEach(run);
  }
  function is_function(thing) {
    return typeof thing === "function";
  }
  function safe_not_equal(a, b) {
    return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function";
  }
  let src_url_equal_anchor;
  function src_url_equal(element_src, url) {
    if (element_src === url) return true;
    if (!src_url_equal_anchor) {
      src_url_equal_anchor = document.createElement("a");
    }
    src_url_equal_anchor.href = url;
    return element_src === src_url_equal_anchor.href;
  }
  function is_empty(obj) {
    return Object.keys(obj).length === 0;
  }
  function append(target, node) {
    target.appendChild(node);
  }
  function insert(target, node, anchor) {
    target.insertBefore(node, anchor || null);
  }
  function detach(node) {
    if (node.parentNode) {
      node.parentNode.removeChild(node);
    }
  }
  function destroy_each(iterations, detaching) {
    for (let i = 0; i < iterations.length; i += 1) {
      if (iterations[i]) iterations[i].d(detaching);
    }
  }
  function element(name) {
    return document.createElement(name);
  }
  function text(data) {
    return document.createTextNode(data);
  }
  function space() {
    return text(" ");
  }
  function empty() {
    return text("");
  }
  function listen(node, event, handler, options) {
    node.addEventListener(event, handler, options);
    return () => node.removeEventListener(event, handler, options);
  }
  function attr(node, attribute, value) {
    if (value == null) node.removeAttribute(attribute);
    else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);
  }
  function children(element2) {
    return Array.from(element2.childNodes);
  }
  function set_data(text2, data) {
    data = "" + data;
    if (text2.data === data) return;
    text2.data = /** @type {string} */
    data;
  }
  function set_style(node, key, value, important) {
    if (value == null) {
      node.style.removeProperty(key);
    } else {
      node.style.setProperty(key, value, "");
    }
  }
  let current_component;
  function set_current_component(component) {
    current_component = component;
  }
  function get_current_component() {
    if (!current_component) throw new Error("Function called outside component initialization");
    return current_component;
  }
  function onMount(fn) {
    get_current_component().$$.on_mount.push(fn);
  }
  const dirty_components = [];
  const binding_callbacks = [];
  let render_callbacks = [];
  const flush_callbacks = [];
  const resolved_promise = /* @__PURE__ */ Promise.resolve();
  let update_scheduled = false;
  function schedule_update() {
    if (!update_scheduled) {
      update_scheduled = true;
      resolved_promise.then(flush);
    }
  }
  function add_render_callback(fn) {
    render_callbacks.push(fn);
  }
  const seen_callbacks = /* @__PURE__ */ new Set();
  let flushidx = 0;
  function flush() {
    if (flushidx !== 0) {
      return;
    }
    const saved_component = current_component;
    do {
      try {
        while (flushidx < dirty_components.length) {
          const component = dirty_components[flushidx];
          flushidx++;
          set_current_component(component);
          update(component.$$);
        }
      } catch (e) {
        dirty_components.length = 0;
        flushidx = 0;
        throw e;
      }
      set_current_component(null);
      dirty_components.length = 0;
      flushidx = 0;
      while (binding_callbacks.length) binding_callbacks.pop()();
      for (let i = 0; i < render_callbacks.length; i += 1) {
        const callback = render_callbacks[i];
        if (!seen_callbacks.has(callback)) {
          seen_callbacks.add(callback);
          callback();
        }
      }
      render_callbacks.length = 0;
    } while (dirty_components.length);
    while (flush_callbacks.length) {
      flush_callbacks.pop()();
    }
    update_scheduled = false;
    seen_callbacks.clear();
    set_current_component(saved_component);
  }
  function update($$) {
    if ($$.fragment !== null) {
      $$.update();
      run_all($$.before_update);
      const dirty = $$.dirty;
      $$.dirty = [-1];
      $$.fragment && $$.fragment.p($$.ctx, dirty);
      $$.after_update.forEach(add_render_callback);
    }
  }
  function flush_render_callbacks(fns) {
    const filtered = [];
    const targets = [];
    render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));
    targets.forEach((c) => c());
    render_callbacks = filtered;
  }
  const outroing = /* @__PURE__ */ new Set();
  let outros;
  function group_outros() {
    outros = {
      r: 0,
      c: [],
      p: outros
      // parent group
    };
  }
  function check_outros() {
    if (!outros.r) {
      run_all(outros.c);
    }
    outros = outros.p;
  }
  function transition_in(block, local) {
    if (block && block.i) {
      outroing.delete(block);
      block.i(local);
    }
  }
  function transition_out(block, local, detach2, callback) {
    if (block && block.o) {
      if (outroing.has(block)) return;
      outroing.add(block);
      outros.c.push(() => {
        outroing.delete(block);
        if (callback) {
          if (detach2) block.d(1);
          callback();
        }
      });
      block.o(local);
    } else if (callback) {
      callback();
    }
  }
  function handle_promise(promise, info) {
    const token = info.token = {};
    function update2(type, index, key, value) {
      if (info.token !== token) return;
      info.resolved = value;
      let child_ctx = info.ctx;
      if (key !== void 0) {
        child_ctx = child_ctx.slice();
        child_ctx[key] = value;
      }
      const block = type && (info.current = type)(child_ctx);
      let needs_flush = false;
      if (info.block) {
        if (info.blocks) {
          info.blocks.forEach((block2, i) => {
            if (i !== index && block2) {
              group_outros();
              transition_out(block2, 1, 1, () => {
                if (info.blocks[i] === block2) {
                  info.blocks[i] = null;
                }
              });
              check_outros();
            }
          });
        } else {
          info.block.d(1);
        }
        block.c();
        transition_in(block, 1);
        block.m(info.mount(), info.anchor);
        needs_flush = true;
      }
      info.block = block;
      if (info.blocks) info.blocks[index] = block;
      if (needs_flush) {
        flush();
      }
    }
    if (is_promise(promise)) {
      const current_component2 = get_current_component();
      promise.then(
        (value) => {
          set_current_component(current_component2);
          update2(info.then, 1, info.value, value);
          set_current_component(null);
        },
        (error) => {
          set_current_component(current_component2);
          update2(info.catch, 2, info.error, error);
          set_current_component(null);
          if (!info.hasCatch) {
            throw error;
          }
        }
      );
      if (info.current !== info.pending) {
        update2(info.pending, 0);
        return true;
      }
    } else {
      if (info.current !== info.then) {
        update2(info.then, 1, info.value, promise);
        return true;
      }
      info.resolved = /** @type {T} */
      promise;
    }
  }
  function update_await_block_branch(info, ctx, dirty) {
    const child_ctx = ctx.slice();
    const { resolved } = info;
    if (info.current === info.then) {
      child_ctx[info.value] = resolved;
    }
    if (info.current === info.catch) {
      child_ctx[info.error] = resolved;
    }
    info.block.p(child_ctx, dirty);
  }
  function ensure_array_like(array_like_or_iterator) {
    return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
  }
  function create_component(block) {
    block && block.c();
  }
  function mount_component(component, target, anchor) {
    const { fragment, after_update } = component.$$;
    fragment && fragment.m(target, anchor);
    add_render_callback(() => {
      const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
      if (component.$$.on_destroy) {
        component.$$.on_destroy.push(...new_on_destroy);
      } else {
        run_all(new_on_destroy);
      }
      component.$$.on_mount = [];
    });
    after_update.forEach(add_render_callback);
  }
  function destroy_component(component, detaching) {
    const $$ = component.$$;
    if ($$.fragment !== null) {
      flush_render_callbacks($$.after_update);
      run_all($$.on_destroy);
      $$.fragment && $$.fragment.d(detaching);
      $$.on_destroy = $$.fragment = null;
      $$.ctx = [];
    }
  }
  function make_dirty(component, i) {
    if (component.$$.dirty[0] === -1) {
      dirty_components.push(component);
      schedule_update();
      component.$$.dirty.fill(0);
    }
    component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
  }
  function init(component, options, instance2, create_fragment2, not_equal, props, append_styles = null, dirty = [-1]) {
    const parent_component = current_component;
    set_current_component(component);
    const $$ = component.$$ = {
      fragment: null,
      ctx: [],
      // state
      props,
      update: noop,
      not_equal,
      bound: blank_object(),
      // lifecycle
      on_mount: [],
      on_destroy: [],
      on_disconnect: [],
      before_update: [],
      after_update: [],
      context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
      // everything else
      callbacks: blank_object(),
      dirty,
      skip_bound: false,
      root: options.target || parent_component.$$.root
    };
    append_styles && append_styles($$.root);
    let ready = false;
    $$.ctx = instance2 ? instance2(component, options.props || {}, (i, ret, ...rest) => {
      const value = rest.length ? rest[0] : ret;
      if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
        if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);
        if (ready) make_dirty(component, i);
      }
      return ret;
    }) : [];
    $$.update();
    ready = true;
    run_all($$.before_update);
    $$.fragment = create_fragment2 ? create_fragment2($$.ctx) : false;
    if (options.target) {
      if (options.hydrate) {
        const nodes = children(options.target);
        $$.fragment && $$.fragment.l(nodes);
        nodes.forEach(detach);
      } else {
        $$.fragment && $$.fragment.c();
      }
      if (options.intro) transition_in(component.$$.fragment);
      mount_component(component, options.target, options.anchor);
      flush();
    }
    set_current_component(parent_component);
  }
  class SvelteComponent {
    constructor() {
      /**
       * ### PRIVATE API
       *
       * Do not use, may change at any time
       *
       * @type {any}
       */
      __publicField(this, "$$");
      /**
       * ### PRIVATE API
       *
       * Do not use, may change at any time
       *
       * @type {any}
       */
      __publicField(this, "$$set");
    }
    /** @returns {void} */
    $destroy() {
      destroy_component(this, 1);
      this.$destroy = noop;
    }
    /**
     * @template {Extract<keyof Events, string>} K
     * @param {K} type
     * @param {((e: Events[K]) => void) | null | undefined} callback
     * @returns {() => void}
     */
    $on(type, callback) {
      if (!is_function(callback)) {
        return noop;
      }
      const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
      callbacks.push(callback);
      return () => {
        const index = callbacks.indexOf(callback);
        if (index !== -1) callbacks.splice(index, 1);
      };
    }
    /**
     * @param {Partial<Props>} props
     * @returns {void}
     */
    $set(props) {
      if (this.$$set && !is_empty(props)) {
        this.$$.skip_bound = true;
        this.$$set(props);
        this.$$.skip_bound = false;
      }
    }
  }
  const PUBLIC_VERSION = "4";
  if (typeof window !== "undefined")
    (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION);
  var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)();
  const videoPreviewCache = {};
  async function getVideoPreview(code) {
    const url = `https://123av.com/en/search?keyword=${code}`;
    if (videoPreviewCache[url] !== void 0) {
      return videoPreviewCache[url];
    }
    try {
      const responseText = await new Promise((resolve, reject) => {
        _GM_xmlhttpRequest({
          url,
          method: "GET",
          onload: (response) => resolve(response.responseText),
          onerror: reject
        });
      });
      const $responseText = $(responseText);
      const $gridFirst = $responseText.find("div.col-6.col-sm-4.col-lg-3").first();
      const previewUrl = $gridFirst.find("div.thumb").attr("data-preview");
      if (previewUrl) {
        const previewBlob = await new Promise((resolve, reject) => {
          _GM_xmlhttpRequest({
            url: previewUrl,
            responseType: "blob",
            onload: (r) => resolve(r.response),
            onerror: reject
          });
        });
        const blobUrl = URL.createObjectURL(previewBlob);
        videoPreviewCache[url] = blobUrl;
        return blobUrl;
      } else {
        videoPreviewCache[url] = null;
        return null;
      }
    } catch (error) {
      console.error("Error fetching video preview:", error);
      videoPreviewCache[url] = null;
      return null;
    }
  }
  function create_if_block$2(ctx) {
    let a0;
    let i0;
    let a0_href_value;
    let t0;
    let a1;
    let i1;
    let a1_href_value;
    let t1;
    let a2;
    let i2;
    let a2_href_value;
    let t2;
    let a3;
    let i3;
    let a3_href_value;
    let t3;
    let a4;
    let i4;
    let t4;
    let a5;
    let i5;
    let t5;
    let button;
    let t6;
    return {
      c() {
        a0 = element("a");
        i0 = element("i");
        t0 = space();
        a1 = element("a");
        i1 = element("i");
        t1 = space();
        a2 = element("a");
        i2 = element("i");
        t2 = space();
        a3 = element("a");
        i3 = element("i");
        t3 = space();
        a4 = element("a");
        i4 = element("i");
        t4 = space();
        a5 = element("a");
        i5 = element("i");
        t5 = space();
        button = element("button");
        t6 = text(
          /*seed*/
          ctx[3]
        );
        attr(i0, "class", "fa-solid fa-globe");
        attr(i0, "aria-hidden", "true");
        attr(a0, "class", "missav svelte-mhmjd3");
        attr(a0, "href", a0_href_value = "https://missav.com/en/search/" + /*code*/
        ctx[0]);
        attr(a0, "target", "_blank");
        attr(a0, "rel", "noopener");
        attr(a0, "title", "Search on MissAV");
        attr(i1, "class", "fa-solid fa-globe");
        attr(i1, "aria-hidden", "true");
        attr(a1, "class", "njav svelte-mhmjd3");
        attr(a1, "href", a1_href_value = "https://123av.com/en/search?keyword=" + /*code*/
        ctx[0]);
        attr(a1, "target", "_blank");
        attr(a1, "rel", "noopener");
        attr(a1, "title", "Search on Njav");
        attr(i2, "class", "fa-solid fa-image");
        attr(i2, "aria-hidden", "true");
        attr(a2, "href", a2_href_value = "https://img.javstore.net/search/images/?q=" + /*code*/
        ctx[0]);
        attr(a2, "target", "_blank");
        attr(a2, "rel", "noopener");
        attr(a2, "title", "Search Images");
        attr(a2, "class", "svelte-mhmjd3");
        attr(i3, "class", "fa-solid fa-magnifying-glass");
        attr(i3, "aria-hidden", "true");
        attr(a3, "class", "sukebei svelte-mhmjd3");
        attr(a3, "href", a3_href_value = "https://sukebei.nyaa.si/?f=0&c=0_0&q=" + /*code*/
        ctx[0] + "&s=seeders&o=desc");
        attr(a3, "target", "_blank");
        attr(a3, "rel", "noopener");
        attr(a3, "title", "Search on Sukebei");
        attr(i4, "class", "fa-solid fa-arrow-down");
        attr(i4, "aria-hidden", "true");
        attr(a4, "class", "torrent svelte-mhmjd3");
        attr(
          a4,
          "href",
          /*torrent*/
          ctx[1]
        );
        attr(a4, "rel", "noopener");
        attr(a4, "title", "Download Torrent");
        attr(i5, "class", "fa-solid fa-magnet");
        attr(i5, "aria-hidden", "true");
        attr(a5, "class", "magnet svelte-mhmjd3");
        attr(
          a5,
          "href",
          /*magnet*/
          ctx[2]
        );
        attr(a5, "rel", "noopener");
        attr(a5, "title", "Download with Magnet");
        attr(button, "class", "seed svelte-mhmjd3");
        attr(button, "type", "button");
      },
      m(target, anchor) {
        insert(target, a0, anchor);
        append(a0, i0);
        insert(target, t0, anchor);
        insert(target, a1, anchor);
        append(a1, i1);
        insert(target, t1, anchor);
        insert(target, a2, anchor);
        append(a2, i2);
        insert(target, t2, anchor);
        insert(target, a3, anchor);
        append(a3, i3);
        insert(target, t3, anchor);
        insert(target, a4, anchor);
        append(a4, i4);
        insert(target, t4, anchor);
        insert(target, a5, anchor);
        append(a5, i5);
        insert(target, t5, anchor);
        insert(target, button, anchor);
        append(button, t6);
      },
      p(ctx2, dirty) {
        if (dirty & /*code*/
        1 && a0_href_value !== (a0_href_value = "https://missav.com/en/search/" + /*code*/
        ctx2[0])) {
          attr(a0, "href", a0_href_value);
        }
        if (dirty & /*code*/
        1 && a1_href_value !== (a1_href_value = "https://123av.com/en/search?keyword=" + /*code*/
        ctx2[0])) {
          attr(a1, "href", a1_href_value);
        }
        if (dirty & /*code*/
        1 && a2_href_value !== (a2_href_value = "https://img.javstore.net/search/images/?q=" + /*code*/
        ctx2[0])) {
          attr(a2, "href", a2_href_value);
        }
        if (dirty & /*code*/
        1 && a3_href_value !== (a3_href_value = "https://sukebei.nyaa.si/?f=0&c=0_0&q=" + /*code*/
        ctx2[0] + "&s=seeders&o=desc")) {
          attr(a3, "href", a3_href_value);
        }
        if (dirty & /*torrent*/
        2) {
          attr(
            a4,
            "href",
            /*torrent*/
            ctx2[1]
          );
        }
        if (dirty & /*magnet*/
        4) {
          attr(
            a5,
            "href",
            /*magnet*/
            ctx2[2]
          );
        }
        if (dirty & /*seed*/
        8) set_data(
          t6,
          /*seed*/
          ctx2[3]
        );
      },
      d(detaching) {
        if (detaching) {
          detach(a0);
          detach(t0);
          detach(a1);
          detach(t1);
          detach(a2);
          detach(t2);
          detach(a3);
          detach(t3);
          detach(a4);
          detach(t4);
          detach(a5);
          detach(t5);
          detach(button);
        }
      }
    };
  }
  function create_fragment$3(ctx) {
    let li;
    let if_block = (
      /*torrent*/
      ctx[1] && create_if_block$2(ctx)
    );
    return {
      c() {
        li = element("li");
        if (if_block) if_block.c();
        attr(li, "class", "resources svelte-mhmjd3");
      },
      m(target, anchor) {
        insert(target, li, anchor);
        if (if_block) if_block.m(li, null);
      },
      p(ctx2, [dirty]) {
        if (
          /*torrent*/
          ctx2[1]
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
          } else {
            if_block = create_if_block$2(ctx2);
            if_block.c();
            if_block.m(li, null);
          }
        } else if (if_block) {
          if_block.d(1);
          if_block = null;
        }
      },
      i: noop,
      o: noop,
      d(detaching) {
        if (detaching) {
          detach(li);
        }
        if (if_block) if_block.d();
      }
    };
  }
  function instance$3($$self, $$props, $$invalidate) {
    let { code } = $$props;
    let { torrent } = $$props;
    let { magnet } = $$props;
    let { seed } = $$props;
    $$self.$$set = ($$props2) => {
      if ("code" in $$props2) $$invalidate(0, code = $$props2.code);
      if ("torrent" in $$props2) $$invalidate(1, torrent = $$props2.torrent);
      if ("magnet" in $$props2) $$invalidate(2, magnet = $$props2.magnet);
      if ("seed" in $$props2) $$invalidate(3, seed = $$props2.seed);
    };
    return [code, torrent, magnet, seed];
  }
  class Resources extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$3, create_fragment$3, safe_not_equal, { code: 0, torrent: 1, magnet: 2, seed: 3 });
    }
  }
  function create_if_block$1(ctx) {
    let await_block_anchor;
    let promise;
    let info = {
      ctx,
      current: null,
      token: null,
      hasCatch: false,
      pending: create_pending_block$1,
      then: create_then_block$1,
      catch: create_catch_block$1,
      value: 6
    };
    handle_promise(promise = getVideoPreview(
      /*movie*/
      ctx[0].code
    ), info);
    return {
      c() {
        await_block_anchor = empty();
        info.block.c();
      },
      m(target, anchor) {
        insert(target, await_block_anchor, anchor);
        info.block.m(target, info.anchor = anchor);
        info.mount = () => await_block_anchor.parentNode;
        info.anchor = await_block_anchor;
      },
      p(new_ctx, dirty) {
        ctx = new_ctx;
        info.ctx = ctx;
        if (dirty & /*movie*/
        1 && promise !== (promise = getVideoPreview(
          /*movie*/
          ctx[0].code
        )) && handle_promise(promise, info)) ;
        else {
          update_await_block_branch(info, ctx, dirty);
        }
      },
      d(detaching) {
        if (detaching) {
          detach(await_block_anchor);
        }
        info.block.d(detaching);
        info.token = null;
        info = null;
      }
    };
  }
  function create_catch_block$1(ctx) {
    return { c: noop, m: noop, p: noop, d: noop };
  }
  function create_then_block$1(ctx) {
    let if_block_anchor;
    function select_block_type(ctx2, dirty) {
      if (
        /*videoPreview*/
        ctx2[6]
      ) return create_if_block_1$1;
      return create_else_block$1;
    }
    let current_block_type = select_block_type(ctx);
    let if_block = current_block_type(ctx);
    return {
      c() {
        if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
      },
      p(ctx2, dirty) {
        if (current_block_type === (current_block_type = select_block_type(ctx2)) && if_block) {
          if_block.p(ctx2, dirty);
        } else {
          if_block.d(1);
          if_block = current_block_type(ctx2);
          if (if_block) {
            if_block.c();
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          }
        }
      },
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if_block.d(detaching);
      }
    };
  }
  function create_else_block$1(ctx) {
    let p;
    return {
      c() {
        p = element("p");
        p.textContent = "No Preview 😭";
        attr(p, "class", "no-video svelte-zi5z1m");
      },
      m(target, anchor) {
        insert(target, p, anchor);
      },
      p: noop,
      d(detaching) {
        if (detaching) {
          detach(p);
        }
      }
    };
  }
  function create_if_block_1$1(ctx) {
    let video;
    let video_src_value;
    return {
      c() {
        video = element("video");
        if (!src_url_equal(video.src, video_src_value = /*videoPreview*/
        ctx[6])) attr(video, "src", video_src_value);
        video.autoplay = true;
        video.playsInline = true;
        video.loop = true;
        video.muted = true;
        attr(video, "preload", "none");
        attr(video, "class", "svelte-zi5z1m");
      },
      m(target, anchor) {
        insert(target, video, anchor);
      },
      p(ctx2, dirty) {
        if (dirty & /*movie*/
        1 && !src_url_equal(video.src, video_src_value = /*videoPreview*/
        ctx2[6])) {
          attr(video, "src", video_src_value);
        }
      },
      d(detaching) {
        if (detaching) {
          detach(video);
        }
      }
    };
  }
  function create_pending_block$1(ctx) {
    return { c: noop, m: noop, p: noop, d: noop };
  }
  function create_fragment$2(ctx) {
    var _a, _b, _c;
    let div4;
    let div1;
    let div0;
    let img;
    let img_src_value;
    let img_alt_value;
    let t0;
    let t1;
    let span;
    let t2;
    let t3_value = (
      /*movie*/
      ctx[0].code + ""
    );
    let t3;
    let t4;
    let div3;
    let a0;
    let t5_value = (
      /*movie*/
      ctx[0].title + ""
    );
    let t5;
    let a0_href_value;
    let a0_title_value;
    let t6;
    let div2;
    let a1;
    let t7_value = (
      /*movie*/
      ctx[0].maker + ""
    );
    let t7;
    let a1_href_value;
    let t8;
    let resources;
    let current;
    let mounted;
    let dispose;
    let if_block = (
      /*mouseHover*/
      ctx[2] && create_if_block$1(ctx)
    );
    resources = new Resources({
      props: {
        code: (
          /*movie*/
          ctx[0].code
        ),
        torrent: (
          /*torrentDataArray*/
          ((_a = ctx[1][0]) == null ? void 0 : _a.torrent) ?? null
        ),
        magnet: (
          /*torrentDataArray*/
          ((_b = ctx[1][0]) == null ? void 0 : _b.magnet) ?? null
        ),
        seed: (
          /*torrentDataArray*/
          ((_c = ctx[1][0]) == null ? void 0 : _c.seed) ?? null
        )
      }
    });
    return {
      c() {
        div4 = element("div");
        div1 = element("div");
        div0 = element("div");
        img = element("img");
        t0 = space();
        if (if_block) if_block.c();
        t1 = space();
        span = element("span");
        t2 = text("FC2-PPV-");
        t3 = text(t3_value);
        t4 = space();
        div3 = element("div");
        a0 = element("a");
        t5 = text(t5_value);
        t6 = space();
        div2 = element("div");
        a1 = element("a");
        t7 = text(t7_value);
        t8 = space();
        create_component(resources.$$.fragment);
        if (!src_url_equal(img.src, img_src_value = /*movie*/
        ctx[0].thumbnail)) attr(img, "src", img_src_value);
        attr(img, "alt", img_alt_value = /*movie*/
        ctx[0].title);
        attr(img, "loading", "lazy");
        attr(img, "class", "svelte-zi5z1m");
        attr(span, "class", "code svelte-zi5z1m");
        attr(div1, "class", "grid-item svelte-zi5z1m");
        attr(a0, "class", "title svelte-zi5z1m");
        attr(a0, "href", a0_href_value = /*movie*/
        ctx[0].titleUrl);
        attr(a0, "title", a0_title_value = /*movie*/
        ctx[0].title);
        attr(a0, "rel", "noopener");
        attr(a1, "class", "maker svelte-zi5z1m");
        attr(a1, "href", a1_href_value = /*movie*/
        ctx[0].makerUrl);
        attr(a1, "rel", "noopener");
        attr(div2, "class", "flex svelte-zi5z1m");
        attr(div3, "class", "grid-item-title svelte-zi5z1m");
        attr(div4, "class", "grid-item-wrapper svelte-zi5z1m");
        set_style(div4, "filter", "brightness(" + /*torrentDataArray*/
        (ctx[1][0] ? "1" : "0.5") + ")");
        set_style(div4, "transition", "filter 0.3s ease-in-out");
      },
      m(target, anchor) {
        insert(target, div4, anchor);
        append(div4, div1);
        append(div1, div0);
        append(div0, img);
        append(div0, t0);
        if (if_block) if_block.m(div0, null);
        append(div1, t1);
        append(div1, span);
        append(span, t2);
        append(span, t3);
        append(div4, t4);
        append(div4, div3);
        append(div3, a0);
        append(a0, t5);
        append(div3, t6);
        append(div3, div2);
        append(div2, a1);
        append(a1, t7);
        append(div2, t8);
        mount_component(resources, div2, null);
        current = true;
        if (!mounted) {
          dispose = [
            listen(
              div0,
              "mouseover",
              /*mouseover_handler*/
              ctx[3]
            ),
            listen(
              div0,
              "mouseleave",
              /*mouseleave_handler*/
              ctx[4]
            ),
            listen(
              div0,
              "touchstart",
              /*touchstart_handler*/
              ctx[5],
              { passive: true }
            )
          ];
          mounted = true;
        }
      },
      p(ctx2, [dirty]) {
        var _a2, _b2, _c2;
        if (!current || dirty & /*movie*/
        1 && !src_url_equal(img.src, img_src_value = /*movie*/
        ctx2[0].thumbnail)) {
          attr(img, "src", img_src_value);
        }
        if (!current || dirty & /*movie*/
        1 && img_alt_value !== (img_alt_value = /*movie*/
        ctx2[0].title)) {
          attr(img, "alt", img_alt_value);
        }
        if (
          /*mouseHover*/
          ctx2[2]
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
          } else {
            if_block = create_if_block$1(ctx2);
            if_block.c();
            if_block.m(div0, null);
          }
        } else if (if_block) {
          if_block.d(1);
          if_block = null;
        }
        if ((!current || dirty & /*movie*/
        1) && t3_value !== (t3_value = /*movie*/
        ctx2[0].code + "")) set_data(t3, t3_value);
        if ((!current || dirty & /*movie*/
        1) && t5_value !== (t5_value = /*movie*/
        ctx2[0].title + "")) set_data(t5, t5_value);
        if (!current || dirty & /*movie*/
        1 && a0_href_value !== (a0_href_value = /*movie*/
        ctx2[0].titleUrl)) {
          attr(a0, "href", a0_href_value);
        }
        if (!current || dirty & /*movie*/
        1 && a0_title_value !== (a0_title_value = /*movie*/
        ctx2[0].title)) {
          attr(a0, "title", a0_title_value);
        }
        if ((!current || dirty & /*movie*/
        1) && t7_value !== (t7_value = /*movie*/
        ctx2[0].maker + "")) set_data(t7, t7_value);
        if (!current || dirty & /*movie*/
        1 && a1_href_value !== (a1_href_value = /*movie*/
        ctx2[0].makerUrl)) {
          attr(a1, "href", a1_href_value);
        }
        const resources_changes = {};
        if (dirty & /*movie*/
        1) resources_changes.code = /*movie*/
        ctx2[0].code;
        if (dirty & /*torrentDataArray*/
        2) resources_changes.torrent = /*torrentDataArray*/
        ((_a2 = ctx2[1][0]) == null ? void 0 : _a2.torrent) ?? null;
        if (dirty & /*torrentDataArray*/
        2) resources_changes.magnet = /*torrentDataArray*/
        ((_b2 = ctx2[1][0]) == null ? void 0 : _b2.magnet) ?? null;
        if (dirty & /*torrentDataArray*/
        2) resources_changes.seed = /*torrentDataArray*/
        ((_c2 = ctx2[1][0]) == null ? void 0 : _c2.seed) ?? null;
        resources.$set(resources_changes);
        if (!current || dirty & /*torrentDataArray*/
        2) {
          set_style(div4, "filter", "brightness(" + /*torrentDataArray*/
          (ctx2[1][0] ? "1" : "0.5") + ")");
        }
      },
      i(local) {
        if (current) return;
        transition_in(resources.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(resources.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div4);
        }
        if (if_block) if_block.d();
        destroy_component(resources);
        mounted = false;
        run_all(dispose);
      }
    };
  }
  function instance$2($$self, $$props, $$invalidate) {
    let mouseHover = false;
    let { movie } = $$props;
    let { torrentDataArray = [] } = $$props;
    const mouseover_handler = () => $$invalidate(2, mouseHover = true);
    const mouseleave_handler = () => $$invalidate(2, mouseHover = false);
    const touchstart_handler = () => $$invalidate(2, mouseHover = true);
    $$self.$$set = ($$props2) => {
      if ("movie" in $$props2) $$invalidate(0, movie = $$props2.movie);
      if ("torrentDataArray" in $$props2) $$invalidate(1, torrentDataArray = $$props2.torrentDataArray);
    };
    return [
      movie,
      torrentDataArray,
      mouseHover,
      mouseover_handler,
      mouseleave_handler,
      touchstart_handler
    ];
  }
  class MovieList extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$2, create_fragment$2, safe_not_equal, { movie: 0, torrentDataArray: 1 });
    }
  }
  const sukebeiCache = {};
  async function getTorrentDataFromSukebei(url) {
    if (sukebeiCache[url] !== void 0) {
      return Promise.resolve(sukebeiCache[url]);
    }
    const newUrl = `https://sukebei.nyaa.si/?f=0&c=0_0&q=${url}&s=seeders&o=desc`;
    return new Promise((resolve, reject) => {
      _GM_xmlhttpRequest({
        url: newUrl,
        onload(response) {
          const $torrentRows = $(response.responseText).find("tbody > *");
          const torrentDataArray = $torrentRows.map((_, row) => {
            const $row = $(row);
            return {
              title: $row.find("td a:eq(1)").text(),
              torrent: "https://sukebei.nyaa.si" + ($row.find("td a i.fa-download").parent().attr("href") ?? ""),
              magnet: $row.find("td a i.fa-magnet").parent().attr("href") ?? "",
              seed: $row.find("td:eq(-3)").text()
            };
          }).get();
          sukebeiCache[url] = torrentDataArray;
          resolve(torrentDataArray);
        },
        onerror(response) {
          reject(response);
        }
      });
    });
  }
  function get_each_context(ctx, list, i) {
    const child_ctx = ctx.slice();
    child_ctx[4] = list[i];
    return child_ctx;
  }
  function create_each_block(ctx) {
    let movielistpage;
    let current;
    function func(...args) {
      return (
        /*func*/
        ctx[2](
          /*movie*/
          ctx[4],
          ...args
        )
      );
    }
    movielistpage = new MovieList({
      props: {
        movie: (
          /*movie*/
          ctx[4]
        ),
        torrentDataArray: (
          /*torrentDataArray*/
          ctx[1].filter(func).map(
            /*func_1*/
            ctx[3]
          ) || null
        )
      }
    });
    return {
      c() {
        create_component(movielistpage.$$.fragment);
      },
      m(target, anchor) {
        mount_component(movielistpage, target, anchor);
        current = true;
      },
      p(new_ctx, dirty) {
        ctx = new_ctx;
        const movielistpage_changes = {};
        if (dirty & /*movieList*/
        1) movielistpage_changes.movie = /*movie*/
        ctx[4];
        if (dirty & /*torrentDataArray, movieList*/
        3) movielistpage_changes.torrentDataArray = /*torrentDataArray*/
        ctx[1].filter(func).map(
          /*func_1*/
          ctx[3]
        ) || null;
        movielistpage.$set(movielistpage_changes);
      },
      i(local) {
        if (current) return;
        transition_in(movielistpage.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(movielistpage.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        destroy_component(movielistpage, detaching);
      }
    };
  }
  function create_fragment$1(ctx) {
    let div;
    let current;
    let each_value = ensure_array_like(
      /*movieList*/
      ctx[0]
    );
    let each_blocks = [];
    for (let i = 0; i < each_value.length; i += 1) {
      each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
    }
    const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
      each_blocks[i] = null;
    });
    return {
      c() {
        div = element("div");
        for (let i = 0; i < each_blocks.length; i += 1) {
          each_blocks[i].c();
        }
        attr(div, "class", "grid-container svelte-y69kqa");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        for (let i = 0; i < each_blocks.length; i += 1) {
          if (each_blocks[i]) {
            each_blocks[i].m(div, null);
          }
        }
        current = true;
      },
      p(ctx2, [dirty]) {
        if (dirty & /*movieList, torrentDataArray, parseInt*/
        3) {
          each_value = ensure_array_like(
            /*movieList*/
            ctx2[0]
          );
          let i;
          for (i = 0; i < each_value.length; i += 1) {
            const child_ctx = get_each_context(ctx2, each_value, i);
            if (each_blocks[i]) {
              each_blocks[i].p(child_ctx, dirty);
              transition_in(each_blocks[i], 1);
            } else {
              each_blocks[i] = create_each_block(child_ctx);
              each_blocks[i].c();
              transition_in(each_blocks[i], 1);
              each_blocks[i].m(div, null);
            }
          }
          group_outros();
          for (i = each_value.length; i < each_blocks.length; i += 1) {
            out(i);
          }
          check_outros();
        }
      },
      i(local) {
        if (current) return;
        for (let i = 0; i < each_value.length; i += 1) {
          transition_in(each_blocks[i]);
        }
        current = true;
      },
      o(local) {
        each_blocks = each_blocks.filter(Boolean);
        for (let i = 0; i < each_blocks.length; i += 1) {
          transition_out(each_blocks[i]);
        }
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
        destroy_each(each_blocks, detaching);
      }
    };
  }
  const CHUNK_SIZE = 30;
  function instance$1($$self, $$props, $$invalidate) {
    let movieList = [];
    let torrentDataArray = [];
    onMount(async () => {
      $$invalidate(0, movieList = await getMovieList());
      const codes = Array.from(new Set(movieList.map((movie) => movie.code)));
      const chunks = [];
      for (let i = 0; i < codes.length; i += CHUNK_SIZE) {
        chunks.push(codes.slice(i, i + CHUNK_SIZE).join("|"));
      }
      const results = await Promise.all(chunks.map(getTorrentDataFromSukebei));
      $$invalidate(1, torrentDataArray = results.flat());
      console.log("Torrent data array:", torrentDataArray);
    });
    const func = (movie, data) => data.title.includes(movie.code);
    const func_1 = (data) => ({
      ...data,
      seed: parseInt(data.seed, 10) || 0
    });
    return [movieList, torrentDataArray, func, func_1];
  }
  class Movies extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$1, create_fragment$1, safe_not_equal, {});
    }
  }
  function getMovieDetail() {
    const $El = $("div.flex.flex-col.items-start.rounded-lg");
    const movieDetail = {
      code: $El.find("span.text-white.ml-2").first().text(),
      thumbnail: $El.find("img").first().attr("src")
    };
    return movieDetail;
  }
  function create_if_block_1(ctx) {
    let await_block_anchor;
    let info = {
      ctx,
      current: null,
      token: null,
      hasCatch: false,
      pending: create_pending_block,
      then: create_then_block,
      catch: create_catch_block,
      value: 5
    };
    handle_promise(getVideoPreview(
      /*movieDetail*/
      ctx[2].code
    ), info);
    return {
      c() {
        await_block_anchor = empty();
        info.block.c();
      },
      m(target, anchor) {
        insert(target, await_block_anchor, anchor);
        info.block.m(target, info.anchor = anchor);
        info.mount = () => await_block_anchor.parentNode;
        info.anchor = await_block_anchor;
      },
      p(new_ctx, dirty) {
        ctx = new_ctx;
        update_await_block_branch(info, ctx, dirty);
      },
      d(detaching) {
        if (detaching) {
          detach(await_block_anchor);
        }
        info.block.d(detaching);
        info.token = null;
        info = null;
      }
    };
  }
  function create_catch_block(ctx) {
    return { c: noop, m: noop, p: noop, d: noop };
  }
  function create_then_block(ctx) {
    let if_block_anchor;
    function select_block_type(ctx2, dirty) {
      if (
        /*videoPreview*/
        ctx2[5]
      ) return create_if_block_2;
      return create_else_block;
    }
    let current_block_type = select_block_type(ctx);
    let if_block = current_block_type(ctx);
    return {
      c() {
        if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
      },
      p(ctx2, dirty) {
        if_block.p(ctx2, dirty);
      },
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if_block.d(detaching);
      }
    };
  }
  function create_else_block(ctx) {
    let p;
    return {
      c() {
        p = element("p");
        p.textContent = "No Preview 😭";
        attr(p, "class", "no-video svelte-we16u3");
      },
      m(target, anchor) {
        insert(target, p, anchor);
      },
      p: noop,
      d(detaching) {
        if (detaching) {
          detach(p);
        }
      }
    };
  }
  function create_if_block_2(ctx) {
    let video;
    let video_src_value;
    return {
      c() {
        video = element("video");
        if (!src_url_equal(video.src, video_src_value = /*videoPreview*/
        ctx[5])) attr(video, "src", video_src_value);
        video.autoplay = true;
        video.loop = true;
        attr(video, "class", "svelte-we16u3");
      },
      m(target, anchor) {
        insert(target, video, anchor);
      },
      p: noop,
      d(detaching) {
        if (detaching) {
          detach(video);
        }
      }
    };
  }
  function create_pending_block(ctx) {
    return { c: noop, m: noop, p: noop, d: noop };
  }
  function create_if_block(ctx) {
    let resources;
    let current;
    resources = new Resources({
      props: {
        code: (
          /*movieDetail*/
          ctx[2].code
        ),
        torrent: (
          /*torrentData*/
          ctx[1][0].torrent
        ),
        magnet: (
          /*torrentData*/
          ctx[1][0].magnet
        ),
        seed: (
          /*torrentData*/
          ctx[1][0].seed
        )
      }
    });
    return {
      c() {
        create_component(resources.$$.fragment);
      },
      m(target, anchor) {
        mount_component(resources, target, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        const resources_changes = {};
        if (dirty & /*torrentData*/
        2) resources_changes.torrent = /*torrentData*/
        ctx2[1][0].torrent;
        if (dirty & /*torrentData*/
        2) resources_changes.magnet = /*torrentData*/
        ctx2[1][0].magnet;
        if (dirty & /*torrentData*/
        2) resources_changes.seed = /*torrentData*/
        ctx2[1][0].seed;
        resources.$set(resources_changes);
      },
      i(local) {
        if (current) return;
        transition_in(resources.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(resources.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        destroy_component(resources, detaching);
      }
    };
  }
  function create_fragment(ctx) {
    let div;
    let img;
    let img_src_value;
    let t0;
    let t1;
    let if_block1_anchor;
    let current;
    let mounted;
    let dispose;
    let if_block0 = (
      /*mouseHover*/
      ctx[0] && create_if_block_1(ctx)
    );
    let if_block1 = (
      /*torrentData*/
      ctx[1].length > 0 && create_if_block(ctx)
    );
    return {
      c() {
        div = element("div");
        img = element("img");
        t0 = space();
        if (if_block0) if_block0.c();
        t1 = space();
        if (if_block1) if_block1.c();
        if_block1_anchor = empty();
        if (!src_url_equal(img.src, img_src_value = /*movieDetail*/
        ctx[2].thumbnail)) attr(img, "src", img_src_value);
        attr(
          img,
          "alt",
          /*movieDetail*/
          ctx[2].code
        );
        attr(img, "class", "svelte-we16u3");
        attr(div, "class", "svelte-we16u3");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        append(div, img);
        append(div, t0);
        if (if_block0) if_block0.m(div, null);
        insert(target, t1, anchor);
        if (if_block1) if_block1.m(target, anchor);
        insert(target, if_block1_anchor, anchor);
        current = true;
        if (!mounted) {
          dispose = [
            listen(
              div,
              "touchstart",
              /*handleMouseEnter*/
              ctx[3],
              { passive: true }
            ),
            listen(
              div,
              "focus",
              /*handleMouseEnter*/
              ctx[3]
            ),
            listen(
              div,
              "mouseover",
              /*handleMouseEnter*/
              ctx[3]
            ),
            listen(
              div,
              "mouseleave",
              /*handleMouseLeave*/
              ctx[4]
            )
          ];
          mounted = true;
        }
      },
      p(ctx2, [dirty]) {
        if (
          /*mouseHover*/
          ctx2[0]
        ) {
          if (if_block0) {
            if_block0.p(ctx2, dirty);
          } else {
            if_block0 = create_if_block_1(ctx2);
            if_block0.c();
            if_block0.m(div, null);
          }
        } else if (if_block0) {
          if_block0.d(1);
          if_block0 = null;
        }
        if (
          /*torrentData*/
          ctx2[1].length > 0
        ) {
          if (if_block1) {
            if_block1.p(ctx2, dirty);
            if (dirty & /*torrentData*/
            2) {
              transition_in(if_block1, 1);
            }
          } else {
            if_block1 = create_if_block(ctx2);
            if_block1.c();
            transition_in(if_block1, 1);
            if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
          }
        } else if (if_block1) {
          group_outros();
          transition_out(if_block1, 1, 1, () => {
            if_block1 = null;
          });
          check_outros();
        }
      },
      i(local) {
        if (current) return;
        transition_in(if_block1);
        current = true;
      },
      o(local) {
        transition_out(if_block1);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
          detach(t1);
          detach(if_block1_anchor);
        }
        if (if_block0) if_block0.d();
        if (if_block1) if_block1.d(detaching);
        mounted = false;
        run_all(dispose);
      }
    };
  }
  function instance($$self, $$props, $$invalidate) {
    let movieDetail = getMovieDetail();
    let mouseHover = false;
    let torrentData = [];
    onMount(async () => {
      var _a;
      $$invalidate(1, torrentData = await getTorrentDataFromSukebei(movieDetail.code));
      console.log((_a = torrentData[0]) == null ? void 0 : _a.torrent);
    });
    const handleMouseEnter = () => $$invalidate(0, mouseHover = true);
    const handleMouseLeave = () => $$invalidate(0, mouseHover = false);
    return [mouseHover, torrentData, movieDetail, handleMouseEnter, handleMouseLeave];
  }
  class MovieDetail extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance, create_fragment, safe_not_equal, {});
    }
  }
  $(function() {
    const moviesTarget = $("div.flex.flex-wrap.-m-4");
    if (moviesTarget.length) {
      const newDivMovies = $("<div>");
      new Movies({
        target: newDivMovies[0]
      });
      moviesTarget.replaceWith(newDivMovies);
    }
    const movieDetailTarget = $("div.flex.flex-col.items-start.rounded-lg > div > a > img").parent();
    if (movieDetailTarget.length) {
      const newDivDetail = $("<div>");
      new MovieDetail({
        target: newDivDetail[0]
      });
      movieDetailTarget.replaceWith(newDivDetail);
    }
    const containerEl = $("div.container");
    if (containerEl.length) {
      containerEl.removeClass("container");
    }
    const idEl = $("span.text-white.ml-2").first();
    if (idEl.length && /^\d+$/.test(idEl.text())) {
      const originalText = idEl.text();
      idEl.text("FC2-PPV-" + originalText);
    }
  });

})(jQuery);