+ Ответить в теме
Показано с 1 по 11 из 11
  1. #1
    Аватар для forumrulez forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум Живу я здесь
    Сообщений
    1,931
    Поблагодарили 351 раз(а) в 243 сообщениях

    Халявная музыка ВКонтакте

    Всем привет кто помнит меня, а так же тем кто и не помнит, хочу поделится с Вами своим приложением для бесплатной загрузки музыки с ВКонтакте , пишу это здесь не для рекламы, совсем нет, пишу потому что этот форум повлиял на создание этой программы так как дал мне знания, спасибо Вам.

    Ссылка на программку miranda-vk.cf

  2. #2
    Аватар для Sеnchick Sеnchick Восходящая звезда Путешественник
    Сообщений
    392
    Поблагодарили 43 раз(а) в 33 сообщениях
    Цитата Сообщение от forumrulez Посмотреть сообщение
    Всем привет кто помнит меня, а так же тем кто и не помнит, хочу поделится с Вами своим приложением для бесплатной загрузки музыки с ВКонтакте , пишу это здесь не для рекламы, совсем нет, пишу потому что этот форум повлиял на создание этой программы так как дал мне знания, спасибо Вам.

    Ссылка на программку miranda-vk.cf
    Как проблему с API решил?

  3. #3
    Аватар для Няшик Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Живу я здесь
    Сообщений
    1,739
    Поблагодарили 222 раз(а) в 197 сообщениях
    Цитата Сообщение от Sеnchick Посмотреть сообщение
    Как проблему с API решил?
    Думаешь он первооткрыватель ? Как бы нет, уже пол года все кто хочет нормально музыку принимать, используют useragent - 'VKAndroidApp/4.38-816 (Android 6.0; SDK 23; x86; Google Nexus 5X; ru)'

    Только ленивый мог не загуглить в интернете. А так же к примеру на DS есть класс который позволяет авторизацию прямым способом, и делаем как раз с этим useragent запросы

  4. #4
    Аватар для Няшик Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Живу я здесь
    Сообщений
    1,739
    Поблагодарили 222 раз(а) в 197 сообщениях
    Цитата Сообщение от Sеnchick Посмотреть сообщение
    Как проблему с API решил?
    Судя по исходнику он тоже использует именно его

    PHP код:
     <preference name="OverrideUserAgent" value="VKAndroidApp (Android 6.0; SDK 23; x86)" /> 
    Скрытый текст:
    PHP код:

    public class SystemWebViewEngine implements CordovaWebViewEngine {
        public static final 
    String TAG "SystemWebViewEngine";
        protected 
    CordovaBridge bridge;
        protected 
    Client client;
        protected final 
    SystemCookieManager cookieManager;
        protected 
    CordovaInterface cordova;
        protected 
    NativeToJsMessageQueue nativeToJsMessageQueue;
        protected 
    CordovaWebView parentWebView;
        protected 
    PluginManager pluginManager;
        protected 
    CordovaPreferences preferences;
        private 
    BroadcastReceiver receiver;
        protected 
    CordovaResourceApi resourceApi;
        protected final 
    SystemWebView webView;

        class 
    C02341 implements OnlineEventsBridgeModeDelegate {
            
    C02341() {
            }

            public 
    void setNetworkAvailable(boolean value) {
                
    SystemWebViewEngine.this.webView.setNetworkAvailable(value);
            }

            public 
    void runOnUiThread(Runnable r) {
                
    SystemWebViewEngine.this.cordova.getActivity().runOnUiThread(r);
            }
        }

        public 
    SystemWebViewEngine(Context contextCordovaPreferences preferences) {
            
    this(new SystemWebView(context), preferences);
        }

        public 
    SystemWebViewEngine(SystemWebView webView) {
            
    this(webViewnull);
        }

        public 
    SystemWebViewEngine(SystemWebView webViewCordovaPreferences preferences) {
            
    this.preferences preferences;
            
    this.webView webView;
            
    this.cookieManager = new SystemCookieManager(webView);
        }

        public 
    void init(CordovaWebView parentWebViewCordovaInterface cordovaClient clientCordovaResourceApi resourceApiPluginManager pluginManagerNativeToJsMessageQueue nativeToJsMessageQueue) {
            if (
    this.cordova != null) {
                throw new 
    IllegalStateException();
            }
            if (
    this.preferences == null) {
                
    this.preferences parentWebView.getPreferences();
            }
            
    this.parentWebView parentWebView;
            
    this.cordova cordova;
            
    this.client client;
            
    this.resourceApi resourceApi;
            
    this.pluginManager pluginManager;
            
    this.nativeToJsMessageQueue nativeToJsMessageQueue;
            
    this.webView.init(thiscordova);
            
    initWebViewSettings();
            
    nativeToJsMessageQueue.addBridgeMode(new OnlineEventsBridgeMode(new C02341()));
            if (
    VERSION.SDK_INT 18) {
                
    nativeToJsMessageQueue.addBridgeMode(new EvalBridgeMode(thiscordova));
            }
            
    this.bridge = new CordovaBridge(pluginManagernativeToJsMessageQueue);
            
    exposeJsInterface(this.webViewthis.bridge);
        }

        public 
    CordovaWebView getCordovaWebView() {
            return 
    this.parentWebView;
        }

        public 
    ICordovaCookieManager getCookieManager() {
            return 
    this.cookieManager;
        }

        public 
    View getView() {
            return 
    this.webView;
        }

        @
    SuppressLint({"NewApi""SetJavaScriptEnabled"})
        private 
    void initWebViewSettings() {
            
    this.webView.setInitialScale(0);
            
    this.webView.setVerticalScrollBarEnabled(false);
            final 
    WebSettings settings this.webView.getSettings();
            
    settings.setJavaScriptEnabled(true);
            
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
            
    settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
            try {
                
    Method gingerbread_getMethod WebSettings.class.getMethod("setNavDump", new Class[]{Boolean.TYPE});
                
    LOG.m15d(TAG"CordovaWebView is running on device made by: " Build.MANUFACTURER);
                if (
    VERSION.SDK_INT 11 && Build.MANUFACTURER.contains("HTC")) {
                    
    gingerbread_getMethod.invoke(settings, new Object[]{Boolean.valueOf(true)});
                }
            } catch (
    NoSuchMethodException e) {
                
    LOG.m15d(TAG"We are on a modern version of Android, we will deprecate HTC 2.3 devices in 2.8");
            } catch (
    IllegalArgumentException e2) {
                
    LOG.m15d(TAG"Doing the NavDump failed with bad arguments");
            } catch (
    IllegalAccessException e3) {
                
    LOG.m15d(TAG"This should never happen: IllegalAccessException means this isn't Android anymore");
            } catch (
    InvocationTargetException e4) {
                
    LOG.m15d(TAG"This should never happen: InvocationTargetException means this isn't Android anymore.");
            }
            
    settings.setSaveFormData(false);
            
    settings.setSavePassword(false);
            if (
    VERSION.SDK_INT >= 16) {
                
    settings.setAllowUniversalAccessFromFileURLs(true);
            }
            if (
    VERSION.SDK_INT >= 17) {
                
    settings.setMediaPlaybackRequiresUserGesture(false);
            }
            
    String databasePath this.webView.getContext().getApplicationContext().getDir("database"0).getPath();
            
    settings.setDatabaseEnabled(true);
            
    settings.setDatabasePath(databasePath);
            if ((
    this.webView.getContext().getApplicationContext().getApplicationInfo().flags 2) != && VERSION.SDK_INT >= 19) {
                
    enableRemoteDebugging();
            }
            
    settings.setGeolocationDatabasePath(databasePath);
            
    settings.setDomStorageEnabled(true);
            
    settings.setGeolocationEnabled(true);
            
    settings.setAppCacheMaxSize(5242880);
            
    settings.setAppCachePath(databasePath);
            
    settings.setAppCacheEnabled(true);
            
    String defaultUserAgent settings.getUserAgentString();
            
    String overrideUserAgent this.preferences.getString("OverrideUserAgent"null);
            if (
    overrideUserAgent != null) {
                
    settings.setUserAgentString(overrideUserAgent);
            } else {
                
    String appendUserAgent this.preferences.getString("AppendUserAgent"null);
                if (
    appendUserAgent != null) {
                    
    settings.setUserAgentString(defaultUserAgent " " appendUserAgent);
                }
            }
            
    IntentFilter intentFilter = new IntentFilter();
            
    intentFilter.addAction("android.intent.action.CONFIGURATION_CHANGED");
            if (
    this.receiver == null) {
                
    this.receiver = new BroadcastReceiver() {
                    public 
    void onReceive(Context contextIntent intent) {
                        
    settings.getUserAgentString();
                    }
                };
                
    this.webView.getContext().registerReceiver(this.receiverintentFilter);
            }
        }

        @
    TargetApi(19)
        private 
    void enableRemoteDebugging() {
            try {
                
    WebView.setWebContentsDebuggingEnabled(true);
            } catch (
    IllegalArgumentException e) {
                
    LOG.m15d(TAG"You have one job! To turn on Remote Web Debugging! YOU HAVE FAILED! ");
                
    e.printStackTrace();
            }
        }

        private static 
    void exposeJsInterface(WebView webViewCordovaBridge bridge) {
            if (
    VERSION.SDK_INT 17) {
                
    LOG.m21i(TAG"Disabled addJavascriptInterface() bridge since Android version is old.");
            } else {
                
    webView.addJavascriptInterface(new SystemExposedJsApi(bridge), "_cordovaNative");
            }
        }

        public 
    void loadUrl(String urlboolean clearNavigationStack) {
            
    this.webView.loadUrl(url);
        }

        public 
    String getUrl() {
            return 
    this.webView.getUrl();
        }

        public 
    void stopLoading() {
            
    this.webView.stopLoading();
        }

        public 
    void clearCache() {
            
    this.webView.clearCache(true);
        }

        public 
    void clearHistory() {
            
    this.webView.clearHistory();
        }

        public 
    boolean canGoBack() {
            return 
    this.webView.canGoBack();
        }

        public 
    boolean goBack() {
            if (!
    this.webView.canGoBack()) {
                return 
    false;
            }
            
    this.webView.goBack();
            return 
    true;
        }

        public 
    void setPaused(boolean value) {
            if (
    value) {
                
    this.webView.onPause();
                
    this.webView.pauseTimers();
                return;
            }
            
    this.webView.onResume();
            
    this.webView.resumeTimers();
        }

        public 
    void destroy() {
            
    this.webView.chromeClient.destroyLastDialog();
            
    this.webView.destroy();
            if (
    this.receiver != null) {
                try {
                    
    this.webView.getContext().unregisterReceiver(this.receiver);
                } catch (
    Throwable e) {
                    
    LOG.m19e(TAG"Error unregistering configuration receiver: " e.getMessage(), e);
                }
            }
        }

        public 
    void evaluateJavascript(String jsValueCallback<Stringcallback) {
            if (
    VERSION.SDK_INT >= 19) {
                
    this.webView.evaluateJavascript(jscallback);
            } else {
                
    LOG.m15d(TAG"This webview is using the old bridge");
            }
        }


  5. #5
    Аватар для Sеnchick Sеnchick Восходящая звезда Путешественник
    Сообщений
    392
    Поблагодарили 43 раз(а) в 33 сообщениях
    Цитата Сообщение от Няшик Посмотреть сообщение
    Судя по исходнику он тоже использует именно его

    PHP код:
     <preference name="OverrideUserAgent" value="VKAndroidApp (Android 6.0; SDK 23; x86)" /> 
    Скрытый текст:
    PHP код:

    public class SystemWebViewEngine implements CordovaWebViewEngine {
        public static final 
    String TAG "SystemWebViewEngine";
        protected 
    CordovaBridge bridge;
        protected 
    Client client;
        protected final 
    SystemCookieManager cookieManager;
        protected 
    CordovaInterface cordova;
        protected 
    NativeToJsMessageQueue nativeToJsMessageQueue;
        protected 
    CordovaWebView parentWebView;
        protected 
    PluginManager pluginManager;
        protected 
    CordovaPreferences preferences;
        private 
    BroadcastReceiver receiver;
        protected 
    CordovaResourceApi resourceApi;
        protected final 
    SystemWebView webView;

        class 
    C02341 implements OnlineEventsBridgeModeDelegate {
            
    C02341() {
            }

            public 
    void setNetworkAvailable(boolean value) {
                
    SystemWebViewEngine.this.webView.setNetworkAvailable(value);
            }

            public 
    void runOnUiThread(Runnable r) {
                
    SystemWebViewEngine.this.cordova.getActivity().runOnUiThread(r);
            }
        }

        public 
    SystemWebViewEngine(Context contextCordovaPreferences preferences) {
            
    this(new SystemWebView(context), preferences);
        }

        public 
    SystemWebViewEngine(SystemWebView webView) {
            
    this(webViewnull);
        }

        public 
    SystemWebViewEngine(SystemWebView webViewCordovaPreferences preferences) {
            
    this.preferences preferences;
            
    this.webView webView;
            
    this.cookieManager = new SystemCookieManager(webView);
        }

        public 
    void init(CordovaWebView parentWebViewCordovaInterface cordovaClient clientCordovaResourceApi resourceApiPluginManager pluginManagerNativeToJsMessageQueue nativeToJsMessageQueue) {
            if (
    this.cordova != null) {
                throw new 
    IllegalStateException();
            }
            if (
    this.preferences == null) {
                
    this.preferences parentWebView.getPreferences();
            }
            
    this.parentWebView parentWebView;
            
    this.cordova cordova;
            
    this.client client;
            
    this.resourceApi resourceApi;
            
    this.pluginManager pluginManager;
            
    this.nativeToJsMessageQueue nativeToJsMessageQueue;
            
    this.webView.init(thiscordova);
            
    initWebViewSettings();
            
    nativeToJsMessageQueue.addBridgeMode(new OnlineEventsBridgeMode(new C02341()));
            if (
    VERSION.SDK_INT 18) {
                
    nativeToJsMessageQueue.addBridgeMode(new EvalBridgeMode(thiscordova));
            }
            
    this.bridge = new CordovaBridge(pluginManagernativeToJsMessageQueue);
            
    exposeJsInterface(this.webViewthis.bridge);
        }

        public 
    CordovaWebView getCordovaWebView() {
            return 
    this.parentWebView;
        }

        public 
    ICordovaCookieManager getCookieManager() {
            return 
    this.cookieManager;
        }

        public 
    View getView() {
            return 
    this.webView;
        }

        @
    SuppressLint({"NewApi""SetJavaScriptEnabled"})
        private 
    void initWebViewSettings() {
            
    this.webView.setInitialScale(0);
            
    this.webView.setVerticalScrollBarEnabled(false);
            final 
    WebSettings settings this.webView.getSettings();
            
    settings.setJavaScriptEnabled(true);
            
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
            
    settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
            try {
                
    Method gingerbread_getMethod WebSettings.class.getMethod("setNavDump", new Class[]{Boolean.TYPE});
                
    LOG.m15d(TAG"CordovaWebView is running on device made by: " Build.MANUFACTURER);
                if (
    VERSION.SDK_INT 11 && Build.MANUFACTURER.contains("HTC")) {
                    
    gingerbread_getMethod.invoke(settings, new Object[]{Boolean.valueOf(true)});
                }
            } catch (
    NoSuchMethodException e) {
                
    LOG.m15d(TAG"We are on a modern version of Android, we will deprecate HTC 2.3 devices in 2.8");
            } catch (
    IllegalArgumentException e2) {
                
    LOG.m15d(TAG"Doing the NavDump failed with bad arguments");
            } catch (
    IllegalAccessException e3) {
                
    LOG.m15d(TAG"This should never happen: IllegalAccessException means this isn't Android anymore");
            } catch (
    InvocationTargetException e4) {
                
    LOG.m15d(TAG"This should never happen: InvocationTargetException means this isn't Android anymore.");
            }
            
    settings.setSaveFormData(false);
            
    settings.setSavePassword(false);
            if (
    VERSION.SDK_INT >= 16) {
                
    settings.setAllowUniversalAccessFromFileURLs(true);
            }
            if (
    VERSION.SDK_INT >= 17) {
                
    settings.setMediaPlaybackRequiresUserGesture(false);
            }
            
    String databasePath this.webView.getContext().getApplicationContext().getDir("database"0).getPath();
            
    settings.setDatabaseEnabled(true);
            
    settings.setDatabasePath(databasePath);
            if ((
    this.webView.getContext().getApplicationContext().getApplicationInfo().flags 2) != && VERSION.SDK_INT >= 19) {
                
    enableRemoteDebugging();
            }
            
    settings.setGeolocationDatabasePath(databasePath);
            
    settings.setDomStorageEnabled(true);
            
    settings.setGeolocationEnabled(true);
            
    settings.setAppCacheMaxSize(5242880);
            
    settings.setAppCachePath(databasePath);
            
    settings.setAppCacheEnabled(true);
            
    String defaultUserAgent settings.getUserAgentString();
            
    String overrideUserAgent this.preferences.getString("OverrideUserAgent"null);
            if (
    overrideUserAgent != null) {
                
    settings.setUserAgentString(overrideUserAgent);
            } else {
                
    String appendUserAgent this.preferences.getString("AppendUserAgent"null);
                if (
    appendUserAgent != null) {
                    
    settings.setUserAgentString(defaultUserAgent " " appendUserAgent);
                }
            }
            
    IntentFilter intentFilter = new IntentFilter();
            
    intentFilter.addAction("android.intent.action.CONFIGURATION_CHANGED");
            if (
    this.receiver == null) {
                
    this.receiver = new BroadcastReceiver() {
                    public 
    void onReceive(Context contextIntent intent) {
                        
    settings.getUserAgentString();
                    }
                };
                
    this.webView.getContext().registerReceiver(this.receiverintentFilter);
            }
        }

        @
    TargetApi(19)
        private 
    void enableRemoteDebugging() {
            try {
                
    WebView.setWebContentsDebuggingEnabled(true);
            } catch (
    IllegalArgumentException e) {
                
    LOG.m15d(TAG"You have one job! To turn on Remote Web Debugging! YOU HAVE FAILED! ");
                
    e.printStackTrace();
            }
        }

        private static 
    void exposeJsInterface(WebView webViewCordovaBridge bridge) {
            if (
    VERSION.SDK_INT 17) {
                
    LOG.m21i(TAG"Disabled addJavascriptInterface() bridge since Android version is old.");
            } else {
                
    webView.addJavascriptInterface(new SystemExposedJsApi(bridge), "_cordovaNative");
            }
        }

        public 
    void loadUrl(String urlboolean clearNavigationStack) {
            
    this.webView.loadUrl(url);
        }

        public 
    String getUrl() {
            return 
    this.webView.getUrl();
        }

        public 
    void stopLoading() {
            
    this.webView.stopLoading();
        }

        public 
    void clearCache() {
            
    this.webView.clearCache(true);
        }

        public 
    void clearHistory() {
            
    this.webView.clearHistory();
        }

        public 
    boolean canGoBack() {
            return 
    this.webView.canGoBack();
        }

        public 
    boolean goBack() {
            if (!
    this.webView.canGoBack()) {
                return 
    false;
            }
            
    this.webView.goBack();
            return 
    true;
        }

        public 
    void setPaused(boolean value) {
            if (
    value) {
                
    this.webView.onPause();
                
    this.webView.pauseTimers();
                return;
            }
            
    this.webView.onResume();
            
    this.webView.resumeTimers();
        }

        public 
    void destroy() {
            
    this.webView.chromeClient.destroyLastDialog();
            
    this.webView.destroy();
            if (
    this.receiver != null) {
                try {
                    
    this.webView.getContext().unregisterReceiver(this.receiver);
                } catch (
    Throwable e) {
                    
    LOG.m19e(TAG"Error unregistering configuration receiver: " e.getMessage(), e);
                }
            }
        }

        public 
    void evaluateJavascript(String jsValueCallback<Stringcallback) {
            if (
    VERSION.SDK_INT >= 19) {
                
    this.webView.evaluateJavascript(jscallback);
            } else {
                
    LOG.m15d(TAG"This webview is using the old bridge");
            }
        }

    Какой тогда у него client_id и client_secret?
    У меня client_id=3697615&client_secret=AlVXZFMUqyrnABp8nc uU
    Пытался получить аудиозаписи - пишет ошибкy: flood control
    Последний раз редактировалось Sеnchick; 14.08.2017 в 00:34.

  6. #6
    Аватар для Няшик Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Живу я здесь
    Сообщений
    1,739
    Поблагодарили 222 раз(а) в 197 сообщениях
    Цитата Сообщение от Sеnchick Посмотреть сообщение
    Какой тогда у него client_id и client_secret?
    У меня client_id=3697615&client_secret=AlVXZFMUqyrnABp8nc uU
    Пытался получить аудиозаписи - пишет ошибкy: flood control
    3502561 и omvP3y2MZmpREFZJDNHd

    Исходный код от куда вырвал
    https://pastebin.com/fq4Y4RmE

  7. #7
    Аватар для Sеnchick Sеnchick Восходящая звезда Путешественник
    Сообщений
    392
    Поблагодарили 43 раз(а) в 33 сообщениях
    Цитата Сообщение от Няшик Посмотреть сообщение
    3502561 и omvP3y2MZmpREFZJDNHd

    Исходный код от куда вырвал
    https://pastebin.com/fq4Y4RmE
    хозе всё равно пишет flood control
    Последний раз редактировалось Sеnchick; 14.08.2017 в 02:08.

  8. #8
    Аватар для Няшик Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Живу я здесь
    Сообщений
    1,739
    Поблагодарили 222 раз(а) в 197 сообщениях
    Цитата Сообщение от Sеnchick Посмотреть сообщение
    хозе всё равно пишет flood control
    Не знал что они ввели эту фигню. Скорее он грузит в свой веб кит страницу, и с неё уже качает по прямым ссылкам.

    В любом случае их сервис по музыке самый говнённый в мире. Из за того что они режут битрейт, не описывая других мелочей.

  9. #9
    Аватар для forumrulez forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум forumrulez Вселенский разум Живу я здесь
    Сообщений
    1,931
    Поблагодарили 351 раз(а) в 243 сообщениях
    От уж... взяли расковыряли, ну и ладно, мне нечего скрывать )

  10. #10
    Аватар для Няшик Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Няшик Кумир Живу я здесь
    Сообщений
    1,739
    Поблагодарили 222 раз(а) в 197 сообщениях
    Цитата Сообщение от forumrulez Посмотреть сообщение
    От уж... взяли расковыряли, ну и ладно, мне нечего скрывать )
    Та нечего было ковырять вовсе.. Первый онлайн сервис в гугле

  11. #11
    Аватар для Sеnchick Sеnchick Восходящая звезда Путешественник
    Сообщений
    392
    Поблагодарили 43 раз(а) в 33 сообщениях
    Как музыку-то использовать теперь?

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения