// Created by Fynn Godau 2019, licensed GNU GPL version 3 or later package org.schabi.newpipe.extractor.services.bandcamp.extractors; import com.grack.nanojson.JsonObject; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.localization.DateWrapper; import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor; import org.schabi.newpipe.extractor.stream.StreamType; import javax.annotation.Nullable; import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL; import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl; public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor { private final JsonObject show; public BandcampRadioInfoItemExtractor(final JsonObject radioShow) { show = radioShow; } @Override public long getDuration() { /* Duration is only present in the more detailed information that has to be queried separately. * Therefore, over 300 queries would be needed every time the kiosk is opened if we were to * display the real value. */ //return query(show.getInt("id")).getLong("audio_duration"); return 0; } @Nullable @Override public String getTextualUploadDate() { return show.getString("date"); } @Nullable @Override public DateWrapper getUploadDate() throws ParsingException { return BandcampExtractorHelper.parseDate(getTextualUploadDate()); } @Override public String getName() throws ParsingException { return show.getString("subtitle"); } @Override public String getUrl() { return BASE_URL + "/?show=" + show.getInt("id"); } @Override public String getThumbnailUrl() { return getImageUrl(show.getLong("image_id"), false); } @Override public StreamType getStreamType() { return StreamType.AUDIO_STREAM; } @Override public long getViewCount() { return -1; } @Override public String getUploaderName() { // JSON does not contain uploader name return ""; } @Override public String getUploaderUrl() { return ""; } @Nullable @Override public String getUploaderAvatarUrl() { return null; } @Override public boolean isUploaderVerified() throws ParsingException { return false; } @Override public boolean isAd() { return false; } }