/goindex-extended

A Google Drive Index, which has a lot of extra features, running on Cloudflare Workers.

Primary LanguageJavaScriptMIT LicenseMIT

Special Note (temp - NO OFFENCE):

Sri Lankan Worker at a Pakistani company, Priyantha Kumara was brutally tortured and burnt alive by a group of people of Pakistan. We condemn this tragic and ghastly murder! Praying for his departed soul and the family he leaves behind. WE DEMAND JUSTICE FOR PRIYANTHA. #JusticeForPriyantha

No Religion is Higher than Humanity - Abdul Sattar Edhi

#JusticeForPriyantha

Image credit goes to @project_de_marco


Preview

GoIndex Extended - Google Drive Index

Author: Cheems License: MIT Repo Size Last Commit Built with Cloudflare Workers Written in JavaScript

Combining the power of Cloudflare Workers and Google Drive will allow you to index your files on the browser on Cloudflare Workers.

πŸ™ˆ Demo

πŸ“Έ Screenshots

Screenshot-1 Screenshot-2 Screenshot-3 Screenshot-4 Screenshot-5 Screenshot-6

✨ Unique Features

  • πŸ”Ž Search function also works for folder root type
  • πŸ—‚οΈ Support for duplicated file and folder names
    • πŸ”€ Files and folders with the same name
    • πŸ”  Files and folders with the same name but different cases
  • βŒ› Ability to force index to load (can be disabled)
  • πŸš€ Quick actions tab (can be disabled):
    • πŸ“₯ Direct Download
    • ↗️ Open link in a new tab
    • πŸ“‹ Copy link to the clipboard
  • πŸ” File id encryption
  • πŸ”’ File size in 1024 bytes system
  • πŸ‘₯ Support for multiple (unlimited) username/password pairs
  • πŸ“š Ability to download files of Google Workspace apps in all available formats:
    • πŸ“˜ Google Documents - ( docx | odt | rtf | pdf | plain text | html | html/zipped | epub )
    • πŸ“Š Google Spreadsheets - ( xlsx | ods | csv | pdf | html/zipped )
    • πŸ‘¨β€πŸ« Google Presentations - ( pptx | odp | pdf | plain text )
    • πŸ–Œ Google Drawings - ( pdf | jpg | png | svg )
    • ✍ Google Jamboards - ( pdf )
    • πŸ“œ Google Apps Scripts - ( json )
    • πŸ“ƒGoogle Forms - ( html/zipped )
  • πŸ—ƒοΈ Ability to change the order which files are listed in
  • πŸ“‚ Ability to access/download shortcuts of files and folders
  • 🦠 Ability to download files which Google has flagged as a virus (can be disabled)
  • πŸ—‘οΈ Ability to download trashed files (can be disabled)
  • πŸ”‘ Support for all characters including slashes('/', '\') and emojies in file/folder names
  • πŸ“… Shows modified date & time in your local time
  • πŸ•’ Modified time displaying issue on Safari browser and browsers on iOS has been fixed

⚑ Features

  • πŸ–₯ Video Player - ( mp4 | webm | avi | mpg | mpeg | mkv | rm | rmvb | mov | wmv | asf | ts | flv )
  • 🎧 Music Player - ( mp3 | flac | wav | ogg | m4a )
  • πŸ“š Document Viewer - ( html | php | css | go | java | js | json | txt | sh | md | pdf )
  • πŸ–ΌοΈ Image Viewer - ( bmp | jpg | jpeg | png | gif )
  • πŸ”Ž Multi-level Search
  • πŸ” Multi drive encryption
  • πŸ“± Mobile Friendly
  • πŸ’Ύ Page-level caching, browser forward and backward without reloading
  • πŸ§₯ Dark Theme
  • 🎨 Main Color:
    • red | pink | purple | deep-purple | indigo | blue | light-blue | cyan | teal | green | light-green | lime | yellow | amber | orange | deep-orange | brown | greyblue-grey
  • πŸ–Œ Accent Color:
    • red | pink | purple | deep-purple | indigo | blue | light-blue | cyan | teal | green | light-green | lime | yellow | amber | orange | deep-orange

πŸ“‹ TODO

  • Adding all expected tasks to the to-do list
  • Adding Plyr video player (almost completed)
  • Implementing service accounts feature

πŸ“– Wiki

Note: The Wiki will be added soon. Until then, you can check this out: https://dudoo.me/wikis.
If you are comfortable reading comments in the code, here you go: goindex-extended/index.js. (Note: Don't edit the code after the line:123 unless you need to develop.)

πŸš€ Quick Deployment

Note: If you need the latest version, use index.js, which is in the root of the repo: goindex-extended/index.js.

  • The Latest version of index.js will be added to the generator soon. Until then, you can use the generator for creating auth credetials, and then you can add them manually to the latest code which you can get from the file mentioned above.
  1. Open the below Colab notebook in a new tab
    Open in Colab
  2. Fill the fields in it on your choice and run the cell
  3. Download the txt file with the code generated by the notebook
  4. Deploy the code to Cloudflare Workers
  5. If you added any folder to the index and you want the search function to work with folders as well, then check this out: Configure Search Functionality for Folders

πŸ•Ή Deployment

  1. Go enable Google Drive API
  2. Create a new project or use one of the existing projects if you already have created. (If you are using Google Cloud Platform for the 1st time: do this only if you want to give your project a custom name. otherwise, your project will be automatically created after the next step with the name "My First Project". If you don't care about the name of the project like me then just skip this step)
  3. Click Enable button to enable Google Drive API
  4. Click Create Credentials
  5. Select "Google Drive API" from the 1st dropdown and select "Other UI" from the 2nd dropdown
  6. Select "User data" from radio buttons
  7. Click "What credentials do I need" then, a pop-up will appear saying that you need to set up the Consent Screen.
  8. click "set up consent screen". it will take you to a new tab
  9. Select "External" as the user type and click create
  10. Provide app name, User support email, and developer contact information which are required for the consent screen. then finish creating the consent screen.
  11. After creating the consent screen, click publish app. (This option can be found under Publishing status)
  12. Head back to the previous tab to continue creating credentials
  13. Click on refresh and create OAuth client ID then click Done
  14. Click on newly created OAuth Client ID to see client id and secret
  15. Open the below Colab notebook(which is made for the ones who wish to use their own credentials) in a new tab
    Open in Colab
  16. Copy your client id and client secret into the Colab notebook and fill the fields in it on your choice and run the cell
  17. Download the txt file with the code generated by the notebook
  18. Deploy the code to Cloudflare Workers
  19. If you added any folder to the index and you want the search function to work with folders as well, then scroll down a bit and check the below section

πŸ”Ž Configure Search Functionality for Folders

If you added any folder to the index and you want the search function to work with folders as well, then the below steps need to be followed. Otherwise, the Search function will not be worked properly.

Note: If you didn't add any folder ids to the roots section in your index, then you don't need to go through this.

  1. Open the following Colab notebook in a new tab
    Open in Colab
  2. Run the cell which is highlighted; then a text box will be appeared
  3. Copy the entire index code from your Worker in Cloudflare and paste it into the provided text box
  4. Then this notebook will generate an encrypted folder id list for your index
    • This may take some time. So, you can have a coffee until this finishes up
  5. Get the folder id list by copying it to the clipboard or downloading it as a text file
  6. Next, host that folder id list in a text file (publicly) on GitHub or somewhere else you prefer
  7. Get the raw link to that file and put it in the index code: 9th line
    • CDN URLs can also be used (jsDeliver.com, raw.githack.com)
  8. finally, redeploy the code; now search function will start working with folder Root type as well

🀝 Special Thanks & Credits

Source:

  • donwa : for writing such a great script
  • yanzai & all initial contributors : for contributing to the project
  • 5MayRain : for implementing Nexmoe theme

Wiki & Readme:

    Took some stuff from their repos for setting up the README.md file and the Wiki. So thanks! 😁

βš– LICENSE

GoIndex - Extended by Cheems(AKA Dudu) is licensed under the MIT License, which you can find in the goindex-extended/LICENSE file.