option.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /* global DPLAYER_VERSION GIT_HASH */
  2. const defaultApiBackend = require('./api.js');
  3. module.exports = (option) => {
  4. const isMobile = /mobile/i.test(window.navigator.userAgent);
  5. // compatibility: some mobile browsers don't suppose autoplay
  6. if (isMobile) {
  7. option.autoplay = false;
  8. }
  9. // default options
  10. const defaultOption = {
  11. element: document.getElementsByClassName('dplayer')[0],
  12. autoplay: false,
  13. theme: '#b7daff',
  14. loop: false,
  15. lang: (navigator.language || navigator.browserLanguage).toLowerCase(),
  16. screenshot: false,
  17. hotkey: true,
  18. preload: 'auto',
  19. volume: '0.7',
  20. apiBackend: defaultApiBackend,
  21. video: {},
  22. contextmenu: []
  23. };
  24. for (const defaultKey in defaultOption) {
  25. if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {
  26. option[defaultKey] = defaultOption[defaultKey];
  27. }
  28. }
  29. if (option.video && !option.video.hasOwnProperty('type')) {
  30. option.video.type = 'auto';
  31. }
  32. if (option.danmaku && !option.danmaku.hasOwnProperty('user')) {
  33. option.danmaku.user = 'DIYgod';
  34. }
  35. if (option.video.quality) {
  36. option.video.url = [option.video.quality[option.video.defaultQuality].url];
  37. }
  38. if (option.lang) {
  39. option.lang = option.lang.toLowerCase();
  40. }
  41. option.contextmenu = option.contextmenu.concat([{
  42. text: 'About author',
  43. link: 'https://www.anotherhome.net/'
  44. }, {
  45. text: 'About DPlayer',
  46. link: 'https://github.com/MoePlayer/DPlayer'
  47. }, {
  48. text: 'DPlayer feedback',
  49. link: 'https://github.com/DIYgod/DPlayer/issues'
  50. }, {
  51. text: `DPlayer ${DPLAYER_VERSION} ${GIT_HASH}`,
  52. link: 'https://github.com/MoePlayer/DPlayer/commits/master'
  53. }]);
  54. return option;
  55. };