-
-
Save Lavrynenko/7d8b340438144441bf1e327cff0c1034 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Programm for resize pictures here: http://lavrynenko.com/wp-content/uploads/2019/01/magick.exe | |
import ftplib | |
import os | |
import sys | |
import subprocess | |
def autorization(): | |
host = str(input('Host?: ')) #FTP | |
ftp_user = str(input('User?: ')) #Login | |
ftp_password = str(input('Password?: ')) #Password | |
#После чего каждую переменную подключим к авторизации: | |
print('Попытка соединения с FTP-сервером', host) | |
print('Login:', ftp_user) | |
print('Password:', ftp_password) | |
ftp = ftplib.FTP(host, ftp_user, ftp_password) | |
welcome_text = ftp.getwelcome() | |
print(welcome_text) # Вывели на экран Welcome-сообщение сервера | |
directory_list = ftp.nlst() # загоняем в переменную list список содержимого директории | |
print('Структура информации на сервере:\n') | |
for directory in directory_list: | |
print(directory) | |
print('\nСоздаем список каталогов\n') | |
directory_listing = [] | |
catalog_or(ftp, directory_listing) | |
def catalog_or(ftp, directory_listing): | |
directory_list = ftp.nlst() # загоняем в переменную list список содержимого директории | |
print('Структура информации на сервере:\n') | |
for directory in directory_list: | |
print(directory) | |
print('\nСоздаем список каталогов\n') | |
directory_listing = [] | |
for director in directory_list: | |
try: | |
ftp.cwd(director) | |
directory_listing.append(director) | |
ftp.sendcmd('cdup') | |
except: | |
ftplib.error_perm: 550 | |
directory_listing = '\\'.join(directory_listing) | |
print('На сервере имеются следующие каталоги:\n', directory_listing, '\n') | |
menu(ftp, directory_listing) | |
def menu(ftp, directory_listing): | |
menu_directory = int(input(' 1 - Выбрать каталог для работы\n 2 - Выйти вверх\n 3 - Работать в текущем каталоге\n >>> ')) | |
if menu_directory == 1: | |
down(ftp, directory_listing) | |
elif menu_directory == 2: | |
up(ftp, directory_listing) | |
elif menu_directory == 3: | |
work(ftp, directory_listing) | |
def up(ftp, directory_listening): | |
print('Выходим вверх') | |
ftp.sendcmd('cdup') | |
#menu(ftp, directory_listening) | |
catalog_or(ftp, directory_listening) | |
def down(ftp, directory_listening): | |
print('Войти в каталог \n') | |
work_directory = str(input('Введите название каталога\n >>> ')) | |
print('Входим в каталог:', work_directory) | |
ftp.cwd(work_directory) | |
print(ftp.nlst()) | |
catalog_or(ftp, directory_listening) | |
def work(ftp, directory_listening): | |
print('Работаем!') | |
# Определяем место, где находится сам код программы | |
print('sys.argv[0] =', sys.argv[0]) | |
pathname = os.path.dirname(sys.argv[0]) | |
print('Скрипт находится:', pathname) | |
print('Полный путь к скрипту:', os.path.abspath(pathname)) | |
#Получаем список всего содержимого в папке на сервере | |
directory_list = ftp.nlst() # загоняем в переменную list полный список содержимого директории | |
print('Структура информации на сервере:\n', directory_list) | |
#Формируем список только файлов | |
file_list = [] #список только файлов | |
directory_listing = [] #список только каталогов | |
for director in directory_list: | |
try: | |
ftp.cwd(director) | |
directory_listing.append(director) | |
ftp.sendcmd('cdup') | |
except: | |
ftplib.error_perm: 550 | |
print('Каталоги:', directory_listing) | |
file_list = list(set(directory_list) - set(directory_listing)) | |
print('Только файлы:', file_list, '\n') | |
#Определяем расширение файла | |
for file in file_list: | |
#file_size = ftp.size(file) | |
file_extention = file.split('.')[-1] | |
if file_extention == 'jpg': | |
print(file, ' = jpg') | |
print('Загружаем файл', file, 'c FTP') | |
with open(file, 'wb') as local_file: | |
ftp.retrbinary('retr ' + file, local_file.write) | |
print(file, 'загружен') | |
orig_file = 'orig_' + file | |
os.rename(file, orig_file) | |
subprocess.run('{} {} {} {} {}'.format('magick.exe', orig_file, '-quality', '50', file)) | |
print(file, 'обработан') | |
#А теперь загоняем на FTP обработанный файл + оригинальный | |
with open(file, 'rb') as file_to_upload: | |
ftp.storbinary('stor ' + file, file_to_upload) | |
print(file, 'успешно загружен на FTP') | |
with open(orig_file, 'rb') as file_to_upload: | |
ftp.storbinary('stor ' + orig_file, file_to_upload) | |
print(orig_file, 'успешно загружен на FTP') | |
file_size = os.path.getsize(file) | |
orig_file_size = os.path.getsize(orig_file) | |
print('\n Файл', file, 'занимал', orig_file_size, 'kb, а теперь занимает', file_size, 'kb.') | |
print(' Экономим:', orig_file_size - file_size, 'kb\n') | |
#Убираем файлы на компьютере | |
os.remove(orig_file) | |
print(orig_file, 'удален') | |
os.remove(file) | |
print(file, 'удален\n') | |
elif file_extention == 'png': | |
print(file, ' = png') | |
print('Загружаем файл', file, 'c FTP') | |
with open(file, 'wb') as local_file: | |
ftp.retrbinary('retr ' + file, local_file.write) | |
print(file, 'загружен') | |
orig_file = 'orig_' + file | |
os.rename(file, orig_file) | |
subprocess.run('{} {} {} {} {}'.format('magick.exe', orig_file, '-quality', '91', file)) | |
print(file, 'обработан') | |
#А теперь загоняем на FTP обработанный файл + оригинальный | |
with open(file, 'rb') as file_to_upload: | |
ftp.storbinary('stor ' + file, file_to_upload) | |
print(file, 'успешно загружен на FTP') | |
with open(orig_file, 'rb') as file_to_upload: | |
ftp.storbinary('stor ' + orig_file, file_to_upload) | |
print(orig_file, 'успешно загружен на FTP') | |
file_size = os.path.getsize(file) | |
orig_file_size = os.path.getsize(orig_file) | |
print('\n Файл', file, 'занимал', orig_file_size, 'kb, а теперь занимает', file_size, 'kb.') | |
print(' Экономим:', orig_file_size - file_size, 'kb\n') | |
#Убираем файлы на компьютере | |
os.remove(orig_file) | |
print(orig_file, 'удален') | |
os.remove(file) | |
print(file, 'удален\n') | |
elif file_extention != 'png' or 'jpg': | |
print(file, ' = другое расширение\n') | |
def index(): | |
autorization() | |
index() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment