package org.schabi.newpipe.extractor.services.soundcloud.extractors; import com.grack.nanojson.JsonObject; import org.schabi.newpipe.extractor.Image; 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.Nonnull; import java.util.List; import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl; import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromTrackObject; import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.parseDateFrom; import static org.schabi.newpipe.extractor.utils.Utils.replaceHttpWithHttps; public class SoundcloudStreamInfoItemExtractor implements StreamInfoItemExtractor { private final JsonObject itemObject; public SoundcloudStreamInfoItemExtractor(final JsonObject itemObject) { this.itemObject = itemObject; } @Override public String getUrl() { return replaceHttpWithHttps(itemObject.getString("permalink_url")); } @Override public String getName() { return itemObject.getString("title"); } @Override public long getDuration() { return itemObject.getLong("duration") / 1000L; } @Override public String getUploaderName() { return itemObject.getObject("user").getString("username"); } @Override public String getUploaderUrl() { return replaceHttpWithHttps(itemObject.getObject("user").getString("permalink_url")); } @Nonnull @Override public List getUploaderAvatars() { return getAllImagesFromArtworkOrAvatarUrl( itemObject.getObject("user").getString("avatar_url")); } @Override public boolean isUploaderVerified() throws ParsingException { return itemObject.getObject("user").getBoolean("verified"); } @Override public String getTextualUploadDate() { return itemObject.getString("created_at"); } @Override public DateWrapper getUploadDate() throws ParsingException { return new DateWrapper(parseDateFrom(getTextualUploadDate())); } @Override public long getViewCount() { return itemObject.getLong("playback_count"); } @Nonnull @Override public List getThumbnails() throws ParsingException { return getAllImagesFromTrackObject(itemObject); } @Override public StreamType getStreamType() { return StreamType.AUDIO_STREAM; } @Override public boolean isAd() { return false; } }