Advertisement
mousemaster

vclub-fix

Mar 17th, 2017
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.43 KB | None | 0 0
  1. <?php
  2.  
  3. ##################################################################
  4. #
  5. #
  6. # This script require ffmpeg (ffprobe) and shell_exec()
  7. #
  8. #
  9. ##################################################################
  10.  
  11. // config section
  12.  
  13. $host='localhost';
  14. $user = 'stalker';
  15. $password = '1';
  16. $db = 'stalker_db';
  17. $charset = 'utf8';
  18.  
  19. ##################################################################
  20.  
  21. function lang_iso639_2t_to_1( $iso639_2t ) {
  22. static $language_codes = array(
  23. 'aar'=>'aa', // Afar
  24. 'abk'=>'ab', // Abkhazian
  25. 'afr'=>'af', // Afrikaans
  26. 'aka'=>'ak', // Akan
  27. 'amh'=>'am', // Amharic
  28. 'ara'=>'ar', // Arabic
  29. 'arg'=>'an', // Aragonese
  30. 'asm'=>'as', // Assamese
  31. 'ava'=>'av', // Avaric
  32. 'aym'=>'ay', // Aymara
  33. 'aze'=>'az', // Azerbaijani
  34. 'bak'=>'ba', // Bashkir
  35. 'bam'=>'bm', // Bambara
  36. 'bel'=>'be', // Belarusian
  37. 'ben'=>'bn', // Bengali
  38. 'bis'=>'bi', // Bislama
  39. 'bos'=>'bs', // Bosnian
  40. 'bre'=>'br', // Breton
  41. 'bul'=>'bg', // Bulgarian
  42. 'cat'=>'ca', // Catalan
  43. 'ces'=>'cs', // Czech
  44. 'cha'=>'ch', // Chamorro
  45. 'che'=>'ce', // Chechen
  46. 'chv'=>'cv', // Chuvash
  47. 'cor'=>'kw', // Cornish
  48. 'cos'=>'co', // Corsican
  49. 'cre'=>'cr', // Cree
  50. 'cym'=>'cy', // Welsh
  51. 'dan'=>'da', // Danish
  52. 'deu'=>'de', // German
  53. 'div'=>'dv', // Dhivehi
  54. 'dzo'=>'dz', // Dzongkha
  55. 'ell'=>'el', // Modern Greek (1453-)
  56. 'eng'=>'en', // English
  57. 'est'=>'et', // Estonian
  58. 'eus'=>'eu', // Basque
  59. 'ewe'=>'ee', // Ewe
  60. 'fao'=>'fo', // Faroese
  61. 'fas'=>'fa', // Persian
  62. 'fij'=>'fj', // Fijian
  63. 'fin'=>'fi', // Finnish
  64. 'fra'=>'fr', // French
  65. 'fry'=>'fy', // Western Frisian
  66. 'ful'=>'ff', // Fulah
  67. 'ger'=>'de', // German bibliographic
  68. 'gla'=>'gd', // Scottish Gaelic
  69. 'gle'=>'ga', // Irish
  70. 'glg'=>'gl', // Galician
  71. 'glv'=>'gv', // Manx
  72. 'grn'=>'gn', // Guarani
  73. 'guj'=>'gu', // Gujarati
  74. 'hat'=>'ht', // Haitian
  75. 'hau'=>'ha', // Hausa
  76. 'heb'=>'he', // Hebrew
  77. 'her'=>'hz', // Herero
  78. 'hin'=>'hi', // Hindi
  79. 'hmo'=>'ho', // Hiri Motu
  80. 'hrv'=>'hr', // Croatian
  81. 'hun'=>'hu', // Hungarian
  82. 'hye'=>'hy', // Armenian
  83. 'ibo'=>'ig', // Igbo
  84. 'iii'=>'ii', // Sichuan Yi
  85. 'iku'=>'iu', // Inuktitut
  86. 'ind'=>'id', // Indonesian
  87. 'ipk'=>'ik', // Inupiaq
  88. 'isl'=>'is', // Icelandic
  89. 'ita'=>'it', // Italian
  90. 'jav'=>'jv', // Javanese
  91. 'jpn'=>'ja', // Japanese
  92. 'kal'=>'kl', // Kalaallisut
  93. 'kan'=>'kn', // Kannada
  94. 'kas'=>'ks', // Kashmiri
  95. 'kat'=>'ka', // Georgian
  96. 'kau'=>'kr', // Kanuri
  97. 'kaz'=>'kk', // Kazakh
  98. 'khm'=>'km', // Central Khmer
  99. 'kik'=>'ki', // Kikuyu
  100. 'kin'=>'rw', // Kinyarwanda
  101. 'kir'=>'ky', // Kirghiz
  102. 'kom'=>'kv', // Komi
  103. 'kon'=>'kg', // Kongo
  104. 'kor'=>'ko', // Korean
  105. 'kua'=>'kj', // Kuanyama
  106. 'kur'=>'ku', // Kurdish
  107. 'lao'=>'lo', // Lao
  108. 'lav'=>'lv', // Latvian
  109. 'lim'=>'li', // Limburgan
  110. 'lin'=>'ln', // Lingala
  111. 'lit'=>'lt', // Lithuanian
  112. 'ltz'=>'lb', // Luxembourgish
  113. 'lub'=>'lu', // Luba-Katanga
  114. 'lug'=>'lg', // Ganda
  115. 'mah'=>'mh', // Marshallese
  116. 'mal'=>'ml', // Malayalam
  117. 'mar'=>'mr', // Marathi
  118. 'mkd'=>'mk', // Macedonian
  119. 'mlg'=>'mg', // Malagasy
  120. 'mlt'=>'mt', // Maltese
  121. 'mon'=>'mn', // Mongolian
  122. 'mri'=>'mi', // Maori
  123. 'msa'=>'ms', // Malay (macrolanguage)
  124. 'mya'=>'my', // Burmese
  125. 'nau'=>'na', // Nauru
  126. 'nav'=>'nv', // Navajo
  127. 'nbl'=>'nr', // South Ndebele
  128. 'nde'=>'nd', // North Ndebele
  129. 'ndo'=>'ng', // Ndonga
  130. 'nep'=>'ne', // Nepali
  131. 'nld'=>'nl', // Dutch
  132. 'nno'=>'nn', // Norwegian Nynorsk
  133. 'nob'=>'nb', // Norwegian BokmÎl
  134. 'nor'=>'no', // Norwegian
  135. 'nya'=>'ny', // Nyanja
  136. 'oci'=>'oc', // Occitan (post 1500)
  137. 'oji'=>'oj', // Ojibwa
  138. 'ori'=>'or', // Oriya
  139. 'orm'=>'om', // Oromo
  140. 'oss'=>'os', // Ossetian
  141. 'pan'=>'pa', // Panjabi
  142. 'pol'=>'pl', // Polish
  143. 'por'=>'pt', // Portuguese
  144. 'pus'=>'ps', // Pushto
  145. 'que'=>'qu', // Quechua
  146. 'roh'=>'rm', // Romansh
  147. 'ron'=>'ro', // Romanian
  148. 'run'=>'rn', // Rundi
  149. 'rus'=>'ru', // Russian
  150. 'sag'=>'sg', // Sango
  151. 'sin'=>'si', // Sinhala
  152. 'slk'=>'sk', // Slovak
  153. 'slv'=>'sl', // Slovenian
  154. 'sme'=>'se', // Northern Sami
  155. 'smo'=>'sm', // Samoan
  156. 'sna'=>'sn', // Shona
  157. 'snd'=>'sd', // Sindhi
  158. 'som'=>'so', // Somali
  159. 'sot'=>'st', // Southern Sotho
  160. 'spa'=>'es', // Spanish
  161. 'sqi'=>'sq', // Albanian
  162. 'srd'=>'sc', // Sardinian
  163. 'srp'=>'sr', // Serbian
  164. 'ssw'=>'ss', // Swati
  165. 'sun'=>'su', // Sundanese
  166. 'swa'=>'sw', // Swahili
  167. 'swe'=>'sv', // Swedish
  168. 'tah'=>'ty', // Tahitian
  169. 'tam'=>'ta', // Tamil
  170. 'tat'=>'tt', // Tatar
  171. 'tel'=>'te', // Telugu
  172. 'tgk'=>'tg', // Tajik
  173. 'tgl'=>'tl', // Tagalog
  174. 'tha'=>'th', // Thai
  175. 'tir'=>'ti', // Tigrinya
  176. 'ton'=>'to', // Tonga (Tonga Islands)
  177. 'tsn'=>'tn', // Tswana
  178. 'tso'=>'ts', // Tsonga
  179. 'tuk'=>'tk', // Turkmen
  180. 'tur'=>'tr', // Turkish
  181. 'twi'=>'tw', // Twi
  182. 'uig'=>'ug', // Uighur
  183. 'ukr'=>'uk', // Ukrainian
  184. 'urd'=>'ur', // Urdu
  185. 'uzb'=>'uz', // Uzbek
  186. 'ven'=>'ve', // Venda
  187. 'vie'=>'vi', // Vietnamese
  188. 'wln'=>'wa', // Walloon
  189. 'wol'=>'wo', // Wolof
  190. 'xho'=>'xh', // Xhosa
  191. 'yid'=>'yi', // Yiddish
  192. 'yor'=>'yo', // Yoruba
  193. 'zha'=>'za', // Zhuang
  194. 'zho'=>'zh', // Chinese
  195. 'zul'=>'zu', // Zulu
  196. 'und'=>'en'
  197. );
  198. return $language_codes[$iso639_2t];
  199. }
  200.  
  201. function vres2q($vres){
  202. static $re2q=array(
  203. '240'=>'1',
  204. '320'=>'2',
  205. '480'=>'3',
  206. '576'=>'4',
  207. '720'=>'5',
  208. '1080'=>'6',
  209. '2160'=>'7'
  210. );
  211. return $re2q[$vres];
  212. }
  213.  
  214. function getres($vres) {
  215. $arr=array(240,320,480,576,720,1080,2160);
  216. $closest = null;
  217. foreach ($arr as $item) {
  218. if ($closest === null || abs($vres - $closest) > abs($item - $vres)) {
  219. $closest = $item;
  220. }
  221. }
  222. return $closest;
  223. }
  224.  
  225. $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
  226. $opt = array(
  227. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  228. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  229. );
  230.  
  231. $pdo = new PDO($dsn, $user, $password);
  232.  
  233. $video = $pdo->query("SELECT id,rtsp_url,added FROM video WHERE rtsp_url<>'' AND status=1");
  234.  
  235. while ($row = $video->fetch())
  236. {
  237. $lang='';
  238. $url=str_replace("ffmpeg ", "", $row['rtsp_url']);
  239.  
  240. $video_info = json_decode(shell_exec("ffprobe -v quiet -print_format json -show_streams \"".$url."\""));
  241.  
  242. if (isset($video_info->streams)){
  243. foreach ($video_info->streams as $strm){
  244. if($strm->codec_type=='video'){
  245. $vres=$strm->height;
  246. }
  247. if($strm->codec_type=='audio'){
  248. if (isset($strm->tags->language)){
  249. $lang[]=lang_iso639_2t_to_1($strm->tags->language);
  250. }
  251. else{
  252. $lang[]='en';
  253. }
  254. }
  255. }
  256.  
  257. }
  258. else{
  259. $vres='720';
  260. if (strpos($row['rtsp_url'], 'gujrati')){
  261. $lang[]=lang_iso639_2t_to_1('guj');
  262. }
  263. elseif (strpos($row['rtsp_url'], 'mala')){
  264. $lang[]=lang_iso639_2t_to_1('mal');
  265. }
  266. elseif (strpos($row['rtsp_url'], 'telegu')){
  267. $lang[]=lang_iso639_2t_to_1('tel');
  268. }
  269. elseif (strpos($row['rtsp_url'], 'bangla')){
  270. $lang[]=lang_iso639_2t_to_1('ben');
  271. }
  272. elseif (strpos($row['rtsp_url'], 'punjabi')){
  273. $lang[]=lang_iso639_2t_to_1('pan');
  274. }
  275. elseif (strpos($row['rtsp_url'], 'tamil')){
  276. $lang[]=lang_iso639_2t_to_1('tam');
  277. }
  278. elseif (strpos($row['rtsp_url'], 'hindi')){
  279. $lang[]=lang_iso639_2t_to_1('hin');
  280. }
  281. else{
  282. $lang[]=lang_iso639_2t_to_1('eng');
  283. }
  284. }
  285.  
  286. $sql = "INSERT IGNORE INTO video_series_files (video_id,file_type,protocol,url,languages,quality,accessed,status,date_add,date_modify) values (?,'video','custom',?,?,?,'1','1',?,NOW()) ";
  287. $sth = $pdo->prepare($sql);
  288. $sth->execute(array($row['id'],$row['rtsp_url'],serialize($lang),vres2q(getres($vres)),$row['added']));
  289.  
  290. echo "video_id:".$row['id'].", url:".$row['rtsp_url'].", languages:".serialize($lang).", quality:".vres2q(getres($vres)).";\r\n";
  291.  
  292.  
  293. }
  294.  
  295.  
  296. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement