Play & Download Doodstream, Streamlare, Google Photo, ZPlayer, XHamster, Hanime videos using JWPlayer and XStreamPro REST API.
XStreamPro Player supports following video hosts:
We'll adding more to this list. If you have any suggestions on adding any particular host, create an issue. We'll see if we can add it.
- Ligtning Fast API
- JWPlayer Support
- One Custom Skin
- Fully Customizable Player
- Google Analytics & Microsoft Clarity Integrated
- Completely Written in HTML, CSS, JAVASCRIPT
- CDN Enabled
- Video, Popads, Popunder Ads Supported
- FuckAdBlock
- Simple yet Powerful Admin Panel
- Encryption
- Iframe Restriction
- Download Option
- Clean, minified & Secure Source Code
XStreamPro Player uses cloudflare workers
for fetching streaming & downloading links. In short, we have created an API
which return all information in JSON
format. In this repo
, you'll find a file named workers.js
. This is our main file which contains API
code. Follow below steps to set it up:
-
Register & create a worker on cloudflare
-
Upload
workers.js
in newly created cloudflare worker -
Next, go to variable -> environment in worker dashboard and set following:
Variable Name:
ACCESS_CONTROL_ALLOW_ORIGIN
Variable Value:www.yourdomain.com,www.domain2.com
Above setting is necessary or worker will throw error. Above setting creates ACCESS_CONTROL_ALLOW_ORIGIN
header which will block cross-origin
requests. Add $
at the end of your domain hostname
. If you want to add multiple domain, just add comma (,)
after every domain or just add .*
to authorize all cross-origin
requests.
4. Copy the workers url
and open config.json
file.
5. This file contains configuration setting related to JW Player
, Google & Clarity Analytics
, & cloudflare workers
6. Find following line:
"workers": [ "https://api.delivrjs.workers.dev" ]
-
Replace
https://api.delivrjs.workers.dev
with yourpersonal workers url
. Don't add/
at the end of url. You can add as many as workers you want as per your traffic. For e.g."workers": [ "workers_1", "workers_2", "workers_3" ]
-
XStreamPro Player will randomly pick a worker.
-
config.json
also contains configuration settings for setting upJW Player
. Thekey(s)
ofconfig.json
JSON file is/are itself explainatory. You can edit those as per your need. -
Next, Open
adminCode
and enter any random key(type: string)
. This code will be entered upon at the time of link creation by admin from XStreamPro Admin Panel. This is so calledsecurity measure
which restricts anyone who is in ignorance ofadminCode
, to generate links. Since, javascript isn't well-suited approach for it, we recommend you that you can come with your own idea and implement it in your code. -
That's it. Now it's time to upload your script.
-
Facing any issue, open one
We have setup a demo of this entire script at following url.
- Demo Website: https://xstreampro.pages.dev
- API workers.js: https://api.delivrjs.workers.dev
Following is usage of API:
Replace https://api.delivrjs.workers.dev
with your worker url
GET https://api.delivrjs.workers.dev/api/:host/:id
Parameter | Value | Required |
---|---|---|
host | doodstream, streamlare, googlephoto, zplayer, hanime, xhamster | Yes |
id | ID of the video e.g. p1r85dfb6zgz | Yes |
GET https://api.delivrjs.workers.dev/api/googlephoto/PvkhtGCRa2UsEhgQ7
{
"status": true,
"host": "googlephoto",
"filecode": "PvkhtGCRa2UsEhgQ7",
"download": "https://video-downloads.googleusercontent.com/AGQNM9L5IfpCHptBkwHOQg-et92YWiBHBsngZ5V5pK4-okrU_RleBxCHfrbZZmFaEKqVhUhLEom5rUj21QSWdnDC7j4LKSYGdyOXL-GgF67W7gKn9hJTsf6g34nJ16CMzyBG4BAWRMNJ5dNjeq-PJIg3yUH2kDi9gd9LH3eSkPXLPTOTPelQ8A72i_mFwOKkkEdqGFrLj3nqiE4yEWGD8yocg1q6ufTezgP4z2wkzjk1SYgq2yK8UVM?authuser=0",
"image": "https://lh3.googleusercontent.com/pw/AM-JKLXgFgAPzyh-FtyOsS4DfODuNrsBtbvWgymYCxaF1hS-fJAMpPSWCF0yuEsoyzk_UPowDT0bbdHyYNK6pXba69720RxEYjHfR4nAXowkx9dBBMkxOacqF_lkYSi5dQpxsJZ-tsI_49fzE06RLknUz8s=w1280-h720-no",
"sources": [
{
"file": "https://lh3.googleusercontent.com/pw/AM-JKLXgFgAPzyh-FtyOsS4DfODuNrsBtbvWgymYCxaF1hS-fJAMpPSWCF0yuEsoyzk_UPowDT0bbdHyYNK6pXba69720RxEYjHfR4nAXowkx9dBBMkxOacqF_lkYSi5dQpxsJZ-tsI_49fzE06RLknUz8s=m22",
"label": "720p",
"type": "video/mp4"
},
{
"file": "https://lh3.googleusercontent.com/pw/AM-JKLXgFgAPzyh-FtyOsS4DfODuNrsBtbvWgymYCxaF1hS-fJAMpPSWCF0yuEsoyzk_UPowDT0bbdHyYNK6pXba69720RxEYjHfR4nAXowkx9dBBMkxOacqF_lkYSi5dQpxsJZ-tsI_49fzE06RLknUz8s=m18",
"label": "360p",
"type": "video/mp4"
},
{
"file": "https://lh3.googleusercontent.com/pw/AM-JKLXgFgAPzyh-FtyOsS4DfODuNrsBtbvWgymYCxaF1hS-fJAMpPSWCF0yuEsoyzk_UPowDT0bbdHyYNK6pXba69720RxEYjHfR4nAXowkx9dBBMkxOacqF_lkYSi5dQpxsJZ-tsI_49fzE06RLknUz8s=m36",
"label": "180p",
"type": "video/mp4"
}
],
"vtt": null
}
It is important to note that direct access to API endpoint
will return following response:
{
"status" : false,
"msg" : "missing origin"
}
Make sure you make a XMLHttpRequest
, fetch
, or any other request but not direct HTTP
request.
It is important that you make request
from client or user side
and not from server side
. Since streaming & downloading links are IP protected, making server side
request might not generate client or user side
playable links, which will result in streaming & downloading error.
XStreamPro Player do not impose any limitations on our script. Since nothing is connected to our server, we are not required to create any limitations. However, only limitations those imposed by cloudflare exists. Following limitations are imposed by cloudlfare workers:
Up to 10ms CPU time per request
Up to 100,000 requests per day
However, you can create as many accounts as you need, since it is a free service and keep adding workers to config.json
. It'll randomly pick a worker.
workers.js
file contained in this respository is obfuscated
using obfuscator.io
. This is done to protect it from getting debugged and eventually respective hosts blocking them. Hope you all understand.
However, we are willing to sell non-obfuscated workers.js
file. Please check pricing below
$10 per host
$7 per host, if two or more hosts are purchased together
$48 for all hosts purchased together
You'll get non-obfuscated workers.js
file. Please note that, non-obfuscated workers.js
is faster than obfuscated workers.js
one. So that's a benefit for you.
Maintaining this script requires time & effort. Consider donating:
- BTC: 3JQ3PFTRbhEGa58fHNNgpVqBpZBZPjKSHZ
- USDT: TBUenWYHtvb7dByBqnnyywEBeeQ8vL2BVe