mirror of
https://github.com/FreeTubeApp/FreeTube
synced 2024-11-27 12:29:17 +01:00
Channel Fixes and finish quality change logic
This commit is contained in:
parent
a4416638b7
commit
689479eb21
280
package-lock.json
generated
280
package-lock.json
generated
@ -3989,28 +3989,60 @@
|
||||
}
|
||||
},
|
||||
"@videojs/http-streaming": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.2.4.tgz",
|
||||
"integrity": "sha512-gzT46RpAEegOhMId/zZ6uXCVGDMPOv8qmoTykBuvd6/4lVM3lZ1ZJCq0kytAkisDuDKipy93gP46oZEtonlc/Q==",
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.7.1.tgz",
|
||||
"integrity": "sha512-e7I5zHtTklNlBXhWnl2Nla+8hqjXzKXauAVK8cmcN0b6keqwW3WQDfAAnAzzAGf3CvxDUVudRcWGQqtNrXYjmQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"@videojs/vhs-utils": "^2.2.1",
|
||||
"aes-decrypter": "3.1.0",
|
||||
"global": "^4.3.2",
|
||||
"m3u8-parser": "4.5.0",
|
||||
"mpd-parser": "0.14.0",
|
||||
"mux.js": "5.6.7",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^3.0.0",
|
||||
"aes-decrypter": "3.1.2",
|
||||
"global": "^4.4.0",
|
||||
"m3u8-parser": "4.6.0",
|
||||
"mpd-parser": "0.16.0",
|
||||
"mux.js": "5.11.0",
|
||||
"video.js": "^6 || ^7"
|
||||
},
|
||||
"dependencies": {
|
||||
"global": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
|
||||
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
||||
"requires": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "^0.11.10"
|
||||
}
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@videojs/vhs-utils": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-2.3.0.tgz",
|
||||
"integrity": "sha512-ThSmm91S7tuIJ757ON50K4y7S/bvKN4+B0tu303gCOxaG57PoP1UvPfMQZ90XGhxwNgngexVojOqbBHhTvXVHQ==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.0.tgz",
|
||||
"integrity": "sha512-HPgiaVB8/g7DooYFQ20uTinq4eNRHmIXGHHttK/Xwyvn19MfIpg9BfMNr9ywCvgHh0IUGrxt6P8AcmMO4xvxIA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"global": "^4.3.2",
|
||||
"url-toolkit": "^2.1.6"
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"global": "^4.4.0",
|
||||
"url-toolkit": "^2.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"global": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
|
||||
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
||||
"requires": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "^0.11.10"
|
||||
}
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@videojs/xhr": {
|
||||
@ -4350,14 +4382,30 @@
|
||||
"dev": true
|
||||
},
|
||||
"aes-decrypter": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.0.tgz",
|
||||
"integrity": "sha512-wL1NFwP2yNrJG4InpXYFhhYe9TfonnDyhyxMq2+K9/qt+SrZzUieOpviN6pkDly7GawTqw5feehk0rn5iYo00g==",
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.2.tgz",
|
||||
"integrity": "sha512-42nRwfQuPRj9R1zqZBdoxnaAmnIFyDi0MNyTVhjdFOd8fifXKKRfwIHIZ6AMn1or4x5WONzjwRTbTWcsIQ0O4A==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"@videojs/vhs-utils": "^2.2.1",
|
||||
"global": "^4.3.2",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^3.0.0",
|
||||
"global": "^4.4.0",
|
||||
"pkcs7": "^1.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"global": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
|
||||
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
||||
"requires": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "^0.11.10"
|
||||
}
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
|
||||
}
|
||||
}
|
||||
},
|
||||
"agent-base": {
|
||||
@ -8459,6 +8507,11 @@
|
||||
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
|
||||
"dev": true
|
||||
},
|
||||
"estree-walker": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
|
||||
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
|
||||
},
|
||||
"esutils": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
||||
@ -12335,13 +12388,29 @@
|
||||
}
|
||||
},
|
||||
"m3u8-parser": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.5.0.tgz",
|
||||
"integrity": "sha512-RGm/1WVCX3o1bSWbJGmJUu4zTbtJy8lImtgHM4CESFvJRXYztr1j6SW/q9/ghYOrUjgH7radsIar+z1Leln0sA==",
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.6.0.tgz",
|
||||
"integrity": "sha512-dKhhpMcPqDM/KzULVrNyDZ/z766peQjwUghDTcl6TE7DQKAt/vm74/IMUAxpO34f6LDpM+OH/dYGQwW1eM4yWw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"@videojs/vhs-utils": "^2.2.1",
|
||||
"global": "^4.3.2"
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^3.0.0",
|
||||
"global": "^4.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"global": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
|
||||
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
||||
"requires": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "^0.11.10"
|
||||
}
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
|
||||
}
|
||||
}
|
||||
},
|
||||
"m3u8stream": {
|
||||
@ -12365,6 +12434,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"magic-string": {
|
||||
"version": "0.25.7",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
|
||||
"integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
|
||||
"requires": {
|
||||
"sourcemap-codec": "^1.4.4"
|
||||
}
|
||||
},
|
||||
"makeerror": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
|
||||
@ -12644,14 +12721,35 @@
|
||||
"integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE="
|
||||
},
|
||||
"mpd-parser": {
|
||||
"version": "0.14.0",
|
||||
"resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.14.0.tgz",
|
||||
"integrity": "sha512-HqXQS3WLofcnYFcxv5oWdlciddUaEnN3NasXLVQ793mdnZRrinjz2Yk1DsUYPDYOUWf6ZBBqbFhaJT5LiT2ouA==",
|
||||
"version": "0.16.0",
|
||||
"resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.16.0.tgz",
|
||||
"integrity": "sha512-/pOFsDbOxXFAla47rYMdIypBZVtsQ9q3OHNuKtW2CJMaCGtNDtUcLS+B2TToYmB20rgi3XIgkyc2EsIvIAS4NA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"@videojs/vhs-utils": "^2.2.1",
|
||||
"global": "^4.3.2",
|
||||
"xmldom": "^0.1.27"
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^3.0.0",
|
||||
"global": "^4.4.0",
|
||||
"xmldom": "^0.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"global": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
|
||||
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
||||
"requires": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "^0.11.10"
|
||||
}
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz",
|
||||
"integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
@ -12676,9 +12774,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"mux.js": {
|
||||
"version": "5.6.7",
|
||||
"resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.6.7.tgz",
|
||||
"integrity": "sha512-YSr6B8MUgE4S18MptbY2XM+JKGbw9JDkgs7YkuE/T2fpDKjOhZfb/nD6vmsVxvLYOExWNaQn1UGBp6PGsnTtew=="
|
||||
"version": "5.11.0",
|
||||
"resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.11.0.tgz",
|
||||
"integrity": "sha512-Q/iLfohHh5Pp6lW7EFtcxNuaCNJ3Ruywfy46pWLsY+yIxR1kXXImYY1wOhg8jLdBMs1kRaZqsiB4Zncsiw0a2Q==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.11.2"
|
||||
}
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.14.2",
|
||||
@ -13902,23 +14003,37 @@
|
||||
}
|
||||
},
|
||||
"plist": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
|
||||
"integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz",
|
||||
"integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"base64-js": "^1.2.3",
|
||||
"base64-js": "^1.5.1",
|
||||
"xmlbuilder": "^9.0.7",
|
||||
"xmldom": "0.1.x"
|
||||
"xmldom": "^0.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"xmlbuilder": {
|
||||
"version": "9.0.7",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
|
||||
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz",
|
||||
"integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -14780,6 +14895,23 @@
|
||||
"sprintf-js": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"rollup-plugin-replace": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz",
|
||||
"integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==",
|
||||
"requires": {
|
||||
"magic-string": "^0.25.2",
|
||||
"rollup-pluginutils": "^2.6.0"
|
||||
}
|
||||
},
|
||||
"rollup-pluginutils": {
|
||||
"version": "2.8.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
|
||||
"integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
|
||||
"requires": {
|
||||
"estree-walker": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"rss-parser": {
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.12.0.tgz",
|
||||
@ -15575,6 +15707,11 @@
|
||||
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
|
||||
"dev": true
|
||||
},
|
||||
"sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
|
||||
},
|
||||
"spdx-correct": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
|
||||
@ -16754,9 +16891,9 @@
|
||||
}
|
||||
},
|
||||
"url-toolkit": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.1.tgz",
|
||||
"integrity": "sha512-8+DzgrtDZYZGhHaAop5WGVghMdCfOLGbhcArsJD0qDll71FXa7EeKxi2hilPIscn2nwMz4PRjML32Sz4JTN0Xw=="
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.2.tgz",
|
||||
"integrity": "sha512-l25w6Sy+Iy3/IbogunxhWwljPaDnqpiKvrQRoLBm6DfISco7NyRIS7Zf6+Oxhy1T8kHxWdwLND7ZZba6NjXMug=="
|
||||
},
|
||||
"use": {
|
||||
"version": "3.1.1",
|
||||
@ -16860,18 +16997,19 @@
|
||||
}
|
||||
},
|
||||
"video.js": {
|
||||
"version": "7.10.2",
|
||||
"resolved": "https://registry.npmjs.org/video.js/-/video.js-7.10.2.tgz",
|
||||
"integrity": "sha512-kJTTrqcQn2MhPzWR8zQs6W3HPJWpowO/ZGZcKt2dcJeJdJT0dEDLYtiFdjV37SylCmu66V0flRnV8cipbthveQ==",
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/video.js/-/video.js-7.12.1.tgz",
|
||||
"integrity": "sha512-0Owl7q4Zbm6YHX94P9WVqQ2vnpfeNyOtTNwuTEEoKovZogoqV2McOUmsQGM4Edtg4vGTiP74Fv6HVa1V6FeRfg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.9.2",
|
||||
"@videojs/http-streaming": "2.2.4",
|
||||
"@videojs/http-streaming": "2.7.1",
|
||||
"@videojs/xhr": "2.5.1",
|
||||
"global": "4.3.2",
|
||||
"keycode": "^2.2.0",
|
||||
"rollup-plugin-replace": "^2.2.0",
|
||||
"safe-json-parse": "4.0.0",
|
||||
"videojs-font": "3.2.0",
|
||||
"videojs-vtt.js": "^0.15.2"
|
||||
"videojs-vtt.js": "^0.15.3"
|
||||
}
|
||||
},
|
||||
"videojs-abloop": {
|
||||
@ -16880,9 +17018,9 @@
|
||||
"integrity": "sha512-6/hvtB5gNQUr5FJ969UhXVg5H+3wxhOzh9AVftlezOXlhzzaWfNfiOJYqNKo01Gc/eSQOvfttrOX7jH+aHpwrw=="
|
||||
},
|
||||
"videojs-contrib-quality-levels": {
|
||||
"version": "2.0.9",
|
||||
"resolved": "https://registry.npmjs.org/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.0.9.tgz",
|
||||
"integrity": "sha512-HJeaJJQdSufi9Y5T7jlyyhkeq+mWPCog86q6ypoTi66boBMMJTo2abiOSHS9KaOGAJjH72gfvrjVY5FRdjlxYA==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.1.0.tgz",
|
||||
"integrity": "sha512-dqGQGbL9AFhucxki7Zh0c3kIhH0PAPcHEh6jUdRyaFCVeOuqnJrOYs/3wNtsokDdBdRf2Du2annpu4Z2XaSZRg==",
|
||||
"requires": {
|
||||
"global": "^4.3.2",
|
||||
"video.js": "^6 || ^7"
|
||||
@ -16901,6 +17039,17 @@
|
||||
"global": "^4.3.2",
|
||||
"video.js": "^7.0.0",
|
||||
"videojs-contrib-quality-levels": "^2.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"videojs-contrib-quality-levels": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.1.0.tgz",
|
||||
"integrity": "sha512-dqGQGbL9AFhucxki7Zh0c3kIhH0PAPcHEh6jUdRyaFCVeOuqnJrOYs/3wNtsokDdBdRf2Du2annpu4Z2XaSZRg==",
|
||||
"requires": {
|
||||
"global": "^4.3.2",
|
||||
"video.js": "^6 || ^7"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"videojs-ie8": {
|
||||
@ -17027,9 +17176,9 @@
|
||||
}
|
||||
},
|
||||
"videojs-vtt.js": {
|
||||
"version": "0.15.2",
|
||||
"resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.2.tgz",
|
||||
"integrity": "sha512-kEo4hNMvu+6KhPvVYPKwESruwhHC3oFis133LwhXHO9U7nRnx0RiJYMiqbgwjgazDEXHR6t8oGJiHM6wq5XlAw==",
|
||||
"version": "0.15.3",
|
||||
"resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.3.tgz",
|
||||
"integrity": "sha512-5FvVsICuMRx6Hd7H/Y9s9GDeEtYcXQWzGMS+sl4UX3t/zoHp3y+isSfIPRochnTH7h+Bh1ILyC639xy9Z6kPag==",
|
||||
"requires": {
|
||||
"global": "^4.3.1"
|
||||
}
|
||||
@ -18226,11 +18375,6 @@
|
||||
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
|
||||
"dev": true
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.1.31",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
|
||||
"integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ=="
|
||||
},
|
||||
"xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
@ -18302,9 +18446,9 @@
|
||||
}
|
||||
},
|
||||
"yt-channel-info": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yt-channel-info/-/yt-channel-info-2.1.0.tgz",
|
||||
"integrity": "sha512-e7rDJUw+GoOMojQYLG/SlD4gwXiRChmRj+tMzfLyoHUuvELZKq3bayTkepFDNls/0dLwc/vU6Xr9uAIXRGLvBw==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yt-channel-info/-/yt-channel-info-2.1.1.tgz",
|
||||
"integrity": "sha512-oiTSuEGCMFMpgZYYDZhxskPoUnhkFY2DukkTy90wsQdHNfAIjPsqitHYBm75rXDkL2ubLX+nogzf3ZHa9U1e6A==",
|
||||
"requires": {
|
||||
"axios": "^0.21.1",
|
||||
"querystring": "^0.2.0"
|
||||
@ -18319,9 +18463,9 @@
|
||||
}
|
||||
},
|
||||
"follow-redirects": {
|
||||
"version": "1.13.3",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
|
||||
"integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA=="
|
||||
"version": "1.14.0",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz",
|
||||
"integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -31,9 +31,9 @@
|
||||
"opml-to-json": "^1.0.1",
|
||||
"rss-parser": "^3.12.0",
|
||||
"socks-proxy-agent": "^5.0.0",
|
||||
"video.js": "7.10.2",
|
||||
"video.js": "^7.12.1",
|
||||
"videojs-abloop": "^1.2.0",
|
||||
"videojs-contrib-quality-levels": "^2.0.9",
|
||||
"videojs-contrib-quality-levels": "^2.1.0",
|
||||
"videojs-http-source-selector": "^1.1.6",
|
||||
"videojs-overlay": "^2.1.4",
|
||||
"videojs-replay": "^1.1.0",
|
||||
@ -47,7 +47,7 @@
|
||||
"xml2json": "^0.12.0",
|
||||
"youtube-chat": "git+https://github.com/IcedCoffeee/youtube-chat.git",
|
||||
"youtube-suggest": "^1.1.2",
|
||||
"yt-channel-info": "^2.1.0",
|
||||
"yt-channel-info": "^2.1.1",
|
||||
"yt-comment-scraper": "^4.0.1",
|
||||
"yt-dash-manifest-generator": "1.1.0",
|
||||
"yt-trending-scraper": "^1.1.3",
|
||||
|
@ -42,6 +42,7 @@ export default Vue.extend({
|
||||
isLive: false,
|
||||
isFavorited: false,
|
||||
isUpcoming: false,
|
||||
isPremium: false,
|
||||
hideViews: false,
|
||||
optionsValues: [
|
||||
'history',
|
||||
@ -321,6 +322,7 @@ export default Vue.extend({
|
||||
this.description = this.data.description
|
||||
this.isLive = this.data.liveNow || this.data.lengthSeconds === 'undefined'
|
||||
this.isUpcoming = this.data.isUpcoming || this.data.premiere
|
||||
this.isPremium = this.data.premium || false
|
||||
this.viewCount = this.data.viewCount
|
||||
|
||||
if (typeof (this.data.premiereTimestamp) !== 'undefined') {
|
||||
|
@ -74,6 +74,7 @@ export default Vue.extend({
|
||||
useHls: false,
|
||||
selectedDefaultQuality: '',
|
||||
selectedQuality: '',
|
||||
using60Fps: false,
|
||||
maxFramerate: 0,
|
||||
activeSourceList: [],
|
||||
mouseTimeout: null,
|
||||
@ -416,7 +417,11 @@ export default Vue.extend({
|
||||
}
|
||||
|
||||
this.player.qualityLevels().levels_.sort((a, b) => {
|
||||
return a.height - b.height
|
||||
if (a.height === b.height) {
|
||||
return a.bitrate - b.bitrate
|
||||
} else {
|
||||
return a.height - b.height
|
||||
}
|
||||
}).forEach((ql, index, arr) => {
|
||||
const height = ql.height
|
||||
const width = ql.width
|
||||
@ -427,14 +432,16 @@ export default Vue.extend({
|
||||
upperLevel = arr[index + 1]
|
||||
}
|
||||
|
||||
if (this.defaultQuality === quality) {
|
||||
this.setDashQualityLevel(height)
|
||||
if (this.defaultQuality === quality && upperLevel === null) {
|
||||
this.setDashQualityLevel(height, true)
|
||||
} else if (upperLevel !== null) {
|
||||
const upperHeight = upperLevel.height
|
||||
const upperWidth = upperLevel.width
|
||||
const upperQuality = upperWidth < upperHeight ? upperWidth : upperHeight
|
||||
|
||||
if (this.defaultQuality >= quality && this.defaultQuality < upperQuality) {
|
||||
if (this.defaultQuality >= quality && this.defaultQuality === upperQuality) {
|
||||
this.setDashQualityLevel(height, true)
|
||||
} else if (this.defaultQuality >= quality && this.defaultQuality < upperQuality) {
|
||||
this.setDashQualityLevel(height)
|
||||
}
|
||||
} else if (index === 0 && quality > this.defaultQuality) {
|
||||
@ -445,23 +452,65 @@ export default Vue.extend({
|
||||
})
|
||||
},
|
||||
|
||||
setDashQualityLevel: function (qualityLevel) {
|
||||
if (this.selectedQuality === qualityLevel) {
|
||||
setDashQualityLevel: function (qualityLevel, is60Fps = false) {
|
||||
if (this.selectedQuality === qualityLevel && this.using60Fps === is60Fps) {
|
||||
return
|
||||
}
|
||||
let foundSelectedQuality = false
|
||||
this.using60Fps = is60Fps
|
||||
this.player.qualityLevels().levels_.sort((a, b) => {
|
||||
return a.height - b.height
|
||||
if (a.height === b.height) {
|
||||
return a.bitrate - b.bitrate
|
||||
} else {
|
||||
return a.height - b.height
|
||||
}
|
||||
}).forEach((ql, index, arr) => {
|
||||
if (qualityLevel === 'auto' || ql.height === qualityLevel) {
|
||||
if (foundSelectedQuality) {
|
||||
ql.enabled = false
|
||||
ql.enabled_(false)
|
||||
} else if (qualityLevel === 'auto') {
|
||||
ql.enabled = true
|
||||
ql.enabled_(true)
|
||||
} else if (ql.height === qualityLevel) {
|
||||
ql.enabled = true
|
||||
ql.enabled_(true)
|
||||
foundSelectedQuality = true
|
||||
|
||||
let lowerQuality
|
||||
let higherQuality
|
||||
|
||||
if ((index - 1) !== -1) {
|
||||
lowerQuality = arr[index - 1]
|
||||
}
|
||||
|
||||
if ((index + 1) < arr.length) {
|
||||
higherQuality = arr[index + 1]
|
||||
}
|
||||
|
||||
if (typeof (lowerQuality) !== 'undefined' && lowerQuality.height === ql.height && lowerQuality.bitrate < ql.bitrate && !is60Fps) {
|
||||
ql.enabled = false
|
||||
ql.enabled_(false)
|
||||
foundSelectedQuality = false
|
||||
}
|
||||
|
||||
if (typeof (higherQuality) !== 'undefined' && higherQuality.height === ql.height && higherQuality.bitrate > ql.bitrate && is60Fps) {
|
||||
ql.enabled = false
|
||||
ql.enabled_(false)
|
||||
foundSelectedQuality = false
|
||||
}
|
||||
} else {
|
||||
ql.enabled = false
|
||||
ql.enabled_(false)
|
||||
}
|
||||
})
|
||||
|
||||
const selectedQuality = qualityLevel === 'auto' ? 'auto' : qualityLevel + 'p'
|
||||
let selectedQuality = qualityLevel
|
||||
|
||||
if (selectedQuality !== 'auto' && is60Fps) {
|
||||
selectedQuality = selectedQuality + 'p60'
|
||||
} else if (selectedQuality !== 'auto') {
|
||||
selectedQuality = selectedQuality + 'p'
|
||||
}
|
||||
|
||||
const qualityElement = document.getElementById('vjs-current-quality')
|
||||
qualityElement.innerText = selectedQuality
|
||||
@ -677,9 +726,9 @@ export default Vue.extend({
|
||||
},
|
||||
handleClick: function(event) {
|
||||
const selectedQuality = event.target.innerText
|
||||
const quality = selectedQuality === 'auto' ? 'auto' : parseInt(selectedQuality.replace('p', ''))
|
||||
v.setDashQualityLevel(quality)
|
||||
// console.log(this.player().qualityLevels())
|
||||
const quality = selectedQuality === 'auto' ? 'auto' : parseInt(selectedQuality.replace('p(60)?', ''))
|
||||
const is60Fps = selectedQuality.includes('p60')
|
||||
v.setDashQualityLevel(quality, is60Fps)
|
||||
},
|
||||
createControlTextEl: function (button) {
|
||||
const beginningHtml = `<div class="vjs-quality-level-value">
|
||||
@ -695,10 +744,21 @@ export default Vue.extend({
|
||||
</li>`
|
||||
|
||||
levels.levels_.sort((a, b) => {
|
||||
return b.height - a.height
|
||||
}).forEach((quality) => {
|
||||
if (b.height === a.height) {
|
||||
return b.bitrate - a.bitrate
|
||||
} else {
|
||||
return b.height - a.height
|
||||
}
|
||||
}).forEach((quality, index, array) => {
|
||||
let is60Fps = false
|
||||
if (index < array.length - 1 && array[index + 1].height === quality.height) {
|
||||
if (array[index + 1].bitrate < quality.bitrate) {
|
||||
is60Fps = true
|
||||
}
|
||||
}
|
||||
const qualityText = is60Fps ? quality.height + 'p60' : quality.height + 'p'
|
||||
qualityHtml = qualityHtml + `<li class="vjs-menu-item quality-item" role="menuitemradio" tabindex="-1" aria-checked="false aria-disabled="false">
|
||||
<span class="vjs-menu-item-text">${quality.height}p</span>
|
||||
<span class="vjs-menu-item-text">${qualityText}</span>
|
||||
<span class="vjs-control-text" aria-live="polite"></span>
|
||||
</li>`
|
||||
})
|
||||
|
@ -49,6 +49,18 @@ export default Vue.extend({
|
||||
|
||||
backendPreference: function () {
|
||||
return this.$store.getters.getBackendPreference
|
||||
},
|
||||
|
||||
forwardText: function () {
|
||||
return this.$t('Forward')
|
||||
},
|
||||
|
||||
backwardText: function () {
|
||||
return this.$t('Backward')
|
||||
},
|
||||
|
||||
newWindowText: function () {
|
||||
return this.$t('Open New Window')
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
@ -124,7 +136,7 @@ export default Vue.extend({
|
||||
case 'hashtag': {
|
||||
// TODO: Implement a hashtag related view
|
||||
let message = 'Hashtags have not yet been implemented, try again later'
|
||||
if (this.$te(message) && this.$t(message) !== '') {
|
||||
if (this.$t(message) && this.$t(message) !== '') {
|
||||
message = this.$t(message)
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
tabindex="0"
|
||||
@click="historyBack"
|
||||
@keypress="historyBack"
|
||||
:title="forwardText"
|
||||
/>
|
||||
<font-awesome-icon
|
||||
class="navForwardIcon navIcon"
|
||||
@ -27,6 +28,7 @@
|
||||
tabindex="0"
|
||||
@click="historyForward"
|
||||
@keypress="historyForward"
|
||||
:title="forwardText"
|
||||
/>
|
||||
<font-awesome-icon
|
||||
class="navSearchIcon navIcon"
|
||||
@ -40,6 +42,7 @@
|
||||
class="navNewWindowIcon navIcon"
|
||||
icon="clone"
|
||||
@click="createNewWindow"
|
||||
:title="newWindowText"
|
||||
/>
|
||||
<div class="logo">
|
||||
<div
|
||||
|
@ -664,10 +664,12 @@ body.vjs-full-window {
|
||||
display: none;
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
left: -8px;
|
||||
left: -15px;
|
||||
z-index: 5;
|
||||
background-color: #151b17;
|
||||
width: 50px;
|
||||
width: 70px;
|
||||
max-height: 225px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.vjs-quality-level-menu:hover {
|
||||
|
@ -257,7 +257,7 @@ export default Vue.extend({
|
||||
}
|
||||
this.thumbnailUrl = response.authorThumbnails[2].url
|
||||
this.channelDescription = autolinker.link(response.description)
|
||||
this.relatedChannels = response.relatedChannels
|
||||
this.relatedChannels = response.relatedChannels.items
|
||||
|
||||
if (response.authorBanners !== null) {
|
||||
const bannerUrl = response.authorBanners[response.authorBanners.length - 1].url
|
||||
|
@ -428,7 +428,14 @@ export default Vue.extend({
|
||||
if (this.proxyVideos) {
|
||||
this.dashSrc = await this.createInvidiousDashManifest()
|
||||
} else {
|
||||
this.dashSrc = await this.createLocalDashManifest(result.player_response.streamingData.adaptiveFormats)
|
||||
const adaptiveFormats = result.player_response.streamingData.adaptiveFormats.filter((video) => {
|
||||
if (typeof (video.qualityLabel) !== 'undefined') {
|
||||
return !video.qualityLabel.includes('HDR')
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
})
|
||||
this.dashSrc = await this.createLocalDashManifest(adaptiveFormats)
|
||||
}
|
||||
|
||||
this.audioSourceList = result.player_response.streamingData.adaptiveFormats.filter((format) => {
|
||||
|
@ -28,6 +28,7 @@ Minimize: Minimize
|
||||
Close: Close
|
||||
Back: Back
|
||||
Forward: Forward
|
||||
Open New Window: Open New Window
|
||||
|
||||
Version $ is now available! Click for more details: Version $ is now available! Click
|
||||
for more details
|
||||
|
Loading…
Reference in New Issue
Block a user