fix: stylize examples

This commit is contained in:
firedotguy
2026-02-10 15:49:06 +03:00
parent d49fb2d4cb
commit 51518ce0d7
3 changed files with 48 additions and 58 deletions

View File

@@ -1,4 +1,3 @@
# from warnings import deprecated
from uuid import UUID
from _io import BufferedReader
from typing import cast, Iterator
@@ -994,8 +993,9 @@ class Client:
return File.model_validate(res.json())
# @deprecated # Этот декоратор появился в 3.13, а наша библиотека поддерживает с 3.9
def update_banner(self, name: str) -> UserProfileUpdate:
"""Обновить банер (шорткат из upload_file + update_profile)
"""[DEPRECATED] Обновить банер (шорткат из upload_file + update_profile)
Args:
name (str): Имя файла
@@ -1006,6 +1006,19 @@ class Client:
id = self.upload_file(name, cast(BufferedReader, open(name, 'rb'))).id
return self.update_profile(banner_id=id)
def update_banner_new(self, name: str) -> tuple[File, UserProfileUpdate]:
"""Обновить банер (шорткат из upload_file + update_profile)
Args:
name (str): Имя файла
Returns:
File: Загруженный файл
UserProfileUpdate: Обновленный профиль
"""
file = self.upload_file(name, cast(BufferedReader, open(name, 'rb')))
return file, self.update_profile(banner_id=file.id)
@refresh_on_error
def restore_post(self, post_id: UUID) -> None:
"""Восстановить удалённый пост
@@ -1088,6 +1101,7 @@ class Client:
return res.json()['pin']
@refresh_on_error
def stream_notifications(self) -> Iterator[StreamConnect | StreamNotification]:
"""Слушать SSE поток уведомлений

View File

@@ -1,18 +1,19 @@
#!/usr/bin/env python3
import argparse
import os
from argparse import ArgumentParser
from os import getenv
from os.path import isfile
import sys
from itd import ITDClient
def main():
parser = argparse.ArgumentParser(
parser = ArgumentParser(
description='Upload image and set it as profile banner'
)
parser.add_argument(
'--token',
default=os.getenv('ITD_TOKEN'),
default=getenv('ITD_TOKEN'),
help='API token (or ITD_TOKEN env var)'
)
@@ -22,56 +23,33 @@ def main():
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)
quit()
file_path = args.file
if not os.path.isfile(file_path):
if not isfile(file_path):
print(f'❌ Файл не найден: {file_path}', file=sys.stderr)
sys.exit(1)
server_name = args.name or os.path.basename(file_path)
quit()
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)
data, _ = client.update_banner_new(file_path)
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}')
print(f' id: {data.id}')
print(f' filename: {data.filename}')
print(f' mime_type: {data.mime_type}')
print(f' size: {data.size} bytes')
print(f' url: {data.url}')
except Exception as e:
print('❌ Произошла ошибка:', e, file=sys.stderr)
sys.exit(1)
quit()
if __name__ == '__main__':

View File

@@ -1,18 +1,19 @@
#!/usr/bin/env python3
from uuid import UUID
from argparse import ArgumentParser
from os import getenv
from os.path import isfile, basename
import argparse
import os
import sys
from itd import ITDClient
def main():
parser = argparse.ArgumentParser(
parser = ArgumentParser(
description='Create a post on ITD via CLI'
)
parser.add_argument(
'--token',
default=os.getenv('ITD_TOKEN'),
default=getenv('ITD_TOKEN'),
help='Refresh token (or set ITD_TOKEN environment variable)'
)
@@ -35,46 +36,43 @@ def main():
args = parser.parse_args()
if not args.token:
print('❌ Token not provided (--token or ITD_TOKEN)', file=sys.stderr)
sys.exit(1)
print('❌ Token not provided (--token or ITD_TOKEN)')
quit()
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)
if not isfile(args.file):
print(f'❌ File not found: {args.file}')
quit()
server_name = args.filename or os.path.basename(args.file)
server_name = args.filename or 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)
quit()
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])
post_resp = client.create_post(content=args.text, attach_ids=[UUID(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)
print('❌ Error:', e)
quit()
if __name__ == '__main__':
main()