Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. function get_videolinks_pornhub_script($pornhub_contents)
  2. {
  3. // Очистим всю страницу от переводов строки
  4. $pornhub_contents = str_replace("\n", "", $pornhub_contents);
  5.  
  6. preg_match("!player_mp4_seek = \"(ms|start)\";(.+?)loadScriptUniqueId!", $pornhub_contents, $matches);
  7.  
  8. if (!isset($matches[2]))
  9. {
  10. return NULL;
  11. }
  12.  
  13. // Получим основную часть скрипта
  14. $script_content = $matches[2];
  15.  
  16. // Очистим скрипт от комментариев
  17. $script_content = preg_replace('/(\/\*.+?\*\/)/', "", $script_content);
  18.  
  19. // Разобьем скрипт на мини-скрипты, в каждом из которых содержится список переменных, и правило склейки переменных для получения урла определенного качества
  20. $arr_scripts = array();
  21. while (true)
  22. {
  23. preg_match('/var .+?;flashvars_\d{1,20}.+?;/', $script_content, $matches);
  24. if (!isset($matches[0]))
  25. {
  26. break;
  27. }
  28. $cur_script = $matches[0];
  29. $arr_scripts[] = $cur_script;
  30. $script_content = str_replace($cur_script, '', $script_content);
  31. }
  32.  
  33. if (count($arr_scripts) == 0)
  34. {
  35. return NULL;
  36. }
  37.  
  38. $arr_quality_link = array(); // Итоговый массив "качество" => "ссылка"
  39. foreach ($arr_scripts as $script)
  40. { // Цикл по мини-скриптам
  41. // Очистим текущий скрипт от flashvars_
  42. $script = preg_replace('/((var )?flashvars_.+?;)/', "", $script);
  43.  
  44. // Получим правила составления урла и качество этого урла
  45. preg_match('/var quality_(\d{1,5})p=(.+?);/', $script, $matches);
  46. if (!isset($matches[1]) || !isset($matches[2]))
  47. {
  48. continue;
  49. }
  50.  
  51. $cur_quality = $matches[1];
  52. $cur_chain_vars = $matches[2];
  53.  
  54. // Очистим скрипт от quality_777p (после чего остается только список переменных с кусочками строки)
  55. $script = preg_replace('/((var )?quality_\d{1,4}p.+?;)/', "", $script);
  56.  
  57. // Получим список с переменными которые содержат кусочки строк
  58. $arr_vars_str = explode(';', $script);
  59.  
  60. for ($i = 0;$i < count($arr_vars_str);$i++)
  61. {
  62. $arr_vars_str[$i] = trim($arr_vars_str[$i]); // очистка пробелов спереди и сзади
  63. $arr_vars_str[$i] = preg_replace('/^var /', '', $arr_vars_str[$i]); // удаление var
  64. $arr_vars_str[$i] = str_replace(' ', '', $arr_vars_str[$i]); // очистка оставшихся пробелов
  65. preg_match("!^(.+?)=(.+?)$!", $arr_vars_str[$i], $matches);
  66. if (!isset($matches[0]))
  67. {
  68. continue;
  69. }
  70. $cur_name = $matches[1];
  71. $cur_value = $matches[2];
  72.  
  73. $arr_values_pieces = explode('+', $cur_value);
  74. $cur_value = '';
  75. foreach ($arr_values_pieces as $value_piece)
  76. {
  77. $value_piece = str_replace('"', '', $value_piece); // очистка ковычек
  78. $cur_value .= $value_piece;
  79. }
  80.  
  81. $arr_var_value[$cur_name] = $cur_value;
  82. }
  83.  
  84. // Склейка переменных в соответствии с правилом
  85. $cur_chain_vars = str_replace(' ', '', $cur_chain_vars);
  86. $arr_chain_vars = explode('+', $cur_chain_vars);
  87. $cur_link = '';
  88. foreach ($arr_chain_vars as $chain_var)
  89. {
  90. $cur_link .= $arr_var_value[$chain_var];
  91. }
  92.  
  93. if (strpos($cur_link, '&clientip=') !== false || strpos($cur_link, '&ip=') !== false)
  94. {
  95. $ip_binding = true;
  96. return NULL;
  97. }
  98.  
  99. if (count($arr_quality_link) == 0)
  100. {
  101. array_push($arr_quality_link, array(
  102. 'q' => 0,
  103. 'url' => $cur_link
  104. ));
  105. }
  106. array_push($arr_quality_link, array(
  107. 'q' => $cur_quality,
  108. 'url' => $cur_link
  109. ));
  110. }
  111.  
  112. if (count($arr_quality_link) == 0)
  113. {
  114. return false;
  115. }
  116.  
  117. return $arr_quality_link;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement