change user_commands.py to media_commands.py and add new user_commands.py
This commit is contained in:
parent
e3baca0fa1
commit
abafe60058
3 changed files with 63 additions and 26 deletions
|
@ -1,8 +1,9 @@
|
|||
import click
|
||||
from synclean.api.synapse import SynapseApiClient
|
||||
from synclean.cli.user_commands import user
|
||||
from synclean.config.settings import SettingsManager
|
||||
from synclean.cli.room_commands import room
|
||||
from synclean.cli.user_commands import user
|
||||
from synclean.cli.media_commands import media
|
||||
from synclean.models.config import SynapseConfig
|
||||
|
||||
pass_api = click.make_pass_decorator(SynapseApiClient)
|
||||
|
@ -41,4 +42,5 @@ def settings():
|
|||
|
||||
|
||||
cli.add_command(room)
|
||||
cli.add_command(user)
|
||||
cli.add_command(media)
|
||||
cli.add_command(user)
|
49
src/synclean/cli/media_commands.py
Normal file
49
src/synclean/cli/media_commands.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
from typing import Optional
|
||||
import click
|
||||
from synclean.api.synapse import SynapseApiClient
|
||||
from synclean.api.users import UserAPI
|
||||
from synclean.service.user_service import UserService
|
||||
|
||||
pass_api = click.make_pass_decorator(SynapseApiClient)
|
||||
|
||||
|
||||
media = click.Group(name="media", help="Media commands.")
|
||||
|
||||
|
||||
@media.command("ls")
|
||||
@click.option("--limit", "-l", default=10, help="Number of users to list.")
|
||||
@click.option("--offset", "-o", default=0, help="Number of the room to start from.")
|
||||
@click.option("--search", "-s", help="Search term to filter by.")
|
||||
@click.option("--order-by", "-O",
|
||||
type=click.Choice(["user_id", "display_name", "media_length", "media_count"]),
|
||||
default="media_length", help="Field to order result by.")
|
||||
@click.option("--direction", "-d",
|
||||
type=click.Choice(["f", "b"]),
|
||||
default="b", help="Direction to order result by. (f=forward, b=backward)")
|
||||
@pass_api
|
||||
def media_ls(
|
||||
api: SynapseApiClient,
|
||||
limit: int,
|
||||
offset: int,
|
||||
search: Optional[str],
|
||||
order_by: str,
|
||||
direction: str
|
||||
):
|
||||
users_api = UserAPI(api)
|
||||
user_service = UserService(users_api)
|
||||
|
||||
while True:
|
||||
users = user_service.get_users_list_by_media(limit, offset, order_by, direction, search)
|
||||
if users:
|
||||
for u in users.users:
|
||||
click.echo(f"Display name: {u.display_name}")
|
||||
click.echo(f"Media count: {u.media_count}")
|
||||
click.echo(f"Media length: {u.media_length_mb()}MB")
|
||||
click.echo(f"User ID: {u.user_id}")
|
||||
click.echo("=" * 40)
|
||||
else:
|
||||
click.echo("No users found.")
|
||||
|
||||
offset += limit
|
||||
if not click.confirm("Show more users?", default=True):
|
||||
break
|
|
@ -2,22 +2,20 @@ from typing import Optional
|
|||
import click
|
||||
from synclean.api.synapse import SynapseApiClient
|
||||
from synclean.api.users import UserAPI
|
||||
from synclean.models.enums import UserOrderBy, Direction
|
||||
from synclean.models.pagination import UserPaginationParams
|
||||
from synclean.service.user_service import UserService
|
||||
|
||||
pass_api = click.make_pass_decorator(SynapseApiClient)
|
||||
|
||||
|
||||
user = click.Group(name="user", help="User commands.")
|
||||
|
||||
|
||||
@user.command("ls")
|
||||
@click.option("--limit", "-l", default=10, help="Number of users to list.")
|
||||
@click.option("--offset", "-o", default=0, help="Number of the room to start from.")
|
||||
@click.option("--search", "-s", help="Search term to filter by.")
|
||||
@click.option("--limit", "-l", default=10, help="Number of users to display per page.")
|
||||
@click.option("--offset", "-o", default=0, help="Number of the users to start from.")
|
||||
@click.option("--search", "-s", help="Search term to filter users by.")
|
||||
@click.option("--order-by", "-O",
|
||||
type=click.Choice(["user_id", "display_name", "media_length", "media_count"]),
|
||||
default="media_length", help="Field to order result by.")
|
||||
type=click.Choice(["name", "display_name", "media_length", "media_count"]),
|
||||
default="name", help="Field to order result by.")
|
||||
@click.option("--direction", "-d",
|
||||
type=click.Choice(["f", "b"]),
|
||||
default="b", help="Direction to order result by. (f=forward, b=backward)")
|
||||
|
@ -30,26 +28,14 @@ def user_ls(
|
|||
order_by: str,
|
||||
direction: str
|
||||
):
|
||||
|
||||
order_by_enum = UserOrderBy(order_by)
|
||||
direction_enum = Direction(direction)
|
||||
|
||||
users_api = UserAPI(api)
|
||||
user_api = UserAPI(api)
|
||||
user_service = UserService(user_api)
|
||||
|
||||
while True:
|
||||
pagination_params = UserPaginationParams(limit, offset, order_by_enum, direction_enum, search)
|
||||
|
||||
users = users_api.get_users_list_by_media(pagination_params)
|
||||
|
||||
users = user_service.get_users_list(limit, offset, order_by, direction, search)
|
||||
if users:
|
||||
for u in users.users:
|
||||
click.echo(f"Display name: {u.display_name}")
|
||||
click.echo(f"Media count: {u.media_count}")
|
||||
click.echo(f"Media length: {u.media_length_mb()}MB")
|
||||
click.echo(f"User ID: {u.user_id}")
|
||||
click.echo("=" * 40)
|
||||
else:
|
||||
click.echo("No users found.")
|
||||
click.echo(u)
|
||||
|
||||
offset += limit
|
||||
if not click.confirm("Show more users?", default=True):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue