O Stats

O Stats

A comprehensive statistics plugin for Stash that tracks and visualizes your viewing activity and orgasm data.

Installation

  1. Add https://sanjiswe.github.io/plugins/main/index.ymlas as source and add O Stats
  2. Make sure the latest version of Python is installed and the Python Executable Path is set in Stash system settings

Features

:bar_chart: Key Statistics

Track your daily activity with at-a-glance stats:

  • O’s Today - Current day count with raindrop emoji :sweat_droplets:

  • Record Day - Your highest O count on a single day with date

  • Streak - Consecutive days with activity (:fire: active, :headstone: at risk)

  • Hover to see your highest streak ever with date range

  • Watch Time Today - Total viewing duration for the current day

  • Avg min/O - Average time between O’s or Mean Jerk Time :raising_hands:

:bullseye: Scene Records

Quick access to your most relevant scenes:

  • Most O’d Scene - Your most frequently marked scene

  • Longest Watched - Scene with most total watch time

  • Most Recent O - Latest marked scene

  • Oldest O - First marked scene

:chart_increasing: Interactive Charts

Visualize your activity over time:

  • Toggle between Week, Month, and Year views

  • Navigate through historical data

  • Click any bar to view detailed “On This Day” information

:date: On This Day

Detailed timeline of activity for any selected day:

  • Click any chart bar to load that day’s timeline

  • Daily stats - O count, videos watched (unique), avg time between O’s

  • Interactive timeline - Hover over dots to see scene thumbnails

Watch Time Tracking

O Stats automatically tracks your viewing time per day:

  • Starts tracking when you play a video

  • Saves progress every 5-10 seconds

  • Stores data in watch_data.json

A quick note: Time tracking only begins after the plugin is installed as stashapp
currently does not have any per day tracking

Data Export

Use the Export Watch Time Data button to download your complete watch history as JSON for backup or analysis.

10 Likes

I like this idea! Would it be possible to omit O’s that don’t have a date associated with them? I’ve been using Stash since before it started timestamping O’s, and the plugin seems to put all of them in one day (I’m guessing it’s the day that I updated Stash to a version that has timestamped O’s).

1 Like

Oh yeah! I forgot that it didn’t count the dates before. I’ll update that shortly.

1 Like

Great Work, thank you

1 Like

Hey all, I just updated a lot and hopefully fixed the issue with the O’s from before they had dates added to them. I also added watch charts with accurate tracking compared to before which was a rough estimate! Please let me know if you find any bugs or have any suggestions.

Also a note for the watch time charts, they will only show new data as it can’t pull anything from before!

hello

for me, the watch time started to work only when i have installed the plugin. Is it normal ?

Yes that is normal! Since stashapp doesn’t keep records on how long you’ve watched on a certain day I made my own solution that listens in on when stashapp updates a videos watch time and saves the same amount to a certain day and stores it in local storage, under the graph you can see the buttons to backup your watch time and import it as well. But that means that it will only start recording any new activity once you install the plugin.

I’ve added one more update which stores the watch data locally in a json file instead of localstorage meaning the watch history is saved between all devices! If you export your current watch history, then update the plugin and re-import it will sort it all out automatically.

After I’ve added https://github.com/sanjiswe/stash_ostats/tree/main/ostats to the community plugin section in Stash I get the following error:

listing remote packages: reading package list: yaml: line 35: mapping values are not allowed in this context

It can only be installed manually.

I’ve updated the plugin to be installed through adding https://sanjiswe.github.io/plugins/main/index.yml as source! Make sure you have CommunityScriptsUILibrary installed too.

its possibl to integrate the image of “Scene with Most O’s” “Longest Play Duration” “Most Recent O” to work to “SFW plugin”

this is cool! excited to see what other sats or metrics we can pull

1 Like

It takes really long time to load all the metrics, several mins for a large library, is it normal?

Thank you for letting me know. I haven’t had the chance to test it myself with a huge library since my own stats are only a month long, but I will look into this.

Thank you! also see if you can add a separate O Stat button next to Stats, as Ostat has links and grphic which is nice and deserve a separate page IMHO, will also give you more flexibility to add feature as you go along.

That’s a good idea, i’ll look into that too! Definitely better to just have everything in one place.

2 Likes

@sanjiswe please do not remove the table at the top of the post. It’s there to provide a clear summary at a glace.

Sorry that was my fault! I just copied and pasted the readme from github and didn’t realize I removed it.

1 Like