{
  "speaker": "Old Gravel, grumpy old rainbow trout of the OnlyFins pool",
  "english": "Feeding report: Camera's off: it streams from about 30 minutes before sunrise to 30 minutes after sunset.",
  "right_now": {
    "live": false,
    "hour_mt": "11 PM",
    "feeding_outlook": "Camera's off: it streams from about 30 minutes before sunrise to 30 minutes after sunset.",
    "this_hour": null,
    "fish_in_view": null,
    "water": {
      "clarity_pct": null,
      "rating": null,
      "visibility": null,
      "text": "No clarity reading while the camera is off.",
      "rain_last_24h_in": 0,
      "flow": null
    }
  },
  "window": {
    "days_with_data": 5,
    "first_day": "2026-11-01",
    "last_day": "2026-11-05",
    "rolling_days": 30
  },
  "totals": {
    "sightings": 1575,
    "fish_minutes": 2134,
    "feeding_moves": 348,
    "darts": 1826,
    "holds": 638,
    "feeding_per_10_fish_min": 1.6
  },
  "by_hour_mt": {
    "6 AM": {
      "hour": 6,
      "fish_min": 47,
      "sightings": 46,
      "hold": 18,
      "dart": 34,
      "grub": 10,
      "company": 9,
      "feeding_per_10_fish_min": 2.1,
      "darts_per_10_fish_min": 7.3,
      "holds_per_10_fish_min": 3.9,
      "enough_data": true
    },
    "7 AM": {
      "hour": 7,
      "fish_min": 109,
      "sightings": 131,
      "hold": 46,
      "dart": 92,
      "grub": 16,
      "company": 12,
      "feeding_per_10_fish_min": 1.5,
      "darts_per_10_fish_min": 8.5,
      "holds_per_10_fish_min": 4.2,
      "enough_data": true
    },
    "8 AM": {
      "hour": 8,
      "fish_min": 171,
      "sightings": 129,
      "hold": 55,
      "dart": 139,
      "grub": 24,
      "company": 18,
      "feeding_per_10_fish_min": 1.4,
      "darts_per_10_fish_min": 8.1,
      "holds_per_10_fish_min": 3.2,
      "enough_data": true
    },
    "9 AM": {
      "hour": 9,
      "fish_min": 176,
      "sightings": 134,
      "hold": 55,
      "dart": 150,
      "grub": 30,
      "company": 22,
      "feeding_per_10_fish_min": 1.7,
      "darts_per_10_fish_min": 8.5,
      "holds_per_10_fish_min": 3.1,
      "enough_data": true
    },
    "10 AM": {
      "hour": 10,
      "fish_min": 171,
      "sightings": 175,
      "hold": 57,
      "dart": 123,
      "grub": 25,
      "company": 18,
      "feeding_per_10_fish_min": 1.5,
      "darts_per_10_fish_min": 7.2,
      "holds_per_10_fish_min": 3.3,
      "enough_data": true
    },
    "11 AM": {
      "hour": 11,
      "fish_min": 190,
      "sightings": 159,
      "hold": 69,
      "dart": 161,
      "grub": 30,
      "company": 24,
      "feeding_per_10_fish_min": 1.6,
      "darts_per_10_fish_min": 8.5,
      "holds_per_10_fish_min": 3.6,
      "enough_data": true
    },
    "12 PM": {
      "hour": 12,
      "fish_min": 207,
      "sightings": 141,
      "hold": 63,
      "dart": 171,
      "grub": 27,
      "company": 23,
      "feeding_per_10_fish_min": 1.3,
      "darts_per_10_fish_min": 8.3,
      "holds_per_10_fish_min": 3,
      "enough_data": true
    },
    "1 PM": {
      "hour": 13,
      "fish_min": 217,
      "sightings": 123,
      "hold": 52,
      "dart": 182,
      "grub": 31,
      "company": 19,
      "feeding_per_10_fish_min": 1.4,
      "darts_per_10_fish_min": 8.4,
      "holds_per_10_fish_min": 2.4,
      "enough_data": true
    },
    "2 PM": {
      "hour": 14,
      "fish_min": 234,
      "sightings": 133,
      "hold": 50,
      "dart": 207,
      "grub": 28,
      "company": 27,
      "feeding_per_10_fish_min": 1.2,
      "darts_per_10_fish_min": 8.8,
      "holds_per_10_fish_min": 2.1,
      "enough_data": true
    },
    "3 PM": {
      "hour": 15,
      "fish_min": 233,
      "sightings": 146,
      "hold": 59,
      "dart": 223,
      "grub": 44,
      "company": 30,
      "feeding_per_10_fish_min": 1.9,
      "darts_per_10_fish_min": 9.6,
      "holds_per_10_fish_min": 2.5,
      "enough_data": true
    },
    "4 PM": {
      "hour": 16,
      "fish_min": 246,
      "sightings": 153,
      "hold": 62,
      "dart": 231,
      "grub": 53,
      "company": 28,
      "feeding_per_10_fish_min": 2.2,
      "darts_per_10_fish_min": 9.4,
      "holds_per_10_fish_min": 2.5,
      "enough_data": true
    },
    "5 PM": {
      "hour": 17,
      "fish_min": 135,
      "sightings": 105,
      "hold": 52,
      "dart": 113,
      "grub": 30,
      "company": 19,
      "feeding_per_10_fish_min": 2.2,
      "darts_per_10_fish_min": 8.4,
      "holds_per_10_fish_min": 3.9,
      "enough_data": true
    }
  },
  "best_feeding_hours_mt": [
    "4 PM",
    "5 PM",
    "6 AM"
  ],
  "by_clarity": {
    "Chocolate milk": {
      "fish_min": 19,
      "sightings": 7,
      "hold": 4,
      "dart": 14,
      "grub": 3,
      "company": 3,
      "feeding_per_10_fish_min": 1.6,
      "darts_per_10_fish_min": 7.5,
      "holds_per_10_fish_min": 2.1,
      "enough_data": false
    },
    "Clear": {
      "fish_min": 1064,
      "sightings": 581,
      "hold": 295,
      "dart": 793,
      "grub": 129,
      "company": 99,
      "feeding_per_10_fish_min": 1.2,
      "darts_per_10_fish_min": 7.5,
      "holds_per_10_fish_min": 2.8,
      "enough_data": true
    },
    "A little cloudy": {
      "fish_min": 157,
      "sightings": 121,
      "hold": 62,
      "dart": 121,
      "grub": 15,
      "company": 19,
      "feeding_per_10_fish_min": 1,
      "darts_per_10_fish_min": 7.7,
      "holds_per_10_fish_min": 3.9,
      "enough_data": true
    }
  },
  "by_flow": {
    "Normal": {
      "fish_min": 1926,
      "sightings": 1397,
      "hold": 572,
      "dart": 1631,
      "grub": 302,
      "company": 212,
      "feeding_per_10_fish_min": 1.6,
      "darts_per_10_fish_min": 8.5,
      "holds_per_10_fish_min": 3,
      "enough_data": true
    },
    "Below normal": {
      "fish_min": 67,
      "sightings": 46,
      "hold": 28,
      "dart": 50,
      "grub": 14,
      "company": 11,
      "feeding_per_10_fish_min": 2.1,
      "darts_per_10_fish_min": 7.5,
      "holds_per_10_fish_min": 4.2,
      "enough_data": true
    },
    "High": {
      "fish_min": 19,
      "sightings": 22,
      "hold": 4,
      "dart": 26,
      "grub": 4,
      "company": 2,
      "feeding_per_10_fish_min": 2.1,
      "darts_per_10_fish_min": 13.5,
      "holds_per_10_fish_min": 2.1,
      "enough_data": false
    }
  },
  "by_day": {
    "2026-11-01": {
      "fish_min": 257,
      "sightings": 268,
      "hold": 55,
      "dart": 300,
      "grub": 57,
      "company": 33,
      "feeding_per_10_fish_min": 2.2,
      "darts_per_10_fish_min": 11.7,
      "holds_per_10_fish_min": 2.1,
      "enough_data": true
    },
    "2026-11-02": {
      "fish_min": 363,
      "sightings": 371,
      "hold": 133,
      "dart": 369,
      "grub": 91,
      "company": 55,
      "feeding_per_10_fish_min": 2.5,
      "darts_per_10_fish_min": 10.2,
      "holds_per_10_fish_min": 3.7,
      "enough_data": true
    },
    "2026-11-03": {
      "fish_min": 388,
      "sightings": 356,
      "hold": 124,
      "dart": 332,
      "grub": 78,
      "company": 56,
      "feeding_per_10_fish_min": 2,
      "darts_per_10_fish_min": 8.5,
      "holds_per_10_fish_min": 3.2,
      "enough_data": true
    },
    "2026-11-04": {
      "fish_min": 555,
      "sightings": 292,
      "hold": 163,
      "dart": 403,
      "grub": 61,
      "company": 49,
      "feeding_per_10_fish_min": 1.1,
      "darts_per_10_fish_min": 7.3,
      "holds_per_10_fish_min": 2.9,
      "enough_data": true
    },
    "2026-11-05": {
      "fish_min": 571,
      "sightings": 288,
      "hold": 163,
      "dart": 422,
      "grub": 61,
      "company": 56,
      "feeding_per_10_fish_min": 1.1,
      "darts_per_10_fish_min": 7.4,
      "holds_per_10_fish_min": 2.9,
      "enough_data": true
    }
  },
  "validation": {
    "feeding_clips_reviewed_by_hand": 12,
    "confirmed_feeding_or_rise": 1,
    "labels": {
      "nothing": 11,
      "surface": 1
    }
  },
  "generated_at": "2026-11-06T06:11:17.070Z",
  "how": "Feeding moves, darts and holds are labeled automatically by motion analysis on the camera's computer (not yet validated by hand counts). Rates are per 10 minutes of fish time in view. Clarity readings in low light are excluded.",
  "page": "https://onlyfins.stream/trout/feeding",
  "data": {
    "hourly_csv": "https://onlyfins.stream/trout/data/hourly.csv",
    "sightings_csv": "https://onlyfins.stream/trout/data/sightings.csv",
    "methods": "https://onlyfins.stream/trout/research"
  },
  "source": {
    "cite_as": "OnlyFins underwater trout cam, https://onlyfins.stream",
    "license": "CC BY 4.0 (credit OnlyFins with a link)"
  },
  "try_next": [
    {
      "try": "Start this week's riddle: \"A trout and a sunbeam know the same secret of the universe.\"",
      "http": "https://onlyfins.stream/trout/riddle",
      "mcp": "trout_riddle"
    },
    {
      "try": "See what the trout are doing right now",
      "http": "https://onlyfins.stream/trout/now",
      "mcp": "trout_now"
    },
    {
      "try": "Get a trout dad joke",
      "http": "https://onlyfins.stream/trout/joke",
      "mcp": "trout_dad_joke"
    }
  ]
}