Gdrive-python: A wrapping module in python of gdrive

Overview

gdrive-python

gdrive-python is a wrapping module in python of gdrive made by @prasmussen.

Installation

First of all to install the package you can execute:

pip install gdrive-python

Than you have to login inside your Google account with the command and than follow the instructions:

python -m gdrive about [options]

options:
  --version     Version of the gdrive script to download
  --os-name     Operating system name, by default it gets current os. Options: ['windows', 'linux', 'darwin']
  --arch        Architecture. Options: ['amd64', '386']
  --url         Url of the gdrive script

Example output:

vpippi$ python -m gdrive about
CMD: gdrive_folder/gdrive --config gdrive_folder about
Authentication needed
Go to the following url in your browser:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=############.apps.googleusercontent.com&redirect_uri=#########&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=state

Enter verification code:
# paste here the code and press enter

FileNotFoundError

Somethimes it can happen that the command python -m gdrive about returns the FileNotFoundError

vpippi$ python -m gdrive about
CMD: gdrive_folder/gdrive --config gdrive_folder about
Traceback (most recent call last):
  ...
FileNotFoundError: [Errno 2] No such file or directory: 'gdrive_folder/gdrive'

In my case it happened because the current system architecture is amd64 but this version don't works in that system. You can avoid that problem by installing the 386 architecture.

python -m gdrive about --arch 386

Usage

import the gdrive classes in that way:

form gdrive import GDrive, GDrivePath, GDriveThread

GDrive

drive = GDrive()

If you whant you can also enable the printing commands setting:

drive.print_output = True

__init__(self, gdrive_path=None)

  • gdrive_path defines the gdrive script location path. If not specified it gets the default location gdrive_folder/gdrive

@staticmethod download_script(version='2.1.1', os_name=None, arch=None, url=None)

  • version is the version of the gdrive script to download
  • os_name is the operating system name, by default it gets current os. Options: ['windows', 'linux', 'darwin']
  • arch is the architecture. Options: ['amd64', '386']
  • url is the url of the gdrive script. If an url is provided the other fields are ignored.

The script download the specified version in the current directory (eg. gdrive_2.1.1_windows_amd64.tar.gz) and than extract the archive inside the directory gdrive_folder.

Returns None.

upload(self, filename, parent_id=None, parent=None, recursive=True, name=None, description=None, mime=None, share=None, timeout=None, chunksize=None, delete=False, thread=False)

  • filename path of the file/folder to upload
  • parent parent directory by name (eg. /path/foldername)
  • parent_id parent id, used to upload file to a specific directory, if specified parent folder is ignored.
  • recursive upload directory recursively
  • name filename
  • description file description
  • mime force mime type
  • share share file
  • timeout set timeout in seconds, use 0 for no timeout. Timeout is reached when no data is transferred in set amount of seconds, default: 300
  • chunksize set chunk size in bytes, default: 8388608
  • delete delete local file when upload is successful
  • thread defines if you want to upload the file in a separate thread (see the thread section)

While uploading a large file could be useful set print_output = True

Example:

>>> drive.print_output = True
>>> drive.upload('File99.mp4')
CMD: gdrive_folder\gdrive.exe --config gdrive_folder upload --recursive checkpoint_042.pth
Uploading checkpoint_042.pth
1.1 GB / 2.0 GB, Rate: 13.7 MB/s

thread

When thead=True the methods return a GDriveThread(threading.Thread) object.

Usage:

>>> thread = drive.upload('File99.mp4', thread=True)
>>> thread.start()
>>> # do whatever you want
>>> thread.join()

about(self)

Returns a dictionary that shows the account info.

Example:

>>> drive.about()
{
    'User': 'name username, [email protected]',
    'Used': '51 GB',
    'Free': '9 GB',
    'Total': '60 GB',
    'Max upload size': '60 GB',
}

logout(self)

The logout function delete the file gdrive_folder/token_v2.json which contains the google info. After this command the login is required again (see installation procedure).

list(self, max=30, querys=[], sort_order=None, name_width=0, absolute=False, bytes=None, parent=None)

Returns a list of dictionaries. Example:

>>> drive.list()
[
    {'Id': '######', 'Name': 'File01.mp4', 'Type': 'bin', 'Size': '196.1 MB', 'Created': '2022-01-13 19:42:00'},
    {'Id': '######', 'Name': 'File02.mp4', 'Type': 'bin', 'Size': '210.7 MB', 'Created': '2022-01-13 19:42:00'},
    {'Id': '######', 'Name': 'File03.mp4', 'Type': 'bin', 'Size': '197.5 MB', 'Created': '2022-01-13 19:42:00'},
    {'Id': '######', 'Name': 'File04.mp4', 'Type': 'bin', 'Size': '191.5 MB', 'Created': '2022-01-13 19:42:00'},
    {'Id': '######', 'Name': 'File05.mp4', 'Type': 'bin', 'Size': '176.1 MB', 'Created': '2022-01-13 19:42:00'},
    {'Id': '######', 'Name': 'File06.mp4', 'Type': 'bin', 'Size': '178.0 MB', 'Created': '2022-01-13 19:42:00'},
    ...
]

list_dirs(self, *args, **kwargs)

Same parameters as the list method.

Returns only the a list of dirs.

list_files(self, *args, **kwargs)

Same parameters as the list method.

Returns only the a list of files.

get_id(self, name)

  • name name of the file/folder that you want the id

Since Google Drive allows different files/directories with the same name, the function returns:

  • string if only one element is found
  • list of the ids if more than one file is returned
  • None if only no one element is found

Example:

>>> drive.get_id('File01.mp4')
'BWoSkGeDNbYqyumaRXtQvzgHndUMET'

>>> drive.get_id('File00.mp4')
['BWoSkGeDNbYqyumaRXtQvzgHndUMET', 'vzgHndUMETscKflCxpVOwhjrAiPLFI']

>>> drive.get_id('File99.mp4')
None

info(self, id)

  • id id of the file/folder

Returns a dictionary of all info values of the given element.

Owner
Vittorio Pippi
Vittorio Pippi
Neko: An Anime themed advance Telegram group management bot

π‘ͺπ’–π’•π’Šπ’†π’‘π’Šπ’Š 𝑹𝒐𝒃𝒐𝒕 A modular telegram Python bot running on python3 wit

γ€Œ Rajkumarβ„’ 」 39 Jan 08, 2023
The Dolby.io Developer Days Getting Started with Media APIs Workshop repo.

Dolby.io Developer Days Media APIs Getting Started Application About this Workshop and Application This example is designed to get participants workin

Dolby.io Samples 2 Nov 03, 2022
πŸ” Google Search unofficial API for Python with no external dependencies

Python Google Search API Unofficial Google Search API for Python. It uses web scraping in the background and is compatible with both Python 2 and 3. W

Avi Aryan 204 Dec 28, 2022
Pls give vaccine.

Pls Give Vaccine A script to spam yourself with vaccine notifications. Explore the docs Β» View Demo Β· Report Bug Β· Request Feature Table of Contents A

Rohan Mukherjee 3 Oct 27, 2021
DoriBot -Discord Chat Bot

DoriBot -Discord Chat Bot Please do not use these source files for commercial use. Be sure to mark the source. 이제 λ”μ΄μƒμ˜ 메이저 μ—…λ°μ΄νŠΈλŠ” μ—†μŠ΅λ‹ˆλ‹€. λ§ˆμ΄λ„ˆ μ—…λ°μ΄νŠΈλ“€μ€ μ‘΄μž¬ν•©λ‹ˆ

queenanna1999 0 Mar 30, 2022
A simple tool that allows you to change your default AWS CLI profile.

Select AWS Profile Select AWS Profile (slapr) is a simple tool that lets you select which AWS Profile you want to use and sets it as the default AWS p

Antoni Yanev 2 Nov 09, 2022
An incomplete add-on extension to Pyrogram, to create telegram bots a bit more easily

PyStark A star ⭐ from you means a lot An incomplete add-on extension to Pyrogram

Stark Bots 36 Dec 23, 2022
A program that automates the boring parts of completing the Daily accounting spreadsheet at Taos Ski Valley

TSV_Daily_App A program that automates the boring parts of completing the Daily accounting spreadsheet at my old job. To see how it works you will nee

Devin Beck 2 Jan 01, 2022
A corona statistics and information telegram bot.

A corona statistics and information telegram bot.

Fayas Noushad 15 Oct 21, 2022
Discord bot written in python

Discord bot created by dpshark#3004 for fun List of features/commands: [keyword] responses tools !add [respons] Adds new response to [keyword] !remove

Daniel K.Gunleiksrud 3 Dec 28, 2021
Flask extension that provides integration with Azure Storage

Flask-Azure-Storage A Flask extension that provides integration with Azure Storage Table of Contents Flask-Azure-Storage Install Usage Examples Create

Alejo Arias 17 Nov 14, 2021
Buy early bsc gems with custom gas fee, slippage, amount. Auto approve token after buy. Sell buyed token with custom gas fee, slippage, amount. And more.

Pancakeswap Sniper bot Full version of Pancakeswap sniping bot used to snipe during fair coin launches. With advanced options and a graphical user int

Jesus Crypto 204 Apr 27, 2022
Discord Panel is an AIO panel for Discord that aims to have all the needed tools related to user token interactions, as in nuking and also everything you could possibly need for raids

Discord Panel Discord Panel is an AIO panel for Discord that aims to have all the needed tools related to user token interactions, as in nuking and al

11 Mar 30, 2022
A modular bot running on python3 with anime theme and have a lot features

STINKY ROBOT Emiko Robot is a modular bot running on python3 with anime theme and have a lot features. Easiest Way To Deploy On Heroku This Bot is Cre

Riyan.rz 3 Jan 21, 2022
Easy to use Google Pub/Sub

RelΓ© makes integration with Google PubSub straightforward and easy. Motivation and Features The Publish-Subscribe pattern and specifically the Google

Mercadona 188 Jan 06, 2023
Send song lyrics to iMessage users using the Genius lyrics API

pyMessage Send song lyrics to iMessage users using the Genius lyrics API. Setup 1.) Open the main.py file, and add your API key on line 7. 2.) Install

therealkingnull 1 Jan 23, 2022
Telegram bot to provide Telegram user/group/channel information

Whois-TeLeTiPs Telegram bot to provide Telegram user/group/channel information Deployment Methods Heroku Config Vars API_ID : Telegram API_ID, get it

11 Oct 21, 2022
A PowerPacked Version Of Telegram Leech Bot With Modern Easy-To-Use Interface & UI !

FuZionX Leech Bot A Powerful Telegram Leech Bot Modded by MysterySD to directly Leech to Telegram, with Multi Direct Links Support for Enhanced Leechi

MysterySD 28 Oct 09, 2022
Project template for using aws-cdk, Chalice and React in concert, including RDS Postgresql and AWS Cognito

What is This? This repository is an opinonated project template for using aws-cdk, Chalice and React in concert. Where aws-cdk and Chalice are in Pyth

Rasmus Jones 4 Nov 07, 2022
⭐️ Pyro String Generator ⭐️ Genrate String Session Using this bot.Made by TeamUltronX πŸ”₯

⭐️ Pyro String Generator ⭐️ Genrate String Session Using this bot.Made by TeamUltronX πŸ”₯ Configs: API_HASH Get from Here. API_ID Get from Here. API_KE

TheUltronX 2 Dec 16, 2022