{"record":{"id":"ffd77fabf38f61c2","repo":"TeamNewPipe/NewPipe","slug":"empty-stream-url","errorCode":null,"errorMessage":"Empty stream URL","messagePattern":"Empty stream URL","errorType":"exception","errorClass":"ResolverException","httpStatus":null,"severity":"error","filePath":"app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java","lineNumber":549,"sourceCode":"                        .setTag(metadata)\n                        .setUri(Uri.parse(stream.getContent()))\n                        .setCustomCacheKey(cacheKey)\n                        .build());\n    }\n    //endregion\n\n\n    //region Utils\n    private static Uri manifestUrlToUri(final String manifestUrl) {\n        return Uri.parse(Objects.requireNonNullElse(manifestUrl, \"\"));\n    }\n\n    private static void throwResolverExceptionIfUrlNullOrEmpty(@Nullable final String url)\n            throws ResolverException {\n        if (url == null) {\n            throw new ResolverException(\"Null stream URL\");\n        } else if (url.isEmpty()) {\n            throw new ResolverException(\"Empty stream URL\");\n        }\n    }\n    //endregion\n\n\n    //region Resolver exception\n    final class ResolverException extends Exception {\n        public ResolverException(final String message) {\n            super(message);\n        }\n\n        public ResolverException(final String message, final Throwable cause) {\n            super(message, cause);\n        }\n    }\n    //endregion\n}\n","sourceCodeStart":531,"sourceCodeEnd":567,"githubUrl":"https://github.com/TeamNewPipe/NewPipe/blob/9e8be091560a69f35d44bd252eb00bc7911c977b/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java#L531-L567","documentation":"Thrown by PlaybackResolver.throwResolverExceptionIfUrlNullOrEmpty when the stream URL is an empty string (\"\"). The helper distinguishes null and empty to aid debugging; both are invalid for playback. Called after the stream is expected to have a URL.","triggerScenarios":"throwResolverExceptionIfUrlNullOrEmpty receives an empty (\"\") String from stream.getContent() on a stream expected to carry a URL. Same call sites as the null case (progressive, DASH-URL, HLS, SS, YouTube progressive/HLS/OTF).","commonSituations":"The extractor set the content field to an empty string instead of a real URL, a string-processing step trimmed the URL to empty, or the stream was constructed from incomplete parsed data. Indicates a data-quality/extractor issue.","solutions":["Validate stream.getContent() is non-empty before invoking the resolver.","Update/fix the extractor so the content URL is fully populated.","Trace where the empty string originates in the StreamInfo build pipeline."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (stream.getContent() == null || stream.getContent().isEmpty()) {\n    // skip stream; do not invoke resolver\n}","typeGuard":"static boolean hasNonEmptyStreamUrl(final Stream stream) {\n    final String c = stream.getContent();\n    return c != null && !c.isEmpty();\n}","tryCatchPattern":"try {\n    throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());\n} catch (final ResolverException e) {\n    // empty content; skip this stream and pick another\n}","preventionTips":["Validate stream.getContent() is non-null and non-empty before resolving.","Ensure the extractor fully populates the content URL.","Trace where empty strings originate in the StreamInfo pipeline."],"tags":["playback","resolver","validation","empty-check","media-source"],"backgroundTag":null,"analyzedSha":"9e8be091560a69f35d44bd252eb00bc7911c977b","analyzedAt":"2026-08-14T00:11:33.519Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}