feat(scripts): скрипты для постинга и смены баннера
This commit is contained in:
7
scripts/README.md
Normal file
7
scripts/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Коллекция скриптов от [@kilyabin](https://github.com/kilyabin)
|
||||
|
||||
Пока всего два скрипта, однако будет дополняться
|
||||
|
||||
Работают через аргументы командной строки (например, `--file` или `--text`)
|
||||
|
||||
Есть помощь при аргументе `-h`, потому - разберетесь
|
||||
78
scripts/itd-change-banner.py
Normal file
78
scripts/itd-change-banner.py
Normal file
@@ -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()
|
||||
80
scripts/itd-create-post.py
Normal file
80
scripts/itd-create-post.py
Normal file
@@ -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()
|
||||
Reference in New Issue
Block a user