Skip to main content

Package animeshon.tracker.v1alpha1

Index

TrackerService

GetTracker

| rpc GetTracker(GetTrackerRequest) Tracker

Get a tracker by its unique identifier.

To fetch a tracker by the resource, use ListTrackers instead with an appropriate filter. Example: filter = "resource:animes/1245678". |

ListTrackers
rpc ListTrackers(ListTrackersRequest) ListTrackersResponse

TODO: add documentation about supported filters.
CreateTracker
rpc CreateTracker(CreateTrackerRequest) Tracker

UpdateTracker
rpc UpdateTracker(UpdateTrackerRequest) Tracker

DeleteTracker
rpc DeleteTracker(DeleteTrackerRequest) .google.protobuf.Empty

ImportTrackers
rpc ImportTrackers(ImportTrackersRequest) .google.longrunning.Operation

ExportTrackers
rpc ExportTrackers(ExportTrackersRequest) .google.longrunning.Operation

CreateActivity
rpc CreateActivity(CreateActivityRequest) Activity

DeleteActivity
rpc DeleteActivity(DeleteActivityRequest) .google.protobuf.Empty

Activity

Activities track the progress of a user related to readable or watchable resources such as light novel and graphic novel chapters, and anime episodes.

Activities are immutable and store meta information such as when the activity started, when it ended, from where the progress started and where it stopped.

An example of activities might be a user watching on Netflix the Episode N of the Anime XYZ from minute 5:47 to minute 15:32 on the 7th of July at 8:35 PM.

In this specific case a Chrome extension might automatically create a new activity every minute until the user pauses the video or closes the tab.

The information collected allows the service to let the user know when was the last "checkpoint" recorded, enabling the user to resume the episode at the correct time on a different platform (i.e. continue from where I left). Additionally, the information collected is useful to generate histograms and to idenitify popular scenes within an episode (we all know Pornhub has an identical feature already).

There is no limit to the number of activities a user might generate and some activities are automatically registered from Animeshon itself, for example when a user is reading a graph novel directly on our platform. Activities can also be repeated multiple times for the same range (e.g. if a user rewatches the same scene in an episode 5 times).

Whenever an activity is created that marks the end of a resource, its parent tracker is updated to include it in the list of completed resource.

FieldDescription
name string
The id of the activity.
resource string
The content whose progress is being tracked.
platform string
The platform that the user used to consume the resource.
from int32
Where the activity started within the resource. This value represents the time in seconds within an episode or the page number within a graphic novel or light novel chapter.
to int32
Where the activity ended within the resource. This value represents the time in seconds within an episode or the page number within a graphic novel or light novel chapter.
start_time google.protobuf.Timestamp
When this activity started.
end_time google.protobuf.Timestamp
When this activity ended.

Audience

TODO: this is represented as a group in authorization. TODO: who should be the owner of an audience? the user who created it?

FieldDescription
name string
The id of the audience.
membersrepeated string
The members of this audience.

CreateActivityRequest

FieldDescription
parent string
The parent this tracker belongs to.
activity Activity
The activity to create.

CreateTrackerRequest

FieldDescription
parent string
The parent this tracker belongs to.
tracker Tracker
The tracker to create.

DeleteActivityRequest

FieldDescription
name string
The name of the activity to delete.

DeleteTrackerRequest

FieldDescription
name string
The name of the tracker to delete.

ExportTrackersRequest

Selecting what provider we want to export to

FieldDescription
parent string
provider Provider

ExportTrackersResponse

GetTrackerRequest

FieldDescription
name string
The name of the tracker to retrieve.

ImportTrackersRequest

Selecting what provider we want to import from

FieldDescription
parent string
provider Provider

ImportTrackersResponse

TODO(christian-roggia): this is a workaround to solve the issue of GAPIC CLI where broken code is generated if google.protobuf.Empty is used in the response_type of longrunning operations.

ListTrackersRequest

FieldDescription
parent string
The user this tracker belongs to.
page_size int32
If unspecified, server will pick an appropriate default.
page_token string
The value returned from the previous call.
filter string
A filter to be applied to results.

ListTrackersResponse

FieldDescription
trackersrepeated Tracker
The list of trackers.
next_page_token string
A token to retrieve next page of results.

OperationMetadata

Represents the metadata of the long-running operation.

FieldDescription
create_time google.protobuf.Timestamp
Output only. The time the operation was created.
end_time google.protobuf.Timestamp
Output only. The time the operation finished running.
target string
Output only. Server-defined resource path for the target of the operation.
verb string
Output only. Name of the verb executed by the operation.
status_message string
Output only. Human-readable status of the operation, if any.
requested_cancellation bool
Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to Code.CANCELLED.
api_version string
Output only. API version used to start the operation.
progress_percentage int32
Output only.

Tracker

A tracker tracks the progress of one or more users related to releasable resources such as animes, graphic novels, light novels, and visual novels.

It is important to notice that users cannot watch an anime from a technical perspective but rather they can watch one of its releases such as its pysical DVD copy or its broadcast on Funimation. Nevertheless, for a better user experience a releasable content is considered completed whenever a user watched, played, or read all of its "regular" episodes, chapters, or releases. This means that "recaps" and "specials" are ultimately ignored.

Animes and novels are easier to track as they have a countable and defined amount of resources that can be consumed (episodes and chapters). Their progress is therefore automatically updated whenever a new user activity is generated.

Visual novels and video games in general do not always have a clear progress and therefore must be updated manually by the user.

A tracker accounts only for the overall progress on a releasable content, this means that it won't provide any information about rewatches.

Additionally, trackers can be shared among multiple users thorough audiences, this is useful whenever a user is, for example, watching an anime together with a group of friends and wants to keep track of the progress separately from his/her own personal progress or from the progress on the same resource with another group of friends (i.e. audience).

The progress of audience trackers affects the personal progress, that is whenever new resources are consumed by an audience the personal tracker of each member belonging to that audience will be updated automatically as well. This behavior makes sense as a group of people watching the Episode N of the Anime XYZ also means that each member of the group also watched the episode and therefore their collective personal progress changed.

FieldDescription
name string
The id of the tracker.
resource string
The content whose progress is being tracked.
start_time google.protobuf.Timestamp
When the progress started.
end_time google.protobuf.Timestamp
When the progress ended.
completed_resourcesrepeated string
The list of completed sub-resources (e.g episodes or chapters).
progress_percentage google.protobuf.FloatValue
The percentage of progress from 0 to 100. A null value means the value was not manually defined and therefore the percentage should be calculated on-the-fly.
state State
The progress state of the tracker.

UpdateTrackerRequest

FieldDescription
tracker Tracker
The tracker to update.
update_mask google.protobuf.FieldMask
The field mask to determine which fields are to be updated. If empty, the server will assume all fields are to be updated.

Provider

NameDescription
PROVIDER_UNSPECIFIEDNo description.
MYANIMELISTNo description.
MANGADEXNo description.
ANILISTNo description.
ANIDBNo description.
MANGAUPDATESNo description.
VNDBNo description.

State

NameDescription
STATE_UNSPECIFIEDNo description.
IN_PROGRESSThe consumption of the media is still in progress.
COMPLETEDThe consumption of the media has been completed.
ON_HOLDThe consumption of the media is on hold.