#!/bin/bash # Test script for stream.place VOD playback # Usage: ./scripts/test-playback-cli.sh set -e BASE_URL="https://vod-beta.stream.place/xrpc" VIDEO_URI="at://did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.video/3miah6keewv2n" echo "==========================================" echo "stream.place VOD Playback Test" echo "==========================================" echo "" echo "Testing: Video Playlist (Master)" echo "URL: ${BASE_URL}/place.stream.playback.getVideoPlaylist?uri=..." echo "" PLAYLIST=$(curl -s "${BASE_URL}/place.stream.playback.getVideoPlaylist?uri=$(echo "$VIDEO_URI" | jq -sRr @uri)") if echo "$PLAYLIST" | grep -q "#EXTM3U"; then echo "✓ Valid HLS playlist" else echo "✗ Invalid playlist" exit 1 fi if echo "$PLAYLIST" | grep -q "#EXT-X-STREAM-INF"; then echo "✓ Contains stream variants" else echo "✗ No stream variants found" fi TRACK_URL=$(echo "$PLAYLIST" | grep -A1 "#EXT-X-STREAM-INF" | tail -1) echo "" echo "Track URL (relative): $TRACK_URL" if [[ "$TRACK_URL" == place.stream.playback.* ]]; then FULL_TRACK_URL="${BASE_URL}/${TRACK_URL}" echo "Full Track URL: $FULL_TRACK_URL" else FULL_TRACK_URL="${BASE_URL}/${TRACK_URL}" echo "Track URL (absolute): $FULL_TRACK_URL" fi echo "" echo "Testing: Video Track Playlist (track=1)" echo "" TRACK1=$(curl -s "$FULL_TRACK_URL") if echo "$TRACK1" | grep -q "#EXT-X-PLAYLIST-TYPE:VOD"; then echo "✓ Valid VOD playlist" else echo "✗ Not a VOD playlist" fi if echo "$TRACK1" | grep -q "#EXTINF"; then SEGMENTS=$(echo "$TRACK1" | grep -c "#EXTINF") echo "✓ Contains $SEGMENTS segments" else echo "✗ No segments found" fi BLOB_URL=$(echo "$TRACK1" | grep "place.stream.playback.getVideoBlob" | head -1) echo "" echo "First segment URL: $BLOB_URL" if [[ -n "$BLOB_URL" ]]; then FULL_BLOB_URL="${BASE_URL}/${BLOB_URL}" echo "Full blob URL: $FULL_BLOB_URL" echo "" echo "Testing: Video Blob (HEAD request)" RESPONSE=$(curl -s -I "$FULL_BLOB_URL") if echo "$RESPONSE" | grep -q "HTTP/.* 200"; then echo "✓ Blob accessible" CONTENT_TYPE=$(echo "$RESPONSE" | grep -i "content-type:" | tr -d '\r') echo " Content-Type: $CONTENT_TYPE" CONTENT_LENGTH=$(echo "$RESPONSE" | grep -i "content-length:" | tr -d '\r') echo " Content-Length: $CONTENT_LENGTH" else echo "✗ Blob not accessible" echo "$RESPONSE" fi fi echo "" echo "==========================================" echo "Test complete!" echo "=========================================="