Genre: ".$highlight['category']; if(isset($highlight['language'])) $meta[] = "Language: ".get_language($highlight['language']); if(isset($highlight['year'])) $meta[] = "Released: ".$highlight['year']; if(isset($highlight['rating'])) $meta[] = "Rating: ".movie_star_rating($highlight['rating'])." (".$highlight['rating']." / 10)"; if(isset($highlight['mpa_rating'])) $meta[] = "MPA Rating: ".movie_mpa_rating($highlight['mpa_rating']); $output = "
"; $output .= "
"; $output .= "

".$highlight['title']."

"; if(isset($highlight['summary'])) { $output .= "

".$highlight['summary']."

"; } $output .= "

Search on GoosleFind more Magnet links

"; if(!empty($meta)) { $output .= "

".implode('
', $meta)."

"; } unset($meta); // List downloads $output .= "

Downloads:

"; $output .= "

"; foreach($highlight['magnet_links'] as $magnet) { if(isset($magnet['quality'])) $magnet_meta[] = $magnet['quality']; if(isset($magnet['audio'])) $magnet_meta[] = $magnet['audio']; if(isset($magnet['type'])) $magnet_meta[] = $magnet['type']; $magnet_meta[] = human_filesize($magnet['filesize']); $output .= ""; unset($magnet_meta); } $output .= "

"; $output .= "

Close

"; $output .= "
"; $output .= "
"; unset($highlight, $magnet, $magnet_meta); return $output; } /*-------------------------------------- // Detect NSFW results by keywords in the title // True = nsfw, false = not nsfw --------------------------------------*/ function detect_nsfw($string) { $string = strtolower($string); // Forbidden terms //Basic pattern: ^cum[-_\s]?play(ing|ed|s)? $nsfw_keywords = array( '/(deepthroat|gangbang|cowgirl|dildo|fuck|cuckold|anal|hump|finger|pegg|fist|ballbust|twerk|dogg|squirt|dick|orgasm)(ing|ed|s)?/', '/(yaoi|porn|gonzo|erotica|blowbang|bukkake|gokkun|softcore|hardcore|latex|lingerie|interracial|bdsm|chastity|kinky|bondage|shibari|hitachi|upskirt)/', '/(cock|creampie|cameltoe|enema|nipple|sybian|vibrator|cougar|threesome|foursome|pornstar|escort)(s)?/', '/(cmnf|cfnm|pov|cbt|bbw|pawg|ssbbw|joi|cei)/', '/(blow|rim|foot|hand)job(s)?/', '/(org|puss)(y|ies)\s?/', '/hentai(ed)?/', '/jerk(ing)?[-_\s]?off/', '/tw(i|u)nk(s)?/', '/cum(bot|ming|s)?/', '/porn(hub)?|xhamster|youporn|faphouse|sexually(\s)?broken|adulttime|transfixed|tsseduction|waterbondage|fuckingmachines|monstersofcock|deeplush|hotandmean|onlyfans|fansly|manyvids|transangels|premiumhdv|genderx|evil(\s)?angel|thetrainingofo|rocco(\s)?siffredi|electrosluts|ultimatesurrender|whippedass|insex|herlimit|analdays|bangbus|faketaxi|horrorporn|neighboraffair|naughtybookworms|sexandsubmission|housewife1on1|devicebondage|tspussyhunters|everythingbutt|theupperfloor|public(\s)?disgrace|fuckedandbound|alterotic|divinebitches|wiredpussy/', '/(m|g)ilf(s)?/', '/clit(oris|s)?/', '/tit(ties|s)/', '/strap[-_\s]?on(ed|s)?/', '/webcam(ming|s)?/', '/doggy(style)?/', '/(masturbat|penetrat)(e|ion|ing|ed)/', '/face(fuck|sit)?(ing|ting|ed|s)?/', '/(gap|scissor)(e|ing|ed)?/', '/(fetish|penis|ass)(es)?/', '/(fem|lez|male)dom/', '/futa(nari)?/', '/(slave|pet)[-_\s]?play(ing|ed|s)?/', '/submissive(d|s)?/', '/tied[-_\s]?(up)?/', '/glory[-_\s]?hole(d|s)?/', '/swing(er|ers|ing)?/', ); // Replace everything but alphanumeric with a space $string = preg_replace('/\s{2,}|[^a-z0-9]+/', ' ', $string); preg_replace($nsfw_keywords, '*', $string, -1 , $count); return ($count > 0) ? true : false; } /*-------------------------------------- // Depect video quality (720p/1080i etc.) // Try to standardize terms --------------------------------------*/ function find_video_quality($string) { $match = (preg_match('/[0-9]{3,4}[pi]{1}/i', $string, $match)) ? $match[0] : null; if(empty($match)) $match = (preg_match('/(3d|4k|5k|8k)/i', $string, $match)) ? $match[0] : null; if(!is_null($match)) { $match = trim(strtolower($match)); if($match == '3d') $match = '3D'; if($match == '4k') $match = '2160p (4K)'; if($match == '5k') $match = '2880p (5K)'; if($match == '8k') $match = '4320p (8K)'; } return $match; } /*-------------------------------------- // Detect the video codec // Try to standardize terms --------------------------------------*/ function find_video_codec($string) { $return = array(); // H.265/HEVC $codec = (preg_match('/\bhevc|(h|x) ?265\b/i', $string, $codec)) ? $codec[0] : null; // H.264/AVC if(empty($codec)) $codec = (preg_match('/\bavc|(h|x) ?264\b/i', $string, $codec)) ? $codec[0] : null; // DIVx/xVID if(empty($codec)) $codec = (preg_match('/\bx?(vid|div)x?\b/i', $string, $codec)) ? $codec[0] : null; // Other if(empty($codec)) $codec = (preg_match('/\bvp9|av1\b/i', $string, $codec)) ? $codec[0] : null; if(!is_null($codec)) { $codec = trim(strtolower($codec)); if($codec == 'hevc' || $codec == 'h265') $codec = 'x265'; // Maybe it should be h.265? if($codec == 'avc' || $codec == 'h264') $codec = 'x264'; // Maybe it should be h.264? if($codec == 'xvid') $codec = 'XviD'; if($codec == 'divx') $codec = 'DivX'; if($codec == 'av1') $codec = 'AV1'; if($codec == 'vp9') $codec = 'VP9'; $return[] = $codec; } // Maybe a bitrate? $bitrate = (preg_match('/\b(8|10|12)-?bit\b/i', $string, $bitrate)) ? $bitrate[0] : null; if(!is_null($bitrate)) { $return[] = trim(strtolower($bitrate)); } // Maybe HDR? $hdr = (preg_match('/\bhdr|uhd|imax\b/i', $string, $hdr)) ? $hdr[0] : null; if(!is_null($hdr)) { $return[] = trim(strtoupper($hdr)); } if(count($return) > 0) return implode(' ', $return); return null; } /*-------------------------------------- // Detect audio type // Try to standardize terms --------------------------------------*/ function find_audio_codec($string) { $return = array(); // Common movie codecs $codec = (preg_match('/\b(dts(-?hd)?|aac|e?ac3|dolby([ -]?pro[ -]?logic i{1,2})?|truehd|ddp|dd)/i', $string, $audio)) ? $audio[0] : null; // Common music codecs if(empty($codec)) $codec = (preg_match('/\b(flac|wav|mp3|ogg|pcm|wma|aiff)\b/i', $string, $codec)) ? $codec[0] : null; if(!is_null($codec)) { $codec = trim(strtoupper($codec)); if($codec == 'EAC3' || $codec == 'DDPA' || $codec == 'DDP') $codec = 'Dolby Digital Plus'; if($codec == 'DD') $codec = 'Dolby Digital'; if($codec == 'DOLBY PRO LOGIC I') $codec = 'Dolby Pro Logic I'; if($codec == 'DOLBY PRO LOGIC II') $codec = 'Dolby Pro Logic II'; if($codec == 'DTSHD') $codec = 'DTS-HD'; if($codec == 'TRUEHD') $codec = 'TrueHD'; $return[] = $codec; } // Try to add channels $channels = (preg_match('/(2|5|7|9)[ \.](0|1|2)\b/i', $string, $channels)) ? $channels[0] : null; if(empty($channels)) $channels = (preg_match('/(2|6|8) ?(ch|channel)/i', $string, $channels)) ? $channels[0] : null; if(!is_null($channels)) { $return[] = trim(str_replace(' ', '.', strtoupper($channels))); } // Try to add bitrate $bitrate = (preg_match('/[0-9]{2,3} ?kbp?s/i', $string, $bitrate)) ? $bitrate[0] : null; if(!is_null($bitrate)) { $return[] = trim(str_replace('kbs', 'kbps', str_replace(' ', '', strtolower($bitrate)))); } // Maybe sub-codec? $codec2 = (preg_match('/\batmos\b/i', $string, $codec2)) ? $codec2[0] : null; if(!is_null($codec2)) { $return[] = ucfirst(trim(strtolower($codec2))); } if(count($return) > 0) return implode(' ', $return); return null; } /*-------------------------------------- // Create visual star rating for some magnet results --------------------------------------*/ function movie_star_rating($rating) { $rating = round($rating); $star_rating = ''; for($i = 1; $i <= 10; $i++) { $star_rating .= ($i <= $rating) ? "" : ""; } return $star_rating; } /*-------------------------------------- // Create visual MPA rating for some magnet results --------------------------------------*/ function movie_mpa_rating($rating) { // As described here: https://en.wikipedia.org/wiki/Motion_Picture_Association_film_rating_system if($rating == "G") { $rating = "G - General AudiencesSuitable for all ages."; } else if("PG") { $rating = "PG - Parental Guidance SuggestedMay not be suitable for children."; } else if("PG-13") { $rating = "PG-13 - Parents Strongly CautionedMay be inappropriate for children under 13."; } else if("R") { $rating = "R - RestrictedPersons under 17 require accompanying adult."; } else if("NC-17") { $rating = "NC-17 - Adults OnlyNot suitable for persons under 17."; } else { $rating = "".$rating.""; } return $rating; } /*-------------------------------------- // Return the language based on the ISO name --------------------------------------*/ function get_language($string) { $languages = array("ab" => "Abkhaz", "aa" => "Afar", "af" => "Afrikaans", "ak" => "Akan", "sq" => "Albanian", "am" => "Amharic", "ar" => "Arabic", "an" => "Aragonese", "hy" => "Armenian", "as" => "Assamese", "av" => "Avaric", "ae" => "Avestan", "ay" => "Aymara", "az" => "Azerbaijani", "bm" => "Bambara", "ba" => "Bashkir", "eu" => "Basque", "be" => "Belarusian", "bn" => "Bengali", "bh" => "Bihari", "bi" => "Bislama", "bs" => "Bosnian", "br" => "Breton", "bg" => "Bulgarian", "my" => "Burmese", "ca" => "Catalan", "ch" => "Chamorro", "ce" => "Chechen", "ny" => "Nyanja", "zh" => "Chinese", "cn" => "Chinese", "cv" => "Chuvash", "kw" => "Cornish", "co" => "Corsican", "cr" => "Cree", "hr" => "Croatian", "cs" => "Czech", "da" => "Danish", "dv" => "Maldivian;", "nl" => "Dutch", "en" => "English", "eo" => "Esperanto", "et" => "Estonian", "ee" => "Ewe", "fo" => "Faroese", "fj" => "Fijian", "fi" => "Finnish", "fr" => "French", "ff" => "Fulah", "gl" => "Galician", "ka" => "Georgian", "de" => "German", "el" => "Greek, Modern", "gn" => "Guaraní", "gu" => "Gujarati", "ht" => "Haitian Creole", "ha" => "Hausa", "he" => "Hebrew (modern)", "hz" => "Herero", "hi" => "Hindi", "ho" => "Hiri Motu", "hu" => "Hungarian", "ia" => "Interlingua", "id" => "Indonesian", "ie" => "Interlingue", "ga" => "Irish", "ig" => "Igbo", "ik" => "Inupiaq", "io" => "Ido", "is" => "Icelandic", "it" => "Italian", "iu" => "Inuktitut", "ja" => "Japanese", "jv" => "Javanese", "kl" => "Kalaallisut", "kn" => "Kannada", "kr" => "Kanuri", "ks" => "Kashmiri", "kk" => "Kazakh", "km" => "Khmer", "ki" => "Kikuyu", "rw" => "Kinyarwanda", "ky" => "Kirghiz, Kyrgyz", "kv" => "Komi", "kg" => "Kongo", "ko" => "Korean", "ku" => "Kurdish", "kj" => "Kwanyama", "la" => "Latin", "lb" => "Luxembourgish", "lg" => "Luganda", "li" => "Limburgish, Limburgan, Limburger", "ln" => "Lingala", "lo" => "Lao", "lt" => "Lithuanian", "lu" => "Luba-Katanga", "lv" => "Latvian", "gv" => "Manx", "mk" => "Macedonian", "mg" => "Malagasy", "ms" => "Malay", "ml" => "Malayalam", "mt" => "Maltese", "mi" => "Māori", "mr" => "Marathi", "mh" => "Marshallese", "mn" => "Mongolian", "na" => "Nauru", "nv" => "Navajo, Navaho", "nb" => "Norwegian Bokmål", "nd" => "North Ndebele", "ne" => "Nepali", "ng" => "Ndonga", "nn" => "Norwegian Nynorsk", "no" => "Norwegian", "ii" => "Nuosu", "nr" => "South Ndebele", "oc" => "Occitan", "oj" => "Ojibwe, Ojibwa", "cu" => "Old Slavonic", "om" => "Oromo", "or" => "Oriya", "os" => "Ossetian", "pa" => "Punjabi", "pi" => "Pāli", "fa" => "Persian", "pl" => "Polish", "ps" => "Pashto, Pushto", "pt" => "Portuguese", "qu" => "Quechua", "rm" => "Romansh", "rn" => "Kirundi", "ro" => "Romanian", "ru" => "Russian", "sa" => "Sanskrit", "sc" => "Sardinian", "sd" => "Sindhi", "se" => "Northern Sami", "sm" => "Samoan", "sg" => "Sango", "sr" => "Serbian", "gd" => "Gaelic", "sn" => "Shona", "si" => "Sinhala", "sk" => "Slovak", "sl" => "Slovene", "so" => "Somali", "st" => "Southern Sotho", "es" => "Spanish", "su" => "Sundanese", "sw" => "Swahili", "ss" => "Swati", "sv" => "Swedish", "ta" => "Tamil", "te" => "Telugu", "tg" => "Tajik", "th" => "Thai", "ti" => "Tigrinya", "bo" => "Tibetan Standard, Tibetan, Central", "tk" => "Turkmen", "tl" => "Tagalog", "tn" => "Tswana", "to" => "Tonga", "tr" => "Turkish", "ts" => "Tsonga", "tt" => "Tatar", "tw" => "Twi", "ty" => "Tahitian", "ug" => "Uighur, Uyghur", "uk" => "Ukrainian", "ur" => "Urdu", "uz" => "Uzbek", "ve" => "Venda", "vi" => "Vietnamese", "vo" => "Volapük", "wa" => "Walloon", "cy" => "Welsh", "wo" => "Wolof", "fy" => "Western Frisian", "xh" => "Xhosa", "yi" => "Yiddish", "yo" => "Yoruba", "za" => "Zhuang, Chuang"); return $languages[$string]; } /*-------------------------------------- // Detect TV show Seasons and Episodes in results --------------------------------------*/ function is_season_or_episode($search_query, $result_query) { // Check if you searched for a tv show and result is a tv show if(preg_match_all('/.+?(?=S[0-9]{1,4}E[0-9]{1,3})/', strtoupper($search_query), $match_query) && preg_match_all('/.+?(?=S[0-9]{1,4}E[0-9]{1,3})/', strtoupper($result_query), $match_result)) { // If a match: [0][0] = Season and [0][1] = Episode if($match_query[0][0] != $match_result[0][0] || (array_key_exists(1, $match_query[0]) && $match_query[0][1] != $match_result[0][1])) { return false; // Not the tv show (episode) you're looking for } } return true; } ?>