Skip to content

Commit 26fb445

Browse files
wb9688TobiGr
authored andcommitted
Fix parsing description
1 parent 0fff030 commit 26fb445

1 file changed

Lines changed: 26 additions & 12 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,17 @@
3838

3939
import java.io.IOException;
4040
import java.io.UnsupportedEncodingException;
41+
import java.net.URLDecoder;
4142
import java.nio.charset.StandardCharsets;
4243
import java.text.SimpleDateFormat;
43-
import java.util.*;
44+
import java.util.ArrayList;
45+
import java.util.Collections;
46+
import java.util.Date;
47+
import java.util.HashMap;
48+
import java.util.LinkedHashMap;
49+
import java.util.List;
50+
import java.util.Locale;
51+
import java.util.Map;
4452

4553
import javax.annotation.Nonnull;
4654
import javax.annotation.Nullable;
@@ -180,18 +188,24 @@ public Description getDescription() throws ParsingException {
180188
if (internUrl.startsWith("/redirect?")) {
181189
// q parameter can be the first parameter
182190
internUrl = internUrl.substring(10);
183-
}
184-
String[] params = internUrl.split("&");
185-
for (String param : params) {
186-
if (param.charAt(0) == 'q') {
187-
String url = java.net.URLDecoder.decode(param.substring(2), StandardCharsets.UTF_8.name());
188-
if (url != null && !url.isEmpty()) {
189-
descriptionBuilder.append("<a href=\"").append(url).append("\">").append(text).append("</a>");
190-
htmlConversionRequired = true;
191-
} else {
192-
descriptionBuilder.append(text);
191+
String[] params = internUrl.split("&");
192+
for (String param : params) {
193+
if (param.split("=")[0].equals("q")) {
194+
String url = URLDecoder.decode(param.split("=")[1], StandardCharsets.UTF_8.name());
195+
if (url != null && !url.isEmpty()) {
196+
descriptionBuilder.append("<a href=\"").append(url).append("\">").append(text).append("</a>");
197+
htmlConversionRequired = true;
198+
} else {
199+
descriptionBuilder.append(text);
200+
}
201+
break;
193202
}
194203
}
204+
} else if (internUrl.startsWith("http")) {
205+
descriptionBuilder.append("<a href=\"").append(internUrl).append("\">").append(text).append("</a>");
206+
htmlConversionRequired = true;
207+
} else if (text != null) {
208+
descriptionBuilder.append(text);
195209
}
196210
} else if (text != null) {
197211
descriptionBuilder.append(text);
@@ -203,11 +217,11 @@ public Description getDescription() throws ParsingException {
203217
if (!description.isEmpty()) {
204218
if (htmlConversionRequired) {
205219
description = description.replaceAll("\\n", "<br>");
220+
description = description.replaceAll(" ", " &nbsp;");
206221
return new Description(description, Description.HTML);
207222
}
208223
return new Description(description, Description.PLAIN_TEXT);
209224
}
210-
211225
} catch (Exception ignored) { }
212226

213227
// raw non-html description

0 commit comments

Comments
 (0)