Stremio addon for fetching videos from your google drive.

ssnjr2002, updated 🕥 2023-01-03 05:11:21

stremio-gdrive

image image

Instructions:

There are two ways to go about:

  • Method 1 is hard and long but might give you better performance and you need to make your own google cloud project thingy.
  • Method 2 relies on rclones google cloud project saving you the burden of having to create your own project i.e. you can skip straight to step 18.

Method 1 starts from here

  1. Go to https://console.cloud.google.com/projectcreate
  2. Name the project whatever you want and click create.
  3. Next to "Google Cloud Platform," click the Down arrow image and select your project.
  4. At the top-left corner, click the hamburger menu icon: image Click APIs & Services > Credentials.
  5. Click Configure Consent Screen. The "OAuth consent screen" screen appears.
  6. Set user type to external and click create.
  7. Fill in the required details, you can give your own email as dev and support email. Click save and continue.
  8. For the scopes page leave it as it is and click save and continue.
  9. Now add yourself (your email id) as the test user by pressing add users. Click save and continue.
  10. Now on your left, under API & Services, you will see Dashboard. Click on it and then click on Enable APIs and Services.
  11. Search for Google Drive and click on the result that says Google Drive API and then click on Enable.
  12. Now do step 4 again.
  13. Click Create Credentials > OAuth client ID.
  14. Choose application type as Desktop, name it whatever you want and click create.
  15. The newly created credential appears under "OAuth 2.0 Client IDs." Click the download button to the right of the newly-created OAuth 2.0 Client ID. We will get a client_secret.json file, we will need this for the next section.
  16. Now once again, at the top-left corner, click the hamburger menu icon: image Click APIs & Services > OAuth Consent Screen.
  17. Under Publishing Status you will see a button called PUBLISH APP, click on that and choose confrim.

Method 2 starts from here

  1. Use the colab notebook to easily obtain the token and the required code for the cloudflare proxy:

Open In Colab

  1. Run the cell of the respective method number you chose. Just press the circular play button beside the rectangular box.

  2. Login with your google account. Copy the js code and copy the token string for later when we deploy the heroku backend, the token should look something like this:

json {"token": "jhgdfgdhgfh", "refresh_token": "1//sdhgbfdhghd", "token_uri": "https://oauth2.googleapis.com/token", "client_id": "hsdgfjhgfsd.apps.googleusercontent.com", "client_secret": "gfsdfsdgf", "scopes": ["https://www.googleapis.com/auth/drive"]}

Skip to Deploying to heroku if you dont want to use a proxy.

  1. Go to https://dash.cloudflare.com/ log in or sign up.
  2. Open the Workers option.
  3. Create your sub-domain or continue if already done.
  4. Select the Free Plan. Click on Create a Worker. You can rename the workers at top of the page.
  5. In the Script{} box you will see some code, delete all that and paste the js code that you obtained in step 18 there.

Deploying to heroku:

Deploy to Heroku

  1. Hit the deploy button.
  2. Paste the token string in the token field.
  3. Copy your cloudflare worker url and paste it in the cf proxy url field. Leave it blank to use the addon without the proxy.
  4. Hit deploy.

Installing the addon to your Stremio account:

  1. Get the url of the heroku app you deployed. Add /manifest.json to the end. For example if my herokuapp url is https://your-stremiogdrive.herokuapp.com add /manifest.json to the end to get: https://your-stremiogdrive.herokuapp.com/manifest.json. Copy this url.
  2. Open stremio on desktop or android and go to addons section.
  3. In the search bar paste the manifest link (https://your-stremiogdrive.herokuapp.com/manifest.json) and press enter. Click install and you are done.

How the addon works

The addon uses the drive api to search for video files in your drive (both your teamdrives and mydrive) kinda like using the google drive web search bar.

So after setting up the addon go and search for something on stremio. When you open a search result, stremio will ask the addon if it has the video for the search result. The addon searches for the video in your google drive and if it gets any result it will give it to stremio and stremio will display the results.

For example if I want to watch a movie, say its called Pirates of the Goolag, then: * I will open stremio and search for Pirates of the Goolag. If its on imdb then it should appear on the stremio search results (stremio fetches search results from imdb). * Open the search result for Pirates of the Goolag and stremio will ask the addon if it has a video stream for Pirates of the Goolag. * The addon searches in your Google Drive for Pirates of the Goolag and if its anywhere on your google drive, doesnt matter where as long as the video file has the name and year of the movie (for eg: Pirates of the Goolag 2016.mkv or Pirates.of.the.Goolag.2016.UHD.BluRay.x265.mkv), the addon will return the search results for Pirates of the Goolag. * Stremio will then display it as a video stream and all you have to do is tap on it and enjoy.

The addon searches for:

  • Movies by searching for Videos with their filename as the name of the movie and when it was released. Eg video filename: Pirates of the Goolag 2016.mkv
  • Series episodes by searching for Videos with their filename as the name of the series and which episode it was by a specifier. Supported specifiers are:

    • S01 E01
    • S1 E1
    • Season 1 Episode 1
    • 1x01
    • 1x1

Issues / Limitations / Explanations

  • Apps hosted on heroku sleeps after 30 mins of inactivity. So after 30 mins of inactivity the addon needs about 30 secs to start back up and then some time to fetch the results. If you use something like Kaffeine you can overcome this as Kaffeine pings your app every 30 mins. Downside is that you will spend extra dyno hours. Free dynos have about 550 hours of runtime per month which is about 22 days.
  • Google api is not very fast so if you have a ton of results it might take 10 - 15 secs to load.
  • Cloudflare workers is used as a proxy to stream files from google drive since it is really fast.
  • I am an amateur and I did this to the best of my ability. If you find flaws feel free to post an issue.

For the sake of security please don't share your herokuapp url or your cloudflare workers proxy url. They can be used to get files from your drive.

Issues

Heroku Alternative

opened on 2023-03-12 03:08:05 by Speeder7

Heroku does not provide free tiers anymore. Do we have alternative to Heroku, and how to deploy it? Thanks.

Unable to Fetch From Google Drive anymore.

opened on 2023-02-02 03:26:54 by vkazheng

``` 2023-02-02T03:24:47.770 app[e7885b13] sin [info] [2023-02-02 03:24:47 +0000] [528] [ERROR] Error handling request

2023-02-02T03:24:47.770 app[e7885b13] sin [info] Traceback (most recent call last):

2023-02-02T03:24:47.770 app[e7885b13] sin [info] File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/sync.py", line 184, in handle_request

2023-02-02T03:24:47.770 app[e7885b13] sin [info] for item in respiter:

2023-02-02T03:24:47.770 app[e7885b13] sin [info] File "/app/.heroku/python/lib/python3.9/site-packages/werkzeug/wsgi.py", line 462, in next

2023-02-02T03:24:47.770 app[e7885b13] sin [info] return self._next()

2023-02-02T03:24:47.770 app[e7885b13] sin [info] File "/app/.heroku/python/lib/python3.9/site-packages/werkzeug/wrappers/response.py", line 49, in _iter_encoded

2023-02-02T03:24:47.770 app[e7885b13] sin [info] for item in iterable:

2023-02-02T03:24:47.770 app[e7885b13] sin [info] File "/app/sgd/routes.py", line 63, in get_streams

2023-02-02T03:24:47.770 app[e7885b13] sin [info] stream_meta = Meta(stream_type, stream_id)

2023-02-02T03:24:47.770 app[e7885b13] sin [info] File "/app/sgd/meta.py", line 120, in init

2023-02-02T03:24:47.770 app[e7885b13] sin [info] IMDb.init(self)

2023-02-02T03:24:47.770 app[e7885b13] sin [info] File "/app/sgd/meta.py", line 21, in init

2023-02-02T03:24:47.770 app[e7885b13] sin [info] if not self.get_meta_from_imdb_sg():

2023-02-02T03:24:47.770 app[e7885b13] sin [info] File "/app/sgd/meta.py", line 85, in get_meta_from_imdb_sg

2023-02-02T03:24:47.770 app[e7885b13] sin [info] self.set_meta(meta[0], year="y", name="l")

2023-02-02T03:24:47.770 app[e7885b13] sin [info] TypeError: set_meta() got an unexpected keyword argument 'name'

```

Not a programmer, need help when you have time please.

Item could not be created:

opened on 2023-01-02 00:19:26 by ang3lo-azevedo

image

Error: 400

opened on 2022-12-31 22:27:24 by ang3lo-azevedo

It's giving error: 400 on the google login page.

Fixed Handling Error that was caused drive_name to be 8000 empty newlines for some files

opened on 2022-12-03 16:53:36 by gaurav-cybg

Hi! this was causing file names to break on android. Drive name was just 8000 new lines. Screenshot_20221203-215251_Stremio

Use streaming versions

opened on 2022-11-22 23:03:07 by unvency

Thank you for working on this project.

I would like to know if the addon is also capable of intercepting the streaming variants that Google creates for each video on Drive. Encoding would no longer be necessary and it saves resources.

stremio addon gdrive google drive google-drive-api google-drive