1
0
mirror of https://github.com/ihabunek/toot synced 2025-02-01 11:56:48 +01:00

Remove tags timeline command, moved to timelines tag

This commit is contained in:
Ivan Habunek 2025-01-21 12:14:05 +01:00
parent 50f05c5072
commit 2e96d6146b
No known key found for this signature in database
GPG Key ID: 01DB3DD0D824504C

View File

@ -1,15 +1,11 @@
import json as pyjson
from typing import Optional
from urllib.parse import quote
import click
from toot import api, http
from toot import api
from toot.cli import Context, cli, json_option, pass_context
from toot.cli.validators import validate_positive
from toot.entities import Status, Tag, from_dict, from_response_list, from_responses_batched
from toot.output import get_continue, green, print_tag_list, print_timeline, yellow
from toot.utils import drop_empty_values, str_bool_nullable
from toot.entities import Tag, from_dict
from toot.output import print_tag_list
@cli.group()
@ -133,105 +129,3 @@ def unfeature(ctx: Context, tag: str, json: bool):
click.echo(response.text)
else:
click.secho(f"✓ Tag #{featured_tag['name']} is no longer featured", fg="green")
@tags.command()
@click.argument("tag_name")
@click.option(
"-l",
"--local",
is_flag=True,
help="Return only local statuses",
)
@click.option(
"-r",
"--remote",
is_flag=True,
help="Return only remote statuses",
)
@click.option(
"-m",
"--media",
is_flag=True,
help="Return only statuses with media attachments",
)
@click.option(
"-n",
"--limit",
type=int,
default=20,
help="Number of results to fetch per request [max: 40]",
)
@click.option(
"-p",
"--pager",
help="Page the results, optionally define how many results to show per page",
type=int,
callback=validate_positive,
is_flag=False,
flag_value=10,
)
@click.option(
"-c",
"--clear",
help="Clear the screen before printing",
is_flag=True,
)
@json_option
@pass_context
def timeline(
ctx: Context,
tag_name: str,
local: bool,
remote: bool,
media: bool,
limit: int,
pager: Optional[int],
clear: bool,
json: bool,
):
"""View hashtag timeline"""
# TODO: Add `any`, `all`, and `none` params
# TODO: Add `max_id`, `since_id`, and `min_id` params
path = f"/api/v1/timelines/tag/{quote(tag_name)}"
params = drop_empty_values(
{
"local": str_bool_nullable(local),
"remote": str_bool_nullable(remote),
"media": str_bool_nullable(media),
"limit": limit,
}
)
if json:
response = http.get(ctx.app, ctx.user, path, params)
click.echo(response.text)
return
if pager:
first = True
printed_any = False
responses = http.get_paged(ctx.app, ctx.user, path, params)
for page in from_responses_batched(responses, Status, pager):
if not first and not get_continue():
break
if clear:
click.clear()
print_timeline(page)
first = False
printed_any = True
if not printed_any:
click.echo("No statuses found containing the given tag")
return
response = http.get(ctx.app, ctx.user, path, params)
statuses = from_response_list(Status, response)
if statuses:
print_timeline(statuses)
if len(statuses) == limit:
click.secho("There may be more results. Increase the --limit or use --pager to see the rest.", dim=True)
else:
click.echo("No statuses found containing the given tag")