mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 23:32:59 +00:00 
			
		
		
		
	Convert MissionRecoveryInfo to Kotlin and use the Parcelize annotation.
This commit is contained in:
		| @@ -160,11 +160,11 @@ public class DownloadInitializer extends Thread { | ||||
|                     MissionRecoveryInfo recovery = mMission.recoveryInfo[mMission.current]; | ||||
|  | ||||
|                     if (!TextUtils.isEmpty(entityTag)) { | ||||
|                         recovery.validateCondition = entityTag; | ||||
|                         recovery.setValidateCondition(entityTag); | ||||
|                     } else if (!TextUtils.isEmpty(lastModified)) { | ||||
|                         recovery.validateCondition = lastModified;// Note: this is less precise | ||||
|                         recovery.setValidateCondition(lastModified);// Note: this is less precise | ||||
|                     } else { | ||||
|                         recovery.validateCondition = null; | ||||
|                         recovery.setValidateCondition(null); | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|   | ||||
| @@ -129,10 +129,10 @@ public class DownloadMissionRecover extends Thread { | ||||
|  | ||||
|         String url = null; | ||||
|  | ||||
|         switch (mRecovery.kind) { | ||||
|         switch (mRecovery.getKind()) { | ||||
|             case 'a': | ||||
|                 for (AudioStream audio : mExtractor.getAudioStreams()) { | ||||
|                     if (audio.average_bitrate == mRecovery.desiredBitrate && audio.getFormat() == mRecovery.format) { | ||||
|                     if (audio.average_bitrate == mRecovery.getDesiredBitrate() && audio.getFormat() == mRecovery.getFormat()) { | ||||
|                         url = audio.getUrl(); | ||||
|                         break; | ||||
|                     } | ||||
| @@ -140,21 +140,21 @@ public class DownloadMissionRecover extends Thread { | ||||
|                 break; | ||||
|             case 'v': | ||||
|                 List<VideoStream> videoStreams; | ||||
|                 if (mRecovery.desired2) | ||||
|                 if (mRecovery.isDesired2()) | ||||
|                     videoStreams = mExtractor.getVideoOnlyStreams(); | ||||
|                 else | ||||
|                     videoStreams = mExtractor.getVideoStreams(); | ||||
|                 for (VideoStream video : videoStreams) { | ||||
|                     if (video.resolution.equals(mRecovery.desired) && video.getFormat() == mRecovery.format) { | ||||
|                     if (video.resolution.equals(mRecovery.getDesired()) && video.getFormat() == mRecovery.getFormat()) { | ||||
|                         url = video.getUrl(); | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|                 break; | ||||
|             case 's': | ||||
|                 for (SubtitlesStream subtitles : mExtractor.getSubtitles(mRecovery.format)) { | ||||
|                 for (SubtitlesStream subtitles : mExtractor.getSubtitles(mRecovery.getFormat())) { | ||||
|                     String tag = subtitles.getLanguageTag(); | ||||
|                     if (tag.equals(mRecovery.desired) && subtitles.isAutoGenerated() == mRecovery.desired2) { | ||||
|                     if (tag.equals(mRecovery.getDesired()) && subtitles.isAutoGenerated() == mRecovery.isDesired2()) { | ||||
|                         url = subtitles.getUrl(); | ||||
|                         break; | ||||
|                     } | ||||
| @@ -168,11 +168,11 @@ public class DownloadMissionRecover extends Thread { | ||||
|     } | ||||
|  | ||||
|     private void resolve(String url) throws IOException, HttpError { | ||||
|         if (mRecovery.validateCondition == null) { | ||||
|         if (mRecovery.getValidateCondition() == null) { | ||||
|             Log.w(TAG, "validation condition not defined, the resource can be stale"); | ||||
|         } | ||||
|  | ||||
|         if (mMission.unknownLength || mRecovery.validateCondition == null) { | ||||
|         if (mMission.unknownLength || mRecovery.getValidateCondition() == null) { | ||||
|             recover(url, false); | ||||
|             return; | ||||
|         } | ||||
| @@ -182,7 +182,7 @@ public class DownloadMissionRecover extends Thread { | ||||
|         ///////////////////// | ||||
|         try { | ||||
|             mConn = mMission.openConnection(url, true, mMission.length - 10, mMission.length); | ||||
|             mConn.setRequestProperty("If-Range", mRecovery.validateCondition); | ||||
|             mConn.setRequestProperty("If-Range", mRecovery.getValidateCondition()); | ||||
|             mMission.establishConnection(mID, mConn); | ||||
|  | ||||
|             int code = mConn.getResponseCode(); | ||||
|   | ||||
| @@ -1,115 +0,0 @@ | ||||
| package us.shandian.giga.get; | ||||
|  | ||||
| import android.os.Parcel; | ||||
| import android.os.Parcelable; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
|  | ||||
| import org.schabi.newpipe.extractor.MediaFormat; | ||||
| import org.schabi.newpipe.extractor.stream.AudioStream; | ||||
| import org.schabi.newpipe.extractor.stream.Stream; | ||||
| import org.schabi.newpipe.extractor.stream.SubtitlesStream; | ||||
| import org.schabi.newpipe.extractor.stream.VideoStream; | ||||
|  | ||||
| import java.io.Serializable; | ||||
|  | ||||
| public class MissionRecoveryInfo implements Serializable, Parcelable { | ||||
|     private static final long serialVersionUID = 0L; | ||||
|  | ||||
|     MediaFormat format; | ||||
|     String desired; | ||||
|     boolean desired2; | ||||
|     int desiredBitrate; | ||||
|     byte kind; | ||||
|     String validateCondition = null; | ||||
|  | ||||
|     public MissionRecoveryInfo(@NonNull Stream stream) { | ||||
|         if (stream instanceof AudioStream) { | ||||
|             desiredBitrate = ((AudioStream) stream).average_bitrate; | ||||
|             desired2 = false; | ||||
|             kind = 'a'; | ||||
|         } else if (stream instanceof VideoStream) { | ||||
|             desired = ((VideoStream) stream).getResolution(); | ||||
|             desired2 = ((VideoStream) stream).isVideoOnly(); | ||||
|             kind = 'v'; | ||||
|         } else if (stream instanceof SubtitlesStream) { | ||||
|             desired = ((SubtitlesStream) stream).getLanguageTag(); | ||||
|             desired2 = ((SubtitlesStream) stream).isAutoGenerated(); | ||||
|             kind = 's'; | ||||
|         } else { | ||||
|             throw new RuntimeException("Unknown stream kind"); | ||||
|         } | ||||
|  | ||||
|         format = stream.getFormat(); | ||||
|         if (format == null) throw new NullPointerException("Stream format cannot be null"); | ||||
|     } | ||||
|  | ||||
|     @NonNull | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         String info; | ||||
|         StringBuilder str = new StringBuilder(); | ||||
|         str.append("{type="); | ||||
|         switch (kind) { | ||||
|             case 'a': | ||||
|                 str.append("audio"); | ||||
|                 info = "bitrate=" + desiredBitrate; | ||||
|                 break; | ||||
|             case 'v': | ||||
|                 str.append("video"); | ||||
|                 info = "quality=" + desired + " videoOnly=" + desired2; | ||||
|                 break; | ||||
|             case 's': | ||||
|                 str.append("subtitles"); | ||||
|                 info = "language=" + desired + " autoGenerated=" + desired2; | ||||
|                 break; | ||||
|             default: | ||||
|                 info = ""; | ||||
|                 str.append("other"); | ||||
|         } | ||||
|  | ||||
|         str.append(" format=") | ||||
|                 .append(format.getName()) | ||||
|                 .append(' ') | ||||
|                 .append(info) | ||||
|                 .append('}'); | ||||
|  | ||||
|         return str.toString(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int describeContents() { | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void writeToParcel(Parcel parcel, int flags) { | ||||
|         parcel.writeInt(this.format.ordinal()); | ||||
|         parcel.writeString(this.desired); | ||||
|         parcel.writeInt(this.desired2 ? 0x01 : 0x00); | ||||
|         parcel.writeInt(this.desiredBitrate); | ||||
|         parcel.writeByte(this.kind); | ||||
|         parcel.writeString(this.validateCondition); | ||||
|     } | ||||
|  | ||||
|     private MissionRecoveryInfo(Parcel parcel) { | ||||
|         this.format = MediaFormat.values()[parcel.readInt()]; | ||||
|         this.desired = parcel.readString(); | ||||
|         this.desired2 = parcel.readInt() != 0x00; | ||||
|         this.desiredBitrate = parcel.readInt(); | ||||
|         this.kind = parcel.readByte(); | ||||
|         this.validateCondition = parcel.readString(); | ||||
|     } | ||||
|  | ||||
|     public static final Parcelable.Creator<MissionRecoveryInfo> CREATOR = new Parcelable.Creator<MissionRecoveryInfo>() { | ||||
|         @Override | ||||
|         public MissionRecoveryInfo createFromParcel(Parcel source) { | ||||
|             return new MissionRecoveryInfo(source); | ||||
|         } | ||||
|  | ||||
|         @Override | ||||
|         public MissionRecoveryInfo[] newArray(int size) { | ||||
|             return new MissionRecoveryInfo[size]; | ||||
|         } | ||||
|     }; | ||||
| } | ||||
| @@ -0,0 +1,71 @@ | ||||
| package us.shandian.giga.get | ||||
|  | ||||
| import android.os.Parcelable | ||||
| import java.io.Serializable | ||||
| import kotlinx.android.parcel.Parcelize | ||||
| import org.schabi.newpipe.extractor.MediaFormat | ||||
| import org.schabi.newpipe.extractor.stream.AudioStream | ||||
| import org.schabi.newpipe.extractor.stream.Stream | ||||
| import org.schabi.newpipe.extractor.stream.SubtitlesStream | ||||
| import org.schabi.newpipe.extractor.stream.VideoStream | ||||
|  | ||||
| @Parcelize | ||||
| class MissionRecoveryInfo( | ||||
|     var format: MediaFormat, | ||||
|     var desired: String? = null, | ||||
|     var isDesired2: Boolean = false, | ||||
|     var desiredBitrate: Int = 0, | ||||
|     var kind: Char = Char.MIN_VALUE, | ||||
|     var validateCondition: String? = null | ||||
| ) : Serializable, Parcelable { | ||||
|     constructor(stream: Stream) : this(format = stream.getFormat()!!) { | ||||
|         when (stream) { | ||||
|             is AudioStream -> { | ||||
|                 desiredBitrate = stream.average_bitrate | ||||
|                 isDesired2 = false | ||||
|                 kind = 'a' | ||||
|             } | ||||
|             is VideoStream -> { | ||||
|                 desired = stream.getResolution() | ||||
|                 isDesired2 = stream.isVideoOnly() | ||||
|                 kind = 'v' | ||||
|             } | ||||
|             is SubtitlesStream -> { | ||||
|                 desired = stream.languageTag | ||||
|                 isDesired2 = stream.isAutoGenerated | ||||
|                 kind = 's' | ||||
|             } | ||||
|             else -> throw RuntimeException("Unknown stream kind") | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun toString(): String { | ||||
|         val info: String | ||||
|         val str = StringBuilder() | ||||
|         str.append("{type=") | ||||
|         when (kind) { | ||||
|             'a' -> { | ||||
|                 str.append("audio") | ||||
|                 info = "bitrate=$desiredBitrate" | ||||
|             } | ||||
|             'v' -> { | ||||
|                 str.append("video") | ||||
|                 info = "quality=$desired videoOnly=$isDesired2" | ||||
|             } | ||||
|             's' -> { | ||||
|                 str.append("subtitles") | ||||
|                 info = "language=$desired autoGenerated=$isDesired2" | ||||
|             } | ||||
|             else -> { | ||||
|                 info = "" | ||||
|                 str.append("other") | ||||
|             } | ||||
|         } | ||||
|         str.append(" format=") | ||||
|                 .append(format.getName()) | ||||
|                 .append(' ') | ||||
|                 .append(info) | ||||
|                 .append('}') | ||||
|         return str.toString() | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Isira Seneviratne
					Isira Seneviratne