multi_embed_player 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/build-and-deploy.yml +44 -0
- package/.gitmodules +3 -0
- package/CLAUDE.md +92 -0
- package/README.md +0 -24
- package/add_types.sh +61 -0
- package/browserExtention/chrome/background.js +55 -0
- package/browserExtention/chrome/extention.json +1 -0
- package/browserExtention/chrome/liteplayer.js +26439 -0
- package/browserExtention/chrome/manifest.json +31 -0
- package/browserExtention/chrome/player-selector.js +1854 -0
- package/browserExtention/firefox/background.js +27 -0
- package/browserExtention/firefox/extention.json +1 -0
- package/browserExtention/firefox/liteplayer.js +26439 -0
- package/browserExtention/firefox/manifest.json +19 -0
- package/browserExtention/firefox/player-selector.js +1854 -0
- package/documents/.hugo_build.lock +0 -0
- package/documents/archetypes/default.md +5 -0
- package/documents/assets/jsconfig.json +11 -0
- package/documents/content/docs/install.md +103 -0
- package/documents/content/docs/quickstart.md +51 -0
- package/documents/content/docs/reference/HTML.md +31 -0
- package/documents/content/docs/reference/_index.md +10 -0
- package/documents/content/docs/reference/error_code.md +23 -0
- package/documents/content/docs/reference/iframe_api.md +737 -0
- package/documents/content/docs/reference/iframe_class.md +230 -0
- package/documents/content/docs/reference/multi_embed_player_class.md +113 -0
- package/documents/content/docs/reference/reserved_words.md +71 -0
- package/documents/content/docs/usage/GDPR_mode.md +77 -0
- package/documents/content/docs/usage/_index.md +10 -0
- package/documents/content/docs/usage/custom_playlist.md +239 -0
- package/documents/content/docs/usage/embed_api.md +163 -0
- package/documents/content/docs/usage/embed_various_service.md +81 -0
- package/documents/content/docs/usage/thumbnail_click.md +57 -0
- package/documents/go.mod +8 -0
- package/documents/go.sum +14 -0
- package/documents/hugo.toml +18 -0
- package/documents/layouts/partials/docs/sidebar.html +117 -0
- package/documents/layouts/partials/landing/features.html +47 -0
- package/documents/layouts/robots.txt +4 -0
- package/documents/static/_headers +7 -0
- package/documents/static/localStorageCheck.html +27 -0
- package/documents/static/no_extention.json +1 -0
- package/example.html +27 -0
- package/extention.json +1 -0
- package/icon/video_not_found.odg +0 -0
- package/icon/video_not_found.svgz +0 -0
- package/iframe_api/bilibili.ts +1095 -0
- package/iframe_api/niconico.ts +429 -0
- package/iframe_api/soundcloud.ts +450 -0
- package/iframe_api/youtube.ts +311 -0
- package/multi_embed_player.ts +989 -0
- package/package.json +10 -41
- package/player_api_gate/bilibili-api-gate/cgi/cpp/bilibili-api-gate-cgi.cpp +281 -0
- package/player_api_gate/bilibili-api-gate/cgi/go/src.go +46 -0
- package/player_api_gate/bilibili-api-gate/cloudflare_workers/package-lock.json +1356 -0
- package/player_api_gate/bilibili-api-gate/cloudflare_workers/package.json +12 -0
- package/player_api_gate/bilibili-api-gate/cloudflare_workers/src/index.js +50 -0
- package/player_api_gate/bilibili-api-gate/cloudflare_workers/wrangler.toml +3 -0
- package/player_api_gate/iframe-api-ts/.editorconfig +12 -0
- package/player_api_gate/iframe-api-ts/.prettierrc +6 -0
- package/player_api_gate/iframe-api-ts/package-lock.json +3054 -0
- package/player_api_gate/iframe-api-ts/package.json +18 -0
- package/player_api_gate/iframe-api-ts/src/bilibili.ts +49 -0
- package/player_api_gate/iframe-api-ts/src/index.ts +35 -0
- package/player_api_gate/iframe-api-ts/src/niconico.ts +95 -0
- package/player_api_gate/iframe-api-ts/src/soundcloud.ts +38 -0
- package/player_api_gate/iframe-api-ts/src/types.ts +115 -0
- package/player_api_gate/iframe-api-ts/src/url-proxy.ts +29 -0
- package/player_api_gate/iframe-api-ts/src/utils.ts +82 -0
- package/player_api_gate/iframe-api-ts/src/youtube.ts +41 -0
- package/player_api_gate/iframe-api-ts/test/bilibili.spec.ts +47 -0
- package/player_api_gate/iframe-api-ts/test/env.d.ts +3 -0
- package/player_api_gate/iframe-api-ts/test/index.spec.ts +59 -0
- package/player_api_gate/iframe-api-ts/test/niconico.spec.ts +55 -0
- package/player_api_gate/iframe-api-ts/test/soundcloud.spec.ts +55 -0
- package/player_api_gate/iframe-api-ts/test/tsconfig.json +8 -0
- package/player_api_gate/iframe-api-ts/test/url-proxy.spec.ts +46 -0
- package/player_api_gate/iframe-api-ts/test/youtube.spec.ts +45 -0
- package/player_api_gate/iframe-api-ts/tsconfig.json +45 -0
- package/player_api_gate/iframe-api-ts/vitest.config.mts +11 -0
- package/player_api_gate/iframe-api-ts/worker-configuration.d.ts +5768 -0
- package/player_api_gate/iframe-api-ts/wrangler.jsonc +47 -0
- package/player_api_gate/iframe_api/.editorconfig +13 -0
- package/player_api_gate/iframe_api/.prettierrc +6 -0
- package/player_api_gate/iframe_api/package-lock.json +1307 -0
- package/player_api_gate/iframe_api/package.json +12 -0
- package/player_api_gate/iframe_api/src/bilibili_api.js +60 -0
- package/player_api_gate/iframe_api/src/index.js +47 -0
- package/player_api_gate/iframe_api/src/niconico_api.js +112 -0
- package/player_api_gate/iframe_api/src/soundcloud_api.js +57 -0
- package/player_api_gate/iframe_api/src/url_proxy.js +28 -0
- package/player_api_gate/iframe_api/src/youtube_api.js +44 -0
- package/player_api_gate/iframe_api/wrangler.toml +51 -0
- package/player_api_gate/niconico-imager/cgi/go/src.go +74 -0
- package/player_api_gate/niconico-imager/cloudflare_workers/package-lock.json +2175 -0
- package/player_api_gate/niconico-imager/cloudflare_workers/package.json +12 -0
- package/player_api_gate/niconico-imager/cloudflare_workers/src/index.js +78 -0
- package/player_api_gate/niconico-imager/cloudflare_workers/wrangler.toml +3 -0
- package/test_script.html +172 -0
- package/tsconfig.json +36 -0
- package/dist/iframe_api/bilibili.d.ts +0 -91
- package/dist/iframe_api/bilibili.d.ts.map +0 -1
- package/dist/iframe_api/bilibili.js +0 -451
- package/dist/iframe_api/bilibili.js.map +0 -1
- package/dist/iframe_api/index.d.ts +0 -6
- package/dist/iframe_api/index.d.ts.map +0 -1
- package/dist/iframe_api/index.js +0 -8
- package/dist/iframe_api/index.js.map +0 -1
- package/dist/iframe_api/niconico.d.ts +0 -42
- package/dist/iframe_api/niconico.d.ts.map +0 -1
- package/dist/iframe_api/niconico.js +0 -181
- package/dist/iframe_api/niconico.js.map +0 -1
- package/dist/iframe_api/soundcloud.d.ts +0 -80
- package/dist/iframe_api/soundcloud.d.ts.map +0 -1
- package/dist/iframe_api/soundcloud.js +0 -188
- package/dist/iframe_api/soundcloud.js.map +0 -1
- package/dist/iframe_api/youtube.d.ts +0 -133
- package/dist/iframe_api/youtube.d.ts.map +0 -1
- package/dist/iframe_api/youtube.js +0 -278
- package/dist/iframe_api/youtube.js.map +0 -1
- package/dist/multi_embed_player.d.ts +0 -48
- package/dist/multi_embed_player.d.ts.map +0 -1
- package/dist/multi_embed_player.js +0 -318
- package/dist/multi_embed_player.js.map +0 -1
- package/dist/types.d.ts +0 -126
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -22
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Welcome to Cloudflare Workers! This is your first worker.
|
|
3
|
+
*
|
|
4
|
+
* - Run `npx wrangler dev src/index.js` in your terminal to start a development server
|
|
5
|
+
* - Open a browser tab at http://localhost:8787/ to see your worker in action
|
|
6
|
+
* - Run `npx wrangler publish src/index.js --name my-worker` to publish your worker
|
|
7
|
+
*
|
|
8
|
+
* Learn more at https://developers.cloudflare.com/workers/
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
xml_search(data,search_string,start=0){
|
|
13
|
+
return data.substring(data.indexOf("<"+search_string+">",start)+search_string.length+2,data.indexOf("</"+search_string+">",start))
|
|
14
|
+
},
|
|
15
|
+
async fetch(request, env, ctx) {
|
|
16
|
+
let return_data = {};
|
|
17
|
+
//get query string
|
|
18
|
+
let tmp_url = request.url;
|
|
19
|
+
//console.log(tmp_url)
|
|
20
|
+
const { searchParams } = new URL(request.url);
|
|
21
|
+
let videoid = searchParams.get('videoid');
|
|
22
|
+
if(videoid==null){
|
|
23
|
+
return_data["status"] = "failed";
|
|
24
|
+
return_data["message"] = "plese set videoid in query string";
|
|
25
|
+
return_data["product_type"] = "niconico api";
|
|
26
|
+
return new Response(JSON.stringify(return_data),
|
|
27
|
+
{headers: {
|
|
28
|
+
'content-type': 'application/json',
|
|
29
|
+
'Access-Control-Allow-Origin':'*',
|
|
30
|
+
'cache-control': 'max-age=2592000'
|
|
31
|
+
}});
|
|
32
|
+
}
|
|
33
|
+
//get niconico api
|
|
34
|
+
let url = "https://ext.nicovideo.jp/api/getthumbinfo/" + videoid;
|
|
35
|
+
const response = await fetch(url);
|
|
36
|
+
let res = await response.text();
|
|
37
|
+
let image_url = this.xml_search(res,"thumbnail_url");
|
|
38
|
+
let predict_long = 43+2*(videoid.length-2);
|
|
39
|
+
if(image_url.length>predict_long){
|
|
40
|
+
image_url += ".L";
|
|
41
|
+
}
|
|
42
|
+
let xml_videoid = this.xml_search(res,"video_id");
|
|
43
|
+
let title = this.xml_search(res,"title");
|
|
44
|
+
let description = this.xml_search(res,"description");
|
|
45
|
+
let length = this.xml_search(res,"length");
|
|
46
|
+
let view_count = this.xml_search(res,"view_counter");
|
|
47
|
+
let comment_count = this.xml_search(res,"comment_num");
|
|
48
|
+
let mylist_count = this.xml_search(res,"mylist_counter");
|
|
49
|
+
let publish_time = this.xml_search(res,"first_retrieve");
|
|
50
|
+
let embedable = this.xml_search(res,"embeddable");
|
|
51
|
+
let genre = this.xml_search(res,"genre");
|
|
52
|
+
if(image_url=="<?xml version="){
|
|
53
|
+
return_data["status"] = "invalid videoid";
|
|
54
|
+
return_data["image"] = "";
|
|
55
|
+
}
|
|
56
|
+
else{
|
|
57
|
+
return_data["image"] = image_url;
|
|
58
|
+
return_data["status"] = "success";
|
|
59
|
+
return_data["videoid"] = xml_videoid;
|
|
60
|
+
return_data["title"] = title;
|
|
61
|
+
return_data["description"] = description;
|
|
62
|
+
return_data["length"] = length;
|
|
63
|
+
return_data["view_count"] = view_count;
|
|
64
|
+
return_data["comment_count"] = comment_count;
|
|
65
|
+
return_data["mylist_count"] = mylist_count;
|
|
66
|
+
return_data["publish_time"] = publish_time;
|
|
67
|
+
return_data["embedable"] = embedable;
|
|
68
|
+
return_data["genre"] = genre;
|
|
69
|
+
}
|
|
70
|
+
return new Response(JSON.stringify(return_data),
|
|
71
|
+
{headers: {
|
|
72
|
+
'content-type': 'application/json',
|
|
73
|
+
'Access-Control-Allow-Origin':'*',
|
|
74
|
+
'cache-control': 'max-age=2592000'
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
};
|
package/test_script.html
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>example multi embed player</title>
|
|
8
|
+
<!--<link rel="stylesheet" href="multi_embed_player.css">-->
|
|
9
|
+
<style>
|
|
10
|
+
multi-embed-player{
|
|
11
|
+
width: 480px;
|
|
12
|
+
height: 270px;
|
|
13
|
+
}
|
|
14
|
+
</style>
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
<script>
|
|
18
|
+
multi_embed_player_set_variable = (class_name)=>{
|
|
19
|
+
//class_name.cors_proxy = "https://iframe_api.ryokuryu.workers.dev?route=url_proxy&url="
|
|
20
|
+
//class_name.follow_GDPR = true;
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
23
|
+
<script src="http://localhost:5500/dist/multi_embed_player.js"></script>
|
|
24
|
+
<h2>embed section</h2>
|
|
25
|
+
<h3>single</h3>
|
|
26
|
+
<h4>youtube</h4>
|
|
27
|
+
<p>normal</p>
|
|
28
|
+
<multi-embed-player videoid="_NC_pqMt5rY" service="youtube" type="embed"></multi-embed-player>
|
|
29
|
+
<p>start and stop(33s~55s)</p>
|
|
30
|
+
<multi-embed-player videoid="XpgSrULHibg" service="youtube" type="embed" start="33" end="55"></multi-embed-player>
|
|
31
|
+
<h4>niconico</h4>
|
|
32
|
+
<p>normal</p>
|
|
33
|
+
<multi-embed-player videoid="sm9" service="niconico" type="embed"></multi-embed-player>
|
|
34
|
+
<p>start and stop(45.5s~56.2s)</p>
|
|
35
|
+
<multi-embed-player videoid="sm41265645" service="niconico" type="embed" start="45.5" end="56.2"></multi-embed-player>
|
|
36
|
+
<h4>bilibili</h4>
|
|
37
|
+
<p>normal</p>
|
|
38
|
+
<multi-embed-player videoid="BV1n3411976a" service="bilibili" type="embed"></multi-embed-player>
|
|
39
|
+
<p>start and stop(51s~78s)</p>
|
|
40
|
+
<multi-embed-player videoid="BV1Fm4y1j7T1" service="bilibili" type="embed" start="51" end="78"></multi-embed-player>
|
|
41
|
+
<p>no play control wrap</p>
|
|
42
|
+
<multi-embed-player videoid="BV1Xc411Z74e" service="bilibili" type="embed" play_control_wrap="false"></multi-embed-player>
|
|
43
|
+
<h4>soundcloud</h4>
|
|
44
|
+
<p>normal</p>
|
|
45
|
+
<multi-embed-player videoid="8izwhpwkfuor/step" service="soundcloud" type="embed"></multi-embed-player>
|
|
46
|
+
<p>start and stop(20s~30s)</p>
|
|
47
|
+
<multi-embed-player videoid="557856309" service="soundcloud" type="embed" start="20" end="30"></multi-embed-player>
|
|
48
|
+
<h3>multi</h3>
|
|
49
|
+
<p>youtube->youtube</p>
|
|
50
|
+
<multi-embed-player videoid="gt-HCcUtG_o" service="youtube" subVideoid="L7PCS7afS3Y" subService="youtube"></multi-embed-player>
|
|
51
|
+
<p>youtube->other</p>
|
|
52
|
+
<multi-embed-player videoid="Ec3DZ5xaWuA" service="youtube" subVideoid="so33618546" subService="niconico"></multi-embed-player>
|
|
53
|
+
<p>niconico->niconico</p>
|
|
54
|
+
<multi-embed-player videoid="sm40856466" service="niconico" subVideoid="sm41660116" subService="niconico"></multi-embed-player>
|
|
55
|
+
<p>niconico->other</p>
|
|
56
|
+
<multi-embed-player videoid="sm41278225" service="niconico" subVideoid="cIbqy3-glos" subService="youtube"></multi-embed-player>
|
|
57
|
+
<p>bilibili->bilibili</p>
|
|
58
|
+
<multi-embed-player videoid="BV11f4y1n7Wt" service="bilibili" subVideoid="BV1dQ4y1Y7n8" subService="bilibili"></multi-embed-player>
|
|
59
|
+
<p>bilibili->other</p>
|
|
60
|
+
<multi-embed-player videoid="sm41278225" service="bilibili" subVideoid="cIbqy3-glos" subService="youtube"></multi-embed-player>
|
|
61
|
+
<p>soundcloud->soundcloud</p>
|
|
62
|
+
<multi-embed-player videoid="tkrism/shironek" service="soundcloud" subVideoid="tkrism/reflection-feat-nicamoq" subService="soundcloud"></multi-embed-player>
|
|
63
|
+
<p>soundcloud->other</p>
|
|
64
|
+
<multi-embed-player videoid="neko_hacker/digital-life-hacke" service="soundcloud" subVideoid="cIbqy3-glos" subService="youtube"></multi-embed-player>
|
|
65
|
+
<h2>thumbnail click</h2>
|
|
66
|
+
<multi-embed-player id="mep" type="player"></multi-embed-player>
|
|
67
|
+
<h3>single</h3>
|
|
68
|
+
<h4>youtube</h4>
|
|
69
|
+
<multi-embed-player videoid="H4C23eF_r2Q" service="youtube" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
70
|
+
<h4>niconico</h4>
|
|
71
|
+
<multi-embed-player videoid="sm1089391" service="niconico" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
72
|
+
<h4>bilibili</h4>
|
|
73
|
+
<multi-embed-player videoid="BV1xu4y1m7bi" service="bilibili" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
74
|
+
<h4>soundcloud</h4>
|
|
75
|
+
<multi-embed-player videoid="8izwhpwkfuor/hop" service="soundcloud" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
76
|
+
<h3>multi</h3>
|
|
77
|
+
<p>youtube->youtube</p>
|
|
78
|
+
<multi-embed-player videoid="L1OEYvb_8mU" service="youtube" subVideoid="zuj1fhVTK4M" subService="youtube" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
79
|
+
<p>youtube->other</p>
|
|
80
|
+
<multi-embed-player videoid="r84n7i2M7sQ" service="youtube" subVideoid="BV1jw41167nd" subService="bilibili" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
81
|
+
<p>niconico->niconico</p>
|
|
82
|
+
<multi-embed-player videoid="sm40856466" service="niconico" subVideoid="sm40660351" subService="niconico" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
83
|
+
<p>niconico->other</p>
|
|
84
|
+
<multi-embed-player videoid="sm1" service="niconico" subVideoid="-W2PDv9pWV8" subService="youtube" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
85
|
+
<p>bilibili->bilibili</p>
|
|
86
|
+
<multi-embed-player videoid="BV11f4y1n7Wt" service="bilibili" subVideoid="BV1zu4y1C7sw" subService="bilibili" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
87
|
+
<p>bilibili->other</p>
|
|
88
|
+
<multi-embed-player videoid="BV1zU4y1C7sw" service="bilibili" subVideoid="Ft1oytmXg3Y" subService="youtube" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
89
|
+
<p>soundcloud->soundcloud</p>
|
|
90
|
+
<multi-embed-player videoid="tkrism/shironek" service="soundcloud" subVideoid="tkrism/reflection-feat-nicamoq" subService="soundcloud" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
91
|
+
<p>soundcloud->other</p>
|
|
92
|
+
<multi-embed-player videoid="neko_hacker/digital-life-hacke" service="soundcloud" subVideoid="cIbqy3-glos" subService="youtube" type="thumbnail-click" for="mep"></multi-embed-player>
|
|
93
|
+
<h2>control with multi_embed_player</h2>
|
|
94
|
+
<multi-embed-player id="mep_player" type="player"></multi-embed-player>
|
|
95
|
+
<div style="display: flex;">
|
|
96
|
+
<button onclick="document.getElementById('mep_player').playVideo()">play</button>
|
|
97
|
+
<button onclick="document.getElementById('mep_player').pauseVideo()">pause</button>
|
|
98
|
+
<!--mute and unmute button-->
|
|
99
|
+
<button onclick="document.getElementById('mep_player').mute()">mute</button>
|
|
100
|
+
<button onclick="document.getElementById('mep_player').unMute()">unmute</button>
|
|
101
|
+
<!--sound volume range-->
|
|
102
|
+
<input type="range" min="0" max="100" value="100" oninput="document.getElementById('mep_player').setVolume(this.value)">
|
|
103
|
+
<!--seek to input box value max is not define seekTo button click-->
|
|
104
|
+
<input type="number" id="seek_to_input" value="0">
|
|
105
|
+
<button onclick="document.getElementById('mep_player').seekTo(Number(document.getElementById('seek_to_input').value))">seekTo</button>
|
|
106
|
+
<!--under this getter function !sometimes! return promise-->
|
|
107
|
+
<!--print to console about currenttime-->
|
|
108
|
+
<button onclick="(async()=>{console.log(await document.getElementById('mep_player').getCurrentTime())})()">get current time</button>
|
|
109
|
+
<!--print to console about duration-->
|
|
110
|
+
<button onclick="(async()=>{console.log(await document.getElementById('mep_player').getDuration())})()">get duration</button>
|
|
111
|
+
<!--print to console about volume-->
|
|
112
|
+
<button onclick="(async()=>{console.log(await document.getElementById('mep_player').getVolume())})()">get volume</button>
|
|
113
|
+
<!--print to console about player state-->
|
|
114
|
+
<button onclick="(async()=>{console.log(await document.getElementById('mep_player').getPlayerState())})()">get player state</button>
|
|
115
|
+
<!--print mute status-->
|
|
116
|
+
<button onclick="(async()=>{console.log(await document.getElementById('mep_player').isMuted())})()">is muted</button>
|
|
117
|
+
</div>
|
|
118
|
+
<div style="display: flex;">
|
|
119
|
+
<!--load youtube video-->
|
|
120
|
+
<input value="0ngyl5gbEQQ" type="text" placeholder="youtube video id" id="youtube_video_id">
|
|
121
|
+
<button onclick="document.getElementById('mep_player').loadVideoById({'videoId':document.getElementById('youtube_video_id').value, service:'youtube'})">load youtube video</button>
|
|
122
|
+
</div>
|
|
123
|
+
<div style="display: flex;">
|
|
124
|
+
<!--load niconico video-->
|
|
125
|
+
<input type="text" placeholder="niconico video id" id="niconico_video_id">
|
|
126
|
+
<button onclick="document.getElementById('mep_player').loadVideoById({'videoId':document.getElementById('niconico_video_id').value, service:'niconico'})">load niconico video</button>
|
|
127
|
+
</div>
|
|
128
|
+
<div style="display: flex;">
|
|
129
|
+
<!--load bilibili video-->
|
|
130
|
+
<input value="BV16K4y177HZ" type="text" placeholder="bilibili video id" id="bilibili_video_id">
|
|
131
|
+
<button onclick="document.getElementById('mep_player').loadVideoById({'videoId':document.getElementById('bilibili_video_id').value, service:'bilibili'})">load bilibili video</button>
|
|
132
|
+
</div>
|
|
133
|
+
<div style="display: flex;">
|
|
134
|
+
<!--load soundcloud video-->
|
|
135
|
+
<input value="dada-qada/koisashi" type="text" placeholder="soundcloud video id" id="soundcloud_video_id">
|
|
136
|
+
<button onclick="document.getElementById('mep_player').loadVideoById({'videoId':document.getElementById('soundcloud_video_id').value, service:'soundcloud'})">load soundcloud video</button>
|
|
137
|
+
</div>
|
|
138
|
+
<script>
|
|
139
|
+
//set event to mep element
|
|
140
|
+
document.getElementById("mep").addEventListener("onReady",(e)=>{
|
|
141
|
+
console.log("mep ready(outer)");
|
|
142
|
+
});
|
|
143
|
+
document.getElementById("mep").addEventListener("onStateChange",(e)=>{
|
|
144
|
+
console.log("mep state change(outer)");
|
|
145
|
+
});
|
|
146
|
+
document.getElementById("mep").addEventListener("onError",(e)=>{
|
|
147
|
+
console.log("mep error(outer)");
|
|
148
|
+
});
|
|
149
|
+
document.getElementById("mep").addEventListener("onEndVideo",(e)=>{
|
|
150
|
+
console.log("mep end video(outer)");
|
|
151
|
+
});
|
|
152
|
+
const mep = document.getElementById("mep");
|
|
153
|
+
document.getElementById("mep").addEventListener("onReady",()=>{
|
|
154
|
+
mep.player.addEventListener("onReady",(e)=>{
|
|
155
|
+
console.log("mep ready(inner)");
|
|
156
|
+
});
|
|
157
|
+
mep.player.addEventListener("onStateChange",(e)=>{
|
|
158
|
+
console.log("mep state change(inner) -> " + mep.player.getPlayerState());
|
|
159
|
+
});
|
|
160
|
+
mep.player.addEventListener("onError",(e)=>{
|
|
161
|
+
console.log("mep error(inner)");
|
|
162
|
+
});
|
|
163
|
+
mep.player.addEventListener("onEndVideo",(e)=>{
|
|
164
|
+
console.log("mep end video(inner)");
|
|
165
|
+
});
|
|
166
|
+
mep.player.addEventListener("executeSecound",(e)=>{
|
|
167
|
+
console.log("mep execute secound(inner)");
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
</script>
|
|
171
|
+
</body>
|
|
172
|
+
</html>
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"module": "none",
|
|
5
|
+
"moduleResolution": "node",
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noImplicitAny": true,
|
|
9
|
+
"noImplicitThis": true,
|
|
10
|
+
"noImplicitReturns": true,
|
|
11
|
+
"noImplicitOverride": true,
|
|
12
|
+
"skipLibCheck": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": false,
|
|
14
|
+
"declaration": true,
|
|
15
|
+
"declarationMap": true,
|
|
16
|
+
"sourceMap": true,
|
|
17
|
+
"esModuleInterop": true,
|
|
18
|
+
"allowSyntheticDefaultImports": true,
|
|
19
|
+
"allowJs": true,
|
|
20
|
+
"checkJs": false,
|
|
21
|
+
"strictNullChecks": true,
|
|
22
|
+
"strictFunctionTypes": true,
|
|
23
|
+
"strictPropertyInitialization": true,
|
|
24
|
+
"strictBindCallApply": true,
|
|
25
|
+
"noUncheckedIndexedAccess": true,
|
|
26
|
+
"useUnknownInCatchVariables": true
|
|
27
|
+
},
|
|
28
|
+
"include": [
|
|
29
|
+
"*.ts",
|
|
30
|
+
"iframe_api/*.ts"
|
|
31
|
+
],
|
|
32
|
+
"exclude": [
|
|
33
|
+
"node_modules",
|
|
34
|
+
"dist"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { BilibiliContent, IPlayer, PlayerState, EventHandler } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Class representing a Bilibili player.
|
|
4
|
-
*/
|
|
5
|
-
export declare class mep_bilibili implements IPlayer {
|
|
6
|
-
private static error_description;
|
|
7
|
-
private static localStorageCheck;
|
|
8
|
-
private static mep_extension_bilibili;
|
|
9
|
-
private static api_endpoint;
|
|
10
|
-
private static no_extention_error;
|
|
11
|
-
private static player_base_url;
|
|
12
|
-
private static bilibili_api_cache;
|
|
13
|
-
private static cors_proxy;
|
|
14
|
-
private static currentTime_delay;
|
|
15
|
-
private static bilibili_api_promise;
|
|
16
|
-
private player;
|
|
17
|
-
private videoid;
|
|
18
|
-
private autoplay;
|
|
19
|
-
private startSeconds;
|
|
20
|
-
private endSeconds;
|
|
21
|
-
private displayComment;
|
|
22
|
-
private fastLoad;
|
|
23
|
-
private play_control_wrap;
|
|
24
|
-
private front_error_code?;
|
|
25
|
-
private playerState;
|
|
26
|
-
private currentTime;
|
|
27
|
-
private duration;
|
|
28
|
-
private volume;
|
|
29
|
-
private muted;
|
|
30
|
-
constructor(replacing_element: string | HTMLElement, content: BilibiliContent, player_set_event_function?: EventHandler);
|
|
31
|
-
/**
|
|
32
|
-
* Initialize player base URL based on browser.
|
|
33
|
-
*/
|
|
34
|
-
private initialize_player_base_url;
|
|
35
|
-
/**
|
|
36
|
-
* Constructor for element setup.
|
|
37
|
-
*/
|
|
38
|
-
private element_constructor;
|
|
39
|
-
/**
|
|
40
|
-
* Display image player when paused.
|
|
41
|
-
*/
|
|
42
|
-
private image_player;
|
|
43
|
-
/**
|
|
44
|
-
* Set pause transparent overlay.
|
|
45
|
-
*/
|
|
46
|
-
private set_pause_transparent;
|
|
47
|
-
/**
|
|
48
|
-
* Add loading animation.
|
|
49
|
-
*/
|
|
50
|
-
private add_loading_animation;
|
|
51
|
-
/**
|
|
52
|
-
* Remove loading animation.
|
|
53
|
-
*/
|
|
54
|
-
private remove_loading_animation;
|
|
55
|
-
/**
|
|
56
|
-
* Add error description.
|
|
57
|
-
*/
|
|
58
|
-
private add_error_description;
|
|
59
|
-
/**
|
|
60
|
-
* Add player CSS style.
|
|
61
|
-
*/
|
|
62
|
-
private add_player_css_style;
|
|
63
|
-
/**
|
|
64
|
-
* Get video data from API.
|
|
65
|
-
*/
|
|
66
|
-
private getVideodataApi;
|
|
67
|
-
playVideo(): void;
|
|
68
|
-
pauseVideo(): void;
|
|
69
|
-
getCurrentTime(): Promise<number>;
|
|
70
|
-
getDuration(): Promise<number>;
|
|
71
|
-
seekTo(time: number): Promise<void>;
|
|
72
|
-
setVolume(volume: number): void;
|
|
73
|
-
getVolume(): Promise<number>;
|
|
74
|
-
mute(): void;
|
|
75
|
-
unMute(): void;
|
|
76
|
-
isMuted(): Promise<boolean>;
|
|
77
|
-
getPlayerState(): Promise<PlayerState>;
|
|
78
|
-
/**
|
|
79
|
-
* Get real duration between start and end times.
|
|
80
|
-
*/
|
|
81
|
-
getRealDulation(): Promise<number>;
|
|
82
|
-
/**
|
|
83
|
-
* Load video by ID.
|
|
84
|
-
*/
|
|
85
|
-
loadVideoById(content: BilibiliContent): void;
|
|
86
|
-
/**
|
|
87
|
-
* Cue video by ID.
|
|
88
|
-
*/
|
|
89
|
-
cueVideoById(content: BilibiliContent): void;
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=bilibili.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bilibili.d.ts","sourceRoot":"","sources":["../../iframe_api/bilibili.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkBnG;;GAEG;AACH,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAM9B;IAEF,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAwB;IACxD,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAkB;IACvD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAqD;IAChF,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAiQ;IAClS,OAAO,CAAC,MAAM,CAAC,eAAe,CAAc;IAC5C,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAwB;IACzD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAc;IACvC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAa;IAC7C,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA0B;IAE7D,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAkB;gBAG7B,iBAAiB,EAAE,MAAM,GAAG,WAAW,EACvC,OAAO,EAAE,eAAe,EACxB,yBAAyB,CAAC,EAAE,YAAY;IAM1C;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAWlC;;OAEG;YACW,mBAAmB;IA0EjC;;OAEG;YACW,YAAY;IA0C1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoD7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;YACW,eAAe;IAoC7B,SAAS,IAAI,IAAI;IASjB,UAAU,IAAI,IAAI;IAQlB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc/B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAS5B,IAAI,IAAI,IAAI;IASZ,MAAM,IAAI,IAAI;IAQd,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAItC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IASxC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAW7C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;CAU7C"}
|