• Как парсить ссылку на видео в одноклассниках?

    @dstftw
    Алгоритм следующий:
    1. Из кода страницы необходимо выдернуть значение атрибута data-options, соответствующее идентификатору видео, пропустить через unescape, и подтянуть как JSON.

    Исходный фрагмент:
    ...
    data-options="{"playerId":"VideoPopup_player_63567059965189_0","width":"491","height":"275","url":"http://st.mycdn.me/static/MegaPlayer/10-1-2/vp.swf","url11":"http://st.mycdn.me/static/MegaPlayer/10-1-2/vp11.swf","minFlashVersionNewPlayer":"11.2","wmode":"opaque","asa":true,"provider":"UPLOADED_ODKL","flashvars":{"saveLastPlayingTimeFrom":"30","bigLike":"1","autoplayEnabled":"1","locale":"ru","noChannel":"1","noExpandInFeed":"0","enabledLocalStorage":"1","minCacheTime":"120","isLayer":"1","metadataUrl":"http://ok.ru%2Fdk%3Fcmd%3DvideoPlayerMetadata%26mid%3D29019278039%26mtId=63567059965189-0%26aid=529301710341","partition":"4","translations":"{\"region_restriction\":\"Видео недоступно для региона\",\"upload\":\"Добавить видео\",\"exit_wide\":\"Обычный размер\",\"ultra\":\"2160\",\"subscribed\":\"Вы подписаны\",\"next_video\":\"Следующее видео\",\"unsubscribe\":\"Отписаться\",\"exit_fs\":\"Свернуть\",\"skip_adv\":\"Пропустить рекламу\",\"you\":\"Вы\",\"mute\":\"Выключить звук\",\"lowest\":\"240\",\"watch_ok\":\"Смотреть в Одноклассниках\",\"very_big_embed_size\":\"Очень большой\",\"copy_link\":\"Копировать ссылку\",\"adv_sec\":\"сек\",\"sd\":\"480\",\"low\":\"360\",\"adv_label\":\"Реклама\",\"share\":\"Ссылка\",\"not_found\":\"Видео не найдено\",\"quality_title\":\"Качество\",\"big_embed_size\":\"Большой\",\"quad\":\"1440\",\"link_to_video\":\"Ссылка на видео\",\"copy_link_time\":\"Скопировать URL с привязкой ко времени\",\"auto\":\"Авто\",\"decode\":\"Браузер не поддерживает воспроизведение видео\",\"small_embed_size\":\"Маленький\",\"quality_change\":\"Изменить качество\",\"external_not_found\":\"Видео на внешнем ресурсе недоступно\",\"other_embed_size\":\"Другой размер\",\"like\":\"Класс!\",\"replay\":\"Смотреть ещё\",\"adv\":\"Вы сможете пропустить рекламу через\",\"full\":\"1080\",\"copy_code\":\"Скопировать код\",\"link\":\"Ссылка\",\"network\":\"Ошибка соединения\",\"and\":\"и\",\"unmute\":\"Включить звук\",\"enter_wide\":\"Широкий экран\",\"subscribe\":\"Подписаться\",\"mobile\":\"144\",\"enter_fs\":\"На весь экран\",\"normal_embed_size\":\"Средний\",\"link_to_html_code\":\"HTML-код\",\"compilation\":\"Канал:\",\"hd\":\"720\"}","location":"AutoplayLayerMovieRBlock/anonymMain/anonym","preferHd":"1","hideExpand":"0","noLikeButton":"1","maxCachePartOfDuration":"10","isAnonym":"1","noUpload":"1","adLogic":"15,0,3,14400"},"noFlashText":"Для воспроизведения видео вам необходимо \u003Ca class=\"totalwhite mt-5 visible\" href=\"http://www.adobe.com/go/getflashplayer\" target=\"_blank\"\u003Eустановить Adobe Flash Player\u003C/a\u003E","liveUnstartedText":"Трансляция начнётся через","liveEndedText":"Трансляция завершена","poster":"http://vdp.mycdn.me/getImage?id=39435897559\u0026idx=7\u0026thumbType=32","isExternalPlayer":false,"isHtml5Player":false}"
    ...

    Подтянутый JSON:
    {"liveUnstartedText": "Live stream will start in", "minFlashVersionNewPlayer": "11.2", "url11": "http://st.mycdn.me/static/MegaPlayer/10-1-2/vp11.swf", "playerId": "VideoPopup_player_63567059965189_0", "poster": "http://vdp.mycdn.me/getImage?id=39435897559&idx=7&thumbType=32", "isExternalPlayer": false, "noFlashText": "To play this video you will need <a class=\"totalwhite mt-5 visible\" href=\"http://www.adobe.com/go/getflashplayer\" target=\"_blank\">to install Adobe Flash Player</a>", "height": "275", "width": "491", "asa": true, "wmode": "opaque", "url": "http://st.mycdn.me/static/MegaPlayer/10-1-2/vp.swf", "provider": "UPLOADED_ODKL", "isHtml5Player": false, "flashvars": {"bigLike": "1", "metadataUrl": "http://ok.ru%2Fdk%3Fcmd%3DvideoPlayerMetadata%26mid%3D29019278039%26mtId=63567059965189-0%26aid=529301710341", "noChannel": "1", "noLikeButton": "1", "preferHd": "1", "locale": "en", "minCacheTime": "120", "maxCachePartOfDuration": "10", "partition": "4", "translations": "{\"region_restriction\":\"The video is not available in your region\",\"upload\":\"Add video\",\"exit_wide\":\"Normal size\",\"ultra\":\"2160\",\"subscribed\":\"You are subscribed\",\"next_video\":\"Next video\",\"unsubscribe\":\"Unsubscribe\",\"exit_fs\":\"Exit Full Screen\",\"skip_adv\":\"Skip ad\",\"you\":\"You\",\"mute\":\"Mute\",\"lowest\":\"240\",\"watch_ok\":\"Watch in Odnoklassniki\",\"very_big_embed_size\":\"Extra large\",\"copy_link\":\"Copy link\",\"adv_sec\":\"sec\",\"sd\":\"480\",\"low\":\"360\",\"adv_label\":\"Ad\",\"share\":\"Link\",\"not_found\":\"Video not found\",\"quality_title\":\"Quality\",\"big_embed_size\":\"Large\",\"quad\":\"1440\",\"link_to_video\":\"Link to video\",\"copy_link_time\":\"Copy link to the video from specific starting point\",\"auto\":\"Auto\",\"decode\":\"Your browser does not support video playback\",\"small_embed_size\":\"Small\",\"quality_change\":\"Change quality\",\"external_not_found\":\"The video from external source is not available at the moment\",\"other_embed_size\":\"Other size\",\"like\":\"Like\",\"replay\":\"Replay\",\"adv\":\"You can skip ad in\",\"full\":\"1080\",\"copy_code\":\"Copy code\",\"link\":\"Link\",\"network\":\"Connection error\",\"and\":\"and\",\"unmute\":\"Unmute\",\"enter_wide\":\"Wide screen\",\"subscribe\":\"Subscribe\",\"mobile\":\"144\",\"enter_fs\":\"Full Screen\",\"normal_embed_size\":\"Medium\",\"link_to_html_code\":\"HTML\",\"compilation\":\"Channel:\",\"hd\":\"720\"}", "isAnonym": "1", "noExpandInFeed": "0", "saveLastPlayingTimeFrom": "30", "hideExpand": "0", "adLogic": "15,0,3,14400", "autoplayEnabled": "1", "isLayer": "1", "enabledLocalStorage": "1", "noUpload": "1", "location": "AutoplayLayerMovieRBlock/anonymMain/anonym"}, "liveEndedText": "Live stream is over"}

    1а. Если в полученном словаре нет метаданных, то есть d['flashvars']['metadata'], но есть d['flashvars']['metadataUrl'] (например, как для этого видео), то нужно отдельно вытянуть JSON с метаданными по metadataUrl ссылке.
    2. Полученные метаданные подтягиваются в словарь. Прямые ссылки на видео находятся по ключу videos, несколько форматов с различным качеством.
    ...
    "videos":[{"name":"mobile","url":"http://217.20.153.79/?sig=2cd2ecf161b04e022ed586eb0b11fd417b6a4831\u0026ct=0\u0026urls=217.20.157.204%3B217.20.145.41\u0026expires=1441378063103\u0026clientType=0\u0026id=39435897559\u0026type=4","seekSchema":3},{"name":"lowest","url":"http://217.20.153.79/?sig=171cee4f29e74b25c3d2f4806b7d78909b320e77\u0026ct=0\u0026urls=217.20.157.204%3B217.20.145.41\u0026expires=1441378063103\u0026clientType=0\u0026id=39435897559\u0026type=0","seekSchema":3},{"name":"low","url":"http://217.20.153.79/?sig=d689c9fabffd4a49739254d4fec4f1dc42f1b4a3\u0026ct=0\u0026urls=217.20.157.204%3B217.20.145.41\u0026expires=1441378063103\u0026clientType=0\u0026id=39435897559\u0026type=1","seekSchema":3}]
    ...
    Ответ написан
    1 комментарий
  • Ошибка инициализации скрипта API одноклассников, что делать?

    vozhiganov
    @vozhiganov
    OK API Team
    Скорее всего пробуете просто открыть страницу с этим кодом, поэтому и не работает.
    Необходимо создать приложение, в настройках выставить Application URL с адресом, где этот код и тогда приложение откроется во фрейме
    Ответ написан
    1 комментарий