mirror of
https://github.com/TeamNewPipe/NewPipe.git
synced 2024-11-22 02:53:09 +01:00
halfway through implementing timestamps:
* still need to use the start position value stored in the PlayVideoActivity's Intent bundle, to set the VideoView using seekTo() * need to test timestamp extraction regex, and possibly move it somewhere else *need to find a better way to get the startPosition value to ActionBarHandler, which I thought used VideoInfo objects, but apparently doesn't * currently there is a small setStartPosition() method
This commit is contained in:
parent
b65263349e
commit
b0182ed604
@ -48,6 +48,7 @@ public class ActionBarHandler {
|
|||||||
private String videoTitle = "";
|
private String videoTitle = "";
|
||||||
|
|
||||||
SharedPreferences defaultPreferences = null;
|
SharedPreferences defaultPreferences = null;
|
||||||
|
private int startPosition;
|
||||||
|
|
||||||
class FormatItemSelectListener implements ActionBar.OnNavigationListener {
|
class FormatItemSelectListener implements ActionBar.OnNavigationListener {
|
||||||
@Override
|
@Override
|
||||||
@ -216,12 +217,18 @@ public class ActionBarHandler {
|
|||||||
intent.putExtra(PlayVideoActivity.VIDEO_TITLE, videoTitle);
|
intent.putExtra(PlayVideoActivity.VIDEO_TITLE, videoTitle);
|
||||||
intent.putExtra(PlayVideoActivity.STREAM_URL, videoStreams[selectedStream].url);
|
intent.putExtra(PlayVideoActivity.STREAM_URL, videoStreams[selectedStream].url);
|
||||||
intent.putExtra(PlayVideoActivity.VIDEO_URL, websiteUrl);
|
intent.putExtra(PlayVideoActivity.VIDEO_URL, websiteUrl);
|
||||||
activity.startActivity(intent);
|
intent.putExtra(PlayVideoActivity.START_POSITION, startPosition);
|
||||||
|
activity.startActivity(intent); //also HERE !!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// --------------------------------------------
|
// --------------------------------------------
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setStartPosition(int startPositionSeconds)
|
||||||
|
{
|
||||||
|
this.startPosition = startPositionSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
public void downloadVideo() {
|
public void downloadVideo() {
|
||||||
if(!videoTitle.isEmpty()) {
|
if(!videoTitle.isEmpty()) {
|
||||||
String videoSuffix = "." + MediaFormat.getSuffixById(videoStreams[selectedStream].format);
|
String videoSuffix = "." + MediaFormat.getSuffixById(videoStreams[selectedStream].format);
|
||||||
|
@ -52,6 +52,7 @@ public class PlayVideoActivity extends AppCompatActivity {
|
|||||||
public static final String STREAM_URL = "stream_url";
|
public static final String STREAM_URL = "stream_url";
|
||||||
public static final String VIDEO_TITLE = "video_title";
|
public static final String VIDEO_TITLE = "video_title";
|
||||||
private static final String POSITION = "position";
|
private static final String POSITION = "position";
|
||||||
|
public static final String START_POSITION = "start_position";
|
||||||
|
|
||||||
private static final long HIDING_DELAY = 3000;
|
private static final long HIDING_DELAY = 3000;
|
||||||
private static final long TAB_HIDING_DELAY = 100;
|
private static final long TAB_HIDING_DELAY = 100;
|
||||||
|
@ -50,6 +50,7 @@ public class VideoInfo {
|
|||||||
public VideoInfoItem nextVideo = null;
|
public VideoInfoItem nextVideo = null;
|
||||||
public VideoInfoItem[] relatedVideos = null;
|
public VideoInfoItem[] relatedVideos = null;
|
||||||
public int videoAvailableStatus = VIDEO_AVAILABLE;
|
public int videoAvailableStatus = VIDEO_AVAILABLE;
|
||||||
|
public int startPosition = 0;//in seconds
|
||||||
|
|
||||||
private static final String TAG = VideoInfo.class.toString();
|
private static final String TAG = VideoInfo.class.toString();
|
||||||
|
|
||||||
|
@ -169,6 +169,23 @@ public class YoutubeExtractor implements Extractor {
|
|||||||
Document doc = Jsoup.parse(site, siteUrl);
|
Document doc = Jsoup.parse(site, siteUrl);
|
||||||
|
|
||||||
videoInfo.id = matchGroup1("v=([0-9a-zA-Z_-]{11})", siteUrl);
|
videoInfo.id = matchGroup1("v=([0-9a-zA-Z_-]{11})", siteUrl);
|
||||||
|
String timeStamp = matchGroup1("((#|&)t=\\d{0,3}h?\\d{0,3}m?\\d{1,3}s)", siteUrl);
|
||||||
|
Log.i(TAG, "time stamp:"+timeStamp);
|
||||||
|
//videoInfo.startPosition
|
||||||
|
|
||||||
|
//TODO: test this!
|
||||||
|
if(timeStamp.length() > 0) {
|
||||||
|
String secondsString = matchGroup1("(\\d{1,3})s", timeStamp);
|
||||||
|
String minutesString = matchGroup1("(\\d{1,3})m", timeStamp);
|
||||||
|
String hoursString = matchGroup1("(\\d{1,3})h", timeStamp);
|
||||||
|
|
||||||
|
int seconds = (secondsString.length() > 0 ? Integer.parseInt(secondsString) : 0);
|
||||||
|
int minutes = (minutesString.length() > 0 ? Integer.parseInt(minutesString) : 0);
|
||||||
|
int hours = (hoursString.length() > 0 ? Integer.parseInt(hoursString) : 0);
|
||||||
|
|
||||||
|
videoInfo.startPosition = seconds + (60*minutes) + (3600*hours);//don't trust BODMAS!
|
||||||
|
//the ordering varies internationally
|
||||||
|
}//else, leave videoInfo.startPosition as default 0
|
||||||
|
|
||||||
videoInfo.age_limit = 0;
|
videoInfo.age_limit = 0;
|
||||||
videoInfo.webpage_url = siteUrl;
|
videoInfo.webpage_url = siteUrl;
|
||||||
@ -410,7 +427,7 @@ public class YoutubeExtractor implements Extractor {
|
|||||||
|
|
||||||
Element img = li.select("img").first();
|
Element img = li.select("img").first();
|
||||||
info.thumbnail_url = img.attr("abs:src");
|
info.thumbnail_url = img.attr("abs:src");
|
||||||
// Sometimes youtube sends links to gif files witch somehow seam to not exist
|
// Sometimes youtube sends links to gif files which somehow sesm to not exist
|
||||||
// anymore. Items with such gif also offer a secondary image source. So we are going
|
// anymore. Items with such gif also offer a secondary image source. So we are going
|
||||||
// to use that if we caught such an item.
|
// to use that if we caught such an item.
|
||||||
if(info.thumbnail_url.contains(".gif")) {
|
if(info.thumbnail_url.contains(".gif")) {
|
||||||
|
Loading…
Reference in New Issue
Block a user