Skip to content

Commit

Permalink
Fixed Playlist Activity
Browse files Browse the repository at this point in the history
  • Loading branch information
KaustubhPatange committed Dec 21, 2019
1 parent cdad1ca commit 04d8c44
Show file tree
Hide file tree
Showing 29 changed files with 819 additions and 833 deletions.
Binary file modified .gradle/4.6/fileContent/fileContent.lock
Binary file not shown.
Binary file modified .gradle/4.6/fileHashes/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/4.6/fileHashes/fileHashes.lock
Binary file not shown.
Binary file modified .gradle/4.6/javaCompile/classAnalysis.bin
Binary file not shown.
Binary file modified .gradle/4.6/javaCompile/javaCompile.lock
Binary file not shown.
Binary file modified .gradle/4.6/javaCompile/taskHistory.bin
Binary file not shown.
Binary file modified .gradle/4.6/taskHistory/taskHistory.bin
Binary file not shown.
Binary file modified .gradle/4.6/taskHistory/taskHistory.lock
Binary file not shown.
Binary file modified .gradle/buildOutputCleanup/buildOutputCleanup.lock
Binary file not shown.
Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
352 changes: 131 additions & 221 deletions .idea/workspace.xml

Large diffs are not rendered by default.

145 changes: 90 additions & 55 deletions app/src/main/java/com/kpstv/youtube/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,10 @@
import com.kpstv.youtube.utils.YTMeta;
import com.kpstv.youtube.utils.YTStatistics;
import com.kpstv.youtube.utils.YTutils;
import com.kpstv.youtube.ytextractor.ExtractorException;
import com.kpstv.youtube.ytextractor.YoutubeStreamExtractor;
import com.kpstv.youtube.ytextractor.model.YoutubeMedia;
import com.kpstv.youtube.ytextractor.model.YoutubeMeta;
import com.naveed.ytextractor.ExtractorException;
import com.naveed.ytextractor.YoutubeStreamExtractor;
import com.naveed.ytextractor.model.YTMedia;
import com.naveed.ytextractor.model.YoutubeMeta;

import org.json.JSONException;
import org.json.JSONObject;
Expand Down Expand Up @@ -1117,31 +1117,36 @@ private static void parseVideoNewMethod(String yturl, String videoTitle) {
new YoutubeStreamExtractor(new YoutubeStreamExtractor.ExtractorListner(){

@Override
public void onExtractionDone(List<YoutubeMedia> adativeStream, List<YoutubeMedia> muxedStream, YoutubeMeta meta) {
if (muxedStream.isEmpty()) {
public void onExtractionGoesWrong(ExtractorException e) {
playNext();
Toast.makeText(activity, videoTitle+": Couldn't get the required audio stream!", Toast.LENGTH_SHORT).show();
}

@Override
public void onExtractionDone(List<YTMedia> adativeStream, List<YTMedia> muxedStream, YoutubeMeta meta) {
Log.e(TAG, "onExtractionDone: Parsing Audio using second method" );
if (adativeStream.isEmpty()) {
playNext();
Toast.makeText(activity, videoTitle+": Couldn't get the required audio stream!", Toast.LENGTH_SHORT).show();
// showAlert("Failed!", "Couldn't get the required audio stream. Try again!", true);
// showAlert("Failed!", "Couldn't get the required audio stream. Try again!", true);
return;
}

Log.e("Method2","Extracted using new method");

ytConfigs.clear();

List<YoutubeMedia> bestStream = getBestStream(adativeStream);
List<YTMedia> bestStream = getBestStream(adativeStream);

Log.e(TAG, "onExtractionDone: Media Size: " +adativeStream.size());

for(int i=0; i<bestStream.size();i++) addVideoToList(bestStream.get(i),videoTitle,channelTitle);
for(int i=0; i<adativeStream.size();i++) addVideoToList(adativeStream.get(i),videoTitle,channelTitle);

Log.e(TAG, "onExtractionDone: AudioLink: "+audioLink );

continueinMainThread(audioLink);
}

@Override
public void onExtractionGoesWrong(final ExtractorException e) {
// showAlert("Failed!", "Couldn't get the required audio stream. Try again!", true);
playNext();
Toast.makeText(activity, videoTitle+": Couldn't get the required audio stream!", Toast.LENGTH_SHORT).show();
}
}).Extract(YTutils.getVideoID(yturl));
}

Expand Down Expand Up @@ -1347,7 +1352,36 @@ private static void addFormatToList(final String videoTitle, final YtFile ytfile
ytConfigs.add(new YTConfig(ytText, ytfile.getUrl(), ytfile.getFormat().getExt(), videoTitle, channelTitle,isaudio));
}

private static void addVideoToList(final YoutubeMedia media, final String videoTitle, final String channelTitle) {
private static void addVideoToList(final YTMedia media, final String videoTitle, final String channelTitle) { ;

String ytText=""; boolean isaudio=false;
String ext = "m4a";
try {

if (media.getAudioSampleRate() != 0)
{
isaudio = true;
ytText = "Audio " + media.getBitrate()/1000 + " kbit/s";
}
else {
ext = "mp4";
ytText = (media.getFps() == 60) ? "Video " + media.getHeight() + "p60" :
"Video " + media.getHeight() + "p";
if (media.getBitrate() == -1) {
ytText += " (no audio)";
}
}
Log.e(TAG, "addVideoToList: MediaSampleRate: "+media.getAudioSampleRate() );
}catch (Exception e){e.printStackTrace();}
if (isaudio) {
Log.e(TAG, "addVideoToList: AudioUrlSet true" );
audioLink = media.getUrl();
}

ytConfigs.add(new YTConfig(ytText, media.getUrl(), ext, videoTitle, channelTitle,isaudio));
}

/* private static void addVideoToList(final YTMedia media, final String videoTitle, final String channelTitle) {
String ytText;boolean isaudio=false;
if (media.getResSize()!=null) {
Expand All @@ -1370,7 +1404,7 @@ private static void addVideoToList(final YoutubeMedia media, final String videoT
ytConfigs.add(new YTConfig(ytText, media.getUrl(), media.getExtension(), videoTitle,channelTitle,isaudio));
}

*/
public static void rebuildNotification() {
boolean setgoing = true;
int icon = R.drawable.ic_pause_notify;
Expand Down Expand Up @@ -1638,18 +1672,49 @@ static void makePause() {
}
notificationManagerCompat.notify(1, builder.build());*/
}
private static YtFile getBestStream(SparseArray<YtFile> ytFiles) {
ConnectionQuality connectionQuality = ConnectionQuality.MODERATE;
connectionQuality = ConnectionClassManager.getInstance().getCurrentBandwidthQuality();
int[] itags = new int[]{251, 141, 140, 17};

private static List<YoutubeMedia> getBestStream(List<YoutubeMedia> streams) {
List<YoutubeMedia> medias = new ArrayList<>();
if (connectionQuality != null && connectionQuality != ConnectionQuality.UNKNOWN) {
switch (connectionQuality) {
case POOR:
itags = new int[]{17, 140, 251, 141};
break;
case MODERATE:
itags = new int[]{251, 141, 140, 17};
break;
case GOOD:
itags = new int[]{141, 251, 140, 17};
break;
case EXCELLENT:
itags = new int[]{141, 251, 140, 17};
break;
}
}

if (ytFiles.get(itags[0]) != null) {
return ytFiles.get(itags[0]);
} else if (ytFiles.get(itags[1]) != null) {
return ytFiles.get(itags[1]);
} else if (ytFiles.get(itags[2]) != null) {
return ytFiles.get(itags[2]);
}
return ytFiles.get(itags[3]);
}

private static List<YTMedia> getBestStream(List<YTMedia> streams) {
List<YTMedia> medias = new ArrayList<>();
for(int i=0; i<streams.size();i++) {
YoutubeMedia media = streams.get(i);
if (!media.isAudioOnly()) {
YTMedia media = streams.get(i);
if (media.getHeight()!=-1) {
int j=0;
while (j<streams.size()) {
YoutubeMedia media1 = streams.get(j);
if (media.getResolution().equals(media1.getResolution())) {
int m1 = Integer.parseInt(media.getBitrate());
int m2 = Integer.parseInt(media1.getBitrate());
YTMedia media1 = streams.get(j);
if (media.getQuality().equals(media1.getQuality())) {
int m1 = media.getBitrate();
int m2 = media1.getBitrate();
if (m2>m1) {
media=media1;
}
Expand Down Expand Up @@ -1708,37 +1773,7 @@ protected Void doInBackground(String... strings) {
}
}

private static YtFile getBestStream(SparseArray<YtFile> ytFiles) {
ConnectionQuality connectionQuality = ConnectionQuality.MODERATE;
connectionQuality = ConnectionClassManager.getInstance().getCurrentBandwidthQuality();
int[] itags = new int[]{251, 141, 140, 17};

if (connectionQuality != null && connectionQuality != ConnectionQuality.UNKNOWN) {
switch (connectionQuality) {
case POOR:
itags = new int[]{17, 140, 251, 141};
break;
case MODERATE:
itags = new int[]{251, 141, 140, 17};
break;
case GOOD:
itags = new int[]{141, 251, 140, 17};
break;
case EXCELLENT:
itags = new int[]{141, 251, 140, 17};
break;
}
}

if (ytFiles.get(itags[0]) != null) {
return ytFiles.get(itags[0]);
} else if (ytFiles.get(itags[1]) != null) {
return ytFiles.get(itags[1]);
} else if (ytFiles.get(itags[2]) != null) {
return ytFiles.get(itags[2]);
}
return ytFiles.get(itags[3]);
}

static void showAlert(String title, String message, boolean isalert) {
int icon = android.R.drawable.ic_dialog_info;
Expand Down
19 changes: 8 additions & 11 deletions app/src/main/java/com/kpstv/youtube/PlayerActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,7 @@
import com.kpstv.youtube.utils.YTMeta;
import com.kpstv.youtube.utils.YTStatistics;
import com.kpstv.youtube.utils.YTutils;
import com.kpstv.youtube.ytextractor.ExtractorException;
import com.kpstv.youtube.ytextractor.YoutubeStreamExtractor;
import com.kpstv.youtube.ytextractor.model.YoutubeMedia;
import com.kpstv.youtube.ytextractor.model.YoutubeMeta;
import com.naveed.ytextractor.model.YTMedia;
import com.spyhunter99.supertooltips.ToolTip;
import com.spyhunter99.supertooltips.ToolTipManager;
import com.warkiz.widget.IndicatorSeekBar;
Expand Down Expand Up @@ -872,7 +869,7 @@ protected Void doInBackground(String... strings) {

private void parseVideoNewMethod(String yturl, String videoTitle) {
isgoing = true;
new YoutubeStreamExtractor(new YoutubeStreamExtractor.ExtractorListner(){
/*new YoutubeStreamExtractor(new YoutubeStreamExtractor.ExtractorListner(){
@Override
public void onExtractionDone(List<YoutubeMedia> adativeStream, List<YoutubeMedia> muxedStream, YoutubeMeta meta) {
Expand All @@ -896,13 +893,13 @@ public void onExtractionDone(List<YoutubeMedia> adativeStream, List<YoutubeMedia
public void onExtractionGoesWrong(final ExtractorException e) {
showAlert("Failed!", "Couldn't get the required audio stream. Try again!", true);
}
}).Extract(YTutils.getVideoID(yturl));
}).Extract(YTutils.getVideoID(yturl));*/
}

private List<YoutubeMedia> getBestStream(List<YoutubeMedia> streams) {
List<YoutubeMedia> medias = new ArrayList<>();
for(int i=0; i<streams.size();i++) {
YoutubeMedia media = streams.get(i);
private List<YTMedia> getBestStream(List<YTMedia> streams) {
List<YTMedia> medias = new ArrayList<>();
/*for(int i=0; i<streams.size();i++) {
YTMedia media = streams.get(i);
if (!media.isAudioOnly()) {
int j=0;
while (j<streams.size()) {
Expand All @@ -920,7 +917,7 @@ private List<YoutubeMedia> getBestStream(List<YoutubeMedia> streams) {
}else {
medias.add(media);
}
}
}*/
return medias;
}

Expand Down
Loading

0 comments on commit 04d8c44

Please sign in to comment.