MCPcopy Index your code
hub / github.com/Threadfin/Threadfin / generateStrmFiles

Function generateStrmFiles

src/data.go:1214–1291  ·  view source on GitHub ↗

generateStrmFiles creates .strm files for VOD content

()

Source from the content-addressed store, hash-verified

1212
1213// generateStrmFiles creates .strm files for VOD content
1214func generateStrmFiles() error {
1215 // Prevent concurrent .strm generation when webserver is handling updates
1216 if webserverXEPGInProgress {
1217 showInfo("generateStrmFiles: Skipping - webserver is handling updates")
1218 return nil
1219 }
1220
1221 showDebug("generateStrmFiles: Starting .strm file generation", 1)
1222
1223 // Use configured STRM directory or fallback to default
1224 vodDir := Settings.StrmDirectory
1225 if vodDir == "" {
1226 vodDir = System.Folder.Data + "vod"
1227 }
1228 showDebug(fmt.Sprintf("generateStrmFiles: VOD directory path: %s", vodDir), 1)
1229
1230 if err := os.MkdirAll(vodDir, 0755); err != nil {
1231 showDebug(fmt.Sprintf("generateStrmFiles: Failed to create VOD directory: %v", err), 1)
1232 return fmt.Errorf("failed to create VOD directory: %v", err)
1233 }
1234
1235 // Clear existing .strm files before generating new ones
1236 showDebug("generateStrmFiles: Clearing existing .strm files", 1)
1237 if err := removeChildItems(vodDir); err != nil {
1238 showDebug(fmt.Sprintf("generateStrmFiles: Warning - failed to clear VOD directory: %v", err), 1)
1239 // Don't return on error, continue with generation
1240 } else {
1241 showDebug("generateStrmFiles: VOD directory cleared successfully", 1)
1242 }
1243
1244 showDebug(fmt.Sprintf("generateStrmFiles: VOD directory created/verified: %s", vodDir), 1)
1245
1246 vodCount := 0
1247 totalStreams := len(Data.Streams.Active)
1248 showDebug(fmt.Sprintf("generateStrmFiles: Processing %d total streams for VOD content", totalStreams), 1)
1249
1250 // Count total VOD streams first for progress calculation
1251 totalVODStreams := 0
1252 for _, stream := range Data.Streams.Active {
1253 if s, ok := stream.(map[string]string); ok {
1254 if isVOD, exists := s["_is_vod"]; exists && isVOD == "true" {
1255 totalVODStreams++
1256 }
1257 }
1258 }
1259
1260 showDebug(fmt.Sprintf("generateStrmFiles: Found %d VOD streams to process", totalVODStreams), 1)
1261
1262 for _, stream := range Data.Streams.Active {
1263 if s, ok := stream.(map[string]string); ok {
1264 if isVOD, exists := s["_is_vod"]; exists && isVOD == "true" {
1265 // Found VOD stream, generating .strm file
1266 // Generate .strm file for this VOD content
1267 if err := createStrmFile(s, vodDir); err != nil {
1268 showDebug(fmt.Sprintf("generateStrmFiles: Failed to create .strm file for %s: %v", s["name"], err), 1)
1269 ShowError(err, 0)
1270 continue
1271 }

Callers 1

processStartupWorkflowFunction · 0.85

Calls 6

showInfoFunction · 0.85
showDebugFunction · 0.85
removeChildItemsFunction · 0.85
createStrmFileFunction · 0.85
ShowErrorFunction · 0.85
broadcastProgressUpdateFunction · 0.85

Tested by

no test coverage detected