Skip to content

Commit

Permalink
Some internal changes
Browse files Browse the repository at this point in the history
  • Loading branch information
KaustubhPatange committed Jan 4, 2020
1 parent 65c49a0 commit b9b50fc
Show file tree
Hide file tree
Showing 31 changed files with 789 additions and 532 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.
700 changes: 366 additions & 334 deletions .idea/workspace.xml

Large diffs are not rendered by default.

89 changes: 62 additions & 27 deletions app/src/main/java/com/kpstv/youtube/CPlaylistActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.android.volley.toolbox.Volley;
import com.kpstv.youtube.adapters.SongAdapter;
import com.kpstv.youtube.models.DiscoverModel;
import com.kpstv.youtube.utils.APIResponse;
import com.kpstv.youtube.utils.HttpHandler;
import com.kpstv.youtube.utils.SpotifyTrack;
import com.kpstv.youtube.utils.YTLength;
Expand Down Expand Up @@ -286,7 +287,11 @@ public void afterTextChanged(Editable editable) {

parseData(0,0,YTutils.getSpotifyID(urltosearch));
}else if (urltosearch.contains("youtube.com")||urltosearch.contains("youtu.be")) {
new youtubeplaylist(urltosearch).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
if (spotifyPlayList!=null && spotifyPlayList.getStatus()== AsyncTask.Status.RUNNING)
spotifyPlayList.cancel(true);
spotifyPlayList = new youtubeplaylist(urltosearch);
spotifyPlayList.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
// new youtubeplaylist(urltosearch).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}else Toast.makeText(this, "Bad search code!", Toast.LENGTH_SHORT).show();
});
alert.setNeutralButton("Connect", null);
Expand Down Expand Up @@ -366,53 +371,59 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten

class youtubeplaylist extends AsyncTask<Void,String,Void> {

String url;
ProgressDialog dialog;
String url; int current,total;
public youtubeplaylist(String url) {
this.url = url;
}

@Override
protected void onPostExecute(Void aVoid) {
dialog.dismiss();
globalAlertDialog.dismiss();
adapter.notifyDataSetChanged();
super.onPostExecute(aVoid);
}

@Override
protected Void doInBackground(Void... voids) {
try {
String id = YTutils.getVideoID(url);
JSONObject mainJson = new JSONObject(new HttpHandler().makeServiceCall(
"https://www.googleapis.com/youtube/v3/playlistItems?playlistId=\"+id+\"&part=snippet&maxResults=50&key=AIzaSyCA2Py9snHNdp4Y4Dkyq-z7gUfxLqdPhtQ"));
int current = 1;
parseStructure(id,mainJson,current);
}catch (Exception e){}
APIResponse response = new APIResponse("https://www.googleapis.com/youtube/v3/playlistItems?playlistId="+id+"&part=snippet&maxResults=50");
if (response.getJson()!=null) {
JSONObject mainJson = new JSONObject(response.getJson());
total = Integer.parseInt(mainJson.getJSONObject("pageInfo")
.getString("totalResults"));
Log.e(TAG, "doInBackground: Total:"+total);
parseStructure(id,mainJson);
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}

void parseStructure(String id, JSONObject mainJson, int current) {
void parseStructure(String id, JSONObject mainJson) {
try {
JSONArray mainArrays = mainJson.getJSONArray("items");
int total = Integer.parseInt(mainJson.getJSONObject("pageInfo")
.getString("totalResults"));
if (mainArrays.length()<total) {
if (current<total) {
for(int i=0;i<mainArrays.length();i++) {
publishProgress("Parsing video "+current+"/"+total+"...");
models.add(parseVideo(mainArrays.getJSONObject(i)));
// publishProgress("Parsing video "+current+"/"+total+"...");
models.add(parseVideo(mainArrays.getJSONObject(i),i));
current++;
}
if (mainJson.getJSONObject("etag").has("nextPageToken")) {
String Nexttoken = mainJson.getJSONObject("etag").getString("nextPageToken");
JSONObject newJSON = new JSONObject(new HttpHandler().makeServiceCall(
"https://www.googleapis.com/youtube/v3/playlistItems?playlistId="+id+"pageToken="+Nexttoken+"&part=snippet&maxResults=50&key=AIzaSyCA2Py9snHNdp4Y4Dkyq-z7gUfxLqdPhtQ"));
parseStructure(id,newJSON,current);
if (mainJson.has("nextPageToken")) {
String Nexttoken = mainJson.getString("nextPageToken");
APIResponse response = new APIResponse("https://www.googleapis.com/youtube/v3/playlistItems?playlistId="+id+"&pageToken="+Nexttoken+"&part=snippet&maxResults=50");
if (response.getJson()!=null) {
JSONObject newJSON = new JSONObject(response.getJson());
parseStructure(id, newJSON);
}
}
}
}catch (Exception e){}
}catch (Exception e){
e.printStackTrace();
}
}

DiscoverModel parseVideo(JSONObject object) {
DiscoverModel parseVideo(JSONObject object,int i) {
try {
String videoID = object.getJSONObject("snippet").getJSONObject("resourceId")
.getString("videoId");
Expand All @@ -424,6 +435,8 @@ DiscoverModel parseVideo(JSONObject object) {
.getJSONObject("medium").getString("url"),
YTutils.getYtUrl(videoID)
);
publishProgress(current+1+"",total+"",YTutils.getVideoTitle(model.getTitle()),
YTutils.getChannelTitle(model.getTitle(),model.getAuthor()));
model.setSeconds(ytLength.getSeconds());
return model;
}catch (Exception e){}
Expand All @@ -432,15 +445,37 @@ DiscoverModel parseVideo(JSONObject object) {

@Override
protected void onProgressUpdate(String... values) {
dialog.setMessage(values[0]);
currentTextView.setText("Current song ("+values[0]+"/"+values[1]+"):");
titleAuthorText.setText(values[2]+" by "+values[3]);
int curr = Integer.parseInt(values[0]);
int total = Integer.parseInt(values[1]);

circularProgressBar.setProgress((float)((float)curr*100.00/(float)total));
super.onProgressUpdate(values);
}

@Override
protected void onPreExecute() {
dialog.setCancelable(false);
dialog.setMessage("Parsing youtube playlist");
dialog.show();
View v = getLayoutInflater().inflate(R.layout.alert_progress,null);
titleAuthorText = v.findViewById(R.id.textView);
currentTextView = v.findViewById(R.id.textView1);
circularProgressBar = v.findViewById(R.id.progressBar);

AlertDialog.Builder builder = new AlertDialog.Builder(CPlaylistActivity.this);
builder.setView(v);
builder.setCancelable(false);
builder.setPositiveButton("Cancel",(dialogInterface, i) -> {
if (spotifyPlayList!=null && spotifyPlayList.getStatus()== AsyncTask.Status.RUNNING) {
Log.e(TAG, "showAlertWithEditText1: Stopping it" );
do {
spotifyPlayList.cancel(true);
}while (!spotifyPlayList.isCancelled());
trackModels.clear();
adapter.notifyDataSetChanged();
}
});
globalAlertDialog = builder.create();
globalAlertDialog.show();
super.onPreExecute();
}
}
Expand Down
72 changes: 46 additions & 26 deletions app/src/main/java/com/kpstv/youtube/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@
import at.huber.youtubeExtractor.Format;
import at.huber.youtubeExtractor.VideoMeta;
import at.huber.youtubeExtractor.YouTubeExtractor;
import at.huber.youtubeExtractor.YouTubeUriExtractor;
import at.huber.youtubeExtractor.YtFile;
import cat.ereza.customactivityoncrash.config.CaocConfig;

Expand Down Expand Up @@ -294,11 +295,11 @@ protected void onCreate(Bundle savedInstanceState) {
setDefaultEqualizerValues();

preferences = getSharedPreferences("history",MODE_PRIVATE);
String list = preferences.getString("urls","");
/*String list = preferences.getString("urls","");
ArrayList<String> urls = new ArrayList<>();
if (!Objects.requireNonNull(list).isEmpty()) {
urls.addAll(Arrays.asList(list.split(",")));
}
}*/

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
Expand Down Expand Up @@ -844,7 +845,7 @@ protected Void doInBackground(Void... voids) {
@Override
protected void onPostExecute(Void aVoid) {
if (model!=null) {
MetaModel metaModel = new MetaModel(model.getTitle(),model.getAuthorName(),
MetaModel metaModel = new MetaModel(model.getNormalUrl(),model.getTitle(),model.getAuthorName(),
model.getImageUrl());
NPlayModel nPlayModel = new NPlayModel(ytLink,new YTMeta(metaModel),false);
for (NPlayModel model1: nPlayModels) {
Expand Down Expand Up @@ -1144,15 +1145,16 @@ protected Void doInBackground(String... arg0) {
command=1;
return null;
}
soundCloud.captureViews();
// soundCloud.captureViews();
soundCloudPlayBack=true;
MainActivity.videoTitle = soundCloud.getModel().getTitle();
MainActivity.channelTitle = soundCloud.getModel().getAuthorName();
MainActivity.imgUrl = soundCloud.getModel().getImageUrl();
likeCounts = -1; dislikeCounts = -1;
if (soundCloud.getViewCount()!=null && !soundCloud.getViewCount().isEmpty())
viewCounts = "-1";
/* if (soundCloud.getViewCount()!=null && !soundCloud.getViewCount().isEmpty())
viewCounts =YTutils.getViewCount( Long.parseLong(soundCloud.getViewCount()));
Log.e(TAG, "doInBackground: Here I am: " +soundCloud.getModel().getStreamUrl());
Log.e(TAG, "doInBackground: Here I am: " +soundCloud.getModel().getStreamUrl());*/
return null;
}

Expand Down Expand Up @@ -1317,7 +1319,8 @@ public static void write_Favourite() {
Toast.makeText(activity, "Removed from favourites!", Toast.LENGTH_SHORT).show();
MainActivity.isFavourite=false;
}else {
t = MainActivity.videoID+"|"+MainActivity.total_seconds;
t =MainActivity.videoID+"|"+MainActivity.total_seconds+"|"+MainActivity.videoTitle+"|"+MainActivity.channelTitle
+"|"+MainActivity.imgUrl;
Toast.makeText(activity, "Added to favourites!", Toast.LENGTH_SHORT).show();
MainActivity.isFavourite=true;
}
Expand Down Expand Up @@ -1676,30 +1679,26 @@ public void run() {

static String[] getYTUrls(String to_inject_yturl) {
preferences = activity.getSharedPreferences("history",MODE_PRIVATE);
String line = preferences.getString("urls","");
if (line!=null && !line.isEmpty()) {
String[] lines = line.split(",");
String data = YTutils.readContent(activity,"history.csv");
// String line = preferences.getString("urls","");
if (data!=null && !data.isEmpty()) {
String[] lines = data.split("\n|\r");

ArrayList<String> arrayList = new ArrayList<>();

// String[] yt_urls = new String[1+lines.length];
Log.e(TAG, "getYTUrls: Injected uri 0: "+to_inject_yturl );
Log.e(TAG, "getYTUrls: Injected uri 0: "+to_inject_yturl );
arrayList.add(to_inject_yturl);
// yt_urls[0] = to_inject_yturl;
int i=1;
for(String l: lines) {
l = l.split("\\|")[0];
if (l.isEmpty()) continue;
if (YTutils.getVideoID(l).equals(YTutils.getVideoID(to_inject_yturl))) continue;
arrayList.add(l);
// yt_urls[i] = l;
Log.e(TAG, "getYTUrls: Injected uri "+i+": "+l);
// i++;
}
nPlayModels.clear();

/*for (int i=1;i<yt_urls.length;i++)
yt_urls[i] = lines[i-1].split("\\|")[0];*/
return YTutils.convertListToArrayMethod(arrayList);
}else {
String[] yt_urls = new String[1];
Expand Down Expand Up @@ -1767,7 +1766,7 @@ protected void onPostExecute(Void aVoid) {
} else {
int insert_index = ytIndex;
if (nPlayModels.size()>0 && nPlayModels.size()==yturls.size()) {
MetaModel metaModel = new MetaModel(track.getTitle(),track.getAuthor(),track.getImageUrl());
MetaModel metaModel = new MetaModel(YTutils.getVideoID(track.getYtUrl()),track.getTitle(),track.getAuthor(),track.getImageUrl());
NPlayModel model = new NPlayModel(ytLink,new YTMeta(metaModel),true);
nPlayModels.add(insert_index,model);
}
Expand Down Expand Up @@ -1964,12 +1963,36 @@ protected void onPostExecute(Void aVoid) {
protected Void doInBackground(String... strings) {
String url_link = strings[0];
String set = preferences.getString("urls", "");

String ytID = YTutils.getVideoID(url_link);


String formattedDate = YTutils.getTodayDate();
int percent = 100;
try {
percent = likeCounts*100/(likeCounts+dislikeCounts);
}catch (Exception e){e.printStackTrace();}

String insert_data = ytID+"|"+1+"|"+videoTitle+"|"+channelTitle+"|"+imgUrl+ "|"
+ formattedDate+"|"+percent;

String historyData = YTutils.readContent(activity,"history.csv");
if (historyData!=null && !historyData.isEmpty()) {
if (historyData.contains(ytID+"|")) {
String[] childs = historyData.split("\n|\r");
StringBuilder builder = new StringBuilder();
builder.append(insert_data);
for (int i=0;i<childs.length;i++) {
if (!childs[i].startsWith(ytID))
builder.append("\n").append(childs[i]);
}
YTutils.writeContent(activity,"history.csv",builder.toString().trim());
}else YTutils.writeContent(activity,"history.csv",
insert_data+"\n"+historyData.trim());
}else YTutils.writeContent(activity,"history.csv",
insert_data);

/** A logic to calculate no of times a song is played and saved to list */
String data = YTutils.readContent(activity,"library.csv");
String insert_data = ytID+"|"+1+"|"+videoTitle+"|"+channelTitle+"|"+imgUrl;

if (data!=null && !data.isEmpty()) {
boolean ifExist=false;
if (data.contains(ytID)) {
Expand All @@ -1978,7 +2001,8 @@ protected Void doInBackground(String... strings) {
if (items[i].contains(ytID)) {
ifExist=true;
int count = Integer.parseInt(items[i].split("\\|")[1]);
items[i] = ytID+"|"+ (++count)+"|"+videoTitle+"|"+channelTitle+"|"+imgUrl;
items[i] = ytID+"|"+ (++count)+"|"+videoTitle+"|"+channelTitle+"|"+imgUrl+ "|"
+ formattedDate+"|"+percent;
String lines = YTutils.join(items,'\n');
YTutils.writeContent(activity,"library.csv",lines.trim());
break;
Expand All @@ -2003,11 +2027,7 @@ protected Void doInBackground(String... strings) {
urls.remove(i);
}
}
String formattedDate = YTutils.getTodayDate();
int percent = 100;
try {
percent = likeCounts*100/(likeCounts+dislikeCounts);
}catch (Exception e){e.printStackTrace();}

Log.e("StringtoAdd", url_link + "|" + formattedDate+"|"+percent);
urls.add(0, url_link + "|" + formattedDate+"|"+percent);

Expand Down
13 changes: 8 additions & 5 deletions app/src/main/java/com/kpstv/youtube/NPlaylistActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -222,8 +222,8 @@ protected void onStart() {
if (MainActivity.yturls.size()>0) {
models.clear();
// Check for old data....
Log.e(TAG, "onStart: Data Size: "+MainActivity.nPlayModels.size()+", YTUrl size: "+MainActivity.yturls.size() );
if (MainActivity.nPlayModels.size()>0 && MainActivity.yturls.size() == MainActivity.nPlayModels.size()) {

new AsyncTask<Void,Float,Void>() {
boolean sameData=true;

Expand All @@ -250,12 +250,15 @@ protected Void doInBackground(Void... voids) {
String videoID;

/** For local playback stuff */
MetaModel metaData = MainActivity.nPlayModels.get(i).getModel().getVideMeta();
if (MainActivity.localPlayBack)
videoID = MainActivity.nPlayModels.get(i).getUrl();
else videoID = MainActivity.nPlayModels.get(i).getModel()
.getVideMeta().getVideoID();
/* else if (metaData.getVideoID()!=null && metaData.getVideoID().contains("soundcloud.com")) videoID = metaData.getVideoID();
*/ else videoID = metaData.getVideoID();

Log.e(TAG, "doInBackground: MainId: "+MainActivity.videoID+", LocalId: "+videoID );
if (MainActivity.videoID.equals(videoID)) {
Log.e(TAG, "doInBackground: This is playing..." );
MainActivity.nPlayModels.get(i).set_playing(true);
}

Expand Down Expand Up @@ -351,7 +354,7 @@ protected Void doInBackground(Void... voids) {
if (title.contains("."))
title = title.split("\\.")[0];

MetaModel model = new MetaModel(title,artist,null);
MetaModel model = new MetaModel(url,title,artist,null);
YTMeta meta = new YTMeta(model);
if (MainActivity.videoID.equals(url))
models.add(new NPlayModel(url,meta,true));
Expand All @@ -378,7 +381,7 @@ protected void onDestroy() {
}

void reloadAdapter() {
models = MainActivity.nPlayModels;
models = new ArrayList<>(MainActivity.nPlayModels);
adapter = new NPlayAdapter(models,this, this);
setAdapterClicks();
recyclerView.setAdapter(adapter);
Expand Down
Loading

0 comments on commit b9b50fc

Please sign in to comment.