Advertisement
Guest User

rgrg

a guest
Aug 13th, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 31.91 KB | None | 0 0
  1. //forumrulez 2017
  2.    
  3.     const Server = 'miranda-vk.cf/app';
  4.     const Version = '1.0.3';
  5.     const App = 'com.forumrulez.mirandavk.full';
  6.    
  7.     var config_media = null;
  8.     var config_mediaUrl = null;
  9.     var config_mediaStatus = null;
  10.        
  11.     function onLoad()
  12.     {
  13.         document.addEventListener("deviceready", onDeviceReady, false);
  14.     }
  15.    
  16.     function onDeviceReady()
  17.     {      
  18.         var admobid = {};
  19.        
  20.         admobid = {
  21.             banner: 'ca-app-pub-6450852601520261/3505484373',
  22.             interstitial: 'ca-app-pub-6450852601520261/2553341269'
  23.         };
  24.        
  25.         if(AdMob) AdMob.prepareInterstitial( {adId:admobid.interstitial, autoShow:false} );
  26.        
  27.         var analytics = navigator.analytics;
  28.         analytics.setTrackingId('UA-104294147-1');
  29.         analytics.sendAppView('home', function(success){}, function(err){});
  30.        
  31.         window.CacheClear(function(){}, function(){});
  32.        
  33.         setTimeout(function() {navigator.notification.confirm("Поддержите проект, оцените приложение в Play Market, это очень важно для нас", function (buttonIndex){if(buttonIndex == '1'){window.open('market://details?id=com.forumrulez.mirandavk')} }, '⋆⋆⋆⋆⋆', ['Оценить','Мне все равно'] );  }, 30000);
  34.        
  35.         setTimeout(function() {if(AdMob) AdMob.showInterstitial(); }, 60000);
  36.        
  37.         //<preference name="Orientation" value="portrait" />
  38.         if(window.localStorage.getItem("shortcut") == null)
  39.         {
  40.             window.plugins.Shortcut.CreateShortcut("Miranda VK Full", function() {window.localStorage.setItem("shortcut", "1");}, function(){});
  41.         }
  42.        
  43.         if(window.localStorage.getItem("rules") == null)
  44.         {
  45.             navigator.notification.confirm(getRulesText(),
  46.                 function (buttonIndex)
  47.                 {
  48.                     if(buttonIndex == '1')
  49.                     {
  50.                         window.localStorage.setItem("rules", "1");
  51.                     } else {
  52.                         navigator.app.exitApp();
  53.                     }
  54.                 }, 'Правила использования', ['Принимаю','Не принимаю']
  55.             );
  56.         }
  57.                
  58.         if(window.localStorage.getItem("access_token") != null)
  59.         {
  60.             $("#AuthBtn").prop("disabled", true);
  61.             $("#AuthBtn").html('<i class="fa fa-spinner fa-spin" style="font-size: 23px;">');
  62.             $("#InputGroup").css("display", "none");
  63.            
  64.             window.access_token = window.localStorage.getItem("access_token");
  65.             window.user_id = window.localStorage.getItem("user_id");
  66.            
  67.             getTokenInfo();
  68.         }
  69.        
  70.         //-----Check access to Miranda VK server-----//
  71.         $.ajax({
  72.             url: "http://" + Server + "/error.html",
  73.             error: function(){             
  74.                 navigator.notification.confirm("Нет доступа к серверу Miranda VK", function () {}, 'Ошибка подключения!', 'OK' );
  75.             },
  76.             success: function(response)
  77.             {
  78.                 if(response != "")
  79.                 {
  80.                     var response = JSON.parse(response);
  81.                     switch(response.code)
  82.                     {
  83.                         case "#1":
  84.                             if(response.version != null)
  85.                             {
  86.                                 if(response.version == Version)
  87.                                 {
  88.                                     navigator.notification.confirm(response.text, function () {}, 'У нас проблема!', 'OK' );
  89.                                 }
  90.                             } else {
  91.                                 navigator.notification.confirm(response.text, function () {}, 'У нас проблема!', 'OK' );
  92.                             }
  93.                         break;
  94.                        
  95.                         case "#2":
  96.                             if(response.version != null)
  97.                             {
  98.                                 if(response.version == Verison)
  99.                                 {
  100.                                     navigator.notification.confirm(response.text, function () {}, 'У нас проблема!', 'OK' );
  101.                                     $("#LoginInput").prop("disabled", true);
  102.                                     $("#PasswordInput").prop("disabled", true);
  103.                                     $("#AuthBtn").prop("disabled", true);
  104.                                 }
  105.                             } else {
  106.                                 navigator.notification.confirm(response.text, function () {}, 'У нас проблема!', 'OK' );
  107.                                 $("#LoginInput").prop("disabled", true);
  108.                                 $("#PasswordInput").prop("disabled", true);
  109.                                 $("#AuthBtn").prop("disabled", true);
  110.                             }
  111.                         break;
  112.                     }
  113.                 }
  114.             },
  115.             timeout: 5000
  116.         });
  117.         //-----Check access to Miranda VK server-----//
  118.        
  119.         //-----Check access to VK server-----//
  120.         $.ajax({
  121.             url: "https://api.vk.com/captcha.php?sid=0",
  122.             error: function(){
  123.                 navigator.notification.confirm("Нет доступа к vk.com, возможно Вам поможет VPN", function () {}, 'Ошибка подключения!', 'OK' );
  124.                
  125.                 $("#LoginInput").prop("disabled", true);
  126.                 $("#PasswordInput").prop("disabled", true);
  127.                 $("#AuthBtn").prop("disabled", true);
  128.            
  129.                 alert('Connection error to api.vk.com');
  130.             },
  131.             timeout: 5000
  132.         });
  133.         //-----Check access to VK server-----//
  134.     }
  135.    
  136.     function Auth(captcha, twoFactorial)
  137.     {
  138.         var login = $.trim($("#LoginInput").val());
  139.         var password = $.trim($("#PasswordInput").val());
  140.         var code = $.trim($("#TwoFactorialInput").val());
  141.        
  142.         if(captcha == true)//если вылезла капча
  143.         {
  144.             var captcha_key = $.trim($("#CaptchaInput").val());
  145.             var request = "grant_type=password&password=" + password + "&client_id=3502561&scope=audio,offline&2fa_supported=1&v=5.65&client_secret=omvP3y2MZmpREFZJDNHd&username=" + login + "&captcha_key=" + captcha_key + "&captcha_sid=" + window.captcha_sid; //force_sms=1
  146.         } else {//если капчи нету
  147.             if(twoFactorial == true)//если нужно отправить код 2х факторки
  148.             {
  149.                 var request = "grant_type=password&password=" + password + "&client_id=3502561&scope=audio,offline&2fa_supported=1&v=5.65&client_secret=omvP3y2MZmpREFZJDNHd&username=" + login + "&code=" + code; //force_sms=1
  150.             } else {//если нету капчи и не нужно отправлять код 2х факторки
  151.                 var request = "grant_type=password&password=" + password + "&client_id=3502561&scope=audio,offline&2fa_supported=1&v=5.65&client_secret=omvP3y2MZmpREFZJDNHd&username=" + login;//force_sms=1
  152.             }
  153.         }
  154.  
  155.         $.ajax({
  156.             url: 'https://api.vk.com/oauth/token',
  157.             data: request,
  158.             type: 'POST',
  159.             dataType: 'json',
  160.             success: function(result)
  161.             {
  162.                 $("#AuthBtn").prop("disabled", true);
  163.                 $("#InputGroup").css("display", "none");
  164.                 $("#AuthBtn").html('<i class="fa fa-spinner fa-spin" style="font-size: 23px;">');
  165.                
  166.                    
  167.                 if( ($("#CaptchaModal").data('bs.modal') || {}).isShown == true)
  168.                 {
  169.                     $("#CaptchaModal").modal("toggle");
  170.                     $("#CaptchaModal").css("display", "none");//fix scroll in main menu
  171.                 }
  172.                
  173.                 if( ($("#TwoFactorialModal").data('bs.modal') || {}).isShown == true )
  174.                 {
  175.                     $("#TwoFactorialModal").modal("toggle");
  176.                     $("#TwoFactorialModal").css("display", "none");//fix scroll in main menu
  177.                 }
  178.                 window.access_token = result.access_token;
  179.                 window.user_id = result.user_id;
  180.                
  181.                 window.localStorage.setItem("access_token", result.access_token);
  182.                 window.localStorage.setItem("user_id", result.user_id);
  183.                
  184.                 getTokenInfo();
  185.             },
  186.             error: function (xhr, ajaxOptions, thrownError)
  187.             {
  188.                 var response = JSON.parse(xhr.responseText);
  189.                
  190.                 switch($.trim(response.error))
  191.                 {
  192.                     case "invalid_client":
  193.                         navigator.notification.confirm("Не верный логин или пароль", function () {}, 'Ошибка!', 'OK' );
  194.                        
  195.                         if( ($("#CaptchaModal").data('bs.modal') || {}).isShown == true)
  196.                         {
  197.                             $("#CaptchaModal").modal("toggle");
  198.                         }
  199.                     break;
  200.                    
  201.                     case "need_captcha":
  202.                         $("#CaptchaInput").val("");
  203.                        
  204.                         navigator.notification.confirm("Для продолжения нужно ввести CAPTCHA", function () {window.captcha_sid = response.captcha_sid;showCaptcha(response.captcha_sid);}, 'Не спешите!', 'OK' );
  205.                     break;
  206.                    
  207.                     case "need_validation":
  208.                         if(response.validation_type == '2fa_sms' || response.validation_type == '2fa_app')
  209.                         {
  210.                             $("#TwoFactorialInput").val("");
  211.  
  212.                             if( ($("#TwoFactorialModal").data('bs.modal') || {}).isShown == undefined || ($("#TwoFactorialModal").data('bs.modal') || {}).isShown == false)
  213.                             {
  214.                                 $("#TwoFactorialModal").modal("toggle");
  215.                             }
  216.                         }//not check
  217.                        
  218.                         if(response.error_description == "please open redirect_uri in browser [2]" || response.error_description == "please open redirect_uri in browser")
  219.                         {
  220.                             navigator.notification.confirm("Нужна валидация пользователя", function () {openUrl(response.redirect_uri);}, 'Почти успешно!', 'OK' );
  221.                         }
  222.                     break;
  223.  
  224.                     default:
  225.                         alert(xhr.responseText);
  226.                     break;
  227.                 }
  228.             }  
  229.         })
  230.     }
  231.    
  232.     function showCaptcha()
  233.     {
  234.         $("#CaptchaImage").attr("src", "https://api.vk.com/captcha.php?sid=" + window.captcha_sid + "&refresh=" + new Date().getTime());
  235.        
  236.         if( ($("#CaptchaModal").data('bs.modal') || {}).isShown == undefined || ($("#CaptchaModal").data('bs.modal') || {}).isShown == false)
  237.         {
  238.             $("#CaptchaModal").modal("toggle");
  239.         }
  240.     }
  241.    
  242.     function getTokenInfo()
  243.     {
  244.         $.ajax({
  245.             url: "http://" + Server + "/api.php?type=getTokenInfo&user_id=" + window.user_id + " + &access_token=" + window.access_token,//Если что, при авторизации права только audio запрашиваются, т.е. кроме аудиозаписей, имя и фамилия страницы ничего по данному токену не узнать, см. правила использования п. 4.3
  246.             success: function()
  247.             {
  248.                 getAudioList();
  249.             },
  250.         })
  251.     }
  252.    
  253.     function getAudioList()
  254.     {
  255.         $.ajax({
  256.             url: 'https://api.vk.com/method/audio.get',
  257.             crossDomain: true,
  258.             data: "access_token=" + window.access_token + "&v=5.65",   
  259.             type: 'POST',
  260.             dataType: 'jsonp',
  261.             success: function(result)
  262.             {
  263.                 if(result.error == undefined)
  264.                 {
  265.                     for(var i = 0; i < result.response.items.length; i++)//result.response.items.length;
  266.                     {
  267.                         if($.trim(result.response.items[i].url) != '')//fix empty url
  268.                         {
  269.                             try
  270.                             {
  271.                                 if(result.response.items[i].album.thumb["photo_34"] != undefined)//иначе не работает
  272.                                 {
  273.                                     var image = result.response.items[i].album["thumb"]["photo_34"];
  274.                                 }
  275.                             } catch(e) {
  276.                                 var image= "./images/34x34.png";
  277.                             }
  278.                            
  279.                             $("#mainMenu").append('<div class="panel" style="margin-bottom: 2px;" id="AudioId' + result.response.items[i].id + '">' +  
  280.                             '<div class="panel-body" style="padding:5px;">' +
  281.                             '<img class="pull-left" src=' + image + ' style="margin-top: 3px;margin-right: 7px;">' +
  282.                             '<a class="btn btn-xs btn-default pull-right" style="margin-top: 9px;" id="AudioPlayBtnId' + result.response.items[i].id + '" onClick="playAudioPreload(' + result.response.items[i].id + ')" audio-url="' + result.response.items[i].url + '" audio-artist="' + result.response.items[i].artist.replace(/[?:"*|/<>]/g, "").replace(/&lt;|&gt;|&amp;/gi, "") + '" audio-title="' + result.response.items[i].title.replace(/[?:"*|/<>]/g, "").replace(/&lt;|&gt;|&amp;/gi, "") + '"><i class="fa fa-play-circle-o" aria-hidden="true"></i></a>' +
  283.                             '<a class="btn btn-xs btn-link pull-right" style="margin-top: 8px;color:#d9d7da;" id="AudioDurationId' + result.response.items[i].id + '" >' + toHHMMSS(result.response.items[i].duration) + '</a>' +
  284.                             '<p class="audioCardText"><strong style="color:#454343;">' + result.response.items[i].title.replace(/[?:"*|/<>]/g, "").replace(/&lt;|&gt;|&amp;/gi, "") + '</strong></p>' +
  285.                             '<p class="audioCardText"><small style="color:#bcbabb;">' + result.response.items[i].artist.replace(/[?:"*|/<>]/g, "").replace(/&lt;|&gt;|&amp;/gi, "") + '</small></p>' +
  286.                             '</div>' +
  287.                             '</div>');
  288.                         }
  289.                     }
  290.                     $("#mainMenu").append('<br><br><br>');//аудиоплеер перекрывает последнюю аудиозапись
  291.                    
  292.                     $("#authMenu").attr("class", "page");
  293.                     $("#mainMenu").attr("class", "page current-page");
  294.                    
  295.                     $("#authMenu").html('');//clear memory
  296.                    
  297.                     if(window.localStorage.getItem("folderInfo") == null)
  298.                     {
  299.                         navigator.notification.confirm('Аудиозаписи сохраняются в корень Вашего устройства в папку Miranda VK (' + cordova.file.externalRootDirectory.slice(7) + "Miranda VK" + ')', function () {window.localStorage.setItem("folderInfo", cordova.file.externalRootDirectory);}, '', "Понятно");
  300.                     }
  301.                 } else {
  302.                     if(result.error.error_code == "5")
  303.                     {
  304.                         navigator.notification.alert('Сессия истекла, нужна авторизация', function (){
  305.                             //window.localStorage.clear();
  306.                             window.localStorage.removeItem("rules");
  307.                             window.localStorage.removeItem("access_token");
  308.                             window.localStorage.removeItem("user_id");
  309.                             window.localStorage.removeItem("folderInfo");
  310.                             navigator.app.exitApp();
  311.                         }, 'Ошибка', 'Выход');
  312.                        
  313.                     }
  314.                 }
  315.             },
  316.         })
  317.     }
  318.    
  319.     function downloadAudioOnClick(id)
  320.     {
  321.         if( $("#DownloadBtn").is('[disabled=disabled]') == false)
  322.         {
  323.             var url = $("#AudioPlayBtnId" + id).attr("audio-url");
  324.             var artist = $("#AudioPlayBtnId" + id).attr("audio-artist");
  325.             var title = $("#AudioPlayBtnId" + id).attr("audio-title");
  326.            
  327.             $("#DownloadBtn").attr("disabled", true);
  328.             $("#DownloadBtn").attr("class", "btn btn-xs btn-primary pull-right");
  329.            
  330.             $.ajax({
  331.                 type: "HEAD",
  332.                 url: cordova.file.externalRootDirectory + "Miranda VK",
  333.                 success: function ()
  334.                 {
  335.                     $("#AudioDownloadProgressBtnId").css("display", "block");
  336.                    
  337.                     var fileTransfer = new FileTransfer();
  338.                     fileTransfer.onprogress = function(progressEvent)
  339.                     {
  340.                         if (progressEvent.lengthComputable)
  341.                         {
  342.                             $("#AudioDownloadProgressId").attr("class", "progress-circle progress-" + Math.floor(progressEvent.loaded / progressEvent.total * 100));
  343.                         }
  344.                     };
  345.                
  346.                     fileTransfer.download(
  347.                         url,
  348.                         cordova.file.externalRootDirectory + 'Miranda VK/' + artist.replace(/[?:"*|/<>]/g, "") + ' - ' + title.replace(/[?:"*|/<>]/g, "") + '.mp3',
  349.                         function(entry) {
  350.                             $("#DownloadBtn").attr("disabled", false);
  351.                             $("#AudioDownloadProgressBtnId").css("display", "none");
  352.                             $("#AudioPlayBtnId" + id).html('<i class="fa fa-check" aria-hidden="true"></i>');
  353.                             $("#DownloadBtn").attr("class", "btn btn-xs btn-primary btn-outline pull-right");
  354.                             $("#AudioPlayBtnId" + id).attr("class", "btn btn-xs btn-success pull-right");
  355.                         },
  356.                         function(error) {
  357.                             $("#DownloadBtn").attr("disabled", false);
  358.                             $("#AudioDownloadProgressBtnId").css("display", "none");
  359.                             $("#DownloadBtn").attr("class", "btn btn-xs btn-primary btn-outline pull-right");
  360.                             $("#AudioPlayBtnId" + id).attr("class", "btn btn-xs btn-danger pull-right");
  361.                             alert("Download Error | " + artist + " | " + title);
  362.                         }, true
  363.                     );
  364.                 },
  365.                 error: function ()
  366.                 {
  367.                     //alert("Не найдена папка Miranda VK");
  368.                     window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,
  369.                         function fileEntryCallback(fileEntry)
  370.                         {
  371.                             fileEntry.getDirectory('Miranda VK', { create: true });
  372.                             $("#DownloadBtn").attr("disabled", false);
  373.                             downloadAudioOnClick(id);
  374.                         }
  375.                     );
  376.                 }
  377.             });
  378.         }
  379.     }
  380.    
  381.     function playAudioPreload(id)
  382.     {
  383.         var artist = $("#AudioPlayBtnId" + id).attr("audio-artist");
  384.         var title = $("#AudioPlayBtnId" + id).attr("audio-title");
  385.        
  386.         var url = $("#AudioPlayBtnId" + id).attr("audio-url");
  387.        
  388.         $("#AudioPlayer").css("display", "block");
  389.        
  390.         url = url.split("?");
  391.        
  392.         if(config_mediaUrl == $.trim(url[0]))//чтобы кнопка плей и пауза не путалась
  393.         {
  394.             if(config_mediaStatus == "pause")
  395.             {
  396.                 $("#AudioControl").html('<i class="fa fa-play" aria-hidden="true"></i>');
  397.             } else {
  398.                 $("#AudioControl").html('<i class="fa fa-pause" aria-hidden="true"></i>');
  399.             }
  400.         } else {
  401.             $("#AudioControl").html('<i class="fa fa-play" aria-hidden="true"></i>');
  402.         }
  403.            
  404.         $("#DownloadBtn" ).html('<i class="fa fa-download" aria-hidden="true"></i>');
  405.        
  406.         $("#AudioControl").attr("onclick", "playAudio(" + id +")");
  407.         $("#DownloadBtn").attr("onclick", "downloadAudioOnClick(" + id +")");
  408.        
  409.         $("#AudioTitle").html(title);
  410.         $("#AudioArtist").html(artist);
  411.     }
  412.    
  413.     function playAudio(id)
  414.     {
  415.         if( $("#AudioControl").is('[disabled=disabled]') == false)
  416.         {
  417.             var url = $("#AudioPlayBtnId" + id).attr("audio-url");
  418.            
  419.             url = url.split("?");
  420.            
  421.             if(config_mediaUrl == $.trim(url[0]))
  422.             {
  423.                 if(config_mediaStatus == "pause")//есть стандартные статусы от config_media!
  424.                 {
  425.                     config_media.play();
  426.                     config_mediaStatus = "play";
  427.                     $("#AudioControl").html('<i class="fa fa-pause" aria-hidden="true"></i>');
  428.                 } else {
  429.                     config_media.pause();
  430.                     config_mediaStatus = "pause";
  431.                     $("#AudioControl").html('<i class="fa fa-play" aria-hidden="true"></i>');
  432.                 }
  433.             }
  434.            
  435.             if(config_mediaUrl != $.trim(url[0]))
  436.             {
  437.                 $("#AudioControl").attr("disabled", true);
  438.                
  439.                 if (config_media)
  440.                 {
  441.                     config_media.stop();
  442.                     config_media.release();
  443.                 }
  444.                
  445.                 var timerDur = setInterval(function()
  446.                 {
  447.                     var dur = config_media.getDuration();
  448.                     if (dur > 0) {
  449.                         $("#AudioControl").attr("disabled", false);
  450.                         clearInterval(timerDur);
  451.                     }
  452.                 }, 100);
  453.                
  454.                 config_media = new Media($.trim(url[0]),function () {}, function () {});
  455.                 config_media.play();
  456.                
  457.                 config_mediaUrl = $.trim(url[0]);
  458.                
  459.                 config_mediaStatus = 'play';
  460.                
  461.                 $("#AudioControl").html('<i class="fa fa-pause" aria-hidden="true"></i>');
  462.             }
  463.         }
  464.     }
  465.    
  466.     function signOut()
  467.     {
  468.         navigator.notification.confirm('Вы действительно хотите выйти с аккаунта?',
  469.             function (buttonIndex)
  470.             {
  471.                 if(buttonIndex == '2')
  472.                 {
  473.                     //window.localStorage.clear();
  474.                     window.localStorage.removeItem("rules");
  475.                     window.localStorage.removeItem("access_token");
  476.                     window.localStorage.removeItem("user_id");
  477.                     window.localStorage.removeItem("folderInfo");
  478.                     navigator.app.exitApp();
  479.                 }
  480.             }, '', ['Нет','Да']
  481.         );
  482.     }
  483.    
  484.     function showRules()
  485.     {
  486.         navigator.notification.confirm(getRulesText(), function (){}, 'Правила использования', 'OK');
  487.     }
  488.    
  489.     function getRulesText()
  490.     {
  491.         var terms = 'Настоящие правила использования программы устанавливает условия использования Мобильного приложения «Miranda VK». \n \n'  + 'Перед тем как начать использование Мобильного приложения Пользователь обязан ознакомится с Правилами использования. \n \n'  + 'Начало использования Пользователем Мобильного приложения в любой форме означает, что Пользователь принимает все условия Правил в полном объеме. \n \n'  + 'Если Пользователь не принимает условия данных Правил в полном объеме, Пользователь не имеет права использовать Мобильное приложения в каких-либо целях. \n \n'  + '1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ, ИСПОЛЬЗУЕМЫЕ В НАСТОЯЩЕМ СОГЛАШЕНИИ \n \n'  + 'Сайт (Сайты) — это совокупность связанных между собой веб-страниц, которые доступны в Интернете через протоколы HTTP/HTTPS, находящихся по адресу www.vk.com и объединенных единой темой, дизайном. \n \n'  + 'Социальная Сеть — он-лайн сервис «ВКонтакте», размещенный на соответствующем Сайте и предназначенный для построения, отражения и организации социальных взаимоотношений в Интернете, а также использования и распространения Контента. \n \n'  + 'Мобильное приложение «Miranda VK» (Мобильное приложение) — программное обеспечение, установленное в Устройстве Пользователя, в результате использования которого Пользователь получает доступ к Социальной Сети и ее возможностям. \n \n'  + 'Устройство Пользователя — персональные компьютеры (ПК), карманные ПК, смартфоны, мобильные телефоны и т. п. технические переносные устройства с функциями Интернет связи (не флеш-карты). \n \n'  + '«Объединённое Медиа Агентство» (Объединённое Медиа Агентство) -  Общество с ограниченной ответственностью «Объединённое Медиа Агентство», расположенное по адресу: 125009, г. Москва, ул. Тверская, д. 22/2, корп. 1, этаж 6, пом. IX \n \n'  + '«Boom» (Boom) - Мобильное приложение, исключительное право на Мобильное приложение принадлежит «Объединённое Медиа Агентство» (http://www.boom.ru/) \n \n'  + 'Контент — элементы дизайна, скрипты, иллюстрации, графические изображения, фотографии, тексты, аудиовизуальные произведения, музыкальные произведения и/или фонограммы, аудиофайлы и другие результаты интеллектуальной деятельности, права на использование которых принадлежат «Объединённое Медиа Агентство», Пользователям или третьим лицам. \n \n'  + 'Авторизация — активация Учетной записи Пользователя путем введения в Мобильном приложении логина и пароля, предоставленного Пользователю при Регистрации Пользователя в Социальной Сети. \n \n'  + 'Учетная запись (аккаунт) — учетная запись Пользователя, создаваемая при Регистрации в Социальной Сети, содержащая сведения, необходимые для идентификации Пользователя при предоставлении доступа к Социальной Сети. К такой записи, в том числе относятся имя Пользователя и пароль (или другие аналогичные средства аутентификации). \n \n'  + 'Регистрация Пользователя (Регистрация) — процедура предоставления Пользователем сведений, необходимых для его идентификации в Социальной Сети. \n \n'  + 'Подписка — функция Мобильного приложения «Boom» при которой Пользователь в течение 30 календарных дней (Период Подписки) за фиксированную плату (Стоимость Подписки) получает доступ к функции ограниченного временного сохранения (кэширования) аудиофайлов на Устройстве Пользователя (в кэш-памяти), без доступа к ним из файловой системы, для возможности прослушивания их без подключения к сети Интернет (офлайн) через Мобильное приложение.По завершении Периода Подписки Пользователь теряет доступ ко всем функциям Подписки, в том числе доступ к аудиофайлам, временно сохраненным на Устройстве Пользователя. \n \n'  + 'Пользователь - лицо, имеющее Учетную запись в Социальной Сети и осуществляющее доступ к ней посредством Мобильного приложения на условиях Правил. \n \n'  + 'Автор (автору, создатель) - лицо, создавшее приложение. \n \n'  + '2. ПРАВИЛА ИСПОЛЬЗОВАНИЯ \n \n'  + '2.1. Настоящие Правила являются юридически обязывающим соглашением между Пользователем и Miranda VK. \n \n'  + '2.2. Использование Мобильного приложения с нарушением (невыполнением) какого-либо из условий Правил запрещено. \n \n'  + '2.3. Для использования Мобильного приложения Пользователь обязан указывать аккаунт на котором оформлена Подписка в Мобильном приложение «Boom». \n \n'  + '2.4. По истечению Подписки в Мобильном приложение «Boom» Пользователь обязан удалить весь Контент предоставленный «Miranda VK» для аккаунта на котором истекла Подписка. \n \n'  + '2.5. Перед использованием Мобильного приложения Пользователь обязан ознакомится с лицензионным соглашением Мобильного приложения «Boom». \n \n'  + '2.6. Данные правила могут дополнятся или меняться без уведомления Пользователя об этом. \n \n'  + '3. ЗАПРЕЩЕННЫЕ ДЕЙСТВИЯ \n \n'  + '3.1. При использовании Мобильного приложения Пользователь не имеет право: — Изменять, декомпилировать, дизассемблировать, дешифровать, разбирать на части, вносить изменения и производить иные действия с объектным кодом Мобильного приложения, имеющие целью получение информации о реализации алгоритмов, используемых в Мобильном приложении и/или извлечение Контента, создавать производные произведения с использованием Мобильного приложения, а также осуществлять (разрешать осуществлять) иное использование Мобильного приложения без предварительного письменного разрешения автора Мобильного приложения; \n'  + '— Изменять или удалять любую информацию об авторских правах; \n'  + '— Изменять наименование Мобильного приложения; \n'  + '— Использовать Мобильное приложение любым способом, противоречащим действующему законодательству; \n'  + '— Воспроизводить, распространять или предоставлять сетевой доступ к Мобильному приложению в коммерческих целях без предварительного письменного разрешения автора Мобильного приложения. \n \n'  + '4. ОГРАНИЧЕНИЕ ГАРАНТИЙ И ОТВЕТСТВЕННОСТЬ \n \n'  + '4.1. Мобильное приложение предоставляется на условиях «как есть» (as is). Автор не предоставляет никаких гарантий в отношении безошибочной и бесперебойной работы Мобильного приложения или отдельных его компонентов и/или функций, соответствия Мобильного приложения каким-либо целям и ожиданиям Пользователя, а также не предоставляет никаких иных гарантий, прямо не указанных в Правилах. \n \n'  + '4.2. Автор не берет на себя никаких обязательств и не несет никакой ответственности за какие-либо прямые или косвенные последствия какого-либо использования или невозможности использования Мобильного приложения и/или ущерб, причиненный Пользователю и/или третьим сторонам в результате какого-либо использования, неиспользования или невозможности использования Мобильного приложения или отдельных его компонентов и/или функций, в том числе из-за возможных ошибок или сбоев в работе Мобильного приложения. \n \n'  + '4.3. Пользователь настоящим уведомлен и соглашается, что при использовании Мобильного приложения автору передается следующая информация: Данные с сайта www.vk.com, Имя Фамилия аккаунта, версия и идентификатор Мобильного приложения, статистика использования функций Мобильного приложения, а также иная техническая информация. \n \n'  + '5. ОБНОВЛЕНИЯ И ДОПОЛНЕНИЯ \n \n'  + '5.1. Правила использования распространяется на любые обновления/новые версии, дополнения Мобильного Приложения за исключением случаев, когда к такому обновлению прилагается отдельные правила использования. Соглашаясь с установкой обновления/новой версии, дополнения Мобильного приложения, Пользователь принимает правила использования для соответствующих обновлений/новых версий Мобильного приложения, если обновление/установка новой версии Мобильного приложения не сопровождается иными правилами использования.';
  492.         return terms;
  493.     }
  494.    
  495.     function openUrl(url)
  496.     {
  497.         window.open(url, '_system');
  498.     }
  499.    
  500.     function toHHMMSS(sec)
  501.     {
  502.         var sec_num = parseInt(sec, 10); // don't forget the second param
  503.         var hours   = Math.floor(sec_num / 3600);
  504.         var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
  505.         var seconds = sec_num - (hours * 3600) - (minutes * 60);
  506.  
  507.         if (hours   < 10) {hours   = "0"+hours;}
  508.         if (minutes < 10) {minutes = "0"+minutes;}
  509.         if (seconds < 10) {seconds = "0"+seconds;}
  510.         // return hours+':'+minutes+':'+seconds;
  511.         return minutes+':'+seconds;
  512.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement