jfinn 4 лет назад
Родитель
Сommit
c70374757f
55 измененных файлов: 256576 добавлений и 43 удалений
  1. 73
    0
      browser_ext/dav2_1/ajx_req.js
  2. 12
    0
      browser_ext/dav2_1/b1.js
  3. 0
    0
      browser_ext/dav2_1/b2.js
  4. 23
    0
      browser_ext/dav2_1/bak_view.html
  5. 0
    0
      browser_ext/dav2_1/fore_view.html
  6. 87
    0
      dcc/group_send_mod.py
  7. 95
    0
      dcc/mthd_info.py
  8. 300
    0
      dcc/r1.py
  9. 171
    0
      dcc/r1_.py
  10. 62
    0
      dcc/r2.py
  11. 29
    0
      dcc/r3.py
  12. 3
    0
      dcc/r4.py
  13. 26
    0
      dcc/r5.py
  14. 0
    0
      dcc/r_notes.py
  15. 17
    0
      dcc/u.py
  16. 1
    0
      inc_lib/dev/dev_vers.js
  17. 7
    0
      inc_lib/dev/misc_utils.js
  18. 0
    0
      inc_lib/dev/rld_utils.js
  19. 1
    0
      inc_lib/dev/tmp_include_rld_utils.html
  20. 2
    0
      inc_lib/dev/universals.js
  21. 3
    2
      indx/landing/vcorner.html
  22. 92
    0
      indx/ws_dev/embed_iframe.html
  23. 96
    0
      indx/ws_dev/embed_iframe4.html
  24. 208
    0
      indx/ws_dev/lbry1.js
  25. 14
    0
      indx/ws_dev/new.js
  26. 55
    0
      indx/ws_dev/ws.html
  27. 212
    0
      indx/ws_dev/ws0.js
  28. 4
    0
      indx/ws_dev/ws1.js
  29. 90
    0
      indx/ws_dev/ws2.html
  30. 0
    0
      indx/ws_dev/ws2.js
  31. 93
    0
      indx/ws_dev/ws3.html
  32. 93
    0
      indx/ws_dev/ws4.html
  33. 30
    0
      indx/ws_dev/ws_rld.js
  34. 18
    0
      indx/ws_dev/wsi.html
  35. 1
    1
      j7/rldjs/rldjs4.js
  36. 10872
    0
      libs/jquery-3.5.1.dbg.js
  37. 10872
    0
      libs/jquery-3.5.1.js
  38. 2972
    0
      libs/list_blocked.json
  39. 1802
    0
      libs/list_filtered.json
  40. 227656
    0
      libs/ui-f3a90211-598a-40ab-9153-803e5f40f62f.dev.js
  41. 2
    2
      rf/fs_hook.js
  42. 3
    3
      rf/m/_m_utils.js
  43. 14
    1
      rf/m/m_utils.js
  44. 8
    0
      rf/u/universals.js
  45. 1
    1
      xf/inspect/js_engine_info.js
  46. 9
    1
      xf/nginx_td/td_c/hide_ui_elements.css
  47. 1
    0
      xf/nginx_td/td_c/ti_c.js
  48. 1
    0
      xf/nginx_td/td_f/ti_f2.js
  49. 8
    0
      xf/nginx_td/td_m/ti_m1.js
  50. 131
    1
      xf/nginx_tx/maf/m.css
  51. 259
    17
      xf/nginx_tx/maf/m0.js
  52. 39
    11
      xf/nginx_tx/maf/t_maf.html
  53. 1
    1
      xf/vc/vcon.js
  54. 6
    1
      xf/vc/vcon0.js
  55. 1
    1
      xf/vol_ui/v4.js

+ 73
- 0
browser_ext/dav2_1/ajx_req.js Просмотреть файл

@@ -0,0 +1,73 @@
1
+clog(".")
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+vcb_fn = {
10
+	default_api_err(data,status,xhr){
11
+		clog("default_api_err",{that:this,data,status,xhr,args:[...arguments]})
12
+	},
13
+	log_api_success(data,status,xhr){
14
+		clog("log_api_success",{that:this,data,status,xhr,args:[...arguments]})
15
+	},
16
+
17
+}
18
+
19
+
20
+
21
+
22
+
23
+
24
+// C:\bspace\repos\jc4\ign4\libs\mustache.js
25
+
26
+
27
+
28
+
29
+base_vapi_request = {
30
+          // url: "https://api.digitalocean.com/v2/droplets",
31
+          // data: file.qs,
32
+          // cache:false,
33
+          // "passme":"abc124",
34
+          success: vcb_fn.log_api_success,
35
+          error: vcb_fn.default_api_err,
36
+          headers:{
37
+            "Content-Type": "application/json",
38
+            "Authorization": `Bearer ${localStorage.TOKEN}`,
39
+          }
40
+  }
41
+
42
+
43
+
44
+function fillTemplate5(a){
45
+	return a
46
+}
47
+
48
+function vapi_req(obj,tv={}){
49
+/*
50
+  if (!tflag){
51
+    clog("NO tflag")
52
+    return
53
+  }
54
+*/
55
+  // console.trace("vapi_req")
56
+  var ajx_arg = Object.assign({},base_vapi_request,obj) 
57
+  // clog("URL0",JSON.stringify(ajx_arg),ajx_arg)
58
+  ajx_arg.url =  fillTemplate5(ajx_arg.url,tv)
59
+  if (!ajx_arg.url.startsWith("https://api.digitalocean.com")){
60
+    console.error("WRONG SITE",ajx_arg.url)
61
+  return
62
+  }
63
+    // if (is_token_set()){    return token_not_set()}
64
+      clog("vapi_req_0",ajx_arg)
65
+      // clog("vapi_req_1",jc(ajx_arg))
66
+  // clog("URL1",JSON.stringify(ajx_arg),ajx_arg)
67
+  
68
+  /*
69
+    var aii = $.ajax(ajx_arg)
70
+  */
71
+}
72
+
73
+

+ 12
- 0
browser_ext/dav2_1/b1.js Просмотреть файл

@@ -0,0 +1,12 @@
1
+clog(".")
2
+
3
+
4
+function  rcb(argument) {
5
+	// body...
6
+	location.reload()
7
+	clog("RCB",argument,[...arguments])
8
+}
9
+
10
+// window.ign_root2 = `<!--#echo var="ign_root" -->`
11
+// window.bodge_rfile ?  bodge_rfile(`/ign/indx/landing/vcorner.html`,`<!--#echo var="uri" -->`):0
12
+window.bodge_rfile ?  bodge_rfile(`/ign/browser_ext/dav2_1/bak_view.html`,rcb):0

+ 0
- 0
browser_ext/dav2_1/b2.js Просмотреть файл


+ 23
- 0
browser_ext/dav2_1/bak_view.html Просмотреть файл

@@ -0,0 +1,23 @@
1
+
2
+
3
+<script src="/ign/libs/jquery-3.5.1.min.js"></script>
4
+
5
+<script class="rld" src="ign/libs/mustache.js?c=002"></script>
6
+<script class="rld" src="/ign/inc_lib/dev/universals.js?c=00x"></script>
7
+<script class="rld" src="/ign/inc_lib/dev/dev_vers.js?c=00x"></script>
8
+<script class="" src="/ign/rf/u/proto_ext.js?c=00x"></script>
9
+<script class="rld" src="/ign/j7/udev/u_ld.js?c=00x"></script> 
10
+
11
+
12
+<!--#include virtual="/ign/inc_lib/dev/tmp_include_rld_utils.html" -->
13
+<!-- C:\bspace\repos\jc4\ign4\inc_lib\dev\tmp_include_rld_utils.html -->
14
+
15
+
16
+<script src="/ign/j7/rldjs/rldjs4.js?v=139"></script>
17
+<script class="rld rrld" src="/ign/rls.js?c=00x"></script>
18
+
19
+
20
+
21
+<script class="rld" src="/ign/browser_ext/dav2_1/b1.js?c=00x"></script>
22
+<script class="rld" src="/ign/browser_ext/dav2_1/b2.js?c=00x"></script>
23
+<script class="rld" src="/ign/browser_ext/dav2_1/ajx_req.js?c=00x"></script>

+ 0
- 0
browser_ext/dav2_1/fore_view.html Просмотреть файл


+ 87
- 0
dcc/group_send_mod.py Просмотреть файл

@@ -0,0 +1,87 @@
1
+class RCL:
2
+    async def group_send(self, group, message):
3
+        # p("group_send:",self, group, message,flush=True)
4
+        """
5
+        Sends a message to the entire group.
6
+        """
7
+        assert self.valid_group_name(group), "Group name not valid"
8
+        # Retrieve list of all channel names
9
+        key = self._group_key(group)
10
+        async with self.connection(self.consistent_hash(group)) as connection:
11
+            # Discard old channels based on group_expiry
12
+            await connection.zremrangebyscore(
13
+                key, min=0, max=int(time.time()) - self.group_expiry
14
+            )
15
+
16
+            channel_names = [
17
+                x.decode("utf8") for x in await connection.zrange(key, 0, -1)
18
+            ]
19
+
20
+        # channel_names[1]=channel_names[0]
21
+        # if channel_names:channel_names.append(channel_names[0])
22
+        (
23
+            connection_to_channel_keys,
24
+            channel_keys_to_message,
25
+            channel_keys_to_capacity,
26
+        ) = self._map_channel_keys_to_connection(channel_names, message)
27
+        p(channel_names)
28
+        for connection_index, channel_redis_keys in connection_to_channel_keys.items():
29
+            # Discard old messages based on expiry
30
+            for key in channel_redis_keys:
31
+                await connection.zremrangebyscore(
32
+                    key, min=0, max=int(time.time()) - int(self.expiry)
33
+                )
34
+
35
+            # Create a LUA script specific for this connection.
36
+            # Make sure to use the message specific to this channel, it is
37
+            # stored in channel_to_message dict and contains the
38
+            # __asgi_channel__ key.
39
+
40
+            group_send_lua = """
41
+                local over_capacity = 0
42
+                local current_time = ARGV[#ARGV - 1]
43
+                local expiry = ARGV[#ARGV]
44
+                for i=1,#KEYS do
45
+                    if redis.call('ZCOUNT', KEYS[i], '-inf', '+inf') < tonumber(ARGV[i + #KEYS]) then
46
+                        redis.call('ZADD', KEYS[i], current_time, ARGV[i])
47
+                        redis.call('EXPIRE', KEYS[i], expiry)
48
+                    else
49
+                        over_capacity = over_capacity + 1
50
+                    end
51
+                end
52
+                return over_capacity
53
+            """
54
+
55
+            # We need to filter the messages to keep those related to the connection
56
+            args = [
57
+                channel_keys_to_message[channel_key]
58
+                for channel_key in channel_redis_keys
59
+            ]
60
+
61
+            # We need to send the capacity for each channel
62
+            args += [
63
+                channel_keys_to_capacity[channel_key]
64
+                for channel_key in channel_redis_keys
65
+            ]
66
+
67
+            args += [time.time(), self.expiry]
68
+
69
+            # channel_keys does not contain a single redis key more than once
70
+            async with self.connection(connection_index) as connection:
71
+                channels_over_capacity = await connection.eval(
72
+                    group_send_lua, keys=channel_redis_keys, args=args
73
+                )
74
+                if channels_over_capacity > 0:
75
+                    logger.info(
76
+                        "%s of %s channels over capacity in group %s",
77
+                        channels_over_capacity,
78
+                        len(channel_names),
79
+                        group,
80
+                    )
81
+        p("group_send:",self, group, message,flush=True)
82
+
83
+
84
+def dec_RCL():
85
+    # dec_cls_mthd(glob_cl.acl.__class__,"group_send",RCL.group_send)
86
+    undec_cls_mthd(glob_cl.acl.__class__,"group_send")
87
+dec_RCL()

+ 95
- 0
dcc/mthd_info.py Просмотреть файл

@@ -0,0 +1,95 @@
1
+# import os
2
+import copy
3
+def code_info(fn):
4
+	pass
5
+	obj = fn.__code__
6
+	attr_names = dir(obj)
7
+	p("...")
8
+	skip = [
9
+		# "co_lnotab",
10
+		# "co_code",
11
+		# "co_consts",
12
+	]
13
+	# p(obj.__code__)
14
+
15
+	for en in attr_names:
16
+		# co_lnotab 
17
+		 # co_code 
18
+		if en[:2] == "__":continue
19
+		if en in skip:continue
20
+
21
+		attr = getattr(obj,en,"No attr")
22
+		# p("\t",en+"\t",type(attr))
23
+		p("\t",en+"\t",attr)
24
+		p()
25
+
26
+
27
+# de
28
+# rfile_info
29
+
30
+
31
+
32
+def ddev():
33
+	pass
34
+	# g1 = globals()
35
+	# g2 = globals()
36
+	o = {}
37
+	a1 = []
38
+	a2 = []
39
+	p(dir(o))
40
+	p()
41
+	p(dir(a1))
42
+	# v=o.get("k12","z")
43
+	p(v)
44
+
45
+	# gc1 = copy.copy(g1)
46
+	# p(g1 == g2)
47
+	# p(a1 == a2,".")
48
+	# p(a1 is a2,".")
49
+	# p(g1 is g3)
50
+	# p(g1 is gc1)
51
+	# p(g1.keys())
52
+
53
+def rld_test():
54
+	glob_cl.rman.add_file("/usr/games/repos/ign4/dcc/r5.py",{"scope_key":"dflt_scope"})
55
+	# glob_cl.rman.add_file("/usr/games/repos/ign4/dcc/r5.py",{"scope":"dflt_scope2"})
56
+
57
+def file_info():
58
+	# os.stat(file1)
59
+	file_name = "/usr/games/repos/ign4/dcc/r5.py"
60
+	s = os.stat(file_name)
61
+	f = open(file_name,"r")
62
+	ftxt = f.read()
63
+	# p(dir(f))
64
+	# p(dir(s))
65
+	p(s)
66
+	p(dir(s))
67
+	f.close()
68
+	pass
69
+
70
+# file_info
71
+def rfile_info():
72
+	# p("rfile_info")
73
+	rman = glob_cl.rman
74
+	for file_name in rman.files:
75
+		rfile = rman.files[file_name]
76
+		p(file_name,[*rfile.keys()])
77
+		# rman.rld_file(file_name)
78
+# rfile_info()
79
+p()
80
+
81
+
82
+
83
+file_info()
84
+# g1 = globals()
85
+# rld_test()
86
+# g2 = globals()
87
+# g3 = globals()
88
+# ddev()
89
+# p("\n")
90
+# p("MTHD_INFO",callable())
91
+
92
+
93
+
94
+
95
+

+ 300
- 0
dcc/r1.py Просмотреть файл

@@ -0,0 +1,300 @@
1
+# /usr/games/repos/ign4/dcc/r1.py
2
+import json
3
+from channels.exceptions import (
4
+    AcceptConnection,
5
+    DenyConnection,
6
+    InvalidChannelLayerError,
7
+    StopConsumer,
8
+)
9
+
10
+
11
+print("a2")
12
+
13
+
14
+
15
+
16
+def rfo(l,g):
17
+	pass
18
+	print("l",l.keys())
19
+	print("g",g.keys())
20
+	# print("l2",locals().keys())
21
+	# print("g2",globals().keys())
22
+
23
+
24
+rfo(locals(),globals())
25
+
26
+def class_edit(klass,_klass):
27
+	print("\n")
28
+	print(klass,_klass)
29
+	for en in dir(_klass):
30
+		if en[:2]=="__":continue
31
+		attr = getattr(_klass,en,"NO ATTR")
32
+		print("\t",en)
33
+		setattr(klass,en,attr)
34
+
35
+def class_reset(klass):
36
+	print("\n")
37
+	# print(klass,_klass)
38
+	print("class reset:", klass)
39
+	for en in dir(klass):
40
+		if en[:2]=="__":continue
41
+		attr = getattr(klass,en,"NO ATTR")
42
+		# print("\t",en,attr)
43
+		# setattr(klass,en,attr)
44
+		delattr(klass,en)
45
+
46
+def class_info(klass):
47
+	print("\n")
48
+	# print(klass,_klass)
49
+	print(klass)
50
+	for en in dir(klass):
51
+		if en[:2]=="__":continue
52
+		attr = getattr(klass,en,"NO ATTR")
53
+		print("\t",en,attr)
54
+		# setattr(klass,en,attr)
55
+		# delattr(klass,en,attr)
56
+
57
+
58
+
59
+
60
+class rldDevMixin:
61
+	pass
62
+	async def ws_conn(self):
63
+		# 
64
+		# r'''
65
+		await self.channel_layer.group_add(
66
+			# self.room_group_name,
67
+			"rld_dev",
68
+			self.channel_name
69
+		)
70
+
71
+	async def gs2(self,*a,**kw):
72
+		p("gs2",self,a,kw)
73
+		p(end="",flush=True)
74
+	async def gs1(self,*a,**kw):
75
+		# 
76
+		# r'''
77
+
78
+
79
+		await self.channel_layer.group_send(
80
+			"rld_dev",
81
+			# "all",
82
+			# r'''
83
+			{
84
+				'type': 'rjsend_dev',
85
+				# 'type': 'txt_send',
86
+				# 'type': 'gs2',
87
+				'message': "message",
88
+				# 'm2': message,
89
+			}
90
+			# '''
91
+		)
92
+
93
+
94
+		# '''
95
+		pass
96
+	async def d1(self,*a,**kw):
97
+		print("d1",self,*a,**kw)
98
+	async def xr2(self,*a,**kw):
99
+		file_name="/usr/games/repos/ign4/dcc/r2.py"
100
+		try:
101
+			pass
102
+			f = open(file_name,"r")
103
+			ftxt = f.read()
104
+			f.close()
105
+
106
+			exec(ftxt,globals(),locals())
107
+		except Exception as e:
108
+			# raise
109
+			print("EXCEPT",e)
110
+		else:
111
+			pass
112
+		finally:
113
+			print(end="",flush=True)
114
+			pass
115
+	async def rjsend_dev(self, event,*a,**kw):
116
+		p("rjsend_dev",self,event,a,kw,flush=True)
117
+		# p(self.send)
118
+		p(end="",flush=True)
119
+		await self.send(text_data=json.dumps({"a":1}))
120
+		return
121
+		obj = event['obj']
122
+		# p(end="",flush=True)
123
+		await self.send(text_data=json.dumps(obj))
124
+
125
+	async def dm(self,*a,**kw):
126
+		cn = ['specific.4d1895f69485401ea104a79fb97fc4ed!14a5b515b29b4a559cf40da9fd33ac02', 'specific.4d1895f69485401ea104a79fb97fc4ed!fcf274e2246545f9917b8a214a1129d6']
127
+		# p("DM",self.channel_name,self,a,kw)
128
+		p("DM",self.channel_name,a,kw)
129
+
130
+		p(end="",flush=True)
131
+
132
+		await self.channel_layer.send(
133
+			cn[1],
134
+			# "all",
135
+			# r'''
136
+			{
137
+				# 'type': 'rjsend_dev',
138
+				'type': 'dm3',
139
+				# 'type': 'txt_send',
140
+				# 'type': 'gs2',
141
+				'message': "message",
142
+				# 'm2': message,
143
+			}
144
+			# '''
145
+		)
146
+
147
+		pass
148
+	async def dm2(self,*a,**kw):
149
+		p("DM2",self.channel_name,a,kw)
150
+		# p("DM2",self,a,kw)
151
+		p(end="",flush=True)
152
+	async def err(self,*a,**kw):
153
+		p("ERR",self.channel_name,a,kw)
154
+		# p("DM2",self,a,kw)
155
+
156
+		p(end="",flush=True)
157
+		# raise StopConsumer()
158
+		print("ERR...")
159
+		raise "StopConsumer()"
160
+		# raise StopConsumer()
161
+
162
+	async def err2(self,*a,**kw):
163
+		p("ERR",self.channel_name,a,kw)
164
+		# p("DM2",self,a,kw)
165
+
166
+		p(end="",flush=True)
167
+		raise "StopConsumer"
168
+	async def info(self,*a,**kw):
169
+		# p("ERR",self.channel_name,a,kw)
170
+		# p("DM2",self,a,kw)
171
+		oinfo(self)
172
+		p(self.websocket_disconnect)
173
+		p(self.groups)
174
+
175
+		p(end="",flush=True)
176
+		# raise ""
177
+
178
+
179
+	async def ws_disconn(self,*a,**kw):
180
+		print("WS_DISCONN:",self,*a,**kw)
181
+		p(end="",flush=True)
182
+		# raise "z"
183
+
184
+
185
+
186
+
187
+# soidj
188
+
189
+
190
+
191
+	
192
+
193
+
194
+
195
+def force_list(obj):
196
+	if type(obj) == type([]):
197
+		return obj
198
+	else:
199
+		return [obj]
200
+
201
+def red_info():
202
+	p("red_info")
203
+	p(glob_cl.rconn.keys())
204
+
205
+def gkeys(patrn):
206
+	keys = r.keys(patrn)
207
+	get_(keys)
208
+def get_(keys):
209
+	keys = force_list(keys)
210
+	for en in keys:
211
+		keytype = r.type(en)
212
+		print(en,keytype)
213
+		if keytype == "string":
214
+			print(en,r.get(en))
215
+		elif keytype == "list":
216
+			print(en,r.lrange(en,0,-1))
217
+			
218
+		elif keytype == "hash":
219
+			print(en,r.hgetall(en))
220
+
221
+		elif keytype == "set":
222
+			print(en,r.smembers(en))
223
+			
224
+		elif keytype == "zset":
225
+			print(en,r.zrange(en,0,-1))
226
+
227
+p()
228
+
229
+# oinfo(glob_cl.acl)
230
+# p(type(glob_cl.acl))
231
+# oinfo(type(glob_cl.acl))
232
+# oinfo(glob_cl.acl.group_send)
233
+
234
+p(glob_cl.acl.group_send)
235
+p(glob_cl.acl.group_add)
236
+p(glob_cl.acl.connection)
237
+p(glob_cl.acl.consistent_hash)
238
+# p(glob_cl.rman.add_file("/usr/games/repos/ign4/dcc/r1_.py"))
239
+# p(glob_cl.rman.add_file("/usr/games/repos/ign4/dcc/group_send_mod.py"))
240
+# p(glob_cl.rman.add_file("/usr/games/repos/ign4/dcc/mthd_info.py"))
241
+# p(glob_cl.rman.add_file("/usr/games/repos/ign4/dcc/r4.py"))
242
+
243
+
244
+def dt():
245
+	c=0
246
+	d={"c":1,"z":1}
247
+	# del d["z"]
248
+	for k in d:
249
+		p(k,c)
250
+		d["b"]=2
251
+		del d["z"]
252
+		p("...")
253
+
254
+
255
+p()
256
+# dt()
257
+# oinfo(glob_cl)
258
+
259
+oinfo(glob_cl.acl)
260
+# p(glob_cl.acl.group_send)
261
+# p(dir(glob_cl.acl.group_send))
262
+# p(dir(glob_cl.acl.group_send.__code__))
263
+# p(glob_cl.acl.group_send.__code__)
264
+# p(oinfo(glob_cl.acl.group_send.__code__))
265
+# p(glob_cl.acl.group_send.__code__)
266
+# p(dir(glob_cl.acl.group_send.__func__))
267
+# p((glob_cl.acl.group_send.__func__))
268
+def read_file_dev():
269
+	f=open("/usr/games/envs/dj/lib/python3.8/site-packages/channels_redis/core.py","r")
270
+	ftxt = f.read()
271
+	f.close()
272
+	p(ftxt)
273
+# read_file_dev()
274
+global r
275
+r = glob_cl.rconn
276
+r'''
277
+p("")
278
+red_info()
279
+
280
+# p("")
281
+get_(r.keys())
282
+p("........")
283
+p(dir(glob_cl.acl))
284
+'''
285
+get_(r.keys())
286
+# def oinfo
287
+# glob_cl'
288
+
289
+p(";")
290
+
291
+# class_reset(DevMixin)
292
+class_reset(DevMixin)
293
+class_edit(DevMixin,rldDevMixin)
294
+# class_info(DevMixin)
295
+# class_info
296
+p()
297
+
298
+
299
+
300
+

+ 171
- 0
dcc/r1_.py Просмотреть файл

@@ -0,0 +1,171 @@
1
+# p(".\n\n")
2
+p(".")
3
+# z = ""
4
+
5
+if ("orig_glob" in globals()):
6
+	pass
7
+else:
8
+	orig_glob = {}
9
+
10
+# class 
11
+
12
+
13
+p("::.........")
14
+class C7:                                            
15
+	def m(self,*a,**kw):
16
+		print(self,"C7",a,kw)
17
+		# super().m(*a,**kw)
18
+class C0:                                            
19
+	def m(self,*a,**kw):
20
+		print(self,"C0",a,kw)
21
+		# super().m(*a,**kw)
22
+class C1:                                            
23
+	def m(self,*a,**kw):
24
+		print(self,"C1",a,kw)
25
+		# super().m(*a,**kw)
26
+class C2():                                          
27
+	def m(self,*a,**kw):
28
+		print(self,"C2",a,kw)
29
+		# super().m(*a,**kw)
30
+class C3(C1):                                        
31
+	def m(self,*a,**kw):
32
+		print(self,"C3",a,kw)
33
+		super().m(*a,**kw)
34
+class C4(C1):                                        
35
+	def m(self,*a,**kw):
36
+		print(self,"C4",a,kw)
37
+		super().m(*a,**kw)
38
+class C5(C0):                                        
39
+	def m(self,*a,**kw):
40
+		print(self,"C5",a,kw)
41
+		super().m(*a,**kw)
42
+
43
+
44
+	# code
45
+
46
+def attr_list(obj):
47
+	attr_names = dir(obj)
48
+	p("...")
49
+	# p(obj.__code__)
50
+
51
+	for en in attr_names:
52
+		# if en[:2] == "__":continue
53
+		attr = getattr(obj,en,"No attr")
54
+		p("\t",en+"\t",type(attr))
55
+		# p(attr)
56
+		# p()
57
+		# p(en,attr)
58
+		# p(en,type(attr))
59
+		# p()
60
+
61
+
62
+# print("Z.:",z)
63
+def ensure_mthd_baks(cls):
64
+	if "mthd_baks" in dir(cls):
65
+		pass
66
+	else:
67
+		cls.mthd_baks = {}
68
+
69
+def _get_capacity(*a,**kw):
70
+	p("_get_capacity:",a,kw)
71
+	p(end="",flush=1)
72
+
73
+	super()._get_capacity(*a,**kw)
74
+
75
+async def _gsend(*a,**kw):
76
+	orig_fn = glob_cl.acl.__class__.mthd_baks["group_send"]
77
+	p("group_send:",a,kw)
78
+	p(end="",flush=1)
79
+	await orig_fn(*a,**kw)
80
+
81
+
82
+def dec_cls_mthd(cls,name,fn):
83
+	pass
84
+	# 0
85
+	# 1
86
+	# 2
87
+	# 4
88
+	ensure_mthd_baks(cls)
89
+	fn.dec_flag = 1
90
+	orig_fn = getattr(cls,name,"No attr")
91
+	if ("dec_flag" not in dir(orig_fn)):
92
+		orig_fn.dec_flag = 2
93
+	if orig_fn.dec_flag == 2:
94
+		cls.mthd_baks[name] = orig_fn
95
+	setattr(cls,name,fn)
96
+
97
+	# if ()
98
+	# cls[]
99
+	# cls
100
+
101
+
102
+def tcode(a1,a2,a3):
103
+	v1 = g1.z
104
+
105
+
106
+def undec_cls_mthd(cls,name,*a,**kw):
107
+	orig_fn = cls.mthd_baks[name]
108
+	setattr(cls,name,orig_fn)
109
+	pass
110
+def dec_RCL():
111
+	p(glob_cl.acl)
112
+
113
+	p(glob_cl.acl.__class__)
114
+	p(glob_cl.acl.group_send)
115
+	p(glob_cl.acl.__class__.group_send)
116
+	attr_list(glob_cl.acl.__class__.group_send)
117
+	attr_list(glob_cl.acl.group_send)
118
+	p()
119
+	p(glob_cl.acl.group_send.__code__)
120
+	p(glob_cl.acl.__class__.group_send.__code__)
121
+	p(glob_cl.acl.__class__.group_send.__code__ == glob_cl.acl.group_send.__code__)
122
+	# attr_list(glob_cl.acl.__class__.group_send.__code__)
123
+	# code_info(glob_cl.acl.__class__.group_send)
124
+	# code_info(tcode)
125
+	p("group_send2" in dir(glob_cl.acl))
126
+	# return
127
+	dec_cls_mthd(glob_cl.acl.__class__,"group_send",_gsend)
128
+	# undec_cls_mthd(glob_cl.acl.__class__,"group_send")
129
+	# glob_cl.acl.__class__.get_capacity = _get_capacity
130
+	# del glob_cl.acl.__class__.get_capacity
131
+	# glob_cl.acl.__class__.group_send.z=1
132
+	# glob_cl.acl.group_send.z=2
133
+
134
+
135
+
136
+
137
+	# glob_cl.acl.group_send
138
+	# glob_cl.acl.
139
+	pass
140
+# c3 = C3()
141
+# c3 = C3()
142
+# c32 = C3() 
143
+# c3.m()
144
+def dec_t():
145
+	c1 = C1()
146
+	c2 = C2()
147
+	c3 = C3()
148
+	c4 = C4()
149
+	c5 = C5()
150
+	# c.m()
151
+	p("\n\n")
152
+	p("____________________")
153
+	# p("--------------------")
154
+	dec_cls_mthd(C3,"m",C4.m)
155
+
156
+	p("\n:\t:","c5")
157
+	c5.m()
158
+	p("\n:\t:","C4")
159
+	c4.m()
160
+	p("\n:\t:","c3")
161
+	c3.m()
162
+	pass
163
+
164
+# rfo(locals(),globals())
165
+dec_RCL()
166
+# dec_t()
167
+p(".",flush=1)
168
+
169
+
170
+
171
+# def dec_RCL():

+ 62
- 0
dcc/r2.py Просмотреть файл

@@ -0,0 +1,62 @@
1
+
2
+print("abc")
3
+
4
+
5
+def rfo1(l,g):
6
+	pass
7
+	print("l",l.keys())
8
+	print("g",g.keys())
9
+	print("l2",locals().keys())
10
+	print("g2",globals().keys())
11
+
12
+
13
+r'''
14
+hosts=None,
15
+prefix="asgi"
16
+expiry=60,
17
+group_expiry=86400,
18
+capacity=100,
19
+channel_capacity=None,
20
+symmetric_encryption_keys=None,
21
+'''
22
+
23
+def rx2_fn(l,g):
24
+	s = l["self"]
25
+
26
+	# p(s)
27
+
28
+	p("CL:",s.channel_layer == glob_cl.acl)
29
+	o = dict(
30
+        hosts=None,
31
+        prefix="asgi",
32
+        expiry=60,
33
+        group_expiry=86400,
34
+        capacity=100,
35
+        channel_capacity=None,
36
+        # symmetric_encryption_keys=None,
37
+)
38
+	a = glob_cl.acl
39
+
40
+	o2 = dict(
41
+hosts=a.hosts,
42
+prefix=a.prefix,
43
+expiry=a.expiry,
44
+group_expiry=a.group_expiry,
45
+capacity=a.capacity,
46
+channel_capacity=a.channel_capacity,
47
+# symmetric_encryption_keys=a.symmetric_encryption_keys,
48
+)
49
+
50
+
51
+	p(o)
52
+	p(o2)
53
+
54
+rx2_fn(locals(),globals())
55
+# rfo1(locals(),globals())
56
+
57
+
58
+
59
+
60
+
61
+
62
+

+ 29
- 0
dcc/r3.py Просмотреть файл

@@ -0,0 +1,29 @@
1
+from channels.db import database_sync_to_async
2
+from channels.sessions import SessionMiddlewareInstance
3
+
4
+
5
+p("~~~~~")
6
+
7
+# def _call()
8
+async def _call(*a,**kw):
9
+	orig_fn = SessionMiddlewareInstance.mthd_baks["__call__"]
10
+	p("CALL SMI2:",a,kw)
11
+	p(end="",flush=1)
12
+	# return await orig_fn(*a,**kw)
13
+	# try
14
+	ret = await orig_fn(*a,**kw)
15
+	p("CALL SMI RET:",ret)
16
+	# p("")
17
+
18
+	return ret
19
+def dec_SMI():
20
+	pass
21
+	# dec_cls_mthd(SessionMiddlewareInstance,"__call__",_call)
22
+	undec_cls_mthd(SessionMiddlewareInstance,"__call__")
23
+
24
+
25
+# dec_SMI()
26
+
27
+p(glob_cl.rman.files.keys())
28
+
29
+

+ 3
- 0
dcc/r4.py Просмотреть файл

@@ -0,0 +1,3 @@
1
+
2
+
3
+p("R4!")

+ 26
- 0
dcc/r5.py Просмотреть файл

@@ -0,0 +1,26 @@
1
+
2
+
3
+# p("R5!")
4
+
5
+
6
+def gtest():
7
+	g = globals()
8
+	p(g.keys())
9
+
10
+# gtest()
11
+# zz.z
12
+
13
+# stat_info
14
+def stat_info():
15
+	file_name = "/usr/games/repos/ign4/dcc/r5.py"
16
+	s = os.stat(file_name)
17
+	p(os.stat_result)
18
+	p(dir(os.stat_result))
19
+	# oinfo(os.stat_result)
20
+	oinfo(s)
21
+	# code_info(os.stat_result.__init__)
22
+
23
+
24
+
25
+stat_info()
26
+# os.stat_result

+ 0
- 0
dcc/r_notes.py Просмотреть файл


+ 17
- 0
dcc/u.py Просмотреть файл

@@ -0,0 +1,17 @@
1
+
2
+
3
+def oinfo(obj):
4
+	attr_names = dir(obj)
5
+	p("...")
6
+	# p(obj.__code__)
7
+
8
+	for en in attr_names:
9
+		# if en[:2] == "__":continue
10
+		attr = getattr(obj,en,"No attr")
11
+		# p("\t",en+"\t",type(attr))
12
+		# p(attr)
13
+		# p()
14
+		p(en,attr)
15
+		# p(en,type(attr))
16
+		# p()
17
+

+ 1
- 0
inc_lib/dev/dev_vers.js Просмотреть файл

@@ -0,0 +1 @@
1
+window.dev_flag = 1

+ 7
- 0
inc_lib/dev/misc_utils.js Просмотреть файл

@@ -0,0 +1,7 @@
1
+function ensure_arr(obj){
2
+	if (Array.isArray(obj)){
3
+		return obj
4
+	} else {
5
+		return [obj]
6
+	}
7
+}

+ 0
- 0
inc_lib/dev/rld_utils.js Просмотреть файл


+ 1
- 0
inc_lib/dev/tmp_include_rld_utils.html Просмотреть файл

@@ -0,0 +1 @@
1
+<script class="rld" src="/ign/rf/m/m_api_v2.js?c=002"></script>

+ 2
- 0
inc_lib/dev/universals.js Просмотреть файл

@@ -0,0 +1,2 @@
1
+clog = console.log
2
+function nop(){}

+ 3
- 2
indx/landing/vcorner.html Просмотреть файл

@@ -28,6 +28,7 @@
28 28
 
29 29
 </script>
30 30
 <script src="/ign/libs/jquery-3.5.1.min.js"></script>
31
+    <script class="rld" src="/ign/rf/u/universals.js?c=002"></script>
31 32
     <script src="/ign/j7/rldjs/rldjs4.js?v=139"></script>
32 33
     <script class="rld rrld" src="/ign/rls.js?c=002"></script>
33 34
 
@@ -68,7 +69,6 @@
68 69
 
69 70
 
70 71
   
71
-    <script class="rld" src="/ign/rf/u/universals.js?c=002"></script>
72 72
     <script class="" src="/ign/rf/u/proto_ext.js?c=002"></script>
73 73
 
74 74
     <script class="rld" src="/ign/rf/inspect_utils.js?c=002"></script>
@@ -184,9 +184,10 @@ Go ahead, video chat with the whole team. In fact, invite everyone you know. Jit
184 184
  firefox & safari may be buggy. <br>
185 185
 </span>
186 186
 </div>
187
+
187 188
     <div class="email_list">
188 189
 
189
- 
190
+ I will be releasing a devkit soon. Contact me for early access.
190 191
         
191 192
 <!-- Begin Mailchimp Signup Form -->
192 193
 

+ 92
- 0
indx/ws_dev/embed_iframe.html Просмотреть файл

@@ -0,0 +1,92 @@
1
+<html dir="ltr">
2
+  <head>
3
+    <meta charset="utf-8" />
4
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
5
+    <link rel="icon" type="image/png" href="/public/favicon.png" />
6
+
7
+    <link rel="preload" href="/public/font/v1/300.woff" as="font" type="font/woff" />
8
+    <link rel="preload" href="/public/font/v1/300i.woff" as="font" type="font/woff" />
9
+    <link rel="preload" href="/public/font/v1/400.woff" as="font" type="font/woff" />
10
+    <link rel="preload" href="/public/font/v1/400i.woff" as="font" type="font/woff" />
11
+    <link rel="preload" href="/public/font/v1/700.woff" as="font" type="font/woff" />
12
+    <link rel="preload" href="/public/font/v1/700i.woff" as="font" type="font/woff" />
13
+
14
+    <style>
15
+      @font-face {
16
+        font-family: 'Inter';
17
+        font-style: normal;
18
+        font-weight: 300;
19
+        font-display: swap;
20
+        src: url('/public/font/v1/300.woff') format('woff');
21
+      }
22
+
23
+      @font-face {
24
+        font-family: 'Inter';
25
+        font-style: italic;
26
+        font-weight: 300;
27
+        font-display: swap;
28
+        src: url('/public/font/v1/300i.woff') format('woff');
29
+      }
30
+
31
+      @font-face {
32
+        font-family: 'Inter';
33
+        font-style: normal;
34
+        font-weight: 400;
35
+        font-display: swap;
36
+        src: url('/public/font/v1/400.woff') format('woff');
37
+      }
38
+
39
+      @font-face {
40
+        font-family: 'Inter';
41
+        font-style: italic;
42
+        font-weight: 400;
43
+        font-display: swap;
44
+        src: url('/public/font/v1/400i.woff') format('woff');
45
+      }
46
+
47
+      @font-face {
48
+        font-family: 'Inter';
49
+        font-style: normal;
50
+        font-weight: 700;
51
+        font-display: swap;
52
+        src: url('/public/font/v1/700.woff') format('woff');
53
+      }
54
+
55
+      @font-face {
56
+        font-family: 'Inter';
57
+        font-style: italic;
58
+        font-weight: 700;
59
+        font-display: swap;
60
+        src: url('/public/font/v1/700i.woff') format('woff');
61
+      }
62
+    </style>
63
+
64
+    
65
+      
66
+      <meta charset="utf8"/><title>Ep. 1884 The Truth About the Supreme Court</title><meta name="description" content="My friend and co-author Kevin Gutzman joins us to discuss the original function of the Supreme Court and what has happened since, including the Democrats&#039; latest attempt at court packing.
67
+ Sponsor:..."/><meta name="twitter:image" content="https://thumbnails.lbry.com/powipsj7bRI"/><meta property="og:description" content="My friend and co-author Kevin Gutzman joins us to discuss the original function of the Supreme Court and what has happened since, including the Democrats&#039; latest attempt at court packing.
68
+ Sponsor:..."/><meta property="og:image" content="https://thumbnails.lbry.com/powipsj7bRI"/><meta property="og:locale" content="en"/><meta property="og:site_name" content="Odysee"/><meta property="og:type" content="website"/><meta property="og:title" content="Ep. 1884 The Truth About the Supreme Court"/><meta name="twitter:title" content="Ep. 1884 The Truth About the Supreme Court"/><meta property="og:url" content="https://odysee.com/ep.-1884-the-truth-about-the-supreme:d6e9ed1024f053db168560ff577b16e947344fef"/><meta name="twitter:url" content="https://odysee.com/ep.-1884-the-truth-about-the-supreme:d6e9ed1024f053db168560ff577b16e947344fef"/><link rel="canonical" content="odysee.com/ep.-1884-the-truth-about-the-supreme:d6e9ed1024f053db168560ff577b16e947344fef"/><meta property="og:video" content="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?" /><meta property="og:video:secure_url" content="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?" /><meta property="og:video:type" content="video/mp4" /><meta name="og:video:series" content="@TomWoodsTV"/><meta name="twitter:card" content="player"/><meta name="twitter:player" content="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?" /><meta property="og:video:release_date" content="2021-04-28T19:39:13.000Z"/><meta property="og:video:duration" content="2355"/><meta property="og:video:width" content="1280"/><meta property="og:video:height" content="720"/><meta name="twitter:player:width" content="1280"><meta name="twitter:player:height" content="720">
69
+<script type="application/ld+json">
70
+{
71
+  "@context": "https://schema.org",
72
+  "@type": "VideoObject",
73
+  "name": "Ep. 1884 The Truth About the Supreme Court",
74
+  "description": "My friend and co-author Kevin Gutzman joins us to discuss the original function of the Supreme Court and what has happened since, including the Democrats&#039; latest attempt at court packing.\n Sponsor:...",
75
+  "thumbnailUrl": "https://thumbnails.lbry.com/powipsj7bRI",
76
+  "uploadDate": "2021-04-28T19:39:13.000Z",
77
+  "duration": "PT39M15S",
78
+  "contentUrl": "https://odysee.com/$/stream/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef",
79
+  "embedUrl": "https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?"
80
+}
81
+</script>
82
+
83
+      <script src="https://odysee.com/public/ui-a9d51fa1-33d7-4928-ad75-c2ce4f478385.js" async></script>
84
+    
85
+      <script src="https://odysee.com/public/ui-39557f59-9795-4cd0-a7a7-66843a46e537.js" async></script>
86
+    
87
+  </head>
88
+
89
+  <body>
90
+    <div id="app"></div>
91
+  </body>
92
+</html>

+ 96
- 0
indx/ws_dev/embed_iframe4.html Просмотреть файл

@@ -0,0 +1,96 @@
1
+<!DOCTYPE html>
2
+<html dir="ltr">
3
+  <head>
4
+    <meta charset="utf-8" />
5
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+    <link rel="icon" type="image/png" href="https://odysee.com/public/favicon.png" />
7
+
8
+    <link rel="preload" href="https://odysee.com/public/font/v1/300.woff" as="font" type="font/woff" />
9
+    <link rel="preload" href="https://odysee.com/public/font/v1/300i.woff" as="font" type="font/woff" />
10
+    <link rel="preload" href="https://odysee.com/public/font/v1/400.woff" as="font" type="font/woff" />
11
+    <link rel="preload" href="https://odysee.com/public/font/v1/400i.woff" as="font" type="font/woff" />
12
+    <link rel="preload" href="https://odysee.com/public/font/v1/700.woff" as="font" type="font/woff" />
13
+    <link rel="preload" href="https://odysee.com/public/font/v1/700i.woff" as="font" type="font/woff" />
14
+
15
+    <style>
16
+      @font-face {
17
+        font-family: 'Inter';
18
+        font-style: normal;
19
+        font-weight: 300;
20
+        font-display: swap;
21
+        src: url('/public/font/v1/300.woff') format('woff');
22
+      }
23
+
24
+      @font-face {
25
+        font-family: 'Inter';
26
+        font-style: italic;
27
+        font-weight: 300;
28
+        font-display: swap;
29
+        src: url('/public/font/v1/300i.woff') format('woff');
30
+      }
31
+
32
+      @font-face {
33
+        font-family: 'Inter';
34
+        font-style: normal;
35
+        font-weight: 400;
36
+        font-display: swap;
37
+        src: url('/public/font/v1/400.woff') format('woff');
38
+      }
39
+
40
+      @font-face {
41
+        font-family: 'Inter';
42
+        font-style: italic;
43
+        font-weight: 400;
44
+        font-display: swap;
45
+        src: url('/public/font/v1/400i.woff') format('woff');
46
+      }
47
+
48
+      @font-face {
49
+        font-family: 'Inter';
50
+        font-style: normal;
51
+        font-weight: 700;
52
+        font-display: swap;
53
+        src: url('/public/font/v1/700.woff') format('woff');
54
+      }
55
+
56
+      @font-face {
57
+        font-family: 'Inter';
58
+        font-style: italic;
59
+        font-weight: 700;
60
+        font-display: swap;
61
+        src: url('/public/font/v1/700i.woff') format('woff');
62
+      }
63
+    </style>
64
+
65
+    
66
+      
67
+      <meta charset="utf8"/><title>Ep. 1884 The Truth About the Supreme Court</title><meta name="description" content="My friend and co-author Kevin Gutzman joins us to discuss the original function of the Supreme Court and what has happened since, including the Democrats&#039; latest attempt at court packing.
68
+ Sponsor:..."/><meta name="twitter:image" content="https://thumbnails.lbry.com/powipsj7bRI"/><meta property="og:description" content="My friend and co-author Kevin Gutzman joins us to discuss the original function of the Supreme Court and what has happened since, including the Democrats&#039; latest attempt at court packing.
69
+ Sponsor:..."/><meta property="og:image" content="https://thumbnails.lbry.com/powipsj7bRI"/><meta property="og:locale" content="en"/><meta property="og:site_name" content="Odysee"/><meta property="og:type" content="website"/><meta property="og:title" content="Ep. 1884 The Truth About the Supreme Court"/><meta name="twitter:title" content="Ep. 1884 The Truth About the Supreme Court"/><meta property="og:url" content="https://odysee.com/ep.-1884-the-truth-about-the-supreme:d6e9ed1024f053db168560ff577b16e947344fef"/><meta name="twitter:url" content="https://odysee.com/ep.-1884-the-truth-about-the-supreme:d6e9ed1024f053db168560ff577b16e947344fef"/><link rel="canonical" content="odysee.com/ep.-1884-the-truth-about-the-supreme:d6e9ed1024f053db168560ff577b16e947344fef"/><meta property="og:video" content="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?" /><meta property="og:video:secure_url" content="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?" /><meta property="og:video:type" content="video/mp4" /><meta name="og:video:series" content="@TomWoodsTV"/><meta name="twitter:card" content="player"/><meta name="twitter:player" content="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?" /><meta property="og:video:release_date" content="2021-04-28T19:39:13.000Z"/><meta property="og:video:duration" content="2355"/><meta property="og:video:width" content="1280"/><meta property="og:video:height" content="720"/><meta name="twitter:player:width" content="1280"><meta name="twitter:player:height" content="720">
70
+<script type="application/ld+json">
71
+{
72
+  "@context": "https://schema.org",
73
+  "@type": "VideoObject",
74
+  "name": "Ep. 1884 The Truth About the Supreme Court",
75
+  "description": "My friend and co-author Kevin Gutzman joins us to discuss the original function of the Supreme Court and what has happened since, including the Democrats&#039; latest attempt at court packing.\n Sponsor:...",
76
+  "thumbnailUrl": "https://thumbnails.lbry.com/powipsj7bRI",
77
+  "uploadDate": "2021-04-28T19:39:13.000Z",
78
+  "duration": "PT39M15S",
79
+  "contentUrl": "https://odysee.com/$/stream/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef",
80
+  "embedUrl": "https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?"
81
+}
82
+</script>
83
+
84
+      <!-- <script src="/ign4/indx/ws_dev/lbry1.js" async></script> -->
85
+      <script src="/ign4/indx/ws_dev/lbry1.js"></script>
86
+      <script src="https://odysee.com/public/ui-c9d26382-0b00-4ce0-89e7-e9e9306887c1.js" async></script>
87
+    <!-- ui-f3a90211-598a-40ab-9153-803e5f40f62f.dev.js -->
88
+      <script src="/ign4/libs/ui-f3a90211-598a-40ab-9153-803e5f40f62f.dev.js" async></script>
89
+      <!-- <script src="https://odysee.com/public/ui-f3a90211-598a-40ab-9153-803e5f40f62f.js" async></script> -->
90
+    
91
+  </head>
92
+
93
+  <body>
94
+    <div id="app"></div>
95
+  </body>
96
+</html>

+ 208
- 0
indx/ws_dev/lbry1.js Просмотреть файл

@@ -0,0 +1,208 @@
1
+clog = console.log
2
+
3
+
4
+lbry_iglob = {
5
+  new_int_orig:[
6
+    "https://api.lbry.com/user/new",
7
+{
8
+    "method": "POST",
9
+    "headers": {
10
+        "Content-Type": "application/x-www-form-urlencoded"
11
+    },
12
+    "body": "auth_token=&language=en&app_id=odyseecom692EAWhtoqDuAfQ6KHMXxFxt8tkhmt7sfprEMHWKjy5hf6PwZcHDV542V"
13
+},
14
+  ],
15
+    
16
+
17
+  new_int:[
18
+    "/ign4/indx/ws_dev/new.js",
19
+{
20
+    "method": "GET",
21
+    // "method": "POST",
22
+    "headers": {
23
+        "Content-Type": "application/x-www-form-urlencoded"
24
+    },
25
+    // "body": "auth_token=&language=en&app_id=odyseecom692EAWhtoqDuAfQ6KHMXxFxt8tkhmt7sfprEMHWKjy5hf6PwZcHDV542V"
26
+},
27
+
28
+],
29
+
30
+  replace_fetch:{
31
+    "https://api.lbry.com/user/new":{
32
+      nt:[
33
+    "/ign4/indx/ws_dev/new.js",
34
+{
35
+    "method": "GET",
36
+    // "method": "POST",
37
+    "headers": {
38
+        "Content-Type": "application/x-www-form-urlencoded"
39
+    },
40
+    // "body": "auth_token=&language=en&app_id=odyseecom692EAWhtoqDuAfQ6KHMXxFxt8tkhmt7sfprEMHWKjy5hf6PwZcHDV542V"
41
+},
42
+
43
+      ],
44
+    },
45
+    "https://api.lbry.com/file/list_filtered?auth_token=":{
46
+      nt:[
47
+    "/ign4/libs/list_filtered.json?auth_token=",
48
+    {
49
+        "method": "GET"
50
+    }
51
+
52
+      ],
53
+    },
54
+    "https://api.lbry.com/file/list_blocked?auth_token=":{
55
+      nt:[
56
+    "/ign4/libs/list_blocked.json?auth_token=",
57
+    {
58
+        "method": "GET"
59
+    }
60
+
61
+      ],
62
+    },
63
+
64
+  },
65
+
66
+} 
67
+
68
+function maybe_replace_t(t){
69
+  clog("maybe_replace_t2:",t,t[0])
70
+  if (t[0] in lbry_iglob.replace_fetch ){
71
+    clog("maybe_replace_t t[0]",t)
72
+    return lbry_iglob.replace_fetch[t[0]].nt
73
+  }
74
+  return t 
75
+}
76
+
77
+rfns2_ = {
78
+
79
+  rfn_apply(){                                                          
80
+    clog("RFN:apply")
81
+return Reflect.apply(...arguments)
82
+  },
83
+  rfn_construct(){                                        
84
+    clog("RFN:construct")
85
+return Reflect.construct(...arguments)
86
+  },
87
+  rfn_defineProperty(){                                           
88
+    clog("RFN:defineProperty")
89
+return Reflect.defineProperty(...arguments)
90
+  },
91
+  rfn_deleteProperty(){                               
92
+    clog("RFN:deleteProperty")
93
+return Reflect.deleteProperty(...arguments)
94
+  },
95
+  rfn_get(){                                            
96
+    clog("RFN:get",[...arguments])
97
+return Reflect.get(...arguments)
98
+  },
99
+  rfn_getOwnPropertyDescriptor(){                                 
100
+    clog("RFN:getOwnPropertyDescriptor")
101
+return Reflect.getOwnPropertyDescriptor(...arguments)
102
+  },
103
+  rfn_getPrototypeOf(){                               
104
+    clog("RFN:getPrototypeOf")
105
+return Reflect.getPrototypeOf(...arguments)
106
+  },
107
+  rfn_has(){                                              
108
+    clog("RFN:has")
109
+return Reflect.has(...arguments)
110
+  },
111
+  rfn_isExtensible(){                                         
112
+    clog("RFN:isExtensible")
113
+return Reflect.isExtensible(...arguments)
114
+  },
115
+  rfn_ownKeys(){                                        
116
+    clog("RFN:ownKeys")
117
+return Reflect.ownKeys(...arguments)
118
+  },
119
+  rfn_preventExtensions(){                                    
120
+    clog("RFN:preventExtensions")
121
+return Reflect.preventExtensions(...arguments)
122
+  },
123
+  rfn_set(){                                          
124
+    clog("RFN:set")
125
+return Reflect.set(...arguments)
126
+  },
127
+  rfn_setPrototypeOf(){                                           
128
+    clog("RFN:setPrototypeOf")
129
+return Reflect.setPrototypeOf(...arguments)
130
+  },
131
+
132
+}
133
+Response_orig = Response
134
+Response_p = new Proxy(Response,rfns2_)
135
+// Response = new Proxy(Response,rfns2_)
136
+
137
+
138
+rfns =rfns2_
139
+
140
+rprox2 = {
141
+apply: rfns.rfn_apply,
142
+construct: rfns.rfn_construct,
143
+
144
+defineProperty: rfns.rfn_defineProperty,
145
+deleteProperty: rfns.rfn_deleteProperty,
146
+get: rfns.rfn_get,
147
+getOwnPropertyDescriptor: rfns.rfn_getOwnPropertyDescriptor,
148
+getPrototypeOf: rfns.rfn_getPrototypeOf,
149
+has: rfns.rfn_has,
150
+isExtensible: rfns.rfn_isExtensible,
151
+ownKeys: rfns.rfn_ownKeys,
152
+preventExtensions: rfns.rfn_preventExtensions,
153
+set: rfns.rfn_set,
154
+setPrototypeOf: rfns.rfn_setPrototypeOf,
155
+
156
+}
157
+
158
+
159
+
160
+function proxy_rsp(t){
161
+  clog("rfn.")
162
+  var ret =new Proxy(t,rprox2)
163
+  // ret.z
164
+  return ret
165
+}
166
+
167
+
168
+/*
169
+{
170
+    "method": "POST",
171
+    "headers": {
172
+        "Content-Type": "application/x-www-form-urlencoded"
173
+    },
174
+    "body": "auth_token=&language=en&app_id=odyseecom692EAWhtoqDuAfQ6KHMXxFxt8tkhmt7sfprEMHWKjy5hf6PwZcHDV542V"
175
+}
176
+*/
177
+
178
+
179
+
180
+// https://api.lbry.com/user/new
181
+
182
+/*
183
+[
184
+    "https://api.lbry.tv/api/v1/proxy?m=status",
185
+    {
186
+        "method": "POST",
187
+        "headers": {
188
+            "Content-Type": "application/json-rpc"
189
+        },
190
+        "body": "{\"jsonrpc\":\"2.0\",\"method\":\"status\",\"params\":{},\"id\":1619731308841}"
191
+    }
192
+]
193
+
194
+
195
+[
196
+    "https://api.lbry.com/file/list_filtered?auth_token=",
197
+    {
198
+        "method": "GET"
199
+    }
200
+]
201
+
202
+[
203
+    "https://api.lbry.com/file/list_blocked?auth_token=",
204
+    {
205
+        "method": "GET"
206
+    }
207
+]
208
+*/

+ 14
- 0
indx/ws_dev/new.js Просмотреть файл

@@ -0,0 +1,14 @@
1
+{
2
+  "success": true,
3
+  "error": null,
4
+  "data": {
5
+    "id": 744780,
6
+    "app_id": "odyseecom692EAWhtoqDuAfQ6KHMXxFxt8tkhmt7sfprEMHWKjy5hf6PwZcHDV542V",
7
+    "platform": "Linux",
8
+    "device_type": "web",
9
+    "created_at": "2020-09-03T22:26:48Z",
10
+    "updated_at": "2021-04-29T19:56:25Z",
11
+    "firebase_token": null,
12
+    "domain": "odysee.com"
13
+  }
14
+}

+ 55
- 0
indx/ws_dev/ws.html Просмотреть файл

@@ -0,0 +1,55 @@
1
+
2
+<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
3
+  <head>
4
+
5
+
6
+
7
+
8
+
9
+
10
+<script type="text/javascript">
11
+    // window.dev_flag = 1
12
+    window.ign_root1 = `<!--#echo var="ign_root" -->`
13
+    window.ign1 = `<!--#echo var="ign" -->`
14
+    window.indexv = `<!--#echo var="indexv" -->`
15
+    window.rootv = `<!--#echo var="rootv" -->`
16
+
17
+    ign_info = {
18
+    	ign_root1 : `<!--#echo var="ign_root" -->`,
19
+		ign1 : `<!--#echo var="ign" -->`,
20
+		request_filename : `<!--#echo var="request_filename" -->`,
21
+		indexv : `<!--#echo var="indexv" -->`,
22
+		rootv : `<!--#echo var="rootv" -->`,
23
+		ig3 : `<!--#echo var="ig3" -->`,
24
+		lsrv_n1 : `<!--#echo var="lsrv_n1" -->`,
25
+		request_uri : `<!--#echo var="request_uri" -->`,
26
+		http_referer : `<!--#echo var="http_referer" -->`,
27
+
28
+		// lsrv_n1
29
+    }
30
+
31
+</script>
32
+
33
+<script src="/ign/libs/jquery-3.5.1.min.js"></script>
34
+
35
+    <script class="rld" src="/ign/rf/u/universals.js?c=00x"></script>
36
+    <script class="" src="/ign/rf/u/proto_ext.js?c=002"></script>
37
+    <script class="rld" src="/ign/rf/inspect_utils.js?c=002"></script>
38
+
39
+
40
+    <script src="/ign/j7/rldjs/rldjs4.js?v=139"></script>
41
+    <script class="rld rrld" src="/ign/rls.js?c=002"></script>
42
+
43
+    <script class="rld" src="/ign/xf/nginx_td/td_t/ti_t2.js?c=002"></script> 
44
+
45
+<script class="rld" src="/ign/indx/ws_dev/ws0.js?c=00x"></script>
46
+<script class="rld" src="/ign/indx/ws_dev/ws1.js?c=00x"></script>
47
+<script class="rld" src="/ign/indx/ws_dev/ws2.js?c=00x"></script>
48
+<script class="rld" src="/ign/indx/ws_dev/ws_rld.js?c=00x"></script>
49
+<!-- <script class="rld" src="/ign/rf/conn/rx4_.js?c=00x"></script> -->
50
+  </head>
51
+  <body>
52
+<!-- <iframe id="lbry-iframe" width="560" height="315" src="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?r=DvGY5rk7GF4aqhviPzZopiryqVRqwQ7q" allowfullscreen></iframe> -->
53
+
54
+  </body>
55
+</html>

+ 212
- 0
indx/ws_dev/ws0.js Просмотреть файл

@@ -0,0 +1,212 @@
1
+
2
+
3
+// window.roomName = window.location.pathname.split("/").pop()
4
+/*
5
+*/
6
+window.ws_path  = `/ws/jsto/`
7
+window.ws_path2  = `/ws/jsto2/`
8
+
9
+function roomNameIndex(){
10
+    clog("RNI!")
11
+    if (window.roomName.includes(".") | !window.roomName){
12
+        window.roomName = "aroomlist"
13
+    }
14
+}
15
+
16
+
17
+
18
+
19
+function msto_conf_info(){
20
+    var ret = "init_val"
21
+    try {
22
+        if (msto.conference.href_const){
23
+            ret = msto.conference.href_const
24
+        } else {
25
+            msto.conference.href_const = window.location.href 
26
+            ret = msto.conference.href_const
27
+        }
28
+        
29
+    } catch (err){
30
+        ret = "err"
31
+
32
+    }
33
+    return ret
34
+}
35
+function get_conf_info(){
36
+    var href_const = msto_conf_info()
37
+    var state = APP.store.getState()
38
+    var app_conference = state["features/base/conference"]
39
+    var ret = jc({
40
+    href:msto_conf_info(),
41
+    locked:app_conference.locked ? true : false,
42
+    name:app_conference.name,
43
+    num_participants:state["features/base/participants"].length,
44
+    hosts:state["features/base/config"].hosts,
45
+})
46
+        return ret
47
+    }
48
+
49
+
50
+function connect_ws(ws_path = window.ws_path){
51
+
52
+    if(!window.roomName){
53
+        // return
54
+    }
55
+
56
+    if (window.chatSocket && window.chatSocket.readyState < 2) {
57
+    clog("WSS ALLREADY CONNECTED!")
58
+        return
59
+    }
60
+    clog("WSS CONTECTING")
61
+
62
+    var chatSocket = new WebSocket(
63
+        'wss://' + window.location.host + ":8943" +
64
+        // '/ws/chat/' + window.roomName + `/?room=${window.roomName}`);
65
+        ws_path + window.roomName + `/?room=${window.roomName}`);
66
+    window.chatSocket =chatSocket
67
+    chatSocket.onmessage = wsfn.onmessage
68
+    chatSocket.onclose = wsfn.onclose
69
+
70
+
71
+
72
+    // window.chatSocket=chatSocket
73
+
74
+}
75
+
76
+
77
+
78
+
79
+
80
+
81
+wsfn = {}
82
+    wsfn.onmessage = function(e) {
83
+        var data = JSON.parse(e.data);
84
+        // clog("WS ONMSG",data)
85
+        if (data.message != undefined){
86
+            wsfn.on_chat_message(data)
87
+        }
88
+        if (data.type != undefined && wsfn[data.type]){
89
+            wsfn[data.type](data,e)
90
+
91
+        }
92
+
93
+
94
+        // chatSocket.onmessage = onmessage
95
+        // onclose
96
+        // clog(data)
97
+        // clog("~",e)
98
+        // var message = data['message'];
99
+        // document.querySelector('#chat-log').value += (message + '\n');
100
+    };
101
+
102
+
103
+
104
+
105
+    wsfn.pre_config = function(data,e){
106
+        window.pre_config=data
107
+        clog("PRE_CONFIG",data,e)
108
+
109
+        if (data.config && data.config.password_enabled){
110
+            setPasswordHelper(data.config.password)
111
+        }
112
+
113
+    }
114
+
115
+
116
+
117
+
118
+
119
+
120
+    wsfn.pingpong = function(data) {
121
+        clog(">< pingpong")
122
+        // if (window.prt && prt.getLocalParticipant(APP.store).role == "moderator"){
123
+            /*
124
+        if (0){
125
+            try {
126
+            wsfn.s({pop:get_conf_info()})
127
+
128
+            } catch (err){
129
+                clog("rx4_err:",err)
130
+            }
131
+        }
132
+
133
+
134
+        if (0 && window.iammod){
135
+            var state = APP.store.getState()
136
+            // locked
137
+
138
+            // clog("IS MOD TRU")
139
+        wsfn.s({
140
+            pop:state["features/base/participants"].length,
141
+            locked:state["features/base/conference"].locked ? true : false,
142
+
143
+            // pop:`state["features/base/participants"].length`,
144
+            // locked:`state["features/base/conference"].locked ? true : false`,
145
+            // locked:{a: + ""},
146
+            pop:{href:window.location.href,num_participants:state["features/base/participants"].length},
147
+            abc:"a",
148
+            test:"a",
149
+        })
150
+        } else 
151
+        if (!window.prt) {
152
+clog("window.prt")
153
+        }
154
+            */
155
+    }
156
+
157
+    wsfn.on_chat_message = function(data) {
158
+        // var data = JSON.parse(e.data);
159
+        var message = data['message'];
160
+        // document.querySelector('#chat-log').value += (message + '\n');
161
+    };
162
+
163
+    wsfn.onclose = function(e) {
164
+        console.error('Chat socket closed unexpectedly');
165
+
166
+
167
+    if (window.location.pathname.length > 2 && window.location.pathname[1] == "f"){
168
+    
169
+    clog("WSS NO CONN")
170
+    } else {
171
+
172
+        setTimeout(connect_ws,1400)
173
+    }
174
+    clog("window.location.pathname[1]",window.location.pathname[1])
175
+
176
+
177
+    };
178
+
179
+
180
+ wsfn.s=   function(o){
181
+        chatSocket.send(JSON.stringify(o));
182
+    }
183
+    function e(o){
184
+        chatSocket.send(JSON.stringify({"dbg":o}));
185
+    }
186
+    function itx(o){
187
+        ret = ""
188
+        for  (var [k,v] of Object.entries(o)){
189
+            ret += k +":" + v.pop + "  ~"+ v.t+ "\n"
190
+            // clog(k,v)
191
+        }
192
+        return ret
193
+    }
194
+
195
+//   
196
+
197
+
198
+/*
199
+roomNameIndex()
200
+if (window.location.pathname.length > 2 && window.location.pathname[1] == "f"){
201
+
202
+// clog("WSS NO CONN")
203
+} else {
204
+
205
+}
206
+*/
207
+
208
+// if 
209
+// connect_ws()
210
+
211
+// clog("zzzzzz")
212
+

+ 4
- 0
indx/ws_dev/ws1.js Просмотреть файл

@@ -0,0 +1,4 @@
1
+$("video").currentTime = 15
2
+
3
+
4
+clog("..",$("iframe"))

+ 90
- 0
indx/ws_dev/ws2.html Просмотреть файл

@@ -0,0 +1,90 @@
1
+
2
+<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
3
+  <head>
4
+<script type="text/javascript">
5
+	clog = console.log
6
+	onPlayerReady = function (event){
7
+		clog("onPlayerReady",event,{that:this,args:[...arguments]})
8
+	}
9
+	onmessage = function (event){
10
+		clog("onmessage",event,{that:this,args:[...arguments]})
11
+	}
12
+
13
+</script>
14
+
15
+
16
+
17
+
18
+  </head>
19
+  <body>
20
+<iframe id="lbry-iframe" width="560" height="315" src="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?r=DvGY5rk7GF4aqhviPzZopiryqVRqwQ7q" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
21
+<!-- <iframe id="lbry-iframe" width="560" height="315" src="https://lbry.tv/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?r=DvGY5rk7GF4aqhviPzZopiryqVRqwQ7q" allowfullscreen></iframe> -->
22
+<!-- <iframe id="lbry-iframe" width="560" height="315" src="https://lbry.tv/$/embed/grace-church-high-school-teaching-the/951fe0344216197eed7ca34300df495008c793a7?r=GaiPAskUk5ua7D3aUWPaD62THv13MRjZ" allowfullscreen></iframe> -->
23
+
24
+
25
+
26
+<!-- <iframe id="lbry-iframe" width="560" height="315" src="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?r=DvGY5rk7GF4aqhviPzZopiryqVRqwQ7q" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> -->
27
+<!-- <iframe width="560" height="315" src="https://www.youtube.com/embed/RDfjXj5EGqI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> -->
28
+
29
+<!-- <iframe id="sharedVideoIFrame" style="--vdim:&quot; x &quot;; opacity: 1;" frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="https://www.youtube.com/embed/RDfjXj5EGqI?origin=https%3A%2F%2Fspecplot.com&amp;fs=0&amp;autoplay=0;controls=1&amp;rel=0&amp;enablejsapi=1&amp;widgetid=1"></iframe> -->
30
+<!-- <iframe id="sharedVideoIFrame" style="--vdim:&quot; x &quot;; opacity: 1;" frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="https://www.youtube.com/embed/RDfjXj5EGqI?origin=https%3A%2F%2Fspecplot.com&fs=0&autoplay=0&controls=1&rel=0&enablejsapi=1&widgetid=1"></iframe> -->
31
+  
32
+<!-- 
33
+
34
+ -->
35
+<!-- 
36
+  <div id="player"></div>
37
+    <script>
38
+      // 2. This code loads the IFrame Player API code asynchronously.
39
+      var tag = document.createElement('script');
40
+
41
+      tag.src = "https://www.youtube.com/iframe_api";
42
+      var firstScriptTag = document.getElementsByTagName('script')[0];
43
+      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
44
+
45
+      // 3. This function creates an <iframe> (and YouTube player)
46
+      //    after the API code downloads.
47
+      var player;
48
+      function onYouTubeIframeAPIReady() {
49
+      	clog("..","onYouTubeIframeAPIReady")
50
+        player = new YT.Player('player', {
51
+          height: '390',
52
+          width: '640',
53
+          videoId: 'M7lc1UVf-VE',
54
+          playerVars: {
55
+            'playsinline': 1
56
+          },
57
+          events: {
58
+            'onReady': onPlayerReady,
59
+            'onStateChange': onPlayerStateChange
60
+          }
61
+        });
62
+      }
63
+
64
+      // 4. The API will call this function when the video player is ready.
65
+      function onPlayerReady(event) {
66
+      	clog("..")
67
+        event.target.playVideo();
68
+      }
69
+
70
+      // 5. The API calls this function when the player's state changes.
71
+      //    The function indicates that when playing a video (state=1),
72
+      //    the player should play for six seconds and then stop.
73
+      var done = false;
74
+      function onPlayerStateChange(event) {
75
+      	clog("..","onPlayerStateChange")
76
+        if (event.data == YT.PlayerState.PLAYING && !done) {
77
+          setTimeout(stopVideo, 6000);
78
+          done = true;
79
+        }
80
+      }
81
+      function stopVideo() {
82
+      	clog("..","stopVideo")
83
+        player.stopVideo();
84
+      }
85
+    </script>
86
+<!-- 
87
+ -->
88
+ -->
89
+  </body>
90
+</html>

+ 0
- 0
indx/ws_dev/ws2.js Просмотреть файл


+ 93
- 0
indx/ws_dev/ws3.html Просмотреть файл

@@ -0,0 +1,93 @@
1
+
2
+<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
3
+  <head>
4
+<script type="text/javascript">
5
+	clog = console.log
6
+	onPlayerReady = function (event){
7
+		clog("onPlayerReady",event,{that:this,args:[...arguments]})
8
+	}
9
+	onmessage = function (event){
10
+		clog("onmessage",event,{that:this,args:[...arguments]})
11
+	}
12
+
13
+</script>
14
+
15
+
16
+
17
+
18
+  </head>
19
+  <body>
20
+<iframe id="lbry-iframe" width="560" height="315" src="/ign/indx/ws_dev/embed_iframe.html" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+<!-- <iframe width="560" height="315" src="https://www.youtube.com/embed/RDfjXj5EGqI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> -->
31
+
32
+<!-- <iframe id="sharedVideoIFrame" style="--vdim:&quot; x &quot;; opacity: 1;" frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="https://www.youtube.com/embed/RDfjXj5EGqI?origin=https%3A%2F%2Fspecplot.com&amp;fs=0&amp;autoplay=0;controls=1&amp;rel=0&amp;enablejsapi=1&amp;widgetid=1"></iframe> -->
33
+<!-- <iframe id="sharedVideoIFrame" style="--vdim:&quot; x &quot;; opacity: 1;" frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="https://www.youtube.com/embed/RDfjXj5EGqI?origin=https%3A%2F%2Fspecplot.com&fs=0&autoplay=0&controls=1&rel=0&enablejsapi=1&widgetid=1"></iframe> -->
34
+  
35
+<!-- 
36
+
37
+ -->
38
+<!-- 
39
+  <div id="player"></div>
40
+    <script>
41
+      // 2. This code loads the IFrame Player API code asynchronously.
42
+      var tag = document.createElement('script');
43
+
44
+      tag.src = "https://www.youtube.com/iframe_api";
45
+      var firstScriptTag = document.getElementsByTagName('script')[0];
46
+      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
47
+
48
+      // 3. This function creates an <iframe> (and YouTube player)
49
+      //    after the API code downloads.
50
+      var player;
51
+      function onYouTubeIframeAPIReady() {
52
+      	clog("..","onYouTubeIframeAPIReady")
53
+        player = new YT.Player('player', {
54
+          height: '390',
55
+          width: '640',
56
+          videoId: 'M7lc1UVf-VE',
57
+          playerVars: {
58
+            'playsinline': 1
59
+          },
60
+          events: {
61
+            'onReady': onPlayerReady,
62
+            'onStateChange': onPlayerStateChange
63
+          }
64
+        });
65
+      }
66
+
67
+      // 4. The API will call this function when the video player is ready.
68
+      function onPlayerReady(event) {
69
+      	clog("..")
70
+        event.target.playVideo();
71
+      }
72
+
73
+      // 5. The API calls this function when the player's state changes.
74
+      //    The function indicates that when playing a video (state=1),
75
+      //    the player should play for six seconds and then stop.
76
+      var done = false;
77
+      function onPlayerStateChange(event) {
78
+      	clog("..","onPlayerStateChange")
79
+        if (event.data == YT.PlayerState.PLAYING && !done) {
80
+          setTimeout(stopVideo, 6000);
81
+          done = true;
82
+        }
83
+      }
84
+      function stopVideo() {
85
+      	clog("..","stopVideo")
86
+        player.stopVideo();
87
+      }
88
+    </script>
89
+<!-- 
90
+ -->
91
+ -->
92
+  </body>
93
+</html>

+ 93
- 0
indx/ws_dev/ws4.html Просмотреть файл

@@ -0,0 +1,93 @@
1
+
2
+<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
3
+  <head>
4
+<script type="text/javascript">
5
+	clog = console.log
6
+	onPlayerReady = function (event){
7
+		clog("onPlayerReady",event,{that:this,args:[...arguments]})
8
+	}
9
+	onmessage = function (event){
10
+		clog("onmessage",event,{that:this,args:[...arguments]})
11
+	}
12
+
13
+</script>
14
+
15
+
16
+
17
+
18
+  </head>
19
+  <body>
20
+<iframe id="lbry-iframe" width="560" height="315" src="/ign/indx/ws_dev/embed_iframe4.html" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+<!-- <iframe width="560" height="315" src="https://www.youtube.com/embed/RDfjXj5EGqI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> -->
31
+
32
+<!-- <iframe id="sharedVideoIFrame" style="--vdim:&quot; x &quot;; opacity: 1;" frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="https://www.youtube.com/embed/RDfjXj5EGqI?origin=https%3A%2F%2Fspecplot.com&amp;fs=0&amp;autoplay=0;controls=1&amp;rel=0&amp;enablejsapi=1&amp;widgetid=1"></iframe> -->
33
+<!-- <iframe id="sharedVideoIFrame" style="--vdim:&quot; x &quot;; opacity: 1;" frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="https://www.youtube.com/embed/RDfjXj5EGqI?origin=https%3A%2F%2Fspecplot.com&fs=0&autoplay=0&controls=1&rel=0&enablejsapi=1&widgetid=1"></iframe> -->
34
+  
35
+<!-- 
36
+
37
+ -->
38
+<!-- 
39
+  <div id="player"></div>
40
+    <script>
41
+      // 2. This code loads the IFrame Player API code asynchronously.
42
+      var tag = document.createElement('script');
43
+
44
+      tag.src = "https://www.youtube.com/iframe_api";
45
+      var firstScriptTag = document.getElementsByTagName('script')[0];
46
+      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
47
+
48
+      // 3. This function creates an <iframe> (and YouTube player)
49
+      //    after the API code downloads.
50
+      var player;
51
+      function onYouTubeIframeAPIReady() {
52
+      	clog("..","onYouTubeIframeAPIReady")
53
+        player = new YT.Player('player', {
54
+          height: '390',
55
+          width: '640',
56
+          videoId: 'M7lc1UVf-VE',
57
+          playerVars: {
58
+            'playsinline': 1
59
+          },
60
+          events: {
61
+            'onReady': onPlayerReady,
62
+            'onStateChange': onPlayerStateChange
63
+          }
64
+        });
65
+      }
66
+
67
+      // 4. The API will call this function when the video player is ready.
68
+      function onPlayerReady(event) {
69
+      	clog("..")
70
+        event.target.playVideo();
71
+      }
72
+
73
+      // 5. The API calls this function when the player's state changes.
74
+      //    The function indicates that when playing a video (state=1),
75
+      //    the player should play for six seconds and then stop.
76
+      var done = false;
77
+      function onPlayerStateChange(event) {
78
+      	clog("..","onPlayerStateChange")
79
+        if (event.data == YT.PlayerState.PLAYING && !done) {
80
+          setTimeout(stopVideo, 6000);
81
+          done = true;
82
+        }
83
+      }
84
+      function stopVideo() {
85
+      	clog("..","stopVideo")
86
+        player.stopVideo();
87
+      }
88
+    </script>
89
+<!-- 
90
+ -->
91
+ -->
92
+  </body>
93
+</html>

+ 30
- 0
indx/ws_dev/ws_rld.js Просмотреть файл

@@ -0,0 +1,30 @@
1
+function  rcb(argument) {
2
+	// body...
3
+	location.reload()
4
+	clog("RCB",argument,[...arguments])
5
+}
6
+
7
+    ign_info2 = {
8
+    	ign_root1 : `<!--#echo var="ign_root" -->`,
9
+		ign1 : `<!--#echo var="ign" -->`,
10
+		request_filename : `<!--#echo var="request_filename" -->`,
11
+		indexv : `<!--#echo var="indexv" -->`,
12
+		rootv : `<!--#echo var="rootv" -->`,
13
+		ig3 : `<!--#echo var="ig3" -->`,
14
+		lsrv_n1 : `<!--#echo var="lsrv_n1" -->`,
15
+		request_uri : `<!--#echo var="request_uri" -->`,
16
+		http_referer : `<!--#echo var="http_referer" -->`,
17
+
18
+		// lsrv_n1
19
+    }
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+window.ign_root2 = `<!--#echo var="ign_root" -->`
28
+// window.bodge_rfile ?  bodge_rfile(`/ign/indx/landing/vcorner.html`,`<!--#echo var="uri" -->`):0
29
+window.bodge_rfile ?  bodge_rfile(`/ign/indx/ws_dev/ws.html`,rcb):0
30
+

+ 18
- 0
indx/ws_dev/wsi.html Просмотреть файл

@@ -0,0 +1,18 @@
1
+
2
+<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
3
+  <head>
4
+
5
+
6
+<script type="text/javascript">
7
+	clog = console.log
8
+	function onPlayerReady(event){
9
+		clog("onPlayerReady",event,{that:this,args:[...arguments]})
10
+	}
11
+</script>
12
+
13
+  </head>
14
+  <body>
15
+<iframe id="lbry-iframe" width="560" height="315" src="https://odysee.com/$/embed/ep.-1884-the-truth-about-the-supreme/d6e9ed1024f053db168560ff577b16e947344fef?r=DvGY5rk7GF4aqhviPzZopiryqVRqwQ7q" allowfullscreen></iframe>
16
+
17
+  </body>
18
+</html>

+ 1
- 1
j7/rldjs/rldjs4.js Просмотреть файл

@@ -374,7 +374,7 @@ function rldj(){
374 374
 
375 375
 
376 376
 
377
-
377
+clog("rld_dev_flag:",window.dev_flag)
378 378
 
379 379
 
380 380
 

+ 10872
- 0
libs/jquery-3.5.1.dbg.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 10872
- 0
libs/jquery-3.5.1.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 2972
- 0
libs/list_blocked.json
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1802
- 0
libs/list_filtered.json
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 227656
- 0
libs/ui-f3a90211-598a-40ab-9153-803e5f40f62f.dev.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 2
- 2
rf/fs_hook.js Просмотреть файл

@@ -18,7 +18,7 @@ glob_mx.filmstrip_tile_handlers = glob_mx.filmstrip_tile_handlers || {}
18 18
 // window.mvyt_helper ? mvyt_helper():0
19 19
 // run callbacks for all filmstrips on resize
20 20
 function resizeThumbnailsForCustomView(that,fn_name,args=[]){
21
-  clog("~ resizeThumbnailsForCustomView")
21
+  // clog("~ resizeThumbnailsForCustomView")
22 22
   // return
23 23
 
24 24
     const thumbs = glob_react.Filmstrip._getThumbs()
@@ -72,7 +72,7 @@ function resizeThumbnailsForCustomView(that,fn_name,args=[]){
72 72
       // clog("ft0",k,v)
73 73
       k(v)
74 74
     }
75
-    clog("FS_ALL",{fs_handlers,fs_tile_handlers,fs_handlers_post})
75
+    // clog("FS_ALL",{fs_handlers,fs_tile_handlers,fs_handlers_post})
76 76
 
77 77
 // fs_handlers_post
78 78
 

+ 3
- 3
rf/m/_m_utils.js Просмотреть файл

@@ -97,12 +97,12 @@ function tmsgx3(data,opt_arg={},attrs={}){
97 97
 	to:window.APP.conference._room.room.roomjid,
98 98
 	}
99 99
 	var opt = Object.assign({},dflt_opt,opt_arg)
100
-	clog("T:",data,opt,opt.type)
100
+	// clog("T:",data,opt,opt.type)
101 101
 	if (!opt.type){
102
-		clog("NO TYPE")
102
+		// clog("NO TYPE")
103 103
 	opt.to == dflt_opt.to ? opt.type = "groupchat" : opt.type = "chat"
104 104
 	}
105
-	clog("T:",data,opt,opt.type)
105
+	// clog("T:",data,opt,opt.type)
106 106
 
107 107
 	var ns = {xmlns:"corner_mx"}
108 108
 	var msg = $build("message",{ to: opt.to,

+ 14
- 1
rf/m/m_utils.js Просмотреть файл

@@ -367,9 +367,11 @@ class Proxy_Factory {
367 367
 		this._pub_cb =[]
368 368
 		this.__prx = true
369 369
 		this.SymPrx = Symbol("SymPrx")
370
+		// clog("pfx",{o,n,that:this})
370 371
 	}
371 372
 	init(o){
372 373
 		// dlog("BP",this,this.baseProp,this.__proto__.baseProp,window.baseProp)
374
+		// clog("pfx init",{o,that:this})
373 375
 		this.root = o
374 376
 	}
375 377
 	sync(o){
@@ -688,7 +690,18 @@ glob_mx.flags.init_db = true
688 690
 window.msto= {
689 691
 	participants:pf.root.participants,
690 692
 	conference:pf.root.conference,
691
-	my_data:pf.root.participants[glob_mx.local_id],
693
+	// my_data:pf.root.participants[glob_mx.local_id],
694
+
695
+		get my_data(){
696
+			return msto.participants[glob_mx.local_id]
697
+			// my_data("pfx get k1")
698
+		},
699
+		set my_data(val){
700
+			clog("pfx set my_data")
701
+			msto.participants[glob_mx.local_id] = val
702
+
703
+		},
704
+
692 705
 	private_local:{},
693 706
 	set_listeners:{
694 707
 

+ 8
- 0
rf/u/universals.js Просмотреть файл

@@ -37,6 +37,14 @@ orig_clog = console.log
37 37
 orig_con = window.orig_con || Object.assign({},console)
38 38
 	
39 39
 
40
+if (glob_const.host.includes("fredericktheinsanelygreat") && !(location.pathname.includes("/log/")))
41
+{
42
+
43
+	console.log= nop
44
+console.error= nop
45
+console.warn= nop
46
+	// log
47
+}
40 48
 if (glob_const.host.includes("videocorners") ){
41 49
 // if (glob_const.host.includes("fredericktheinsanelygreat") ){
42 50
 

+ 1
- 1
xf/inspect/js_engine_info.js Просмотреть файл

@@ -105,7 +105,7 @@ function toggle_overflow_menu(){
105 105
 function onc(event){
106 106
 	// return
107 107
 	// ".toolbox-button-wth-dialog"
108
-	clog("onc2!",$(event.path).filter(".toolbox-button-wth-dialog"),event,{})
108
+	// clog("onc!",$(event.path).filter(".toolbox-button-wth-dialog"),event,{})
109 109
 
110 110
 	var state = APP.store.getState()
111 111
 	if (state["features/toolbox"].overflowMenuVisible && !$(event.path).filter(".toolbox-button-wth-dialog").length){

+ 9
- 1
xf/nginx_td/td_c/hide_ui_elements.css Просмотреть файл

@@ -33,5 +33,13 @@
33 33
 
34 34
 #lobby-section + .separator-line {
35 35
 	/*background: red;*/
36
-	display: none;
36
+	/*display: none;*/
37 37
 }
38
+
39
+.separator-line {
40
+    margin: 24px 0 24px -20px;
41
+    padding: 0 20px;
42
+    /*width: 100%;*/
43
+    height: 1px;
44
+    background: #5e6d7a;
45
+}

+ 1
- 0
xf/nginx_td/td_c/ti_c.js Просмотреть файл

@@ -120,6 +120,7 @@ glob_td.tvar.ti_c_px_0 = function (argument) {
120 120
 	// add_node( n2.clone(),".tbx_cont","append")
121 121
 
122 122
 }
123
+
123 124
 glob_td.tvar.ti_cmenu = function (o) {
124 125
 
125 126
 	clog("ti_cmenu")

+ 1
- 0
xf/nginx_td/td_f/ti_f2.js Просмотреть файл

@@ -91,6 +91,7 @@ function msto_rgx(arg_obj,_o,info){
91 91
 
92 92
 
93 93
 glob_td.tvar.init_msto_listener = function(){
94
+	clog("init_msto_listener 1")
94 95
 	try {
95 96
 		// clog("")
96 97
 	// reg_corner_cb(msto_rgx,"_set_recv_cb","msto_rgx")

+ 8
- 0
xf/nginx_td/td_m/ti_m1.js Просмотреть файл

@@ -2,6 +2,9 @@
2 2
 
3 3
 // function am_
4 4
  // vf_mod
5
+
6
+
7
+
5 8
  if (!("is_psuedo_mod" in glob_td.tvar)){
6 9
 glob_td.tvar.is_psuedo_mod = 0
7 10
 
@@ -14,6 +17,11 @@ glob_td.tvar.set_psuedo_mod = function(v){
14 17
 
15 18
 }
16 19
 
20
+if (location.pathname.includes("/mod/")){
21
+	// set_psuedo_mod(1)
22
+	glob_td.tvar.is_psuedo_mod =1
23
+}
24
+
17 25
 glob_td.tvar.vf_mod = function vf_mod(){
18 26
 		// clog("mxi_",this,[...arguments])
19 27
 	// if (iammod){

+ 131
- 1
xf/nginx_tx/maf/m.css Просмотреть файл

@@ -38,6 +38,7 @@
38 38
 	grid-template-columns:375px 1fr 0px ;
39 39
 	grid-template-columns:375px 1fr 0px ;
40 40
 	grid-template-columns:375px 1fr 100px ;
41
+	grid-template-columns:0px 1fr 375px ;
41 42
 	grid-template-rows:100px 1fr 100px 100px ;
42 43
 }
43 44
 .fs_container {
@@ -48,11 +49,35 @@
48 49
 
49 50
 
50 51
 	grid-column: 2 / span 2; 
52
+	grid-column: 2 / span 1; 
51 53
 	grid-row: 1 / span 3; 
52 54
 
53 55
 }
54 56
 
57
+.maf_panel_f .fs_container {
58
+
59
+	/*grid-row: 1 / span 1; */
60
+	/*grid-row: 2 / span 1; */
61
+	/*grid-column: 2 / span 1; */
62
+
63
+
64
+	grid-column: 2 / span 2; 
65
+	grid-column: 1 / span 3; 
66
+	grid-row: 1 / span 3; 
67
+
68
+}
69
+
70
+
71
+
72
+.maf_dev * {
73
+  -webkit-user-select: text !important;  /* Chrome 49+ */
74
+  -moz-user-select: text !important;     /* Firefox 43+ */
75
+  -ms-user-select: text !important;      /* No support yet */
76
+  user-select: text !important; 
77
+
78
+}
55 79
 .maf_dev {
80
+
56 81
 	z-index: 100;
57 82
 	/*background-color: red;*/
58 83
 	background-color: #0046;
@@ -62,6 +87,7 @@
62 87
 	/*grid-area: 1 / span 2 1 / span 2;*/
63 88
 	/*grid-area: 1 / span 2;*/
64 89
 	grid-area: 1 / 1 / -2 / span 1 !important;
90
+	grid-area: 1 / 3 / -2 / span 1 !important;
65 91
 	/*grid-area: 2 / 1 / -2 / span 1 !important;*/
66 92
 	/*grid-column: 1 / 1 / 1 / span 1 !important;*/
67 93
 	/*z-index: 5000;*/
@@ -95,6 +121,10 @@ option {
95 121
 .t0 + div {
96 122
 	display: inline-block;
97 123
 
124
+}
125
+.in_game .maf_vid_template {
126
+	background-color: #00f8;
127
+
98 128
 }
99 129
 .maf_vid_template {
100 130
 	/*z-index: 300;*/
@@ -116,4 +146,104 @@ option {
116 146
 
117 147
 .will_play_div {
118 148
 	font-size: 1.5em; 
119
-}
149
+}
150
+
151
+.will_play_div{
152
+	display: none;
153
+}
154
+.vdiv {
155
+
156
+	display: none;
157
+}
158
+.next_game_cls .will_play_div {
159
+	display: block;
160
+}
161
+.vote_cls .vdiv {
162
+	display: block;
163
+
164
+}
165
+
166
+
167
+/*.mod_ui .mod_tools_maf {*/
168
+.non_mod_ui .maf_ui_g {
169
+
170
+	display: none;
171
+}
172
+.non_mod_ui .mod_tools_maf {
173
+	display: none;
174
+}
175
+
176
+
177
+.maf_ui_g {
178
+	padding: 2px;
179
+	background-color: #444;
180
+}
181
+
182
+.maf_panel_f .maf_dev{
183
+	display: none;
184
+}
185
+
186
+.maf_lists_cont {
187
+	/*position: absolute;*/
188
+	/*position: absolute;*/
189
+	/*position: relative;*/
190
+	/*bottom: 0px;*/
191
+	/*background-color: red;*/
192
+	border-radius: 20px;
193
+
194
+	/*overflow: hidden;*/
195
+}
196
+
197
+
198
+.maf_dev{
199
+	/*overflow: hidden;*/
200
+	/*overflow: scroll;*/
201
+	position: relative;
202
+}
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+/*slideInExt*/
217
+
218
+
219
+
220
+
221
+#sideToolbarContainer {
222
+	/*width:0px;*/
223
+	--chat_width:400px;
224
+	width:var(--chat_width);
225
+	/*left:-2800px;*/
226
+	left:calc(var(--chat_width) * -1);
227
+}
228
+#sideToolbarContainer.slideInExt {
229
+	/*left:10px;*/
230
+	/*left:360px;*/
231
+
232
+}
233
+#chatconversation {
234
+	width:var(--chat_width);
235
+	/*width:300px;*/
236
+
237
+}
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+

+ 259
- 17
xf/nginx_tx/maf/m0.js Просмотреть файл

@@ -3,12 +3,102 @@
3 3
 // 2: div.dev_hook.indicator_hook.vid_toptoolbar_hook.jdiv.t0
4 4
 // 3: div.dev_hook.indicator_hook.vid_toptoolbar_hook_after.jdiv.t1
5 5
 
6
+// msto.participants["2c5cf565"].maf.z=1
6 7
 
7 8
 
8 9
 function maf_cls_dec(){
10
+	var p = get_participants()
11
+	var i,k,v,j
12
+	for (v of p){
13
+	try {
14
+		j = msto.participants[v.id].maf
15
+	} catch (err){
16
+		j = {will_play:"err",vote:"err"}
17
+	}
18
+	if (j.in_game == "yes"){
19
+		$("#participant_"+ v.id).addClass("in_game")
20
+	} else {
21
+		$("#participant_"+ v.id).removeClass("in_game")
22
+
23
+	}
24
+
25
+	}
26
+
27
+
28
+	var m = $(".maf_dev")
29
+
30
+if (maf_sto.maf.cls.maf_panel){
31
+$(".vspace").addClass("maf_panel_t").removeClass("maf_panel_f")
32
+} else {
33
+$(".vspace").removeClass("maf_panel_t").addClass("maf_panel_f")
34
+
35
+}
36
+if (maf_sto.maf.cls.next_game_cls){
37
+	m.addClass("next_game_cls")
38
+	// $(".maf_dev")
39
+} else {
40
+	m.removeClass("next_game_cls")
41
+
42
+}
43
+if (maf_sto.maf.cls.vote_cls){
44
+	// m.removeClass("next_game_cls")
45
+	m.addClass("vote_cls")
46
+
47
+}else {
48
+	m.removeClass("vote_cls")
49
+
50
+}
51
+	if (msto.my_data.maf.in_game == "yes"){
52
+		$("#localVideoContainer").addClass("in_game")
53
+	// msto.my_data.maf.in_game
54
+} else {
55
+		$("#localVideoContainer").removeClass("in_game")
56
+}
57
+}
58
+
59
+function maf_data_html(){
60
+	maf_cls_dec()
61
+	setTimeout(maf_cls_dec,10)
62
+	if (!glob_td.tvar.is_psuedo_mod){
63
+		return
64
+	}
65
+	saftly_remove(".maf_lists")
66
+	// $(".maf_lists")
67
+	n = templates_td.ti_maf_parsed.find(".maf_lists").clone()
68
+	// maf_lists
69
+	var p = get_participants()
70
+	var i,k,v,j
71
+	for (v of p){
72
+// maf_lists
73
+	try {
74
+		j = msto.participants[v.id].maf
75
+	} catch (err){
76
+		j = {will_play:"err",vote:"err"}
77
+	}
78
+$(n).find(".maf_list_will_play").append($(`<div>${j.in_game =="yes" ? "+" : "0"} ${v.name}  ${j.will_play || "()"}</div>`))
79
+if (j.in_game == "yes"){
9 80
 
81
+$(n).find(".maf_list_vote").append($(`<div>${v.name} ${j.vote || "()"}</div>`))
82
+// $(n).find(".maf_list_vote").append($(`<div>~~~~~~~</div>`))
83
+/*
84
+$(n).find(".maf_list_vote").append($(`<div>~~~~~~~</div>`))
85
+$(n).find(".maf_list_vote").append($(`<div>~~~~~~~</div>`))
86
+$(n).find(".maf_list_vote").append($(`<div>~~~~~~~</div>`))
87
+$(n).find(".maf_list_vote").append($(`<div>~~~~~~~</div>`))
88
+$(n).find(".maf_list_vote").append($(`<div>~~~~~~~</div>`))
89
+$(n).find(".maf_list_vote").append($(`<div>_<br>_<br>_</div>`))
90
+$(n).find(".maf_list_vote").append($(`<div>_<br>_<br>_</div>`))
91
+$(n).find(".maf_list_vote").append($(`<div>_<br>_<br>_</div>`))
92
+$(n).find(".maf_list_vote").append($(`<div>_<br>_<br>_</div>`))
93
+$(n).find(".maf_list_vote").append($(`<div>_<br>_<br>_</div>`))
94
+*/
10 95
 }
96
+	}
97
+	// clog(",,,,,",n)
98
+	add_node(n,".maf_lists_cont","append")
99
+	// $(".maf_lists_cont")
11 100
 
101
+}
12 102
 
13 103
 
14 104
 function get_participant_from_vid(j){
@@ -24,26 +114,62 @@ function get_participant_from_vid(j){
24 114
 	// clog(sv[0].id,sv)
25 115
 }
26 116
 
117
+// glob_td.tvar.set_psuedo_mod(1)
27 118
 
28
-
29
-
119
+function mc2(that,event){
120
+	clog("mc2",[this],that,event)
121
+}
122
+function mc3(that,event){
123
+	clog("mc3",[this],that,event)
124
+}
30 125
 function maf_event(event){
31 126
 
32 127
 	clog("maf_event9",this,event)
33
-	clog(".maf_event",event.target)
128
+	// clog(".maf_event",event.target)
34 129
 	var anc = $(event.target).parents().addBack()
35 130
 	// if (event.type == "click" && $(event.target).parents().hasClass("maf_ui_tile")){
36 131
 	if (event.type == "click" && anc.filter(".maf_ui_tile").length){
37
-		clog("maf_event2a maf_ui_tile")
132
+		var id  = get_participant_from_vid(event.target)
133
+		if (anc.filter(".add_player").length){
134
+		// maf_sto.maf.p3[id] = {in_game:"yes"}
135
+
136
+		msto.my_data.prxy.__proto__.__proto__.set.call(msto.my_data.prxy,msto.participants[id].maf,"in_game","yes")
137
+
138
+
139
+
140
+		} else if (anc.filter(".rmv_player").length){
141
+		msto.my_data.prxy.__proto__.__proto__.set.call(msto.my_data.prxy,msto.participants[id].maf,"in_game","no")
142
+		// maf_sto.maf.p3[id] = {in_game:"no"}
143
+
144
+		}
145
+		// clog("maf_event2a maf_ui_tile")
146
+	} else if (event.type == "click" && anc.filter(".maf_ui_g").length){
147
+			maf_sto.maf.cls.maf_panel = !maf_sto.maf.cls.maf_panel
148
+
38 149
 	} else if (event.type == "change" && anc.filter(".will_play_div").length){
39 150
 	// clog("maf_event9x",$(".will_play_div input:checked")[0].value)
40 151
 		// $(".will_play_div input:checked")[0].value
41
-		maf_sto.my_data.will_play = $(".will_play_div input:checked")[0].value
42
-		
152
+		// maf_sto.my_data.will_play = $(".will_play_div input:checked")[0].value
153
+		maf_sto.my_data.will_play = event.target.value
154
+	} else if (event.type == "change" && anc.filter(".vote.v1").length){
155
+		// clog("maf_event9x",event,event.target.value)
156
+		// maf_sto.my_data.vote = event.target.value
157
+	} else if (event.type == "change" && anc.filter(".maf_radio").length){
158
+		clog(":::","maf_radio")
159
+		if (anc.filter(".next_game_rdio").length){
160
+			maf_sto.maf.cls.next_game_cls = !maf_sto.maf.cls.next_game_cls
161
+		} else if (anc.filter(".vote_rdio").length) {
162
+			maf_sto.maf.cls.vote_cls = !maf_sto.maf.cls.vote_cls
163
+
164
+		}
165
+	}else if (event.type == "keyup" && event.key =="Enter" && anc.filter(".vote.v1").length ){
166
+		maf_sto.my_data.vote = event.target.value
167
+
43 168
 	}
44 169
 	// clog("maf_event2x",$(event.target).parents().filter(".maf_ui_tile"))
45
-	clog("maf_event2z",$(event.target).parents().addBack().filter(".maf_ui_tile"))
170
+	// clog("maf_event2z",$(event.target).parents().addBack().filter(".maf_ui_tile"))
46 171
 	// "hangup"
172
+
47 173
 }
48 174
 
49 175
 
@@ -53,20 +179,24 @@ glob_td.tvar.ti_maf_vf = function(arg_obj,o,cb_meta) {
53 179
 }
54 180
 glob_td.tvar.maf_cb = function(arg_obj,o,cb_meta) {
55 181
 	saftly_remove(".maf_vid_template")
56
-	saftly_remove(".maf_vid_template")
182
+	saftly_remove(".maf_dev")
57 183
 
58 184
 	clog("ti_maf_vf",arguments,this)
59 185
 	// $(".fs_container2").addClass("maf")
60 186
 	// $(".fs_cx2").addClass("maf")
61 187
 	var n
62 188
 	n = templates_td.ti_maf_parsed.find("#maf_span_template").clone()
189
+	
63 190
 	// $(".fs_cx2").append(n)
64 191
 	// jev.events.add(n,"click",maf_event)
65 192
 	// jev.events.add(n,"input",maf_event)
66 193
 	// add_node(n,".fs_cx2","append")
67 194
 	add_node(n,".fs_cx2","prepend")
68 195
 	var n2 = templates_td.ti_maf_parsed.find(".maf_vid_template").clone()
69
-
196
+	n2[0].devx = {
197
+		a:1
198
+	}
199
+	n2 = n2.clone()
70 200
 	// saftly_remove("#maf_span_template")
71 201
 	// saftly_remove(".maf_dev")
72 202
 
@@ -74,10 +204,13 @@ glob_td.tvar.maf_cb = function(arg_obj,o,cb_meta) {
74 204
 	// add_node(n2,$(".small_vid .t0"),"append")
75 205
 	jev.events.add(n,"change",maf_event)
76 206
 	jev.events.add(n,"click",maf_event)
77
-	add_node(n2,$(".small_vid .t0"),"append")
207
+	jev.events.add(n,"keyup",maf_event)
208
+	// add_node(n2,$(".small_vid .t0"),"append")
209
+	add_node(n2,$(".small_vid .t0"),"after")
78 210
 	// $(".small_vid .t0 ")
79 211
 	// jev.events.add(n2,"click",maf_event)
80 212
 	jev.events.add($(".maf_vid_template"),"click",maf_event)
213
+	maf_data_html(n)
81 214
 	// add_node(n,$(".small_vid .jdiv"),"append")
82 215
 	
83 216
 
@@ -97,12 +230,22 @@ glob_td.tvar.maf_cb = function(arg_obj,o,cb_meta) {
97 230
 
98 231
 
99 232
 
100
-
233
+// maf_sto.my_data
101 234
 
102 235
 
103 236
 
104 237
 
105 238
 function maf_sto_helper_init(){
239
+	maf_sto2 = {
240
+		get k1(){
241
+			clog("pfx get k1")
242
+		},
243
+		set k1(val){
244
+			clog("pfx set k1")
245
+			return "V~"
246
+
247
+		},
248
+	}
106 249
 	maf_sto = {
107 250
 		data:{},
108 251
 	}
@@ -141,17 +284,17 @@ function maf_sto_helper_init(){
141 284
 	enumerable: true,
142 285
 
143 286
 	})
144
-/*
287
+	/*
145 288
 	Object.defineProperty(maf_sto,"my_data2",{
146 289
      get(){
147 290
       // return sg_lnk.get_target(this)
148 291
       // return this._target
149 292
       // clog("maf g2")
150
-      return msto.conference.maf.p2[]
293
+      return msto.conference.maf.p2[glob_mx.local_id]
151 294
      },
152 295
      set(val){
153 296
       // clog("maf s2")
154
-      return msto.my_data.maf = val
297
+      return msto.conference.maf.p2[glob_mx.local_id] = val
155 298
       // sg_lnk.set_target(this,val)
156 299
 
157 300
      },
@@ -160,7 +303,10 @@ function maf_sto_helper_init(){
160 303
 
161 304
 	})
162 305
 
163
-*/
306
+	msto.conference.maf.p2[glob_mx.local_id] = msto.conference.maf.p2[glob_mx.local_id] || {}
307
+
308
+	*/
309
+
164 310
 
165 311
 
166 312
 }
@@ -169,10 +315,14 @@ function maf_sto_helper_init(){
169 315
 
170 316
 function init_maf_sto(){
171 317
 	msto.conference.maf = msto.conference.maf || {
318
+	// msto.conference.maf = 0 || {
172 319
 		cls_all:["are_u_playing","are_u_alive"],
173 320
 		cls1:[],
174 321
 		cls2:[],
322
+		cls:{},
175 323
 		p2:{},
324
+		ev:{},
325
+		p3:{},
176 326
 	}
177 327
 	// maf_sto = {}
178 328
 
@@ -182,27 +332,118 @@ function init_maf_sto_local(){
182 332
 }
183 333
 
184 334
 
335
+function msto_maf(o){
336
+	clog("msto_maf:",o.path,arguments)
185 337
 
338
+	// var rgx = /^(conference\.maf|participants\.[a-z0-9]+\.maf)/
339
+	var rgx = /^(conference\.maf|participants\.[a-z0-9]+\.maf.will_play)/
340
+	// var rgx = /^(conference\.maf|participants\.[a-z0-9]+\.maf.vote)/
341
+	if (o.path.startsWith("participants")){
342
+		if (o.path.endsWith("maf.will_play")) {
343
+			maf_data_html()
344
+		} else if (o.path.endsWith("maf.vote")){
345
+			maf_data_html()
346
+		} else if (o.path.endsWith("maf.in_game")){
347
+			maf_data_html()
186 348
 
349
+		}
350
+	}
351
+	if (o.path == ("conference.maf.ev.reset_vote")){
352
+			maf_sto.my_data.vote = ""
353
+			// maf_data_html()
354
+			run_html_cbs("maf_cb")
355
+
356
+	} else if (o.path == ("conference.maf.ev.reset_will_play")){
357
+			maf_sto.my_data.will_play = ""
358
+
359
+	} else if (o.path == ("conference.maf.ev.reset_game")){
360
+			maf_sto.my_data.in_game = ""
361
+
362
+	} else if (o.path == ("conference.maf.ev.start_game")){
363
+			// maf_sto.my_data.will_play = ""
364
+			maf_sto.my_data.in_game = maf_sto.my_data.will_play
365
+
366
+	// } if (o.path == (`conference.maf.p3.${glob_mx.local_id}.in_game`)){
367
+	} else if (o.path.startsWith("conference.maf.cls")){
368
+			maf_cls_dec()
369
+			if (o.path == "conference.maf.cls.maf_panel"){
370
+				dispatch_resize()
371
+			}
372
+
373
+	} if (o.path == `conference.maf.p3.${glob_mx.local_id}` ){
374
+			try {
375
+				clog("mxq.",maf_sto.my_data.in_game)
376
+				maf_sto.my_data.in_game = msto.conference.maf.p3[glob_mx.local_id].in_game
377
+			// maf_sto.my_data.in_game = "yes"
378
+			} catch (err){
379
+				clog("mxq",err)
380
+			}
381
+			// maf_sto.my_data.in_game = maf_sto.my_data.will_play
382
+
383
+	}
187 384
 
188 385
 
189 386
 
190 387
 
388
+	// participants.f98b330f.maf.will_play
389
+}
191 390
 
192 391
 
193 392
 
393
+function refresh_maf(){
394
+	setTimeout(run_html_cbs,10,"maf_cb")
395
+}
396
+
397
+window.glob_mx.qxi_cb.PARTICIPANT_JOINED.refresh_maf = refresh_maf
398
+window.glob_mx.qxi_cb.PARTICIPANT_LEFT.refresh_maf = refresh_maf
399
+
400
+
401
+function start_game(){
402
+	msto.conference.maf.ev.start_game = {}
403
+
404
+}
405
+function reset_maf(){
406
+	reset_will_play()
407
+	reset_vote()
408
+	reset_game()
409
+}
410
+function reset_will_play(){
411
+	msto.conference.maf.ev.reset_will_play = {}
412
+}
413
+function reset_game(){
414
+	msto.conference.maf.ev.reset_game = {}
415
+
416
+}
417
+function reset_vote(){
418
+	msto.conference.maf.ev.reset_vote = {}
419
+
420
+}
421
+
422
+glob_td.tvar.maf_grid = function(){
423
+	// maf_grid
424
+	// $(".bgr")
425
+	
426
+		var n = templates_td.ti_maf_parsed.find(".maf_ui_g").clone()
427
+	add_node(n,".bgr","prepend")
428
+	jev.events.add(n,"click",maf_event)
429
+
430
+}
431
+
432
+reg_html_cb(glob_td.tvar.maf_grid,"tbx_top","maf_grid",10000000)
194 433
 
195 434
 
196 435
 glob_td.tvar.rol2 = function () {
197
-	clog(rol2,jc(glob_mx))
436
+	clog("rol2",jc(glob_mx))
198 437
 }
199 438
 glob_td.tvar.rol = function () {
439
+	clog("init_msto_listener 2")
200 440
 
201 441
 if (glob_td.fn.is_inited()){
202 442
 	// run_html_cbs("tbx_top")
203 443
 	init_maf_sto_local()
204 444
 	init_maf_sto()
205 445
 	maf_sto_helper_init()
446
+	reg_corner_cb(msto_maf,"msto_maf","msto_maf")
206 447
 
207 448
 	run_html_cbs("vspace_filmstrip")
208 449
 	run_html_cbs("tbx_top")
@@ -222,6 +463,7 @@ reg_html_cb(glob_td.tvar.maf_cb,"maf_cb","maf_cb")
222 463
 
223 464
 
224 465
 
466
+
225 467
 templates_td.ti_maf = `<!--#include virtual="/ign/xf/nginx_tx/maf/t_maf.html" -->`
226 468
 templates_td.ti_maf_parsed = $(`<span>${templates_td.ti_maf}</span>`)
227 469
 // window.bodge_rfile ?  bodge_rfile(`/ign/xf/nginx_tx/maf/maf_t.html`,`<!--#echo var="uri" -->`):0
@@ -231,7 +473,7 @@ window.bodge_rfile ?  bodge_rfile(`/ign/xf/nginx_tx/maf/t_maf.html`,`/ign/xf/ngi
231 473
 // 
232 474
 
233 475
 
234
-tmp_reg_cb_td(() => {setTimeout(glob_td.tvar.rol)},"init","init_msto_listener")
476
+tmp_reg_cb_td(() => {setTimeout(glob_td.tvar.rol)},"init","init_msto_listener1")
235 477
 tmp_reg_cb_td(glob_td.tvar.rol2,"init","init_msto_listener2")
236 478
 glob_td.fn.run_if_inited(glob_td.tvar.rol)
237 479
 

+ 39
- 11
xf/nginx_tx/maf/t_maf.html Просмотреть файл

@@ -3,17 +3,28 @@
3 3
 
4 4
 
5 5
 
6
-<div id="maf_span_template" class="maf_dev">
7
-
8
-
9
-
6
+<div id="maf_span_template" class="maf_dev" data-dbg=,>
7
+
8
+
9
+<div class="mod_tools_maf">
10
+ <label>
11
+ 	next<input type="checkbox" class="maf_radio next_game_rdio" name="">
12
+ 	
13
+ </label> <span class="rspace"></span>
14
+ <label>
15
+ 	vote<input type="checkbox" class="maf_radio vote_rdio" name="">
16
+ 	
17
+ </label>
18
+	
19
+</div>
10 20
 
11 21
 	<div class="vdiv">
12
-		.
22
+		Vote
13 23
 		<br>
14
-	<input class="vote v1" name="">
15
-	<input class="vote v2" name="">
24
+	<input class="vote v1" name="">Press Enter to vote
25
+	<input class="vote v2 hide" name="">
16 26
 
27
+	</div>
17 28
 	<div class="will_play_div">
18 29
 		
19 30
 		<div>Are you going to play the next game?</div>
@@ -27,11 +38,10 @@
27 38
 	</label><span class="rspace"></span>
28 39
 	<!-- </label><span class="rspace"></span><label> -->
29 40
 	</div>
30
-	</div>
31 41
 	<br>
32 42
 	<br>
33 43
 	  <!-- <select name="cars2" id="cars2"> -->
34
-	  <select name="cars2" id="cars2" multiple>
44
+	  <select name="cars2" class="hide" id="cars2" multiple>
35 45
     <option value="volvo">Volvo</option>
36 46
     <option value="saab">Saab<div class="opt_x">~q</div><br><div>~</div>
37 47
 
@@ -42,11 +52,26 @@
42 52
     
43 53
     <option value="audi">Audi</option>
44 54
   </select>
55
+  <div class="maf_lists_cont"></div>
56
+
45 57
 </div>
46 58
 
47 59
 
48 60
 
49
-<div class="maf_vid_template">
61
+
62
+
63
+  <div class="maf_lists" >
64
+
65
+
66
+  <div class="maf_list_will_play"></div>
67
+  <div class="separator-line"></div>
68
+  <div class="maf_list_vote"></div>
69
+  	
70
+  </div>
71
+
72
+<!-- onclick="mc4(this,event)" -->
73
+
74
+<div class="maf_vid_template" >
50 75
 	
51 76
 
52 77
 
@@ -80,4 +105,7 @@
80 105
 </span>
81 106
 
82 107
 
83
-</div>
108
+</div>
109
+
110
+
111
+<div class="maf_ui_g">grid</div>

+ 1
- 1
xf/vc/vcon.js Просмотреть файл

@@ -8,7 +8,7 @@ clog("VCON")
8 8
 // glob_react.video_layout.calcTileGrid
9 9
 glob_mx.h_scope = glob_mx.h_scope || {}
10 10
 glob_mx.filmstrip_handlers["fs_h"] = function function_name(o) {
11
-    clog("fs_h FN HANDLER.")
11
+    // clog("fs_h FN HANDLER.")
12 12
 
13 13
     if (o.length == 1){
14 14
         $(".fs_container")[0].dataset.c_len = 1

+ 6
- 1
xf/vc/vcon0.js Просмотреть файл

@@ -33,7 +33,8 @@ window.glob_dev_fns.sv_onContainerClick = function(a,b,c,d,e,f){
33 33
 function vspace_click(jevent,b,c,d,e){
34 34
 
35 35
 	// clog("vspace_click.",{that:this,jevent,b,c,d,e},{t:jevent.target,ab:$(jevent.originalEvent.target).parents().addBack()})
36
-	clog("vspace_click.",{that:this,jevent,b,c,d,e},{t:jevent.target,ab:$(jevent.originalEvent.target).parents().addBack()})
36
+	clog("vspace_click.")
37
+	// clog("vspace_click.",{that:this,jevent,b,c,d,e},{t:jevent.target,ab:$(jevent.originalEvent.target).parents().addBack()})
37 38
 	
38 39
 
39 40
 	// clog("vspace_click_x",{that:this,jevent,b,c,d,e},{jevent,eobj:jevent.originalEvent.eobj})
@@ -53,6 +54,10 @@ function vspace_click(jevent,b,c,d,e){
53 54
 		let ab = $(jevent.originalEvent.target).parents().addBack()
54 55
 		if (!ab.filter(".icont")[0]){
55 56
 			return
57
+		} 
58
+		if (ab.filter(".maf_vid_template")[0]){
59
+			return
60
+
56 61
 		}
57 62
 		set_corner(
58 63
 		$(jevent.originalEvent.target).parents().addBack().filter(".icont")[0].dataset.corner

+ 1
- 1
xf/vol_ui/v4.js Просмотреть файл

@@ -47,7 +47,7 @@ jev = window.jev || {
47 47
 		dbg_range:{},
48 48
 	},
49 49
 }
50
-
50
+jev.sto.corners.ic2.mute_toggle.value=!!0
51 51
 // data-u_handler="data_path"
52 52
 // data-u_handler="corner"
53 53
 

Загрузка…
Отмена
Сохранить