-
-
Save sliceofbytes/f5eab8911c761ff6760362beb17e6477 to your computer and use it in GitHub Desktop.
#Import a directory of text files as google keep notes. | |
#Text Filename is used for the title of the note. | |
import gkeepapi, os | |
username = 'username@gmail.com' | |
password = 'your app password' | |
keep = gkeepapi.Keep() | |
success = keep.login(username,password) | |
dir_path = os.path.dirname(os.path.realpath(__file__)) | |
for fn in os.listdir(dir_path): | |
if os.path.isfile(fn) and fn.endswith('.txt'): | |
with open(fn, 'r') as mf: | |
data=mf.read() | |
keep.createNote(fn.replace('.txt',''), data) | |
keep.sync(); |
Hello,
Thank you for your script!
It could be wery usefull because I have 400 text files to import but it does not work for me.
Same problem as WiliTest and alils
for fn in os.listdir(dir_path):
if os.path.isfile(os.path.join(dir_path, fn)) and fn.endswith('.txt'):
with open(os.path.join(dir_path, fn), 'r', encoding='utf-8') as mf:
data=mf.read()
print(keep.createNote(fn.replace('.txt',''), data))
print(keep.sync())
time.sleep(5)
I modify it a little so it could support my 800++ notes because Google have limit for notes per minute
anyway thank you so much!
So, here is the coding, if you want to add a label to your notes
In my case, i wanted to upload some text - songfiles (this is why you see .sng), and i wanted them splitted after the first "---" encounter.
for fn in os.listdir(dir_path):
if os.path.isfile(os.path.join(dir_path, fn)) and fn.endswith('.sng'):
with open(os.path.join(dir_path, fn), 'r', encoding='utf-16') as mf:
data = mf.read().split("---",1)[1]
pretty_fn = fn.replace('.sng','')
gnote = keep.createNote(pretty_fn, data)
label = keep.findLabel('YourLabelNameInGoogleKeep')
gnote.labels.add(label)
print(keep.sync())
for fn in os.listdir(dir_path): if os.path.isfile(os.path.join(dir_path, fn)) and fn.endswith('.txt'): with open(os.path.join(dir_path, fn), 'r', encoding='utf-8') as mf: data=mf.read() print(keep.createNote(fn.replace('.txt',''), data)) print(keep.sync()) time.sleep(5)
I modify it a little so it could support my 800++ notes because Google have limit for notes per minute
anyway thank you so much!
Have got a question - I guess i have now a problem after trying to creates notes to fast. So now i get exceptions of rate_limit_Exceeded. Did you have the same problem? was in enought for you to wait for it to disapear or did you take action, to "release" your google account?
On Google Cloud Platform it states that only 30 Notes per minute are allowed for creation, by API. Since I exceeded this number, i am restricted since more then 3 hours now to use Google Keep (Even Reading/Syncing in the app is throwing me the same excepetion as in the image down here)
You could try to increase time.sleep value
You could try to increase time.sleep value
Well, the issue is already at the login. I added the time sleep value later on to my skript, but since I can't do anything....I guess i will wait till my account is released from the usage limit
You could try to increase time.sleep value
Well, the issue is already at the login. I added the time sleep value later on to my skript, but since I can't do anything....I guess i will wait till my account is released from the usage limit
I found a blog where it states that the reset occurs after 24h. So waiting seems fine.
https://support.cloudm.io/hc/en-us/articles/360009862299-Reaching-or-exceeding-Google-API-quotas
Thank you! Worked for me without having to change anything.
I am a complete newb.. i am just trying to take all of my txt notes on my windows machine and add them to google keep.. just moved over from mac to windows..
how and where do i add that code
@joshhboss put your text and python files in the same directory, then run the .py file. You may have to pip install gkeepapi.
it works with python 3.9 kiwiz/gkeepapi#81
# This script needs to be in the same folder as the text files!
import time
import gkeepapi, os
username = '<username>' # Type your email address here
password = '<password>' # Use your app password here
keep = gkeepapi.Keep()
success = keep.login(username,password)
dir_path = os.path.dirname(os.path.realpath(__file__))
for fn in os.listdir(dir_path):
if os.path.isfile(os.path.join(dir_path, fn)) and fn.endswith('.txt'):
with open(os.path.join(dir_path, fn), 'r', encoding='utf-8', errors='ignore') as mf:
data=mf.read()
print(keep.createNote(fn.replace('.txt',''), data))
print(keep.sync())
time.sleep(5)
I tried it on Windows Subsystem for Linux through Ubuntu, and it doesn't authenticate. I tried many of the suggestions, and the outcome was the same. It works on macOS. Maybe if I installed Python 3 natively with Chocolatey, it would work.
I was facing two errors: 1) Notes not copying due to ascii 2) Notes not copying due to encoding, you can solve them as follows if you have any different encode of text files (here: UTF8) and also added a print option for logs to check which file gives the error.
import gkeepapi, os
username = 'username@gmail.com'
password = 'app password'
keep = gkeepapi.Keep()
success = keep.login(username,password)
dir_path = os.path.dirname(os.path.realpath(__file__))
for fn in os.listdir(dir_path):
print(fn)
if os.path.isfile(fn) and fn.endswith('.txt'):
with open(fn, encoding="utf8") as mf:
data=mf.read()
keep.createNote(fn.replace('.txt',''), data)
keep.sync();
@WiliTest same problem. does anyone able to authenticate with app password?