index.html veya index.php
<!DOCTYPE html> <html> <head> <title>Telegram</title> <link href="https://fonts.googleapis.com/css?family=Playfair+Display:400,500,600&subset=latin-ext" rel="stylesheet"/> <link rel="stylesheet" type="text/css" href="https://unpkg.com/nprogress@0.2.0/nprogress.css"> <style type="text/css"> body{font-family:'Playfair Display';font-size:14px;background-color:#f4f4f4} .box{max-width:760px;margin:0 auto;box-shadow:0 2px 4px 0 rgb(186 186 186 / 50%);background-color:#fff;border-radius:4px;margin-bottom:1em} .box.hide{display:none} .box-title{padding:15px 35px;border-bottom:1px solid #ddd;font-weight:500} .box-content{padding:35px} .box-info{border-top:1px solid #ddd;padding:15px 35px;font-size:12px} form .input{margin-bottom:1em} form .input label{display:block;font-weight:600;margin-bottom:5px} form .input input, form .input textarea{box-sizing:border-box;font:inherit;border:0;font-size:13px;border:1px solid #ddd;border-radius:3px;height:38px;border-radius:3px;padding:10px 15px;display:block;width:100%} form .input textarea{height:inherit} form .input input:focus, form .input textarea:focus{outline:none} form .input small{opacity:.5;font-size:12px} form button{box-sizing:border-box;font-family:inherit;font-size:13px;border-radius:4px;padding:10px 15px;border:0;color:#fff;font-weight:500;cursor:pointer;width:100%;background-color:#000;opacity:.2;cursor:not-allowed} form button.active{opacity:1;cursor:pointer;background-color:#1ABC9C} .channel{display:flex;margin-bottom:2em;align-items:center} .channel .image{width:80px;height:80px;background-color:#eee;margin-right:10px;background-size:100%} .channel .about strong{display:block;font-weight:600} .swal2-title{font-size:inherit!important} .swal2-content{font-size:inherit!important} .swal2-styled.swal2-confirm{font-size:13px!important;box-shadow:none!important} .swal2-actions button{margin-right:5px;box-shadow:none;text-shadow:none;border:0} .swal2-actions button:focus{box-shadow:none;outline:none} .swal2-actions button.swal2-styled{font-size:14px} .swal2-actions button:last-child{margin-right:0} .btn-danger{background-color:#C0392B} .btn-success{background-color:#27AE60} .swal2-actions .btn{margin-right:1em} .swal2-actions .btn:last-child{margin-right:0} </style> </head> <body> <div class="box" data-step="NewChannel"> <div class="box-title">Yeni Kanal Ekle</div> <div class="box-content"> <form> <div class="input"> <label>Telegram davet bağlantısı (Örn: https://t.me/XXXXX şeklinde olmalıdır.)</label> <input type="text" name="url" value=""> <small>'https://t.me/' ile birlikte girin.</small> </div> <button>Getir</button> </form> </div> <div class="box-info"> <strong>Not:</strong> Telegram fotoğrafınız ve abone sayınız, neredeyse her gün otomatik olarak güncellenecek! </div> </div> <div class="box hide" data-step="Channel"> <div class="box-title">Kanal Bilgileri</div> <div class="box-content"> <form> <div class="channel"> <div class="image"></div> <div class="about"> <strong></strong> <span></span> </div> </div> <div class="input"> <label>İlan Adı</label> <input type="text" name="title"> <small>45 karakterden az olmalı.</small> </div> <div class="input"> <label>Kısa Açıklama</label> <textarea name="content"></textarea> <small>Listeleme sayfasında kullanılmaktadır.</small> </div> <button>Tamamlandı</button> </form> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js"></script> <script src="https://unpkg.com/nprogress@0.2.0/nprogress.js"></script> <script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script> <script> $("input[name=url]").bind("input", function(){ $("[data-step=NewChannel] button").removeClass("active"); if ($(this).val().substr(0,13) == 'https://t.me/' && $(this).val().length > 13) { $("[data-step=NewChannel] button").addClass("active"); } }); $("[data-step=NewChannel] button").click(function(event){ event.preventDefault(); if ( ! $(this).hasClass("active")) return; $(this).removeClass("active"); NProgress.configure({parent: '[data-step=NewChannel]'}); NProgress.start(); $.ajax({ url: "json.php", type: "POST", dataType: "JSON", data: {url: $("input[name=url]").val()}, success: function(json){ NProgress.done(); if (json.status) { if ( ! json.channel.total.members && ! json.channel.total.subscribers) { Swal.fire({ icon: 'error', title: 'Eklemeye çalıştığınız hesap kanal değil!', showConfirmButton: false, timer: 1500 }); return; } Swal.fire({ icon: 'success', title: 'Kanal Bilgileri başarıyla çekilmiştir.', showConfirmButton: false, timer: 1500 }); $(".channel .image").css("background-image", "url(" + json.channel.image + ")"); $(".channel .about strong").text(json.channel.title); $(".channel .about span").text(json.channel.total.members ? json.channel.total.members : json.channel.total.subscribers); $("input[name=title]").val(json.channel.title); $("textarea[name=content]").val(json.channel.title + " Telegram Kanalı"); $("[data-step=Channel]").slideDown(); } else { } } }); }); </script> </body> </html>json.php
<?php header('Content-type: application/json'); preg_match('#^https\:\/\/t\.me\/(.+?)$#si', $_POST['url']) OR exit(json_encode(array('status' => false, 'message' => 'Invalid URL'))); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $_POST['url']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $buffer = curl_exec($ch); $status = curl_errno($ch); curl_close($ch); if ($status) { exit(json_encode(array('status' => false, 'message' => curl_getinfo($ch)))); } $buffer = str_replace(array("\t", "\r", "\n"), '', $buffer); $buffer = str_replace('> <', '><', $buffer); $buffer = str_replace(' ', '', $buffer); $buffer = str_replace('> <', '><', $buffer); $buffer = str_replace("\" />", "\"/>", $buffer); $buffer = str_replace(' dir="auto"', '', $buffer); // Members, Online, Subscribers preg_match('#<div class="tgme_page_extra">(.+?)</div>#si', $buffer, $match); $channel = $members = $online = $subscribers = $photo = ''; if (isset($match[1])) { foreach (explode(', ', $match[1]) as $segment) { if (strpos($segment, 'members')) $members = (int) str_replace(' ', '', stristr($segment, ' members', true)); elseif (strpos($segment, 'online')) $online = (int) str_replace(' ', '', stristr($segment, ' online', true)); elseif (strpos($segment, 'subscribers')) $subscribers = (int) str_replace(' ', '', stristr($segment, ' subscribers', true)); } } // Channel Name preg_match('#<div class="tgme_page_title"><span>(.+?)</span></div>#si', $buffer, $match); $channel = $match[1]; // Channel Photo preg_match('#<img class="tgme_page_photo_image" src="(.+?)">#si', $buffer, $match); if (isset($match[1])) { $photo = $match[1]; } // Structured Data $data = array( 'status' => true, 'channel' => array( 'title' => $channel, 'total' => array( 'subscribers' => $subscribers, 'members' => $members, 'online' => $online ), 'image' => $photo ) ); exit(json_encode($data));Sonuç;
