Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- from os import listdir, remove
- from random import randint
- class NoteBook:
- def cipher(string,password):
- ascii_str = [ord(i) + 0 for i in string]
- ascii_pass = [ord(i) + 0 for i in password]
- zero = 0
- end_cip = ''
- for digit in ascii_str:
- if zero == len(ascii_pass):
- zero = 0
- digit += ascii_pass[zero]
- zero += 1
- end_cip += (str(digit) + "|")
- return end_cip
- def decipher(encrypt,password):
- try:
- ascii_str = encrypt.split("|")[:-1]
- ascii_str = [int(i) + 0 for i in ascii_str]
- ascii_pass = [ord(i) + 0 for i in password]
- zero = 0
- end_decip = ''
- for digit in ascii_str:
- if zero == len(ascii_pass):
- zero = 0
- digit -= ascii_pass[zero]
- zero += 1
- end_decip += chr(digit)
- return end_decip
- except ValueError:
- return(chr(1129))
- def make():
- open("note_cache.txt","a").write("")
- def write(time,date,name,note):
- book = open("note_cache.txt","a")
- book.write(f"{time}-{date}-{name}-{note}\n")
- def clear(name_date):
- all = (open('note_cache.txt','rt').read()).split('\n')
- all = [i.split('-',3) for i in all][:-1]
- print('\n @ > Поиск обнаружил такие заметки : \n')
- number = 0
- count = 0
- for elem in all:
- for element in elem:
- if count == len(all):
- print('> > Записи для удаления не найдены!')
- input('> > Нажмите Enter чтобы вернуться в глав-меню | ')
- main()
- if name_date == element:
- print(f'>> {all.index(elem)}) : {elem[3]} ')
- number += 1
- else:
- count += 1
- if str(number)[:-1] == '0':
- input('\n> > Нажмите Enter чтобы показать больше | ')
- what = str(input('\n @ > Введите номера заметок для удаления через пробел : '))
- if what == ';start':
- main()
- else:
- try:
- what = what.split(' ')
- while '' in what:
- what.remove('')
- what = [all[int(i)] for i in what]
- except:
- print('\n> ! Ошибка! Проверьте ввод')
- input('> > Нажмите Enter чтобы вернуться в глав-меню | ')
- main()
- try:
- for indx in what:
- all.remove(indx)
- empty = []
- for i in all:
- joint = str('-'.join(i) + '\n')
- empty.append(joint)
- open('note_cache.txt','w').write(str(''.join(empty)))
- print('\n>> Записи успешно удалены!')
- input('> > Нажмите Enter чтобы вернуться в глав-меню | ')
- except:
- print('\n> ! Ошибка! Проверьте ввод')
- input('> > Нажмите Enter чтобы вернуться в глав-меню | ')
- def search():
- notes = open("note_cache.txt","rt").read()
- notes = notes.split("\n")
- notes = ([note.split('-',3) for note in notes])[:-1]
- print('\n' * 50)
- print('> 1 - Показать все заметки начиная с первой')
- print('>> 2 - Поиск по имени/дате')
- print('>>> 3 - Вернуться в стартовое меню')
- mode = str(input(' @ : '))
- if mode == '1':
- check = 0
- for lists in notes:
- try:
- print('\n' * 50)
- print(f'\n> Дата/Время: {lists[1]}({lists[0]})')
- print(f'>> Имя: {lists[2]}')
- print(f'>>> Заметка: {lists[3]}')
- check += 1
- if check != len(notes):
- input('\n\n>> Нажмите Enter чтобы перейти к следующей заметке | ')
- else:
- input('\n\n @ > Нажмите Enter чтобы вернуться на старт | ')
- except IndexError:
- print('\n\n>> Невозможно считать данные, блокнот был неправильно расшифрован')
- time.sleep(5)
- main()
- elif mode == '2':
- check = 0
- print('\n' * 50)
- print('> ! Правильный формат ввода даты: Месяц/Дата/Год/(07/15/18)')
- name_date = input('>> Введите Имя/Дату создания заметки: ')
- search_list = []
- for lists in notes:
- if name_date in lists:
- search_list.append(lists)
- if len(search_list) > 0:
- for lists in search_list:
- print('\n' * 50)
- print(f'\n> Дата/Время: {lists[1]}({lists[0]})')
- print(f'>> Имя: {lists[2]}')
- print(f'>>> Заметка: {lists[3]}')
- check += 1
- if check != len(search_list):
- input('\n\n>> Нажмите Enter чтобы перейти к следующей заметке | ')
- else:
- input('\n\n @ > Нажмите Enter чтобы вернуться на старт | ')
- main()
- else:
- print('\n>> Поиск не дал результатов!')
- input(' @ > Нажмите Enter чтобы вернуться на старт | ')
- elif mode == '3':
- main()
- else:
- print('>> Неверный ввод!')
- input(' @ > Нажмите Enter чтобы вернуться на старт | ')
- def main():
- NoteBook.make()
- check_cip = open('note_cache.txt','rt').read()
- check_cip_str = check_cip.split('|')[:-1]
- check_cip_str = ''.join(check_cip_str)
- if check_cip_str.isdigit():
- print('\n' * 50)
- print('>> Блокнот зашифрован паролем')
- password = str(input('> @ Введите пароль: '))
- decrypt = NoteBook.decipher(check_cip,password)
- try:
- open('note_cache_pass.txt','w').write(decrypt)
- except:
- remove('note_cache_pass.txt')
- print('\n>> @ !! Пароль неверен!')
- print('>> Авто-выход...')
- time.sleep(2)
- else:
- remove('note_cache_pass.txt')
- open('note_cache.txt','w').write(decrypt)
- main()
- else:
- while True:
- print("\n" * 100)
- if randint(0,100) == 22:
- print('> @not_statilko <3\n')
- print(" @ ) 1 - Доступные записи")
- print(" @ ) 2 - Добавить заметку")
- print(" @ ) 3 - Перейти в меню очистки")
- print(" @ ) 4 - Зашифровать содержимое блокнота")
- mode = str(input("\n ^ > Выберите режим: "))
- if mode == "1":
- NoteBook.search()
- elif mode == "2":
- print('\n' * 50)
- name = str(input("\n> Имя заметки: "))
- note = str(input(">> Пишите : "))
- time_now = time.strftime("%X")
- date = time.strftime("%x")
- NoteBook.write(time_now,date,name,note)
- print(">> % Заметка успешно добавлена!")
- input("\n ~ Нажмите Enter | ")
- elif mode == '3':
- print('\n' * 50)
- print('> > Введите Имя/Дату/Время записи которую вы хотите удалить')
- name_date = str(input('> > Ввод : '))
- NoteBook.clear(name_date)
- elif mode == '4':
- print('\n' * 50)
- print('>> Внимание!')
- print('>> После зашифровки блокнота его расшифровка без пароля станет невозможной!')
- print('> Пожалуйста, запомните пароль')
- password = str(input('>> @ : Вводите пароль: '))
- if len(password) < 4:
- print('\n>> ! : Пароль должен быть не меньше 4 символов, и в идеале содержать буквы')
- input(' @ > Нажмите Enter чтобы вернуться на старт | ')
- else:
- notes = open('note_cache.txt','rt').read()
- cipher = NoteBook.cipher(notes,password)
- open('note_cache.txt','w').write(cipher)
- print(f' # ! Ваш блокнот зашифрован паролем "{password}", авто-выход...')
- time.sleep(3)
- raise OSError(' All is Okay')
- else:
- pass
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement