Fix duration

This commit is contained in:
Thomas 2020-06-27 12:06:31 +02:00
parent 3ed94c4e7f
commit b0d34f0e31
3 changed files with 87 additions and 79 deletions

View File

@ -1,3 +1,4 @@
package app.fedilab.fedilabtube; package app.fedilab.fedilabtube;
@ -61,6 +62,7 @@ import java.util.Objects;
import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.HttpsURLConnection;
import app.fedilab.fedilabtube.asynctasks.ManagePlaylistsAsyncTask; import app.fedilab.fedilabtube.asynctasks.ManagePlaylistsAsyncTask;
import app.fedilab.fedilabtube.asynctasks.PostActionAsyncTask; import app.fedilab.fedilabtube.asynctasks.PostActionAsyncTask;
import app.fedilab.fedilabtube.asynctasks.RetrievePeertubeSingleAsyncTask; import app.fedilab.fedilabtube.asynctasks.RetrievePeertubeSingleAsyncTask;
@ -160,6 +162,7 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
peertube_bookmark.setVisibility(View.GONE); peertube_bookmark.setVisibility(View.GONE);
SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(PeertubeActivity.this)); instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(PeertubeActivity.this));
@ -175,6 +178,8 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mode = sharedpreferences.getInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_DIRECT); mode = sharedpreferences.getInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_DIRECT);
if (mode != Helper.VIDEO_MODE_WEBVIEW && mode != Helper.VIDEO_MODE_DIRECT) if (mode != Helper.VIDEO_MODE_WEBVIEW && mode != Helper.VIDEO_MODE_DIRECT)
mode = Helper.VIDEO_MODE_DIRECT; mode = Helper.VIDEO_MODE_DIRECT;
@ -310,87 +315,89 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
} }
peertube = apiResponse.getPeertubes().get(0); peertube = apiResponse.getPeertubes().get(0);
//TODO: currently streaming service gives the wrong values for duration
peertube.setStreamService(false);
new ManagePlaylistsAsyncTask(PeertubeActivity.this, GET_PLAYLIST_FOR_VIDEO, null, peertube.getId(), null, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); new ManagePlaylistsAsyncTask(PeertubeActivity.this, GET_PLAYLIST_FOR_VIDEO, null, peertube.getId(), null, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
peertube_playlist.setOnClickListener(v -> {
if (isLoggedIn(PeertubeActivity.this)) {
if (playlists != null && peertube.getId() != null) {
PopupMenu popup = new PopupMenu(PeertubeActivity.this, peertube_playlist);
for (Playlist playlist : playlists) { peertube_playlist.setOnClickListener(v -> {
String title = null; if( isLoggedIn(PeertubeActivity.this) ) {
for (String id : playlistForVideo) { if (playlists != null && peertube.getId() != null) {
if (playlist.getId().equals(id)) { PopupMenu popup = new PopupMenu(PeertubeActivity.this, peertube_playlist);
title = "" + playlist.getDisplayName();
break; for (Playlist playlist : playlists) {
String title = null;
for (String id : playlistForVideo) {
if (playlist.getId().equals(id)) {
title = "" + playlist.getDisplayName();
break;
}
} }
} if (title == null) {
if (title == null) { title = playlist.getDisplayName();
title = playlist.getDisplayName(); }
} MenuItem item = popup.getMenu().add(0, 0, Menu.NONE, title);
MenuItem item = popup.getMenu().add(0, 0, Menu.NONE, title); item.setOnMenuItemClickListener(item1 -> {
item.setOnMenuItemClickListener(item1 -> { item1.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
item1.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); item1.setActionView(new View(PeertubeActivity.this));
item1.setActionView(new View(PeertubeActivity.this)); item1.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
item1.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { @Override
@Override public boolean onMenuItemActionExpand(MenuItem item1) {
public boolean onMenuItemActionExpand(MenuItem item1) { return false;
return false; }
}
@Override @Override
public boolean onMenuItemActionCollapse(MenuItem item1) { public boolean onMenuItemActionCollapse(MenuItem item1) {
return false; return false;
}
});
if (playlistForVideo.contains(playlist.getId())) {
item1.setTitle(playlist.getDisplayName());
new ManagePlaylistsAsyncTask(PeertubeActivity.this, ManagePlaylistsAsyncTask.action.DELETE_VIDEOS, playlist, peertube.getId(), null, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
playlistForVideo.remove(playlist.getId());
} else {
item1.setTitle("" + playlist.getDisplayName());
new ManagePlaylistsAsyncTask(PeertubeActivity.this, ManagePlaylistsAsyncTask.action.ADD_VIDEOS, playlist, peertube.getId(), null, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
playlistForVideo.add(playlist.getId());
} }
return false;
}); });
if (playlistForVideo.contains(playlist.getId())) { popup.show();
item1.setTitle(playlist.getDisplayName()); }
new ManagePlaylistsAsyncTask(PeertubeActivity.this, ManagePlaylistsAsyncTask.action.DELETE_VIDEOS, playlist, peertube.getId(), null, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
playlistForVideo.remove(playlist.getId());
} else {
item1.setTitle("" + playlist.getDisplayName());
new ManagePlaylistsAsyncTask(PeertubeActivity.this, ManagePlaylistsAsyncTask.action.ADD_VIDEOS, playlist, peertube.getId(), null, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
playlistForVideo.add(playlist.getId());
}
return false;
});
popup.show();
} }
}else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
} }
} else { });
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});
add_comment_read.setOnClickListener(v -> { add_comment_read.setOnClickListener(v -> {
if (isLoggedIn(PeertubeActivity.this)) { if( isLoggedIn(PeertubeActivity.this) ) {
add_comment_read.setVisibility(View.GONE); add_comment_read.setVisibility(View.GONE);
add_comment_write.setVisibility(View.VISIBLE); add_comment_write.setVisibility(View.VISIBLE);
send.setVisibility(View.VISIBLE); send.setVisibility(View.VISIBLE);
add_comment_write.requestFocus(); add_comment_write.requestFocus();
add_comment_write.setSelection(add_comment_write.getText().length()); add_comment_write.setSelection(add_comment_write.getText().length());
} else { }else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});
send.setOnClickListener(v -> {
if (isLoggedIn(PeertubeActivity.this)) {
String comment = add_comment_write.getText().toString();
if (comment.trim().length() > 0) {
new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.PEERTUBECOMMENT, peertube.getId(), null, comment, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
add_comment_write.setText("");
add_comment_read.setVisibility(View.VISIBLE);
add_comment_write.setVisibility(View.GONE);
send.setVisibility(View.GONE);
add_comment_read.requestFocus();
} }
} else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); });
} send.setOnClickListener(v -> {
}); if( isLoggedIn(PeertubeActivity.this) ) {
String comment = add_comment_write.getText().toString();
if (comment.trim().length() > 0) {
new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.PEERTUBECOMMENT, peertube.getId(), null, comment, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
add_comment_write.setText("");
add_comment_read.setVisibility(View.VISIBLE);
add_comment_write.setVisibility(View.GONE);
send.setVisibility(View.GONE);
add_comment_read.requestFocus();
}
}else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});
peertube_playlist.setOnClickListener(v -> { peertube_playlist.setOnClickListener(v -> {
@ -464,22 +471,22 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
initResolution(); initResolution();
peertube_like_count.setOnClickListener(v -> { peertube_like_count.setOnClickListener(v -> {
if (isLoggedIn(PeertubeActivity.this)) { if( isLoggedIn(PeertubeActivity.this) ) {
String newState = peertube.getMyRating().equals("like") ? "none" : "like"; String newState = peertube.getMyRating().equals("like") ? "none" : "like";
new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.RATEVIDEO, peertube.getId(), null, newState, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.RATEVIDEO, peertube.getId(), null, newState, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
peertube.setMyRating(newState); peertube.setMyRating(newState);
changeColor(); changeColor();
} else { }else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
} }
}); });
peertube_dislike_count.setOnClickListener(v -> { peertube_dislike_count.setOnClickListener(v -> {
if (isLoggedIn(PeertubeActivity.this)) { if( isLoggedIn(PeertubeActivity.this) ) {
String newState = peertube.getMyRating().equals("dislike") ? "none" : "dislike"; String newState = peertube.getMyRating().equals("dislike") ? "none" : "dislike";
new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.RATEVIDEO, peertube.getId(), null, newState, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.RATEVIDEO, peertube.getId(), null, newState, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
peertube.setMyRating(newState); peertube.setMyRating(newState);
changeColor(); changeColor();
} else { }else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show(); Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
} }
}); });

View File

@ -165,7 +165,7 @@ public class Peertube {
resolution = this.getResolution().get(0); resolution = this.getResolution().get(0);
if (resolution == null) if (resolution == null)
return null; return null;
if (streamService) { if (streamService ) {
return "https://" + this.host + "/static/streaming-playlists/hls/" + getUuid() + "/" + getUuid() + "-" + resolution + "-fragmented.mp4"; return "https://" + this.host + "/static/streaming-playlists/hls/" + getUuid() + "/" + getUuid() + "-" + resolution + "-fragmented.mp4";
} else { } else {
return "https://" + this.host + "/static/webseed/" + getUuid() + "-" + resolution + ".mp4"; return "https://" + this.host + "/static/webseed/" + getUuid() + "-" + resolution + ".mp4";

View File

@ -75,7 +75,8 @@
android:paddingLeft="4dp" android:paddingLeft="4dp"
android:paddingRight="4dp" android:paddingRight="4dp"
android:textColor="#FFBEBEBE" android:textColor="#FFBEBEBE"
android:textSize="12sp" /> android:textSize="14sp"
android:textStyle="bold"/>
<TextView <TextView
android:id="@id/exo_position" android:id="@id/exo_position"
@ -85,8 +86,8 @@
android:paddingLeft="4dp" android:paddingLeft="4dp"
android:paddingRight="4dp" android:paddingRight="4dp"
android:textColor="#FFBEBEBE" android:textColor="#FFBEBEBE"
android:textSize="14sp" android:textSize="12sp"
android:textStyle="bold" /> />
<com.google.android.exoplayer2.ui.DefaultTimeBar <com.google.android.exoplayer2.ui.DefaultTimeBar
android:id="@id/exo_progress" android:id="@id/exo_progress"
@ -102,8 +103,8 @@
android:paddingLeft="4dp" android:paddingLeft="4dp"
android:paddingRight="4dp" android:paddingRight="4dp"
android:textColor="#FFBEBEBE" android:textColor="#FFBEBEBE"
android:textSize="14sp" android:textSize="12sp"
android:textStyle="bold" /> />
<FrameLayout <FrameLayout
android:id="@+id/exo_fullscreen_button" android:id="@+id/exo_fullscreen_button"