Untitled
unknown
plain_text
a year ago
34 kB
14
Indexable
import 'dart:convert'; import 'package:tytmusic/helpers/ulke_muzik.dart'; import 'package:tytmusic/models/video_model.dart'; import 'package:flutter/widgets.dart'; import 'package:http/http.dart' as http; import '../helpers/enum_helper.dart'; class YoutubeApi { final UlkeMuzik ulkeMuzik = UlkeMuzik(); Future<dynamic> denemePostOynat() async { try { String uu = "https://www.youtube.com/youtubei/v1/reel/reel_item_watch?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"; Uri url = Uri.parse(uu); Map<String, dynamic> mapp = { /* {"context":{"client":{"hl":"tr","gl":"TR","remoteHost":"151.135.165.186","deviceMake":"Apple","deviceModel":"","visitorData":"CgtVVDZOeFM2UjdkcyjtnMmYBg%3D%3D","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.115 Safari/537.36,gzip(gfe)","clientName":"WEB","clientVersion":"2.20220902.01.00","osName":"Macintosh","osVersion":"10_15_7","originalUrl":"https://www.youtube.com/","screenPixelDensity":2,"platform":"DESKTOP","clientFormFactor":"UNKNOWN_FORM_FACTOR","configInfo":{"appInstallData":"CO2cyZgGEPy6rgUQt8utBRDz__0SEOK8rgUQk6-uBRDUg64FEMvs_RIQuIuuBRDiua4FEPb__RIQq4D-EhDYvq0FEJH4_BI%3D"},"screenDensityFloat":2,"userInterfaceTheme":"USER_INTERFACE_THEME_DARK","timeZone":"Europe/Istanbul","browserName":"Chrome","browserVersion":"102.0.5005.115","screenWidthPoints":1037,"screenHeightPoints":910,"utcOffsetMinutes":180,"memoryTotalKbytes":"4000000","mainAppWebInfo":{"graftUrl":"https://www.youtube.com/","pwaInstallabilityStatus":"PWA_INSTALLABILITY_STATUS_UNKNOWN","webDisplayMode":"WEB_DISPLAY_MODE_BROWSER","isWebNativeShareAvailable":false}},"user":{"lockedSafetyMode":false},"request":{"useSsl":true,"internalExperimentFlags":[],"consistencyTokenJars":[]},"clickTracking":{"clickTrackingParams":"CAAQwrECIhMI3PbqreH2-QIV0a57Ch2nZwSi"},"adSignalsInfo":{"params":[{"key":"dt","value":"1662144109309"},{"key":"flash","value":"0"},{"key":"frm","value":"0"},{"key":"u_tz","value":"180"},{"key":"u_his","value":"4"},{"key":"u_h","value":"1120"},{"key":"u_w","value":"1792"},{"key":"u_ah","value":"1017"},{"key":"u_aw","value":"1792"},{"key":"u_cd","value":"30"},{"key":"bc","value":"31"},{"key":"bih","value":"910"},{"key":"biw","value":"1021"},{"key":"brdim","value":"0,25,0,25,1792,25,1792,1017,1037,910"},{"key":"vis","value":"1"},{"key":"wgl","value":"true"},{"key":"ca_type","value":"image"}]}},"playerRequest":{"videoId":"n50netB3MIU"},"params":"CA8qADAC","disablePlayerResponse":true} */ }; Map<String, String> head = { "accept": "*/*", "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "content-length": "2", "content-type": "application/json", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com/", "sec-fetch-dest": "empty", "sec-fetch-mode": "same-origin", "sec-fetch-site": "same-origin", "sec-gpc": "1", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.115 Safari/537.36", "x-goog-visitor-id": "CgtVVDZOeFM2UjdkcyjtnMmYBg%3D%3D", "x-youtube-bootstrap-logged-in": "false", "x-youtube-client-name": "1", "x-youtube-client-version": "2.20220902.01.00", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); // var bodyJSON = json.decode(res.body); print(res.statusCode); return null; } catch (e) { debugPrint("Api -> deneme ERROR (catch) : $e"); return null; } } Future<VideoModel?> videoOynat({required String videoId}) async { try { String uu = "https://youtubei.googleapis.com/youtubei/v1/player?key=AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w&prettyPrint=false&t=n-QmeBbiyNV2&id=$videoId"; Uri url = Uri.parse(uu); Map<String, dynamic> mapp = { // "cpn": "W48Ary54ZD9d_hMQ", "contentCheckOk": true, "context": { "client": { "androidSdkVersion": 31, "osVersion": "12", "hl": "en-GB", "clientName": "ANDROID", "gl": "DE", "clientVersion": "17.31.35", "osName": "Android", "platform": "MOBILE" }, "user": {"lockedSafetyMode": false} }, "videoId": videoId, "racyCheckOk": true, "params": "8AEB", }; Map<String, String> head = { // "accept-encoding": "gzip", //"accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", // "content-length": "155", // "content-type": "application/json", "user-agent": "youtubei.googleapis.com", // "sdsfd": // "com.google.android.youtube/16.29.38Linux; U; Android 11; US) gzip", // "x-goog-api-format-version": "2", "alt-svc": 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000', "cache-control": "private", "content-encoding": "gzip", "content-type": "application/json; charset=UTF-8", "transfer-encoding": "chunked", "vary": "Origin", "vary": "X-Origin", "vary": "Referer", "x-content-type-options": "nosniff", "x-frame-options": "SAMEORIGIN", "x-xss-protection": "0", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); var _videoPlayUrl; var _audioPlayUrl; List<String> _videoImageUrl = []; List streamList = bodyJSON["streamingData"]["formats"] as List; for (var i = 0; i < streamList.length; i++) { var element = streamList[i]; if (element["audioChannels"] == 1 && _audioPlayUrl == null) { _audioPlayUrl = element["url"]; } else if (element["audioChannels"] == 2 && _videoPlayUrl == null) { _videoPlayUrl = element["url"]; } } var _videoId = bodyJSON["videoDetails"]["videoId"]; var _time = bodyJSON["videoDetails"]["lengthSeconds"]; var _videoName = bodyJSON["videoDetails"]["title"]; List _videoImageList = bodyJSON["videoDetails"]["thumbnail"]["thumbnails"] as List; for (var i = 0; i < _videoImageList.length; i++) { var _e = _videoImageList[i]["url"]; _videoImageUrl.add(_e.toString()); } _videoImageUrl.add("https://i.ytimg.com/vi/$_videoId/mq1.jpg"); try { _time = int.parse(_time); } catch (e) {} var model = VideoModel( id: _videoId, image: _videoImageUrl, name: _videoName, playUrl: _videoPlayUrl, time: _time, audioUrl: _audioPlayUrl, ); return model; } catch (ee) { try { debugPrint("Api -> videoOynat ERROR (catch) : $ee"); String uu = "https://youtubei.googleapis.com/youtubei/v1/player?key=AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w&prettyPrint=false&t=n-QmeBbiyNV2&id=$videoId"; Uri url = Uri.parse(uu); Map<String, dynamic> mapp = { // "cpn": "W48Ary54ZD9d_hMQ", "contentCheckOk": true, "context": { "client": { "androidSdkVersion": 31, "osVersion": "12", "hl": "en-GB", "clientName": "ANDROID", "gl": "DE", "clientVersion": "17.31.35", "osName": "Android", "platform": "MOBILE" }, "user": {"lockedSafetyMode": false} }, "videoId": videoId, "racyCheckOk": true, "params": "8AEB", }; Map<String, String> head = { "user-agent": "youtubei.googleapis.com", "alt-svc": 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000', "cache-control": "private", "content-encoding": "gzip", "content-type": "application/json; charset=UTF-8", "transfer-encoding": "chunked", "vary": "Origin", "vary": "X-Origin", "vary": "Referer", "x-content-type-options": "nosniff", "x-frame-options": "SAMEORIGIN", "x-xss-protection": "0", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); var _videoPlayUrl; var _audioPlayUrl; List<String> _videoImageUrl = []; List streamList = bodyJSON["streamingData"]["formats"] as List; for (var i = 0; i < streamList.length; i++) { var element = streamList[i]; if (element["audioChannels"] == 1 && _audioPlayUrl == null) { _audioPlayUrl = element["url"]; } else if (element["audioChannels"] == 2 && _videoPlayUrl == null) { _videoPlayUrl = element["url"]; } } var _videoId = bodyJSON["videoDetails"]["videoId"]; var _time = bodyJSON["videoDetails"]["lengthSeconds"]; var _videoName = bodyJSON["videoDetails"]["title"]; List _videoImageList = bodyJSON["videoDetails"]["thumbnail"]["thumbnails"] as List; for (var i = 0; i < _videoImageList.length; i++) { var _e = _videoImageList[i]["url"]; _videoImageUrl.add(_e.toString()); } _videoImageUrl.add("https://i.ytimg.com/vi/$_videoId/mq1.jpg"); try { _time = int.parse(_time); } catch (e) {} var model = VideoModel( id: _videoId, image: _videoImageUrl, name: _videoName, playUrl: _videoPlayUrl, time: _time, audioUrl: _audioPlayUrl, ); return model; } catch (e) { debugPrint("Api -> videoOynat ERROR 22222 (catch 2) : $e"); return null; } } } Future<String?> getDownloadUrl({ required String videoId, required bool isVideo, required VideoKalite videoKalite, }) async { try { Uri url = Uri.https( "youtubei.googleapis.com", "/youtubei/v1/player", {"key": "AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w"}, ); Map<String, dynamic> mapp = { "context": { "client": { "hl": "en-GB", "clientName": "ANDROID", "gl": "US", "clientVersion": "16.29.38" }, "user": {"lockedSafetyMode": false} }, "videoId": videoId, }; Map<String, String> head = { "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", "content-length": "155", "content-type": "application/json", "user-agent": "youtubei.googleapis.com", "sdsfd": "com.google.android.youtube/16.29.38Linux; U; Android 11; US) gzip", "x-goog-api-format-version": "2", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); String? _audioPlayUrl; List<String> videoKaliteListesi = []; // listenin 0.elemanının kalitesi düşük oluyor. index arttıkça kalite artar. String? downloadUrl; List streamList = bodyJSON["streamingData"]["formats"] as List; for (var i = 0; i < streamList.length; i++) { var element = streamList[i]; if (element["audioChannels"] == 1 && _audioPlayUrl == null) { _audioPlayUrl = element["url"]; } else if (element["audioChannels"] == 2) { videoKaliteListesi.add(element["url"]); } } if (isVideo) { switch (videoKalite) { case VideoKalite.yuksek: downloadUrl = videoKaliteListesi.last; break; case VideoKalite.orta: int kkIn = (videoKaliteListesi.length / 2).toInt(); if (kkIn + 2 == videoKaliteListesi.length) { downloadUrl = videoKaliteListesi[1]; } else { downloadUrl = videoKaliteListesi.last; } break; case VideoKalite.dusuk: downloadUrl = videoKaliteListesi.first; break; } return downloadUrl; } else { return _audioPlayUrl; } } catch (ee) { try { debugPrint("Api -> getDownloadUrl ERROR (catch) : $ee"); Uri url = Uri.https( "youtubei.googleapis.com", "/youtubei/v1/player", {"key": "AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w"}, ); Map<String, dynamic> mapp = { "context": { "client": { "hl": "en-GB", "clientName": "ANDROID", "gl": "US", "clientVersion": "16.29.38" }, "user": {"lockedSafetyMode": false} }, "videoId": videoId, }; Map<String, String> head = { "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", "content-length": "155", "content-type": "application/json", "user-agent": "youtubei.googleapis.com", "sdsfd": "com.google.android.youtube/16.29.38Linux; U; Android 11; US) gzip", "x-goog-api-format-version": "2", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); String? _audioPlayUrl; List<String> videoKaliteListesi = []; // listenin 0.elemanının kalitesi düşük oluyor. index arttıkça kalite artar. String? downloadUrl; List streamList = bodyJSON["streamingData"]["formats"] as List; for (var i = 0; i < streamList.length; i++) { var element = streamList[i]; // print(element); // print("*-*-*-*-*-"); if (element["audioChannels"] == 1 && _audioPlayUrl == null) { _audioPlayUrl = element["url"]; } else if (element["audioChannels"] == 2) { videoKaliteListesi.add(element["url"]); } } if (isVideo) { switch (videoKalite) { case VideoKalite.yuksek: downloadUrl = videoKaliteListesi.last; break; case VideoKalite.orta: int kkIn = (videoKaliteListesi.length / 2).toInt(); if (kkIn + 2 == videoKaliteListesi.length) { downloadUrl = videoKaliteListesi[1]; } else { downloadUrl = videoKaliteListesi.last; } break; case VideoKalite.dusuk: downloadUrl = videoKaliteListesi.first; break; } return downloadUrl; } else { return _audioPlayUrl; } } catch (e) { debugPrint("Api -> getDownloadUrl ERROR 2222 (catch 222) : $e"); return null; } } } Future<List<SearchVideoModel>> aramaYap({required String text}) async { try { String uu = "https://www.youtube.com/youtubei/v1/search?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"; Uri url = Uri.https( "youtube.com", "/youtubei/v1/search", {"key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"}, ); Map<String, dynamic> mapp = { "query": text, "context": { "client": { "hl": "en-GB", "gl": "US", "clientName": "WEB", "clientVersion": "2.20210728.00.00" }, "user": {"lockedSafetyMode": false} } }; Map<String, String> head = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0", "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", "content-type": "application/json", "host": "www.youtube.com", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com", "x-youtube-client-name": "1", "x-youtube-client-version": "2.20210728.00.00", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); List<SearchVideoModel> videoModelList = []; List aramadanGelenListe = bodyJSON["contents"] ["twoColumnSearchResultsRenderer"]["primaryContents"] ["sectionListRenderer"]["contents"][0]["itemSectionRenderer"] ["contents"]; String? dahaFazlaGetirToken = bodyJSON["contents"] ["twoColumnSearchResultsRenderer"]["primaryContents"] ["sectionListRenderer"]["contents"][1]["continuationItemRenderer"] ["continuationEndpoint"]["continuationCommand"]["token"]; for (var i = 0; i < aramadanGelenListe.length; i++) { List<String> _videoImageUrl = []; try { if (aramadanGelenListe[i]["videoRenderer"] != null) { var yeniMapData = aramadanGelenListe[i]["videoRenderer"]; var _videoId = yeniMapData["videoId"]; var _videoName = yeniMapData["title"]["runs"][0]["text"]; var _videoImageUrlList = yeniMapData["thumbnail"]["thumbnails"] as List; for (var i = 0; i < _videoImageUrlList.length; i++) { var _element = _videoImageUrlList[i]["url"]; _videoImageUrl.add(_element); } _videoImageUrl.add("https://i.ytimg.com/vi/$_videoId/mq1.jpg"); int _time = 0; var _timeString = yeniMapData["lengthText"]["simpleText"]; if (_timeString != null) { int saat = 0; int dakika = 0; int saniye = 0; List<String> lis = _timeString.split(":"); if (lis.length == 3) { saat = int.parse(lis[0]); dakika = int.parse(lis[1]); saniye = int.parse(lis[2]); } else if (lis.length == 2) { dakika = int.parse(lis[0]); saniye = int.parse(lis[1]); } else if (lis.length == 1) { saniye = int.parse(lis[0]); } _time = (saat * 60 * 60) + (dakika * 60) + saniye; } var _model = SearchVideoModel( id: _videoId, image: _videoImageUrl, name: _videoName, getMoreVideoToken: dahaFazlaGetirToken, time: _time, ); videoModelList.add(_model); } } catch (e) {} } return videoModelList; } catch (e) { debugPrint("Api -> aramaYap ERROR (catch) : $e"); return []; } } Future<dynamic> dahaFazlaAramaYap({required String getMoreToken}) async { try { String uu = "https://www.youtube.com/youtubei/v1/search?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"; Uri url = Uri.https( "youtube.com", "/youtubei/v1/search", {"key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"}, ); Map<String, dynamic> mapp = { "context": { "client": { "hl": "en-GB", "gl": "US", "clientName": "WEB", "clientVersion": "2.20210728.00.00" }, "user": {"lockedSafetyMode": false} }, //! buradaki 'continuation' //! ilk aramanın parametresi olarak geliyor. "continuation": getMoreToken, }; Map<String, String> head = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0", "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", "content-type": "application/json", "host": "www.youtube.com", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com", "x-youtube-client-name": "1", "x-youtube-client-version": "2.20210728.00.00", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); debugPrint(res.statusCode.toString()); debugPrint(res.body); } catch (e) { debugPrint("Api -> dahaFazlaAramaYap ERROR (catch) : $e"); } } Future<List<SearchVideoModel>> getPlayList(String playListId) async { try { Uri url = Uri.https( "youtube.com", "/youtubei/v1/browse", {"key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"}, ); Map<String, dynamic> mapp = { "browseId": "VL$playListId", "context": { "client": { "hl": "en-GB", "gl": "US", "clientName": "WEB", "clientVersion": "2.20210728.00.00" }, "user": {"lockedSafetyMode": false} }, "params": "wgYCCAA%3D" }; Map<String, String> head = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0", "alt-svc": 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', "cache-control": "private", "server": "scaffolding on HTTPServer2", "date": "Fri, 18 Mar 2022 20:13:47 GMT", "transfer-encoding": "chunked", "vary": "Origin, X-Origin, Referer", "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", "content-type": "application/json", "host": "www.youtube.com", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com", "x-youtube-client-name": "1", "x-youtube-client-version": "2.20210728.00.00", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); List<SearchVideoModel> videoModelList = []; var aramadanGelenListe = bodyJSON["contents"]["twoColumnBrowseResultsRenderer"]["tabs"][0] ["tabRenderer"]["content"]["sectionListRenderer"] ["contents"][0]["itemSectionRenderer"]["contents"][0] ["playlistVideoListRenderer"]["contents"]; for (var i = 0; i < aramadanGelenListe.length; i++) { try { if (aramadanGelenListe[i]["playlistVideoRenderer"] != null) { List<String> _videoImageUrl = []; var yeniMapData = aramadanGelenListe[i]["playlistVideoRenderer"]; var _videoId = yeniMapData["videoId"]; var _videoName = yeniMapData["title"]["runs"][0]["text"]; List _videoImageUrlList = yeniMapData["thumbnail"]["thumbnails"] as List; String? _vTime = yeniMapData["lengthText"]["simpleText"]; int _time = 0; for (var i = 0; i < _videoImageUrlList.length; i++) { var _e = _videoImageUrlList[i]["url"]; _videoImageUrl.add(_e); } _videoImageUrl.add("https://i.ytimg.com/vi/$_videoId/mq1.jpg"); if (_vTime != null) { int saat = 0; int dakika = 0; int saniye = 0; List<String> lis = _vTime.split(":"); if (lis.length == 3) { saat = int.parse(lis[0]); dakika = int.parse(lis[1]); saniye = int.parse(lis[2]); } else if (lis.length == 2) { dakika = int.parse(lis[0]); saniye = int.parse(lis[1]); } else if (lis.length == 1) { saniye = int.parse(lis[0]); } _time = (saat * 60 * 60) + (dakika * 60) + saniye; } var _model = SearchVideoModel( id: _videoId, image: _videoImageUrl, name: _videoName, getMoreVideoToken: null, time: _time, ); videoModelList.add(_model); } } catch (e) {} } return videoModelList; } catch (e) { debugPrint("Api -> getPlayList ERROR (catch) : $e"); return []; } } Future<List<SearchVideoModel>> ilkAcilisGelen() async { try { String contry = await ulkeMuzik.getCountry(); String playListId = ulkeMuzik.gelUlkePlayListId(ulke: contry); Uri url = Uri.https( "youtube.com", "/youtubei/v1/browse", {"key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"}, ); Map<String, dynamic> mapp = { "browseId": "VL$playListId", "context": { "client": { "hl": "en-GB", "gl": "US", "clientName": "WEB", "clientVersion": "2.20210728.00.00" }, "user": {"lockedSafetyMode": false} }, "params": "wgYCCAA%3D" }; Map<String, String> head = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0", "alt-svc": 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', "cache-control": "private", "server": "scaffolding on HTTPServer2", "date": "Fri, 18 Mar 2022 20:13:47 GMT", "transfer-encoding": "chunked", "vary": "Origin, X-Origin, Referer", "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", "content-type": "application/json", "host": "www.youtube.com", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com", "x-youtube-client-name": "1", "x-youtube-client-version": "2.20210728.00.00", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); List<SearchVideoModel> videoModelList = []; var aramadanGelenListe = bodyJSON["contents"]["twoColumnBrowseResultsRenderer"]["tabs"][0] ["tabRenderer"]["content"]["sectionListRenderer"] ["contents"][0]["itemSectionRenderer"]["contents"][0] ["playlistVideoListRenderer"]["contents"]; for (var i = 0; i < aramadanGelenListe.length; i++) { try { if (aramadanGelenListe[i]["playlistVideoRenderer"] != null) { List<String> _videoImageUrl = []; var yeniMapData = aramadanGelenListe[i]["playlistVideoRenderer"]; var _videoId = yeniMapData["videoId"]; var _videoName = yeniMapData["title"]["runs"][0]["text"]; List _videoImageUrlList = yeniMapData["thumbnail"]["thumbnails"] as List; String? _vTime = yeniMapData["lengthText"]["simpleText"]; int _time = 0; for (var i = 0; i < _videoImageUrlList.length; i++) { var _e = _videoImageUrlList[i]["url"]; _videoImageUrl.add(_e); } _videoImageUrl.add("https://i.ytimg.com/vi/$_videoId/mq1.jpg"); if (_vTime != null) { int saat = 0; int dakika = 0; int saniye = 0; List<String> lis = _vTime.split(":"); if (lis.length == 3) { saat = int.parse(lis[0]); dakika = int.parse(lis[1]); saniye = int.parse(lis[2]); } else if (lis.length == 2) { dakika = int.parse(lis[0]); saniye = int.parse(lis[1]); } else if (lis.length == 1) { saniye = int.parse(lis[0]); } _time = (saat * 60 * 60) + (dakika * 60) + saniye; } var _model = SearchVideoModel( id: _videoId, image: _videoImageUrl, name: _videoName, getMoreVideoToken: null, time: _time, ); videoModelList.add(_model); } } catch (e) {} } return videoModelList; } catch (e) { debugPrint("Api -> ilkAcilisGelen ERROR (catch) : $e"); return []; } } Future<List<SearchVideoModel>> sonrakiVideolariGetir({ required String suAndakiVideoId, }) async { try { String uu = "https://www.youtube.com/youtubei/v1/next?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"; Uri url = Uri.https( "youtube.com", "/youtubei/v1/next", {"key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"}, ); Map<String, dynamic> mapp = { "context": { "client": { "hl": "en-GB", "gl": "US", "clientName": "WEB", "clientVersion": "2.20210728.00.00" }, "user": {"lockedSafetyMode": false} }, "videoId": suAndakiVideoId }; Map<String, String> head = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0", "accept-encoding": "gzip", "accept-language": "en-GB, en;q=0.9", "connection": "Keep-Alive", "content-length": "159", "content-type": "application/json", "host": "www.youtube.com", "origin": "https://www.youtube.com", "referer": "https://www.youtube.com", "x-youtube-client-name": "1", "x-youtube-client-version": "2.20210728.00.00", }; String body = json.encode(mapp); var res = await http.post( url, body: body, headers: head, ); var bodyJSON = json.decode(res.body); List<SearchVideoModel> videoModelList = []; var gelenListe = bodyJSON["playerOverlays"]["playerOverlayRenderer"] ["endScreen"]["watchNextEndScreenRenderer"]["results"]; for (var i = 0; i < gelenListe.length; i++) { try { if (gelenListe[i]["endScreenVideoRenderer"] != null) { List<String> _videoImageUrl = []; var yeniMapData = gelenListe[i]["endScreenVideoRenderer"]; var _videoId = yeniMapData["videoId"]; var _videoName = yeniMapData["title"]["simpleText"]; List _videoImageUrlList = yeniMapData["thumbnail"]["thumbnails"] as List; String? _vTime = yeniMapData["lengthText"]["simpleText"]; int _time = 0; for (var i = 0; i < _videoImageUrlList.length; i++) { var _e = _videoImageUrlList[i]["url"]; _videoImageUrl.add(_e); } _videoImageUrl.add("https://i.ytimg.com/vi/$_videoId/mq1.jpg"); if (_vTime != null) { int saat = 0; int dakika = 0; int saniye = 0; List<String> lis = _vTime.split(":"); if (lis.length == 3) { saat = int.parse(lis[0]); dakika = int.parse(lis[1]); saniye = int.parse(lis[2]); } else if (lis.length == 2) { dakika = int.parse(lis[0]); saniye = int.parse(lis[1]); } else if (lis.length == 1) { saniye = int.parse(lis[0]); } _time = (saat * 60 * 60) + (dakika * 60) + saniye; } var _model = SearchVideoModel( id: _videoId, image: _videoImageUrl, name: _videoName, getMoreVideoToken: null, time: _time, ); videoModelList.add(_model); } } catch (e) {} } return videoModelList; } catch (e) { debugPrint("Api -> sonrakiVideolariGetir ERROR (catch) : $e"); return []; } } Future<List<dynamic>> kelimeTahmini({required String kelime}) async { try { String uu = "http://suggestqueries.google.com/complete/search?oderby=viewCount&time=all_time&max-results=10&hl=en&ds=yt&client=firefox&hjon=t&cp=1&q=hadi"; Uri url = Uri.https( "suggestqueries.google.com", "/complete/search", { "oderby": "viewCount", "time": "all_time", "max-results": "10", "hl": "en", "ds": "yt", "client": "firefox", "hjon": "t", "cp": "1", "q": kelime }, ); Map<String, String> head = { "accept": "*/*", "accept-encoding": "gzip", "connection": "Keep-Alive", "host": "suggestqueries.google.com", "user-agent": "Mozilla/5.0 ( compatible )" }; var res = await http.get( url, headers: head, ); var bodyJSON = json.decode(res.body); List<dynamic> kelimelerListe = []; try { var vv = bodyJSON as List; var kelimm = vv[1] as List; kelimelerListe = kelimm; } catch (e) {} return kelimelerListe; } catch (e) { debugPrint("Api -> kelimeTahmini ERROR (catch) : $e"); return []; } } }
Editor is loading...
Leave a Comment