mobileremote.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. <?php
  2. include_once '../auth.php';
  3. if(!file_exists("data")){
  4. mkdir("data",0777,true);
  5. }
  6. if (isset($_GET['comm']) && isset($_GET['rid'])){
  7. $rid = $_GET['rid'];
  8. $rid = explode(",",$rid)[0];
  9. file_put_contents("data/" . $rid . ".inf",$_GET['comm']);
  10. echo "DONE";
  11. exit(0);
  12. }
  13. ?>
  14. <html>
  15. <head>
  16. <link rel="stylesheet" href="../script/tocas/tocas.css">
  17. <script src="../script/tocas/tocas.js"></script>
  18. <meta name="viewport" content="width=device-width, initial-scale=0.9, shrink-to-fit=no">
  19. <script src="../script/jquery.min.js"></script>
  20. <script src="../script/ao_module.js"></script>
  21. <link rel="manifest" href="manifest.json">
  22. <style>
  23. body{
  24. background-color:#0c0c0c;
  25. color:white;
  26. }
  27. .white{
  28. color:white !important;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <br>
  34. <div class="ts container">
  35. <div class="ts center aligned grid">
  36. <div class="row">
  37. <div class="sixteen wide column">
  38. <div class="ts white header">
  39. <i class="options icon"></i>RemotePlay Remote
  40. </div>
  41. </div>
  42. </div>
  43. <div class="row">
  44. <div class="sixteen wide column">
  45. <p class="white">Target RemotePlay ID</p>
  46. <div class="ts floating dropdown labeled icon button" style="padding: 0px;padding-right: calc(0.22em + 1em + .78571em * 2) !important;padding-left: 0em !important;background-color: black;color:white;height: 39.97px;width:100%">
  47. <div class="text" style="width:100%">
  48. <div class="ts fluid input" style="right 1px;bottom:1px">
  49. <input type="text" style="border-top-right-radius: 0px;border-bottom-right-radius: 0px;background-color: black;color: white!important;border-color: white!important;border-right:0px" placeholder="RemotePlay ID" id="remoteID_tb">
  50. </div>
  51. </div>
  52. <i class="caret down icon" style="left: auto !important;right: 0em !important;background-color: black;"></i>
  53. <div class="menu" style="background-color: black !important;" id="n_remoteID">
  54. </div>
  55. </div>
  56. <!--
  57. <div class="ts basic mini fluid input">
  58. <select class="ts basic dropdown" id="remoteID" style="background: black;color: white;width: 100%">
  59. <option>Scanning...</option>
  60. </select>
  61. </div>
  62. -->
  63. </div>
  64. </div>
  65. <div class="row">
  66. <div class="five wide column">
  67. </div>
  68. <div class="six wide column">
  69. <button class="ts huge basic white icon button" onClick="ffwd();"><i class="fast forward icon"></i></button>
  70. </div>
  71. <div class="five wide column">
  72. </div>
  73. </div>
  74. <div class="row">
  75. <div class="five wide right aligned column">
  76. <button class="ts huge basic white icon button" onClick="bwd();"><i class="backward icon"></i></button>
  77. </div>
  78. <div class="six wide column">
  79. <button class="ts huge basic white icon button" onClick="stop();"><i class="stop icon"></i></button>
  80. </div>
  81. <div class="five wide left aligned column">
  82. <button class="ts huge basic white icon button" onClick="fwd();"><i class="forward icon"></i></button>
  83. </div>
  84. </div>
  85. <div class="row">
  86. <div class="five wide column">
  87. </div>
  88. <div class="six wide column">
  89. <button class="ts huge basic white icon button" onClick="fbwd();"><i class="fast backward icon"></i></button>
  90. </div>
  91. <div class="five wide column">
  92. </div>
  93. </div>
  94. <div class="row">
  95. <div class="five wide right aligned column">
  96. <button class="ts huge basic white icon button" onClick="play();"><i class="play icon"></i></button>
  97. </div>
  98. <div class="six wide column"></div>
  99. <div class="five wide left aligned column">
  100. <button class="ts huge basic white icon button" onClick="volup();"><i class="volume up icon"></i></button>
  101. </div>
  102. </div>
  103. <div class="row">
  104. <div class="five wide right aligned column">
  105. <button class="ts huge basic white icon button" onClick="pause();"><i class="pause icon"></i></button>
  106. </div>
  107. <div class="six wide column"></div>
  108. <div class="five wide left aligned column">
  109. <button class="ts huge basic white icon button" onClick="voldown();"><i class="volume down icon"></i></button>
  110. </div>
  111. </div>
  112. <div class="row">
  113. <div class="sixteen wide column">
  114. <br>
  115. <div class="ts separated mini buttons">
  116. <button class="ts huge basic white button" onClick="mute();"><i class="volume off icon"></i>Mute</button>
  117. <button class="ts huge basic white button" onClick="reset();"><i class="home icon"></i>Reset</button>
  118. <button class="ts huge basic white button" onClick="newsession();"><i class="add icon"></i>New Session</button>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. <div class="ts snackbar">
  125. <div class="content"></div>
  126. <a class="action"></a>
  127. </div>
  128. <script>
  129. /* for iOS or iPadOS patch (tested on iPhone8 and iPad Gen6) */
  130. /* end */
  131. var rid = "";
  132. $(document).ready(function(){
  133. ao_module_setWindowSize(1000,340);
  134. ts('.ts.dropdown:not(.basic)').dropdown();
  135. $(".ts.fluid.input").click(function(e) {
  136. e.stopPropagation();
  137. });
  138. var h = $(".ts.fluid.input").height();
  139. $(".ts.floating.dropdown.labeled.icon.button").attr("style",$(".ts.floating.dropdown.labeled.icon.button").attr("style").replace("39.97",h));
  140. //$(".caret.down.icon").attr("style",$(".caret.down.icon").attr("style").replace("39.97",h));
  141. update();
  142. });
  143. setInterval(update, 10000);
  144. function update(){
  145. var previousRemoteID = ao_module_getStorage("remoteplay","remoteID");
  146. $.get("opr.php?opr=scanalive",function(data){
  147. var obj = JSON.parse(data);
  148. $("#n_remoteID").html("");
  149. $("#n_remoteID").append($('<div class="item" style="color: white!important;"></div>').attr("value", "").text("Not selected"));
  150. $.each( obj, function( key, value ) {
  151. $("#n_remoteID").append($('<div class="item" style="color: white!important;"></div>').attr("value", value).text(value));
  152. });
  153. $("#n_remoteID").val("");
  154. /*
  155. if (previousRemoteID !== undefined && $(".item[value='" + previousRemoteID + "']").length > 0){
  156. $("#remoteID_tb").val(previousRemoteID);
  157. rid = previousRemoteID;
  158. }
  159. */
  160. $("#remoteID_tb").val(previousRemoteID);
  161. $("#n_remoteID .item").on("click",function(){
  162. //console.log($(this).attr("value"));
  163. $("#remoteID_tb").val($(this).attr("value"));
  164. ao_module_saveStorage("remoteplay","remoteID",$(this).attr("value"));
  165. rid = $(this).attr("value");
  166. });
  167. $("#remoteID_tb").on("change",function(){
  168. ao_module_saveStorage("remoteplay","remoteID",$(this).val());
  169. rid = $(this).val();
  170. });
  171. });
  172. }
  173. $("#vol").on("change",function(){
  174. sendCommand("setVol",$(this).val());
  175. });
  176. /*
  177. $("#remoteID").on("change",function(){
  178. ao_module_saveStorage("remoteplay","remoteID",$(this).val());
  179. rid = $(this).val();
  180. });
  181. */
  182. function play(){
  183. sendCommand("play","");
  184. }
  185. function pause(){
  186. sendCommand("pause","");
  187. }
  188. function fwd(){
  189. sendCommand("fwd","");
  190. }
  191. var ffwding = false;
  192. function ffwd(){
  193. if(ffwding){
  194. clearInterval(timer_1);
  195. ffwding = false;
  196. $(".button").removeAttr("disabled");
  197. }else{
  198. timer_1 = setInterval(fwd, 1000);
  199. ffwding = true;
  200. $(".button").attr("disabled","disabled");
  201. $(".fast.forward.icon").parent().removeAttr("disabled");
  202. }
  203. }
  204. function bwd(){
  205. sendCommand("bwd","");
  206. }
  207. var fbwding = false;
  208. function fbwd(){
  209. if(fbwding){
  210. clearInterval(timer_1);
  211. fbwding = false;
  212. $(".button").removeAttr("disabled");
  213. }else{
  214. timer_1 = setInterval(bwd, 1000);
  215. fbwding = true;
  216. $(".button").attr("disabled","disabled");
  217. $(".fast.backward.icon").parent().removeAttr("disabled");
  218. }
  219. }
  220. function stop(){
  221. sendCommand("stop","");
  222. }
  223. function volup(){
  224. sendCommand("volup","");
  225. }
  226. function voldown(){
  227. sendCommand("voldown","");
  228. }
  229. function mute(){
  230. sendCommand("setVol","0");
  231. $("#vol").val(0);
  232. }
  233. function reset(){
  234. sendCommand("reset","");
  235. }
  236. function newsession(){
  237. sendCommand("newsession","");
  238. }
  239. function sendCommand(comm,value){
  240. var fullcomm = comm + "," + value;
  241. $.get("remote.php?comm=" + fullcomm + "&rid=" + rid,function(data){
  242. if (data.includes("ERROR")){
  243. }
  244. });
  245. }
  246. /*
  247. $(document).ready(function(){
  248. var previousRemoteID = ao_module_getStorage("remoteplay","remoteID");
  249. $.get("opr.php?opr=scanalive",function(data){
  250. var obj = JSON.parse(data);
  251. $("#remoteID").html("");
  252. $("#remoteID").append($("<option></option>").attr("value", "").text("Not selected"));
  253. $.each( obj, function( key, value ) {
  254. $("#remoteID").append($("<option></option>").attr("value", value).text(value));
  255. });
  256. $("#remoteID").val("");
  257. if (previousRemoteID !== undefined && $("#remoteID option[value='" + previousRemoteID + "']").length > 0){
  258. $("#remoteID").val(previousRemoteID);
  259. rid = previousRemoteID;
  260. }
  261. });
  262. });
  263. */
  264. </script>
  265. </body>
  266. </html>