Skip to main content
Glama
analytics_examples.py14.1 kB
#!/usr/bin/env python3 """ Kaltura Analytics Examples - Comprehensive guide to all report types This file demonstrates how to use every available analytics report type through the Kaltura MCP (Model Context Protocol) server. """ import asyncio import json from datetime import datetime, timedelta # Example configuration ENTRY_ID = "1_abc123" # Replace with your video entry ID FROM_DATE = (datetime.now() - timedelta(days=30)).strftime("%Y-%m-%d") TO_DATE = datetime.now().strftime("%Y-%m-%d") # ============================================================================ # CONTENT PERFORMANCE EXAMPLES # ============================================================================ async def example_engagement_timeline(): """ USER_ENGAGEMENT_TIMELINE (34) - Find most engaging video segments This report shows engagement throughout the video timeline, revealing: - Which parts get watched most - Which segments get replayed - Where viewers skip ahead """ request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "engagement_timeline", "entry_id": ENTRY_ID, "limit": 100, }, } # Expected response includes timeline data with: # - position: timestamp in video (seconds) # - views: number of views at this position # - replays: how many times this segment was replayed # - completion_rate: % of viewers who reached this point print("Finding most engaging moments in your video...") return request async def example_content_dropoff(): """ CONTENT_DROPOFF (2) - Analyze where viewers stop watching Identifies problematic sections where viewers leave """ request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "content_dropoff", "entry_id": ENTRY_ID, }, } # Response shows retention curve with drop-off points return request async def example_content_interactions(): """ CONTENT_INTERACTIONS (3) - Track user interactions Measures engagement features usage """ request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "content_interactions", "entry_id": ENTRY_ID, }, } # Shows likes, shares, comments, downloads per video return request # ============================================================================ # USER ANALYTICS EXAMPLES # ============================================================================ async def example_user_engagement(): """ USER_ENGAGEMENT (11) - Overall user behavior patterns """ request = { "tool": "get_analytics", "arguments": {"from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "user_engagement"}, } # Returns user engagement metrics across all content return request async def example_unique_users(): """ UNIQUE_USERS_PLAY (35) - Unique viewer analytics """ request = { "tool": "get_analytics", "arguments": {"from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "unique_users"}, } # Shows unique viewer counts and growth trends return request # ============================================================================ # GEOGRAPHIC ANALYTICS EXAMPLES # ============================================================================ async def example_geographic_hierarchy(): """ Geographic reports at different granularity levels """ # Country level country_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "geographic_country", "limit": 50, }, } # Region/State level region_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "geographic_region", "limit": 50, }, } # City level city_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "geographic_city", "limit": 100, }, } return [country_request, region_request, city_request] # ============================================================================ # PLATFORM & TECHNOLOGY EXAMPLES # ============================================================================ async def example_platform_analysis(): """ Comprehensive platform and technology breakdown """ requests = [] # Device platforms (mobile, desktop, TV) requests.append( { "tool": "get_analytics", "arguments": {"from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "platforms"}, } ) # Operating systems with versions requests.append( { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "operating_system", }, } ) # OS families (Windows vs Mac vs Linux) requests.append( { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "operating_system_families", }, } ) # Browser breakdown requests.append( { "tool": "get_analytics", "arguments": {"from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "browsers"}, } ) return requests # ============================================================================ # ADVANCED ANALYTICS EXAMPLES # ============================================================================ async def example_playback_behavior(): """ Advanced playback analytics """ # Playback speed preferences speed_request = { "tool": "get_analytics", "arguments": {"from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "playback_rate"}, } # Player control usage controls_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "player_interactions", }, } return [speed_request, controls_request] async def example_traffic_sources(): """ TOP_SOURCES (41) - Where your traffic comes from """ request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "sources", "limit": 25, }, } # Shows referrer domains, direct traffic, search engines return request # ============================================================================ # CREATOR & CONTRIBUTOR EXAMPLES # ============================================================================ async def example_creator_analytics(): """ Content creator performance metrics """ # Top creators by performance creators_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "creators", "limit": 20, }, } # Top content by specific creator creator_content_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "content_creator", "limit": 50, }, } return [creators_request, creator_content_request] # ============================================================================ # USAGE & INFRASTRUCTURE EXAMPLES # ============================================================================ async def example_usage_reports(): """ Infrastructure and usage analytics """ # Overall account usage usage_request = { "tool": "get_analytics", "arguments": {"from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "partner_usage"}, } # CDN bandwidth details cdn_request = { "tool": "get_analytics", "arguments": {"from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "cdn_bandwidth"}, } # Per-entry resource usage entry_usage_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "entry_usage", "entry_id": ENTRY_ID, }, } return [usage_request, cdn_request, entry_usage_request] # ============================================================================ # CATEGORY-BASED FILTERING EXAMPLE # ============================================================================ async def example_category_analytics(): """ Filter any report by category """ request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "content", "categories": "Training>Sales", # Full category path "limit": 20, }, } # Returns analytics filtered to specific category return request # ============================================================================ # INTERACTIVE VIDEO EXAMPLES # ============================================================================ async def example_interactive_video(): """ Interactive video element analytics """ # Overall interactive video metrics interactive_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "interactive_video", "entry_id": ENTRY_ID, }, } # Most visited interactive nodes/hotspots nodes_request = { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "interactive_nodes", "entry_id": ENTRY_ID, }, } return [interactive_request, nodes_request] # ============================================================================ # COMBINED ANALYSIS EXAMPLE # ============================================================================ async def comprehensive_video_analysis(entry_id: str): """ Complete video performance analysis combining multiple reports """ analysis_requests = [] # 1. Overall performance analysis_requests.append( { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "content", "entry_id": entry_id, }, } ) # 2. Engagement timeline - find most engaging moments analysis_requests.append( { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "engagement_timeline", "entry_id": entry_id, }, } ) # 3. Drop-off analysis analysis_requests.append( { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "content_dropoff", "entry_id": entry_id, }, } ) # 4. Geographic distribution analysis_requests.append( { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "geographic_country", "entry_id": entry_id, }, } ) # 5. Platform breakdown analysis_requests.append( { "tool": "get_analytics", "arguments": { "from_date": FROM_DATE, "to_date": TO_DATE, "report_type": "platforms", "entry_id": entry_id, }, } ) return analysis_requests # ============================================================================ # MAIN EXECUTION # ============================================================================ async def main(): """ Run example analytics requests """ print("Kaltura Analytics Examples") print("=" * 50) # Example 1: Find most engaging video segments print("\n1. Engagement Timeline Analysis:") timeline_request = await example_engagement_timeline() print(json.dumps(timeline_request, indent=2)) # Example 2: Geographic analysis print("\n2. Geographic Analytics:") geo_requests = await example_geographic_hierarchy() for req in geo_requests: print(f" - {req['arguments']['report_type']}") # Example 3: Platform analysis print("\n3. Platform & Technology:") platform_requests = await example_platform_analysis() print(f" - Analyzing {len(platform_requests)} platform dimensions") # Example 4: Comprehensive video analysis print("\n4. Complete Video Analysis:") video_analysis = await comprehensive_video_analysis(ENTRY_ID) print(f" - Running {len(video_analysis)} reports for entry {ENTRY_ID}") print("\n" + "=" * 50) print("To run these examples through MCP:") print("1. Start the Kaltura MCP server") print("2. Send these requests through your MCP client") print("3. Analyze the returned JSON data") if __name__ == "__main__": asyncio.run(main())

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zoharbabin/kaltura-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server