Ejercicio 9a
This commit is contained in:
parent
32e4f0d169
commit
ffd1ce42ba
|
@ -0,0 +1,90 @@
|
|||
"""
|
||||
Project: Extending the Multi-Clipboard
|
||||
Page 229
|
||||
"""
|
||||
|
||||
import sys
|
||||
import shelve
|
||||
import pyperclip
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def help():
|
||||
script = Path(__file__).name
|
||||
print(
|
||||
f"""
|
||||
{script} saves and loads pieces of text to the clipboard.
|
||||
Usage: python {script} save <key> Saves clipboard to keyword
|
||||
python {script} <key> Loads keyword to clipboard
|
||||
python {script} list Loads all keywords to clipboard
|
||||
python {script} delete <key> Deletes keyword
|
||||
python {script} wipe Deletes all keywords
|
||||
python {script} help Prints this help
|
||||
""".strip()
|
||||
)
|
||||
|
||||
|
||||
def save(key, data):
|
||||
if key in data.keys():
|
||||
print(f"ERROR: '{key}' ya existe")
|
||||
sys.exit(1)
|
||||
else:
|
||||
data[key] = pyperclip.paste()
|
||||
|
||||
|
||||
def delete(key, data):
|
||||
if key in data.keys():
|
||||
print(f"INFO: '{key}' se ha eliminado")
|
||||
del data[key]
|
||||
else:
|
||||
print(f"ERROR: '{key}' no existe")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def get(key, data):
|
||||
if key in data.keys():
|
||||
pyperclip.copy(data[key])
|
||||
else:
|
||||
print(f"ERROR: '{key}' no existe")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def ls(data):
|
||||
for key, val in data.items():
|
||||
txt = val.strip().split("\n")[0]
|
||||
if len(txt) > 100:
|
||||
txt = f"{txt[:97]}..."
|
||||
print(f"{key} -> {txt}")
|
||||
|
||||
|
||||
def wipe(data):
|
||||
for key in data.keys():
|
||||
delete(key, data)
|
||||
|
||||
|
||||
data = shelve.open("mcb")
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
print("ERROR: al menos un argumento es necesario")
|
||||
sys.exit(1)
|
||||
|
||||
match sys.argv[1]:
|
||||
case "save" | "delete":
|
||||
if len(sys.argv) == 2:
|
||||
print("ERROR: una palabra clave es necesaria")
|
||||
sys.exit(1)
|
||||
for key in sys.argv[2:]:
|
||||
if sys.argv[1] == "save":
|
||||
save(key, data)
|
||||
else:
|
||||
delete(key, data)
|
||||
case "list":
|
||||
ls(data)
|
||||
case "wipe":
|
||||
wipe(data)
|
||||
case "help":
|
||||
help()
|
||||
case key:
|
||||
get(key, data)
|
||||
|
||||
data.close()
|
Binary file not shown.
Loading…
Reference in New Issue