31

Re: Filmix.net (2018.12.16)

Опять что то изменили не работает.

32

Re: Filmix.net (2018.12.16)

ikusha76 пишет:

Опять что то изменили не работает.

Подтверждаю. При обновлении разделов ссылки на фильмы не находятся.
Анонсы (описания) и трейлеры после обновления отображаются, а фильмы - нет.
В не обновленных разделах ссылки на фильмы - рабочие.

33

Re: Filmix.net (2018.12.16)

Проблемы на сайте Filmix.me,сайт полностью не открывается в браузере *DONT_KNOW*

Skyway Droid.Использую подкасты с прямыми ссылками.Транскодированием не занимаюсь.

34

Re: Filmix.net (2018.12.16)

Orenburg пишет:

Проблемы на сайте Filmix.me,сайт полностью не открывается в браузере *DONT_KNOW*

У меня отклично открывается как   https://filmix.me (т.е. в защищенном режиме)

35

Re: Filmix.net (2018.12.16)

Обновил, но требуется более тщательная проверка.

Sony Bravia KDL-32CX523

36

Re: Filmix.net (2018.12.16)

WendyH пишет:

Обновил, но требуется более тщательная проверка.

Проверил на паре фильмов - вроде работает.
Большое спасибо.

37

Re: Filmix.net (2018.12.16)

Здравствуйте, открываются папкки с фильмом, а там пусто.

Philips 42pfl4007t/60

38

Re: Filmix.net (2018.12.16)

koruy78 пишет:

Здравствуйте, открываются папкки с фильмом, а там пусто.

У меня после обновления все ОК.

39

Re: Filmix.net (2018.12.16)

koruy78 пишет:

Здравствуйте, открываются папкки с фильмом, а там пусто.

Ох уж этот Windows XP. Попробуйте этот прикреплённый подкаст.

Прикреплённые файлы сообщения

Filmix_xp.zip 16.5 kb, скачивалось 308 раз, начиная с 2017.01.21

Sony Bravia KDL-32CX523
Спасибо сказали: koruy781

40

Re: Filmix.net (2018.12.16)

WendyH пишет:

Ох уж этот Windows XP. Попробуйте этот прикреплённый подкаст.

Есть *YAHOO*

Philips 42pfl4007t/60

41

Re: Filmix.net (2018.12.16)

что-то опять не работает, ссылки не создает.

Toshiba 40TL963RB

42

Re: Filmix.net (2018.12.16)

miha.82 пишет:

что-то опять не работает, ссылки не создает.

Да, действительно, все ссылки на фильмы и Info-информацию пропади.
Обновление не помогает.

43

Re: Filmix.net (2018.12.16)

miha.82 пишет:

что-то опять не работает, ссылки не создает.

Починил.

Sony Bravia KDL-32CX523

44

Re: Filmix.net (2018.12.16)

baat пишет:

а что было, расскажешь?.. :)

Ну, я, такой, глядь - а запрос на /api/movies/player_data возвращает json, но без нужных данных.
Иду на сайт, включаю фильм и смотрю какие запросы были. Запрос на player_data с сайта тоже есть и тоже пустой. Значит, думаю, теперь он это делает (получает данные о ссылке и плейлистах) по-другому.
Посмотрел в html странице блок с классом "players", в котором во время загрузки появляется код с плеером. Сохранил по Ctrl-S страницу на диск со всеми скриптами и файлами, запустил поиск в этих файлах слово "players" и искал, где в javascript идёт манипуляции с этим классом. Так я нашёл файл play_fullstory.js.
Открыл страницу в Chrome, открыл инструменты разработчика, зашел в исходник templates/Filmix/media/js/play/play_fullstory.js и поставил точку останова в функции getDataPlayer и по шагам многократно выполнял код этой и других функций, пока не разобрался, откуда он берёт ссылки на видео или плейлисты.

В коде выяснил, что ссылки содержаться в объекте player_translations и начал искать, откуда они там появляются.
Оказалось, что за это отвечает функция drawTranslation:

+ открыть спойлер
function drawTranslation(){
    player_translations = {
        flash: {},
        html5: {},
        pl: ''
    }
    $('body').find('.translations li').each(function(index, val) {
        if (index == 0) {
            player_translations.pl = $(this).find('span').attr('data-pl');
        }
        player_translations['flash'][$(this).find('span').text()] = $(this).find('span').attr('data-trans-link');
        player_translations['html5'][$(this).find('span').text()] = $(this).find('span').attr('data-trans-link5');
    });
    checkDefaultPlayer();
}

В которой видно, что из свойства data-trans-link скрипт получает зашифрованные ссылки. А атрибут data-pl содержит "yes", если это ссылка на плейлист (там в других участках кода видно, как идёт проверка на наличие "yes" в этом свойстве).
Вот и всё. Теперь сканируем все перечисления вариантов перевода и берём из каждого значения из data-trans-link, расшифровываем и создаём ссылки.

Sony Bravia KDL-32CX523
Спасибо сказали: baat, lidars2

45

Re: Filmix.net (2018.12.16)

WendyH, ты это... не пугай так... я минут двадцать переваривал твой ответ... уже паниковать думал начинать... пока не посмотрел сам страницу...

мог бы и проще ответить... ссылку из /api/movies/player_data и /api/playlist/get_list убрали, запросы больше не нужны и вернули опять на страницу в шифрованном виде, как было до появления этой ереси с запросами...

46

Re: Filmix.net (2018.12.16)

прям боюсь вас перебить...))
Вообщем, спасибо за оперативность.

Toshiba 40TL963RB

47 (2017.02.15 08:25:08 отредактировано Orenburg)

Re: Filmix.net (2018.12.16)

WendyH пишет:

Починил.

WendyH.Некоторые фильмы где имеется выбор перевода не имеют ссылки. HMS пишет-Не возможно найти видео ID на странице фильма.(Пример Доктор Стрэндж (2016) и т.д)
*SCRATCH*

Skyway Droid.Использую подкасты с прямыми ссылками.Транскодированием не занимаюсь.
Спасибо сказали: WendyH1

48

Re: Filmix.net (2018.12.16)

Orenburg, действительно, поторопился и накосячил. Исправил.

Sony Bravia KDL-32CX523
Спасибо сказали: valerat67, slav672

49

Re: Filmix.net (2018.12.16)

WendyH пишет:

Orenburg, действительно, поторопился и накосячил. Исправил.

Ничего страшного,все мы люди куда-то спешим,иногда совершаем ошибки.Сейчас проверю подкаст. *DRINK*

Skyway Droid.Использую подкасты с прямыми ссылками.Транскодированием не занимаюсь.

50 (2017.02.15 16:07:18 отредактировано Orenburg)

Re: Filmix.net (2018.12.16)

WendyH. C подкастом всё окей  *BRAVO*

Skyway Droid.Использую подкасты с прямыми ссылками.Транскодированием не занимаюсь.

51

Re: Filmix.net (2018.12.16)

Доброй ночи. Что-то опять не работает, перестал ссылки создавать.

Toshiba 40TL963RB

52

Re: Filmix.net (2018.12.16)

miha.82 пишет:

Доброй ночи. Что-то опять не работает, перестал ссылки создавать.

Ага, спасибо. Починил и обновил подкаст на оф. форуме.

Sony Bravia KDL-32CX523
Спасибо сказали: slav671

53

Re: Filmix.net (2018.12.16)

У меня тут в личке попросили помочь переделать функцию getDataPlayer из подкаста на PHP. Решил ответить здесь, ибо я за доступность, публичность, просвещение.

Пара слов про защиту.

В общем, защита на сайте filmix.net вернулась к POST запросу /api/movies/player_data, где теперь нужно передавать значение параметра key.
Но это значение спрятано в массиве meta_key, который устанавливается в коде страницы видео. В этом массиве несколько (сегодня только три) значений и только одно из них правильное.

Вообще, изначально, когда я экспериментировал, то можно послать подряд все три запроса с этими значениями и выявить именно правильный путём проверки ответа - в правильном есть данные "translations":{"flash":{... , а в неправильном там пустой массив. И такой перебор прекрасно работает. Благо там всего три варианта и правильный может быть и первый.

Однако я захотел сделать "правильно" и разобрался с функцией определения нужного ключа. Зачем-то обфусцированные функции этого вычисления есть в
/templates/Filmix/media/public/js/play/<hash>_player_data.js и некоторые значения для этой функции в /templates/Filmix/media/vendor/vendor.js.

Функция определения ключа из массива на PHP выглядит вот так:

+ открыть спойлер
///////////////////////////////////////////////////////////////////////////////
// Значения переменных из /templates/Filmix/media/vendor/vendor.js?v2.2.5a
function getDataPlayer($meta_keys_str) { 
  $p=13; $n=11; $m=7; $km=18; $kn=27; $pk=0; $dp=29; $dn=25; $dm=22; 
  $max = 0; $selected_key = "";
  foreach (explode(',', $meta_keys_str) as $index => $key) {
    switch ($index) {
      case 0: $val = substr($key, $p, 2) . substr($key, $pk, 3) . substr($key, $dp, 1); break;
      case 1: $val = substr($key, $n, 3) . substr($key, $kn, 1) . substr($key, $dn, 2); break;
      case 2: $val = substr($key, $m, 1) . substr($key, $km, 3) . substr($key, $dm, 2); break;
    }
    $val = hexdec($val);
    $max = max($max, $val);
    if ($max==$val) $selected_key = $key;
  }
  return $selected_key;
}

Эта функция принимает строку из meta_key с перечисленными ключами через запятую и на выходе отдаёт нужный ключ.

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

Также важны http заголовки: Origin и "X-Requested-With: XMLHttpRequest" при POST запросе к /api/movies/player_data. Да! Также важны и cookies, полученные при обращении к странице фильма/сериала. Поэтому их тоже нужно устанавливать и хранить.

В общем тест этого всего можно посмотреть при исполнении вот такого вот скрипта:

+ открыть спойлер
<?php header('Content-type: text/html; charset=utf-8');

$url = "https://filmix.me/komedii/6749-semejnye-cennosti-2-sezon-2010.html";

$cookies = array(); // глобальная переменная для хранения кук
$headers = "Accept-Encoding: gzip, deflate\r\n" .
           "Accept: application/json, text/javascript, */*; q=0.01\r\n" .
           "Referer: $url\r\n" .
           "Origin: https://filmix.me\r\n" .
           "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n" .
           "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36\r\n";

$html = LoadPage($url, $headers);

// Получаем id
if (!preg_match('/data-id="(\d+)"/', $html, $matches)) die("Невозможно найти видео ID на странице фильма.");
$id = $matches[1];

// Ищем перечисление ключей. Берём всё, что между квадратных скобок после "meta_key ="
if (!preg_match("/meta_key\s*=\s*\[(.*?)\]/s", $html, $matches)) die("Не нашли значения meta_key.");
  
// Избавляемся от кавычек и пробелов
$keys = str_replace(["'", " "], "", $matches[1]);

// Получаем из нескольких ключей один правильный
$key  = getDataPlayer($keys);

$headers .= "X-Requested-With: XMLHttpRequest\r\n";

$data = LoadPage("https://filmix.me/api/movies/player_data", $headers, "POST", "post_id=$id&key=$key");

var_dump($key);

echo $data;

///////////////////////////////////////////////////////////////////////////////
// Значения переменных из /templates/Filmix/media/vendor/vendor.js?v2.2.5a
function getDataPlayer($meta_keys_str) { 
  $p=13; $n=11; $m=7; $km=18; $kn=27; $pk=0; $dp=29; $dn=25; $dm=22; 
  $max = 0; $selected_key = "";
  foreach (explode(',', $meta_keys_str) as $index => $key) {
    switch ($index) {
      case 0: $val = substr($key, $p, 2) . substr($key, $pk, 3) . substr($key, $dp, 1); break;
      case 1: $val = substr($key, $n, 3) . substr($key, $kn, 1) . substr($key, $dn, 2); break;
      case 2: $val = substr($key, $m, 1) . substr($key, $km, 3) . substr($key, $dm, 2); break;
    }
    $val = hexdec($val);
    $max = max($max, $val);
    if ($max==$val) $selected_key = $key;
  }
  return $selected_key;
}

///////////////////////////////////////////////////////////////////////////////
function LoadPage($url, $headers, $method="GET", $post_data="") {
  global $cookies;

  $coo = ""; // Если есть cookies - добавляем их значения в HTTP заголовки
  foreach($cookies as $key => $val) $coo .= $key."=".urlencode($val)."; ";
  if ($coo) $headers .= "Cookie: $coo\r\n";

  $options = array('http'=>array('method'=>$method, 'header'=>$headers, 'content'=>$post_data));
  $page    = file_get_contents($url, false, stream_context_create($options));
  // Перебираем заголовки ответа, чтобы установить ccokies или распаковать
  foreach($http_response_header as $c => $h) {
    if (stristr($h, 'content-encoding') and stristr($h, 'gzip')) {
      $page = gzdecode($page);      // распаковываем упакованный ответ
    } else if (preg_match('#^Set-Cookie:\s*([^;]+)#', $h, $matches)) {
      parse_str($matches[1], $tmp); // Вылавливаем установку cookies
      $cookies += $tmp;
    }
  }
  return $page;
}

Пример работы: http://wonky.lostcut.net/filmix.php

Sony Bravia KDL-32CX523

54

Re: Filmix.net (2018.12.16)

Добрый вечер. После последнего обновления у меня везде "видео не доступно". Хотелось бы понять в чем проблема, может у меня?

Toshiba 40TL963RB

55

Re: Filmix.net (2018.12.16)

miha.82 пишет:

Добрый вечер. После последнего обновления у меня везде "видео не доступно". Хотелось бы понять в чем проблема, может у меня?

Не, там или они с защитой что-то мутят или просто какие-то переделки. У меня и на сайте через браузер через раз. Иногда просто черный экран.
У них во вконтакте там сегодня сообщения посыпались с проблемами. Подождём.

Sony Bravia KDL-32CX523

56

Re: Filmix.net (2018.12.16)

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

Sony Bravia KDL-32CX523

57

Re: Filmix.net (2018.12.16)

WendyH пишет:

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

Верно замечено,я просто добавил разделов.

"Хорошо написанная программа — это программа, написанная 2 раза" :-X
Спасибо сказали: Hunter, Dr.Dru2

58

Re: Filmix.net (2018.12.16)

Создает только пустые папки

59

Re: Filmix.net (2018.12.16)

PriZmo пишет:

Создает только пустые папки

Подкаст рабочий,возможно скачена нерабочая версия.
Вот рабочий вариант.

Прикреплённые файлы сообщения

Filmix.hdf 942.78 kb, скачивалось 237 раз, начиная с 2017.04.29

"Хорошо написанная программа — это программа, написанная 2 раза" :-X
Спасибо сказали: Hunter, Dr.Dru2

60

Re: Filmix.net (2018.12.16)

PriZmo пишет:

Создает только пустые папки

Подтвердите, именно по ссылке на оф. форуме подкаст у вас не работает?
Эта ссылка указана в первом сообщении темы. Проверил, вроде работает.

Sony Bravia KDL-32CX523