Skip to content

Commit

Permalink
Remove tags timeline command, moved to timelines tag
Browse files Browse the repository at this point in the history
  • Loading branch information
ihabunek committed Jan 21, 2025
1 parent 50f05c5 commit 2e96d61
Showing 1 changed file with 3 additions and 109 deletions.
112 changes: 3 additions & 109 deletions toot/cli/tags.py
Original file line number Diff line number Diff line change
@@ -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()
Expand Down Expand Up @@ -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")

0 comments on commit 2e96d61

Please # to comment.