diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..7a5dbff --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,7 @@ +# Коллекция скриптов от [@kilyabin](https://github.com/kilyabin) + +Пока всего два скрипта, однако будет дополняться + +Работают через аргументы командной строки (например, `--file` или `--text`) + +Есть помощь при аргументе `-h`, потому - разберетесь diff --git a/scripts/itd-change-banner.py b/scripts/itd-change-banner.py new file mode 100644 index 0000000..13e3463 --- /dev/null +++ b/scripts/itd-change-banner.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +import argparse +import os +import sys +from itd import ITDClient + +def main(): + parser = argparse.ArgumentParser( + description='Upload image and set it as profile banner' + ) + + parser.add_argument( + '--token', + default=os.getenv('ITD_TOKEN'), + help='API token (or ITD_TOKEN env var)' + ) + + parser.add_argument( + '--file', + required=True, + help='Path to image file' + ) + + parser.add_argument( + '--name', + help='Filename on server (default: local filename)' + ) + + args = parser.parse_args() + + if not args.token: + print('❌ Токен не задан (--token или ITD_TOKEN)', file=sys.stderr) + sys.exit(1) + + file_path = args.file + + if not os.path.isfile(file_path): + print(f'❌ Файл не найден: {file_path}', file=sys.stderr) + sys.exit(1) + + server_name = args.name or os.path.basename(file_path) + + try: + client = ITDClient(None, args.token) + + # Загружаем файл + with open(file_path, 'rb') as f: + response = client.upload_file(server_name, f) + + # Проверяем, что получили id + file_id = getattr(response, 'id', None) + if file_id is None: + print('❌ Не удалось получить id файла') + print(response) + sys.exit(1) + + # Преобразуем UUID в строку + file_id_str = str(file_id) + + # Обновляем баннер + update_resp = client.update_profile(banner_id=file_id_str) + + print('✅ Баннер обновлён!') + print('📄 Информация о файле:') + print(f' id: {file_id_str}') + print(f' filename: {response.filename}') + print(f' mime_type: {response.mime_type}') + print(f' size: {response.size} bytes') + print(f' url: {response.url}') + + except Exception as e: + print('❌ Произошла ошибка:', e, file=sys.stderr) + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/scripts/itd-create-post.py b/scripts/itd-create-post.py new file mode 100644 index 0000000..349f17e --- /dev/null +++ b/scripts/itd-create-post.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 + +import argparse +import os +import sys +from itd import ITDClient + +def main(): + parser = argparse.ArgumentParser( + description='Create a post on ITD via CLI' + ) + + parser.add_argument( + '--token', + default=os.getenv('ITD_TOKEN'), + help='Refresh token (or set ITD_TOKEN environment variable)' + ) + + parser.add_argument( + '--text', + required=True, + help='Text content of the post' + ) + + parser.add_argument( + '--file', + help='Optional file to attach to the post' + ) + + parser.add_argument( + '--filename', + help='Filename on server (if --file is used, default: local filename)' + ) + + args = parser.parse_args() + + if not args.token: + print('❌ Token not provided (--token or ITD_TOKEN)', file=sys.stderr) + sys.exit(1) + + try: + client = ITDClient(None, args.token) + + file_id = None + if args.file: + if not os.path.isfile(args.file): + print(f'❌ File not found: {args.file}', file=sys.stderr) + sys.exit(1) + + server_name = args.filename or os.path.basename(args.file) + with open(args.file, 'rb') as f: + response = client.upload_file(server_name, f) + + file_id = str(getattr(response, 'id', None)) + if not file_id: + print('❌ Failed to get file ID') + sys.exit(1) + print(f'✅ File uploaded: {response.filename} (id={file_id})') + + # Создаём пост с правильным аргументом 'content' + if file_id: + post_resp = client.create_post(content=args.text, file_ids=[file_id]) + else: + post_resp = client.create_post(content=args.text) + + # Вывод результата + print('✅ Post created successfully!') + print(f' id: {post_resp.id}') + if hasattr(post_resp, 'url'): + print(f' url: {post_resp.url}') + print(f' text: {args.text}') + if file_id: + print(f' attached file id: {file_id}') + + except Exception as e: + print('❌ Error:', e, file=sys.stderr) + sys.exit(1) + +if __name__ == '__main__': + main()