generateStrmFiles creates .strm files for VOD content
()
| 1212 | |
| 1213 | // generateStrmFiles creates .strm files for VOD content |
| 1214 | func 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 | } |
no test coverage detected