Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import { includes } from 'lodash';
/**
* YouTube Params Parser
* Takes the given YouTube URN
* and returns a body to feed into YouTube iFrame API
*
* @param { string } fullID
* @return { object } ytParams
* ytParams.videoId - string
* ytParams.startSeconds - number
* ytParams.suggestedQuality - 'default'
* ytParams.hasTimestamp - boolean
*/
export default (fullID) => {
const urnQueryStart = new RegExp(/\?\=/g);
const suggestedQuality = 'default';
const defaultStartSeconds = 0;
let secondsRetrieved;
const videoIdPieces = fullID.split(urnQueryStart);
const hasTimestamp = videoIdPieces.length > 1;
const videoId = videoIdPieces[0];
if (!hasTimestamp) {
return {
videoId,
startSeconds: defaultStartSeconds,
suggestedQuality,
hasTimestamp
};
}
videoIdPieces.forEach((idPiece) => {
const hasTimeStamp = includes(idPiece, 't=');
if (hasTimeStamp) {
const secondsString = idPiece.substring(2);
secondsRetrieved = parseInt(secondsString, 10);
}
});
const startSeconds = Number.isInteger(secondsRetrieved)
? secondsRetrieved
: defaultStartSeconds;
const params = {
videoId,
startSeconds,
suggestedQuality,
hasTimestamp
};
return params;
};
|