Use new Bandcamp autocomplete api

This commit is contained in:
litetex 2025-02-11 21:16:30 +01:00
parent 59a2f1aa18
commit 1966ad1e52
No known key found for this signature in database
GPG Key ID: 525B43E6039B3689

View File

@ -7,22 +7,24 @@ import static org.schabi.newpipe.extractor.services.bandcamp.extractors.Bandcamp
import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParser;
import com.grack.nanojson.JsonParserException; import com.grack.nanojson.JsonParserException;
import com.grack.nanojson.JsonWriter;
import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.downloader.Downloader; import org.schabi.newpipe.extractor.downloader.Downloader;
import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
import org.schabi.newpipe.extractor.utils.Utils;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class BandcampSuggestionExtractor extends SuggestionExtractor { public class BandcampSuggestionExtractor extends SuggestionExtractor {
private static final String AUTOCOMPLETE_URL = BASE_API_URL + "/fuzzysearch/1/autocomplete?q="; private static final String AUTOCOMPLETE_URL = BASE_API_URL
+ "/bcsearch_public_api/1/autocomplete_elastic";
public BandcampSuggestionExtractor(final StreamingService service) { public BandcampSuggestionExtractor(final StreamingService service) {
super(service); super(service);
} }
@ -33,7 +35,18 @@ public class BandcampSuggestionExtractor extends SuggestionExtractor {
try { try {
final JsonObject fuzzyResults = JsonParser.object().from(downloader final JsonObject fuzzyResults = JsonParser.object().from(downloader
.get(AUTOCOMPLETE_URL + Utils.encodeUrlUtf8(query)).responseBody()); .postWithContentTypeJson(
AUTOCOMPLETE_URL,
Collections.emptyMap(),
JsonWriter.string()
.object()
.value("fan_id", (String) null)
.value("full_page", false)
.value("search_filter", "")
.value("search_text", query)
.end()
.done()
.getBytes(StandardCharsets.UTF_8)).responseBody());
return fuzzyResults.getObject("auto").getArray("results").stream() return fuzzyResults.getObject("auto").getArray("results").stream()
.filter(JsonObject.class::isInstance) .filter(JsonObject.class::isInstance)