mirror of
https://github.com/ihabunek/toot
synced 2025-02-01 20:06:56 +01:00
Remove tags timeline command, moved to timelines tag
This commit is contained in:
parent
50f05c5072
commit
2e96d6146b
112
toot/cli/tags.py
112
toot/cli/tags.py
@ -1,15 +1,11 @@
|
|||||||
import json as pyjson
|
import json as pyjson
|
||||||
from typing import Optional
|
|
||||||
from urllib.parse import quote
|
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
|
||||||
from toot import api, http
|
from toot import api
|
||||||
from toot.cli import Context, cli, json_option, pass_context
|
from toot.cli import Context, cli, json_option, pass_context
|
||||||
from toot.cli.validators import validate_positive
|
from toot.entities import Tag, from_dict
|
||||||
from toot.entities import Status, Tag, from_dict, from_response_list, from_responses_batched
|
from toot.output import print_tag_list
|
||||||
from toot.output import get_continue, green, print_tag_list, print_timeline, yellow
|
|
||||||
from toot.utils import drop_empty_values, str_bool_nullable
|
|
||||||
|
|
||||||
|
|
||||||
@cli.group()
|
@cli.group()
|
||||||
@ -133,105 +129,3 @@ def unfeature(ctx: Context, tag: str, json: bool):
|
|||||||
click.echo(response.text)
|
click.echo(response.text)
|
||||||
else:
|
else:
|
||||||
click.secho(f"✓ Tag #{featured_tag['name']} is no longer featured", fg="green")
|
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")
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user