Skip to content

Provider Request: MultiMovies #53

Description

@EndOverdosing

Prerequisites

  • I have checked the existing issues and this is not a duplicate
  • I have read the README.md and ensured that this provider is not already supported
  • I have reviewed the OMSS Framework documentation to understand provider implementation
  • I have included all relevant details in this request
  • I did not answer truthfully to ALL the above checkboxes

Provider Name

MultiMovies

Provider URL

https://multimovies.fyi/

Content Type Support

Movies, TV Shows

Provider Description

MultiMovies is a streaming index site built on WordPress using the DooPlay theme. It pulls video links through embedded players, mainly from GDMirrorBot and IQSmartGames/EmbedHelper, which then redirect to hosts like StreamHG, smoothpre, and plyr.techxpremium.store.

Implementation Details

Integrating this provider requires negotiating a WordPress search and an AJAX-based player retrieval system. Here is the mapped-out request sequence analyzed so far:

  1. Token Retrieval: Fetch the main page https://multimovies.fyi/ to parse the search nonce string (regex pattern "nonce":"([a-f0-9]+)").
  2. Search Query: Search the TV show via WordPress API:
    GET https://multimovies.fyi/wp-json/dooplay/search/?keyword={keyword}&nonce={nonce}
    This returns a JSON map containing the show's post URL.
  3. Episode Page: Fetch the corresponding episode page to retrieve the WordPress Post ID:
    GET https://multimovies.fyi/episodes/{show-slug}-{season}x{episode}/
    Extract the post ID from patterns such as data-post="{id}" or the body classes.
  4. Player Retrieval: Call the backend AJAX handler:
    POST https://multimovies.fyi/wp-admin/admin-ajax.php
    Body (form-encoded): action=doo_player_ajax&post={post_id}&nume={server_index}&type=tv
    This returns an embed URL pointing to the video hosting providers.

URL Patterns & Request Formats

  • TV Show Episode URL Pattern:
    https://multimovies.fyi/episodes/{slug}-{season}x{episode}/

  • Required Headers (for AJAX and embed requests):

    • Referer: https://multimovies.fyi/
    • Origin: https://multimovies.fyi/
    • User-Agent: <standard_browser_agent>
  • Response Format: M3U8 (HLS Streams generated by the external hosting players).

Additional Context

While steps 1 through 4 of the metadata retrieval chain are functioning, help is needed to bypass the final player-side protections. The platform routes users to two main player targets:

Target 1: GDMirrorBot (gdmirrorbot.nl)
The embed URL resolved from step 4 is structured as https://gdmirrorbot.nl/embed/{embed_id}.

  • Mechanism: The HTML document contains hidden inputs: gdmrfid (matching the file ID) and view_token (a fresh SHA256 token unique to each pageload).
  • The Block: The player configuration and streaming endpoints are resolved dynamically via server-side JavaScript hosted at https://gdmirrorbot.nl/assets/piliyerxnew.js. When requesting this script directly from code, the server responds with a 403 Forbidden status. It likely enforces strict header verification, cookies, or basic session tracking.

Target 2: IQSmartGames / EmbedHelper (plyr.techxpremium.store)
Alternatively, some servers route to an embed helper configuration returning a JSON-decoded payload (mresult) containing several video mirrors:

  • smwh -> StreamHG (https://multimoviesshg.com/e/{slug})

  • upnshr / strmp2 -> Plyr TechxPremium (https://plyr.techxpremium.store/hlsplayer?url=...)

  • The Block:

    • StreamHG: The embedded stream is rendered via scripts that may require parsing/un-packing logic or cookie emulation.
    • Plyr Watcher: Submitting requests to https://plyr.techxpremium.store/watch requires generating signature headers:
      x-ts: Current timestamp
      x-signature: sha256(timestamp:inputUrl:WATCH_SECRET)
      Even when the signature is supplied, the endpoint frequently responds with {"error":"Extractor failed"}, suggesting either a strict user session requirement or a changed salt value.

Assistance from developers with experience in reverse-engineering player endpoints, tracking websocket initialization parameters, or configuring browser headers to bypass resource-level 403 blocks would be valuable to help finalize this implementation.

Support

  • Yes, I can help with the implementation

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions