fix: stylize examples
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
# from warnings import deprecated
|
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
from _io import BufferedReader
|
from _io import BufferedReader
|
||||||
from typing import cast, Iterator
|
from typing import cast, Iterator
|
||||||
@@ -994,8 +993,9 @@ class Client:
|
|||||||
|
|
||||||
return File.model_validate(res.json())
|
return File.model_validate(res.json())
|
||||||
|
|
||||||
|
# @deprecated # Этот декоратор появился в 3.13, а наша библиотека поддерживает с 3.9
|
||||||
def update_banner(self, name: str) -> UserProfileUpdate:
|
def update_banner(self, name: str) -> UserProfileUpdate:
|
||||||
"""Обновить банер (шорткат из upload_file + update_profile)
|
"""[DEPRECATED] Обновить банер (шорткат из upload_file + update_profile)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
name (str): Имя файла
|
name (str): Имя файла
|
||||||
@@ -1006,6 +1006,19 @@ class Client:
|
|||||||
id = self.upload_file(name, cast(BufferedReader, open(name, 'rb'))).id
|
id = self.upload_file(name, cast(BufferedReader, open(name, 'rb'))).id
|
||||||
return self.update_profile(banner_id=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
|
@refresh_on_error
|
||||||
def restore_post(self, post_id: UUID) -> None:
|
def restore_post(self, post_id: UUID) -> None:
|
||||||
"""Восстановить удалённый пост
|
"""Восстановить удалённый пост
|
||||||
@@ -1088,6 +1101,7 @@ class Client:
|
|||||||
|
|
||||||
return res.json()['pin']
|
return res.json()['pin']
|
||||||
|
|
||||||
|
|
||||||
@refresh_on_error
|
@refresh_on_error
|
||||||
def stream_notifications(self) -> Iterator[StreamConnect | StreamNotification]:
|
def stream_notifications(self) -> Iterator[StreamConnect | StreamNotification]:
|
||||||
"""Слушать SSE поток уведомлений
|
"""Слушать SSE поток уведомлений
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
from argparse import ArgumentParser
|
||||||
import argparse
|
from os import getenv
|
||||||
import os
|
from os.path import isfile
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from itd import ITDClient
|
from itd import ITDClient
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(
|
parser = ArgumentParser(
|
||||||
description='Upload image and set it as profile banner'
|
description='Upload image and set it as profile banner'
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--token',
|
'--token',
|
||||||
default=os.getenv('ITD_TOKEN'),
|
default=getenv('ITD_TOKEN'),
|
||||||
help='API token (or ITD_TOKEN env var)'
|
help='API token (or ITD_TOKEN env var)'
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -22,56 +23,33 @@ def main():
|
|||||||
help='Path to image file'
|
help='Path to image file'
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--name',
|
|
||||||
help='Filename on server (default: local filename)'
|
|
||||||
)
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if not args.token:
|
if not args.token:
|
||||||
print('❌ Токен не задан (--token или ITD_TOKEN)', file=sys.stderr)
|
print('❌ Токен не задан (--token или ITD_TOKEN)', file=sys.stderr)
|
||||||
sys.exit(1)
|
quit()
|
||||||
|
|
||||||
file_path = args.file
|
file_path = args.file
|
||||||
|
|
||||||
if not os.path.isfile(file_path):
|
if not isfile(file_path):
|
||||||
print(f'❌ Файл не найден: {file_path}', file=sys.stderr)
|
print(f'❌ Файл не найден: {file_path}', file=sys.stderr)
|
||||||
sys.exit(1)
|
quit()
|
||||||
|
|
||||||
server_name = args.name or os.path.basename(file_path)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client = ITDClient(None, args.token)
|
client = ITDClient(None, args.token)
|
||||||
|
data, _ = client.update_banner_new(file_path)
|
||||||
# Загружаем файл
|
|
||||||
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('📄 Информация о файле:')
|
print('📄 Информация о файле:')
|
||||||
print(f' id: {file_id_str}')
|
print(f' id: {data.id}')
|
||||||
print(f' filename: {response.filename}')
|
print(f' filename: {data.filename}')
|
||||||
print(f' mime_type: {response.mime_type}')
|
print(f' mime_type: {data.mime_type}')
|
||||||
print(f' size: {response.size} bytes')
|
print(f' size: {data.size} bytes')
|
||||||
print(f' url: {response.url}')
|
print(f' url: {data.url}')
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print('❌ Произошла ошибка:', e, file=sys.stderr)
|
print('❌ Произошла ошибка:', e, file=sys.stderr)
|
||||||
sys.exit(1)
|
quit()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
#!/usr/bin/env python3
|
#!/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
|
from itd import ITDClient
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(
|
parser = ArgumentParser(
|
||||||
description='Create a post on ITD via CLI'
|
description='Create a post on ITD via CLI'
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--token',
|
'--token',
|
||||||
default=os.getenv('ITD_TOKEN'),
|
default=getenv('ITD_TOKEN'),
|
||||||
help='Refresh token (or set ITD_TOKEN environment variable)'
|
help='Refresh token (or set ITD_TOKEN environment variable)'
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -35,46 +36,43 @@ def main():
|
|||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if not args.token:
|
if not args.token:
|
||||||
print('❌ Token not provided (--token or ITD_TOKEN)', file=sys.stderr)
|
print('❌ Token not provided (--token or ITD_TOKEN)')
|
||||||
sys.exit(1)
|
quit()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client = ITDClient(None, args.token)
|
client = ITDClient(None, args.token)
|
||||||
|
|
||||||
file_id = None
|
file_id = None
|
||||||
if args.file:
|
if args.file:
|
||||||
if not os.path.isfile(args.file):
|
if not isfile(args.file):
|
||||||
print(f'❌ File not found: {args.file}', file=sys.stderr)
|
print(f'❌ File not found: {args.file}')
|
||||||
sys.exit(1)
|
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:
|
with open(args.file, 'rb') as f:
|
||||||
response = client.upload_file(server_name, f)
|
response = client.upload_file(server_name, f)
|
||||||
|
|
||||||
file_id = str(getattr(response, 'id', None))
|
file_id = str(getattr(response, 'id', None))
|
||||||
if not file_id:
|
if not file_id:
|
||||||
print('❌ Failed to get file ID')
|
print('❌ Failed to get file ID')
|
||||||
sys.exit(1)
|
quit()
|
||||||
print(f'✅ File uploaded: {response.filename} (id={file_id})')
|
print(f'✅ File uploaded: {response.filename} (id={file_id})')
|
||||||
|
|
||||||
# Создаём пост с правильным аргументом 'content'
|
# Создаём пост с правильным аргументом 'content'
|
||||||
if file_id:
|
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:
|
else:
|
||||||
post_resp = client.create_post(content=args.text)
|
post_resp = client.create_post(content=args.text)
|
||||||
|
|
||||||
# Вывод результата
|
|
||||||
print('✅ Post created successfully!')
|
print('✅ Post created successfully!')
|
||||||
print(f' id: {post_resp.id}')
|
print(f' id: {post_resp.id}')
|
||||||
if hasattr(post_resp, 'url'):
|
|
||||||
print(f' url: {post_resp.url}')
|
|
||||||
print(f' text: {args.text}')
|
print(f' text: {args.text}')
|
||||||
if file_id:
|
if file_id:
|
||||||
print(f' attached file id: {file_id}')
|
print(f' attached file id: {file_id}')
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print('❌ Error:', e, file=sys.stderr)
|
print('❌ Error:', e)
|
||||||
sys.exit(1)
|
quit()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user