Socket
Socket
Sign inDemoInstall

usetube-improved

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

usetube-improved - npm Package Compare versions

Comparing version 1.0.8 to 1.0.9

2

index.js

@@ -1,1 +0,1 @@

"use strict";var __awaiter=this&&this.__awaiter||function(e,t,o,i){return new(o||(o=Promise))((function(n,l){function r(e){try{d(i.next(e))}catch(e){l(e)}}function a(e){try{d(i.throw(e))}catch(e){l(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(r,a)}d((i=i.apply(e,t||[])).next())}))};const axios_1=require("axios"),moment=require("moment"),headers={headers:{"Access-Control-Allow-Origin":"*","x-youtube-client-name":1,"x-youtube-client-version":"2.20200911.04.00","User-Agent":"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36"}},headersAJAX={headers:{"Access-Control-Allow-Origin":"*","User-Agent":"hellobiczes","x-youtube-client-name":1,"x-youtube-client-version":"2.20200731.02.01"}},mobileRegex=/var\ ytInitialData\ \=\ \'(.*)\'\;<\/script>/,dateRegex=/publishDate":"(.*)","ownerChannelName/;function decodeHex(e){return e.replace(/\\x22/g,'"').replace(/\\x7b/g,"{").replace(/\\x7d/g,"}").replace(/\\x5b/g,"[").replace(/\\x5d/g,"]").replace(/\\x3b/g,";").replace(/\\x3d/g,"=").replace(/\\x27/g,"'").replace(/\\\\/g,"doubleAntiSlash").replace(/\\/g,"").replace(/doubleAntiSlash/g,"\\")}function wait(){let e=Math.floor(300*Math.random()),t=(new Date).getTime(),o=t;for(;o<t+e;)o=(new Date).getTime()}function cleanTitle(e){return e=e.replace(/\[[^)]*\]/,""),["(full album)","(official ep)","(official video)","(video official)","(radio edit)","(DEEP MEDi Musik)","(Original Mix)","(Official Music Video)"].forEach((t=>{e=(e=(e=e.replace(new RegExp(t,"ig"),"")).replace("()","")).replace(/\[(.*)\]/,"")})),e}function formatYoutubeCount(e){const t=null==e?void 0:e.includes("M"),o=null==e?void 0:e.includes("k");let i=null==e?void 0:e.replace(/[^0-9,.]/g,"").replace(",",".");return t?i*=1e6:o&&(i*=1e3),parseInt(i)||0}function getVideoDate(e,t){var o;return __awaiter(this,void 0,void 0,(function*(){try{let i=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/watch?v="+e,headers);i=i.data;let n=(null===(o=dateRegex.exec(i))||void 0===o?void 0:o[1])||"{}";return n+=" "+Math.floor(24*Math.random())+"-"+Math.floor(60*Math.random())+"-"+Math.floor(60*Math.random()),moment(n,"YYYY-MM-DD H-m-s").toDate()}catch(t){console.error("cannot get date for "+e+", try again"),console.error(t)}}))}function getVideoDesc(e,t){var o,i,n,l,r,a,d,s,u,c;return __awaiter(this,void 0,void 0,(function*(){try{let v=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/watch?v="+e,headers);v=v.data;const h=(null===(o=mobileRegex.exec(v))||void 0===o?void 0:o[1])||"{}",p=JSON.parse(decodeHex(h));return(null===(c=null===(u=null===(s=null===(d=null===(a=null===(r=null===(l=null===(n=null===(i=p.contents)||void 0===i?void 0:i.singleColumnWatchNextResults)||void 0===n?void 0:n.results)||void 0===l?void 0:l.results)||void 0===r?void 0:r.contents[1])||void 0===a?void 0:a.itemSectionRenderer)||void 0===d?void 0:d.contents[0])||void 0===s?void 0:s.slimVideoMetadataRenderer)||void 0===u?void 0:u.description)||void 0===c?void 0:c.runs)||""}catch(t){console.error("video desc error for "+e),console.error(t)}}))}function getChannelDesc(e,t){var o,i,n;return __awaiter(this,void 0,void 0,(function*(){try{let l=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/channel/"+e+"/videos",headers);l=l.data;const r=(null===(o=mobileRegex.exec(l))||void 0===o?void 0:o[1])||"{}",a=JSON.parse(decodeHex(r));return(null===(n=null===(i=a.metadata)||void 0===i?void 0:i.channelMetadataRenderer)||void 0===n?void 0:n.description)||""}catch(t){console.log("channel desc error for "+e),console.log(t)}}))}function searchVideo(e,t,o){var i,n,l,r,a,d,s,u,c,v,h;return __awaiter(this,void 0,void 0,(function*(){try{let p=[],m=[],g="";if(o){let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://youtube.com/browse_ajax?ctoken="+o,headersAJAX);e=e.data,p=(null===(d=null===(a=e[1].response.continuationContents)||void 0===a?void 0:a.gridContinuation)||void 0===d?void 0:d.items)||"",o=(null===(h=null===(v=null===(c=null===(u=null===(s=e[1].response.continuationContents)||void 0===s?void 0:s.gridContinuation)||void 0===u?void 0:u.continuations)||void 0===c?void 0:c[0])||void 0===v?void 0:v.nextContinuationData)||void 0===h?void 0:h.continuation)||""}else{let a=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/results?sp=EgIQAQ%253D%253D&videoEmbeddable=true&search_query="+encodeURI(e),headers);a=a.data;let d=(null===(i=mobileRegex.exec(a))||void 0===i?void 0:i[1])||"{}",s=JSON.parse(decodeHex(d)).contents.sectionListRenderer;p=s.contents[0].itemSectionRenderer.contents,o=(null===(r=null===(l=null===(n=s.continuations)||void 0===n?void 0:n[0])||void 0===l?void 0:l.reloadContinuationData)||void 0===r?void 0:r.continuation)||""}for(let e=0;e<p.length;e++){let o=yield formatVideo(p[e],t,!0);"didyoumean"===o.id?g=o.title:m.push(o)}return{tracks:m,didyoumean:g,token:o}}catch(t){console.log("search videos error, terms: "+e),console.error(t)}}))}function searchChannel(e,t,o){var i,n,l,r,a,d,s,u,c,v,h,p,m,g,f,x,y,b;return __awaiter(this,void 0,void 0,(function*(){try{let _=[],R=[],C="";if(o){let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://youtube.com/browse_ajax?ctoken="+o,headersAJAX);e=e.data,_=(null===(c=null===(u=e[1].response.continuationContents)||void 0===u?void 0:u.gridContinuation)||void 0===c?void 0:c.items)||"",o=(null===(g=null===(m=null===(p=null===(h=null===(v=e[1].response.continuationContents)||void 0===v?void 0:v.gridContinuation)||void 0===h?void 0:h.continuations)||void 0===p?void 0:p[0])||void 0===m?void 0:m.nextContinuationData)||void 0===g?void 0:g.continuation)||""}else{let u=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/results?sp=CAASAhAC&search_query="+encodeURI(e),headers);u=u.data;const c=(null===(i=mobileRegex.exec(u))||void 0===i?void 0:i[1])||"{}",v=JSON.parse(decodeHex(c));_=null===(r=null===(l=null===(n=v.contents.sectionListRenderer)||void 0===n?void 0:n.contents[0])||void 0===l?void 0:l.itemSectionRenderer)||void 0===r?void 0:r.contents,o=(null===(s=null===(d=null===(a=v.continuations)||void 0===a?void 0:a[0])||void 0===d?void 0:d.reloadContinuationData)||void 0===s?void 0:s.continuation)||""}for(let e=0;e<_.length;e++)if(_[e].compactChannelRenderer){const t=_[e].compactChannelRenderer;let o=(null===(f=t.thumbnail)||void 0===f?void 0:f.thumbnails[0].url)||"",i=(null===(x=t.thumbnail)||void 0===x?void 0:x.thumbnails[1].url)||"";o=o.startsWith("//")?"https:"+o:o,i=i.startsWith("//")?"https:"+i:i;const n=formatYoutubeCount(null===(y=t.subscriberCountText)||void 0===y?void 0:y.runs[0].text),l=formatYoutubeCount(null===(b=t.videoCountText)||void 0===b?void 0:b.runs[0].text);R.push({name:t.title.runs[0].text,channel_id:t.channelId,nb_videos:l,nb_subscriber:n,official:!!t.ownerBadges,channel_avatar_small:o,channel_avatar_medium:i})}else if(_[e].didYouMeanRenderer||_[e].showingResultsForRenderer){let t;t=_[e].didYouMeanRenderer?_[e].didYouMeanRenderer:_[e].showingResultsForRenderer,C=t.correctedQuery.runs[0].text}return{channels:R,didyoumean:C,token:o}}catch(t){console.log("search channel error, terms: "+e),console.error(t)}}))}function getChannelVideos(e,t,o){var i,n,l,r,a,d,s,u,c,v,h,p,m,g,f,x,y,b,_,R;return __awaiter(this,void 0,void 0,(function*(){try{let C=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/channel/"+e+"/videos",headers);C=C.data;const V=(null===(i=mobileRegex.exec(C))||void 0===i?void 0:i[1])||"{}";console.log(" Raw input "),console.log(V);const w=decodeHex(V);console.log(" This is the decoded String "),console.log(w);const D=JSON.parse(decodeHex(V));console.log(" Data var "),console.log(D);const A=null===(u=null===(s=null===(d=null===(a=null===(r=null===(l=null===(n=D.contents)||void 0===n?void 0:n.singleColumnBrowseResultsRenderer)||void 0===l?void 0:l.tabs[1])||void 0===r?void 0:r.tabRenderer)||void 0===a?void 0:a.content)||void 0===d?void 0:d.sectionListRenderer)||void 0===s?void 0:s.contents[0])||void 0===u?void 0:u.itemSectionRenderer;console.log(" This is the itmes that we have: "),console.log(A);let k=(null===(h=null===(v=null===(c=A.continuations)||void 0===c?void 0:c[0])||void 0===v?void 0:v.nextContinuationData)||void 0===h?void 0:h.continuation)||"";console.log(" This are the tokens "),console.log(k);let M=[];for(let e=0;e<A.contents.length;e++){let i=yield formatVideo(A.contents[e],t,!1);if(moment(i.publishedAt).isBefore(o)&&o)return M;M.push(i)}for(;""!==k;)try{wait();let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://youtube.com/browse_ajax?ctoken="+k,headersAJAX);e=e.data;let i=(null===(f=null===(g=null===(m=null===(p=e[1])||void 0===p?void 0:p.response)||void 0===m?void 0:m.continuationContents)||void 0===g?void 0:g.gridContinuation)||void 0===f?void 0:f.items)||"";k=(null===(R=null===(_=null===(b=null===(y=null===(x=e[1].response.continuationContents)||void 0===x?void 0:x.gridContinuation)||void 0===y?void 0:y.continuations)||void 0===b?void 0:b[0])||void 0===_?void 0:_.nextContinuationData)||void 0===R?void 0:R.continuation)||"";for(let e=0;e<i.length;e++){let n=yield formatVideo(i[e],t,!1);if(moment(n.publishedAt).isBefore(o)&&o)return M;M.push(n)}}catch(e){console.error("getChannelVideos failed"),console.error(e),k=""}return M}catch(t){console.error("cannot get channel videos for id: "+e+", try again"),console.error(t)}}))}function getPlaylistVideos(e,t,o){var i,n,l,r,a,d,s,u,c,v,h,p,m;return __awaiter(this,void 0,void 0,(function*(){try{let g=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/playlist?list="+e,headers);g=g.data;const f=(null===(i=mobileRegex.exec(g))||void 0===i?void 0:i[1])||"{}",x=JSON.parse(decodeHex(f)),y=(null===(v=null===(c=null===(u=null===(s=null===(d=null===(a=null===(r=null===(l=null===(n=x.contents)||void 0===n?void 0:n.singleColumnBrowseResultsRenderer)||void 0===l?void 0:l.tabs[0])||void 0===r?void 0:r.tabRenderer)||void 0===a?void 0:a.content)||void 0===d?void 0:d.sectionListRenderer)||void 0===s?void 0:s.contents[0])||void 0===u?void 0:u.itemSectionRenderer)||void 0===c?void 0:c.contents[0])||void 0===v?void 0:v.playlistVideoListRenderer)||"";let b=(null===(h=y.continuations[0])||void 0===h?void 0:h.nextContinuationData.continuation)||"",_=[];for(let e=0;e<y.contents.length;e++)_.push(yield formatVideo(y.contents[e],t),o);for(;""!==b;)try{wait();let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/playlist?ctoken="+b,headers);e=e.data;let i=(null===(p=mobileRegex.exec(e))||void 0===p?void 0:p[1])||"{}",n=JSON.parse(decodeHex(i)).continuationContents.playlistVideoListContinuation,l=n.contents;b=n.continuations?null===(m=n.continuations[0])||void 0===m?void 0:m.nextContinuationData.continuation:"";for(let e=0;e<l.length;e++)_.push(yield formatVideo(l[e],t),o)}catch(e){console.error("getPlaylistVideos failed"),console.error(e),b=""}return _}catch(t){console.log("cannot get playlist "+e+", try again"),console.error(t)}}))}function getVideosFromDesc(e,t){return __awaiter(this,void 0,void 0,(function*(){try{let o=[],i=yield getVideoDesc(e,t);if(i){let e=i.pop().text.split("\n").filter(Boolean);if(e=e.filter((e=>!e.includes("00:00"))),e=e.filter((e=>!e.startsWith(" "))),0!==e.length)e:for(let i=0;i<e.length;i++){let n=cleanTitle(e[i]).replace(/[0-9]?[0-9]?:[0-9]?[0-9]?/,"");if(!n||!n.includes("-"))break e;let l=n.split("-")[1].trim(),r=n.split("-")[0].trim(),a=yield searchVideo(l+" "+r,t);t:for(let e=0;e<a.tracks.length;e++){let i=a.tracks[e],n=i.original_title.toLowerCase();if(n.includes(r.split(" ")[0].toLowerCase())&&n.includes(l.split(" ")[0].toLowerCase())){i.publishedAt=yield getVideoDate(i.id,t),i.title=l,i.artist=r,o.push(i);break t}}}}return o}catch(e){console.error("getVideosFromDesc error, maybe captcha to resolve"),console.error(e)}}))}function formatVideo(e,t,o){var i,n,l,r,a;return __awaiter(this,void 0,void 0,(function*(){try{if(e.compactVideoRenderer||e.gridVideoRenderer||e.playlistVideoRenderer){e.compactVideoRenderer?e=e.compactVideoRenderer:e.gridVideoRenderer?e=e.gridVideoRenderer:e.playlistVideoRenderer&&(e=e.playlistVideoRenderer);let d=e.videoId,s=0;if(e.title.simpleText?e.title=e.title.simpleText:e.title.runs[0].text?e.title=e.title.runs[0].text:e.title="",e.original_title=e.title,1===e.title.split("-").length)e.artist="";else{let t=e.original_title.match(/([^,]*)-(.*)/);e.artist=t[1],e.title=t[2]}s=e.lengthText?e.lengthText.runs[0].text.split(":"):(null===(n=null===(i=e.thumbnailOverlays[0])||void 0===i?void 0:i.thumbnailOverlayTimeStatusRenderer)||void 0===n?void 0:n.text.simpleText)?(null===(r=null===(l=e.thumbnailOverlays[0])||void 0===l?void 0:l.thumbnailOverlayTimeStatusRenderer)||void 0===r?void 0:r.text.simpleText.split(":"))||"":[0,0];let u=60*parseInt(s[0]),c=parseInt(s[1]),v=o?(null===(a=e.publishedTimeText)||void 0===a?void 0:a.runs[0].text)||"":yield getVideoDate(d,t);return{id:d,original_title:e.original_title.trim(),title:e.title.trim(),artist:e.artist.trim(),duration:u+c,publishedAt:v}}if(e.didYouMeanRenderer||e.showingResultsForRenderer)return{id:"didyoumean",title:(e=e.didYouMeanRenderer?e.didYouMeanRenderer:e.showingResultsForRenderer).correctedQuery.runs[0].text,artist:"",duration:0,publishedAt:""}}catch(e){console.error("format video failed"),console.error(e)}}))}module.exports={getVideoDate:getVideoDate,getVideoDesc:getVideoDesc,getChannelDesc:getChannelDesc,searchVideo:searchVideo,searchChannel:searchChannel,getChannelVideos:getChannelVideos,getPlaylistVideos:getPlaylistVideos,getVideosFromDesc:getVideosFromDesc};
"use strict";var __awaiter=this&&this.__awaiter||function(e,t,o,i){return new(o||(o=Promise))((function(n,l){function r(e){try{d(i.next(e))}catch(e){l(e)}}function a(e){try{d(i.throw(e))}catch(e){l(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(r,a)}d((i=i.apply(e,t||[])).next())}))};const axios_1=require("axios"),moment=require("moment"),headers={headers:{"Access-Control-Allow-Origin":"*","x-youtube-client-name":1,"x-youtube-client-version":"2.20200911.04.00","User-Agent":"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36"}},headersAJAX={headers:{"Access-Control-Allow-Origin":"*","User-Agent":"hellobiczes","x-youtube-client-name":1,"x-youtube-client-version":"2.20200731.02.01"}},mobileRegex=/var\ ytInitialData\ \=\ \'(.*)\'\;<\/script>/,dateRegex=/publishDate":"(.*)","ownerChannelName/;function decodeHex(e){return e.replace(/\\x22/g,'"').replace(/\\x7b/g,"{").replace(/\\x7d/g,"}").replace(/\\x5b/g,"[").replace(/\\x5d/g,"]").replace(/\\x3b/g,";").replace(/\\x3d/g,"=").replace(/\\x27/g,"'").replace(/\\\\/g,"doubleAntiSlash").replace(/\\/g,"").replace(/doubleAntiSlash/g,"\\")}function wait(){let e=Math.floor(300*Math.random()),t=(new Date).getTime(),o=t;for(;o<t+e;)o=(new Date).getTime()}function cleanTitle(e){return e=e.replace(/\[[^)]*\]/,""),["(full album)","(official ep)","(official video)","(video official)","(radio edit)","(DEEP MEDi Musik)","(Original Mix)","(Official Music Video)"].forEach((t=>{e=(e=(e=e.replace(new RegExp(t,"ig"),"")).replace("()","")).replace(/\[(.*)\]/,"")})),e}function formatYoutubeCount(e){const t=null==e?void 0:e.includes("M"),o=null==e?void 0:e.includes("k");let i=null==e?void 0:e.replace(/[^0-9,.]/g,"").replace(",",".");return t?i*=1e6:o&&(i*=1e3),parseInt(i)||0}function getVideoDate(e,t){var o;return __awaiter(this,void 0,void 0,(function*(){try{let i=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/watch?v="+e,headers);i=i.data;let n=(null===(o=dateRegex.exec(i))||void 0===o?void 0:o[1])||"{}";return n+=" "+Math.floor(24*Math.random())+"-"+Math.floor(60*Math.random())+"-"+Math.floor(60*Math.random()),moment(n,"YYYY-MM-DD H-m-s").toDate()}catch(t){console.error("cannot get date for "+e+", try again"),console.error(t)}}))}function getVideoDesc(e,t){var o,i,n,l,r,a,d,s,u,c;return __awaiter(this,void 0,void 0,(function*(){try{let v=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/watch?v="+e,headers);v=v.data;const h=(null===(o=mobileRegex.exec(v))||void 0===o?void 0:o[1])||"{}",p=JSON.parse(decodeHex(h));return(null===(c=null===(u=null===(s=null===(d=null===(a=null===(r=null===(l=null===(n=null===(i=p.contents)||void 0===i?void 0:i.singleColumnWatchNextResults)||void 0===n?void 0:n.results)||void 0===l?void 0:l.results)||void 0===r?void 0:r.contents[1])||void 0===a?void 0:a.itemSectionRenderer)||void 0===d?void 0:d.contents[0])||void 0===s?void 0:s.slimVideoMetadataRenderer)||void 0===u?void 0:u.description)||void 0===c?void 0:c.runs)||""}catch(t){console.error("video desc error for "+e),console.error(t)}}))}function getChannelDesc(e,t){var o,i,n;return __awaiter(this,void 0,void 0,(function*(){try{let l=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/channel/"+e+"/videos",headers);l=l.data;const r=(null===(o=mobileRegex.exec(l))||void 0===o?void 0:o[1])||"{}",a=JSON.parse(decodeHex(r));return(null===(n=null===(i=a.metadata)||void 0===i?void 0:i.channelMetadataRenderer)||void 0===n?void 0:n.description)||""}catch(t){console.log("channel desc error for "+e),console.log(t)}}))}function searchVideo(e,t,o){var i,n,l,r,a,d,s,u,c,v,h;return __awaiter(this,void 0,void 0,(function*(){try{let p=[],g=[],m="";if(o){let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://youtube.com/browse_ajax?ctoken="+o,headersAJAX);e=e.data,p=(null===(d=null===(a=e[1].response.continuationContents)||void 0===a?void 0:a.gridContinuation)||void 0===d?void 0:d.items)||"",o=(null===(h=null===(v=null===(c=null===(u=null===(s=e[1].response.continuationContents)||void 0===s?void 0:s.gridContinuation)||void 0===u?void 0:u.continuations)||void 0===c?void 0:c[0])||void 0===v?void 0:v.nextContinuationData)||void 0===h?void 0:h.continuation)||""}else{let a=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/results?sp=EgIQAQ%253D%253D&videoEmbeddable=true&search_query="+encodeURI(e),headers);a=a.data;let d=(null===(i=mobileRegex.exec(a))||void 0===i?void 0:i[1])||"{}",s=JSON.parse(decodeHex(d)).contents.sectionListRenderer;p=s.contents[0].itemSectionRenderer.contents,o=(null===(r=null===(l=null===(n=s.continuations)||void 0===n?void 0:n[0])||void 0===l?void 0:l.reloadContinuationData)||void 0===r?void 0:r.continuation)||""}for(let e=0;e<p.length;e++){let o=yield formatVideo(p[e],t,!0);"didyoumean"===o.id?m=o.title:g.push(o)}return{tracks:g,didyoumean:m,token:o}}catch(t){console.log("search videos error, terms: "+e),console.error(t)}}))}function searchChannel(e,t,o){var i,n,l,r,a,d,s,u,c,v,h,p,g,m,f,x,y,b;return __awaiter(this,void 0,void 0,(function*(){try{let R=[],_=[],C="";if(o){let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://youtube.com/browse_ajax?ctoken="+o,headersAJAX);e=e.data,R=(null===(c=null===(u=e[1].response.continuationContents)||void 0===u?void 0:u.gridContinuation)||void 0===c?void 0:c.items)||"",o=(null===(m=null===(g=null===(p=null===(h=null===(v=e[1].response.continuationContents)||void 0===v?void 0:v.gridContinuation)||void 0===h?void 0:h.continuations)||void 0===p?void 0:p[0])||void 0===g?void 0:g.nextContinuationData)||void 0===m?void 0:m.continuation)||""}else{let u=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/results?sp=CAASAhAC&search_query="+encodeURI(e),headers);u=u.data;const c=(null===(i=mobileRegex.exec(u))||void 0===i?void 0:i[1])||"{}",v=JSON.parse(decodeHex(c));R=null===(r=null===(l=null===(n=v.contents.sectionListRenderer)||void 0===n?void 0:n.contents[0])||void 0===l?void 0:l.itemSectionRenderer)||void 0===r?void 0:r.contents,o=(null===(s=null===(d=null===(a=v.continuations)||void 0===a?void 0:a[0])||void 0===d?void 0:d.reloadContinuationData)||void 0===s?void 0:s.continuation)||""}for(let e=0;e<R.length;e++)if(R[e].compactChannelRenderer){const t=R[e].compactChannelRenderer;let o=(null===(f=t.thumbnail)||void 0===f?void 0:f.thumbnails[0].url)||"",i=(null===(x=t.thumbnail)||void 0===x?void 0:x.thumbnails[1].url)||"";o=o.startsWith("//")?"https:"+o:o,i=i.startsWith("//")?"https:"+i:i;const n=formatYoutubeCount(null===(y=t.subscriberCountText)||void 0===y?void 0:y.runs[0].text),l=formatYoutubeCount(null===(b=t.videoCountText)||void 0===b?void 0:b.runs[0].text);_.push({name:t.title.runs[0].text,channel_id:t.channelId,nb_videos:l,nb_subscriber:n,official:!!t.ownerBadges,channel_avatar_small:o,channel_avatar_medium:i})}else if(R[e].didYouMeanRenderer||R[e].showingResultsForRenderer){let t;t=R[e].didYouMeanRenderer?R[e].didYouMeanRenderer:R[e].showingResultsForRenderer,C=t.correctedQuery.runs[0].text}return{channels:_,didyoumean:C,token:o}}catch(t){console.log("search channel error, terms: "+e),console.error(t)}}))}function getChannelVideos(e,t,o){var i,n,l,r,a,d,s,u,c,v,h,p,g,m,f,x,y,b,R,_;return __awaiter(this,void 0,void 0,(function*(){try{let C=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/channel/"+e+"/videos",headers);C=C.data,console.log(" This is body that we get"),console.log(C),console.log(" Regex that is being executed "),console.log(mobileRegex.exec(C));const V=(null===(i=mobileRegex.exec(C))||void 0===i?void 0:i[1])||"{}";console.log(" Raw input "),console.log(V);const w=decodeHex(V);console.log(" This is the decoded String "),console.log(w);const D=JSON.parse(decodeHex(V));console.log(" Data var "),console.log(D);const A=null===(u=null===(s=null===(d=null===(a=null===(r=null===(l=null===(n=D.contents)||void 0===n?void 0:n.singleColumnBrowseResultsRenderer)||void 0===l?void 0:l.tabs[1])||void 0===r?void 0:r.tabRenderer)||void 0===a?void 0:a.content)||void 0===d?void 0:d.sectionListRenderer)||void 0===s?void 0:s.contents[0])||void 0===u?void 0:u.itemSectionRenderer;console.log(" This is the itmes that we have: "),console.log(A);let k=(null===(h=null===(v=null===(c=A.continuations)||void 0===c?void 0:c[0])||void 0===v?void 0:v.nextContinuationData)||void 0===h?void 0:h.continuation)||"";console.log(" This are the tokens "),console.log(k);let M=[];for(let e=0;e<A.contents.length;e++){let i=yield formatVideo(A.contents[e],t,!1);if(moment(i.publishedAt).isBefore(o)&&o)return M;M.push(i)}for(;""!==k;)try{wait();let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://youtube.com/browse_ajax?ctoken="+k,headersAJAX);e=e.data;let i=(null===(f=null===(m=null===(g=null===(p=e[1])||void 0===p?void 0:p.response)||void 0===g?void 0:g.continuationContents)||void 0===m?void 0:m.gridContinuation)||void 0===f?void 0:f.items)||"";k=(null===(_=null===(R=null===(b=null===(y=null===(x=e[1].response.continuationContents)||void 0===x?void 0:x.gridContinuation)||void 0===y?void 0:y.continuations)||void 0===b?void 0:b[0])||void 0===R?void 0:R.nextContinuationData)||void 0===_?void 0:_.continuation)||"";for(let e=0;e<i.length;e++){let n=yield formatVideo(i[e],t,!1);if(moment(n.publishedAt).isBefore(o)&&o)return M;M.push(n)}}catch(e){console.error("getChannelVideos failed"),console.error(e),k=""}return M}catch(t){console.error("cannot get channel videos for id: "+e+", try again"),console.error(t)}}))}function getPlaylistVideos(e,t,o){var i,n,l,r,a,d,s,u,c,v,h,p,g;return __awaiter(this,void 0,void 0,(function*(){try{let m=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/playlist?list="+e,headers);m=m.data;const f=(null===(i=mobileRegex.exec(m))||void 0===i?void 0:i[1])||"{}",x=JSON.parse(decodeHex(f)),y=(null===(v=null===(c=null===(u=null===(s=null===(d=null===(a=null===(r=null===(l=null===(n=x.contents)||void 0===n?void 0:n.singleColumnBrowseResultsRenderer)||void 0===l?void 0:l.tabs[0])||void 0===r?void 0:r.tabRenderer)||void 0===a?void 0:a.content)||void 0===d?void 0:d.sectionListRenderer)||void 0===s?void 0:s.contents[0])||void 0===u?void 0:u.itemSectionRenderer)||void 0===c?void 0:c.contents[0])||void 0===v?void 0:v.playlistVideoListRenderer)||"";let b=(null===(h=y.continuations[0])||void 0===h?void 0:h.nextContinuationData.continuation)||"",R=[];for(let e=0;e<y.contents.length;e++)R.push(yield formatVideo(y.contents[e],t),o);for(;""!==b;)try{wait();let e=yield axios_1.default.get("http://api.scraperapi.com?api_key="+t+"&url=https://m.youtube.com/playlist?ctoken="+b,headers);e=e.data;let i=(null===(p=mobileRegex.exec(e))||void 0===p?void 0:p[1])||"{}",n=JSON.parse(decodeHex(i)).continuationContents.playlistVideoListContinuation,l=n.contents;b=n.continuations?null===(g=n.continuations[0])||void 0===g?void 0:g.nextContinuationData.continuation:"";for(let e=0;e<l.length;e++)R.push(yield formatVideo(l[e],t),o)}catch(e){console.error("getPlaylistVideos failed"),console.error(e),b=""}return R}catch(t){console.log("cannot get playlist "+e+", try again"),console.error(t)}}))}function getVideosFromDesc(e,t){return __awaiter(this,void 0,void 0,(function*(){try{let o=[],i=yield getVideoDesc(e,t);if(i){let e=i.pop().text.split("\n").filter(Boolean);if(e=e.filter((e=>!e.includes("00:00"))),e=e.filter((e=>!e.startsWith(" "))),0!==e.length)e:for(let i=0;i<e.length;i++){let n=cleanTitle(e[i]).replace(/[0-9]?[0-9]?:[0-9]?[0-9]?/,"");if(!n||!n.includes("-"))break e;let l=n.split("-")[1].trim(),r=n.split("-")[0].trim(),a=yield searchVideo(l+" "+r,t);t:for(let e=0;e<a.tracks.length;e++){let i=a.tracks[e],n=i.original_title.toLowerCase();if(n.includes(r.split(" ")[0].toLowerCase())&&n.includes(l.split(" ")[0].toLowerCase())){i.publishedAt=yield getVideoDate(i.id,t),i.title=l,i.artist=r,o.push(i);break t}}}}return o}catch(e){console.error("getVideosFromDesc error, maybe captcha to resolve"),console.error(e)}}))}function formatVideo(e,t,o){var i,n,l,r,a;return __awaiter(this,void 0,void 0,(function*(){try{if(e.compactVideoRenderer||e.gridVideoRenderer||e.playlistVideoRenderer){e.compactVideoRenderer?e=e.compactVideoRenderer:e.gridVideoRenderer?e=e.gridVideoRenderer:e.playlistVideoRenderer&&(e=e.playlistVideoRenderer);let d=e.videoId,s=0;if(e.title.simpleText?e.title=e.title.simpleText:e.title.runs[0].text?e.title=e.title.runs[0].text:e.title="",e.original_title=e.title,1===e.title.split("-").length)e.artist="";else{let t=e.original_title.match(/([^,]*)-(.*)/);e.artist=t[1],e.title=t[2]}s=e.lengthText?e.lengthText.runs[0].text.split(":"):(null===(n=null===(i=e.thumbnailOverlays[0])||void 0===i?void 0:i.thumbnailOverlayTimeStatusRenderer)||void 0===n?void 0:n.text.simpleText)?(null===(r=null===(l=e.thumbnailOverlays[0])||void 0===l?void 0:l.thumbnailOverlayTimeStatusRenderer)||void 0===r?void 0:r.text.simpleText.split(":"))||"":[0,0];let u=60*parseInt(s[0]),c=parseInt(s[1]),v=o?(null===(a=e.publishedTimeText)||void 0===a?void 0:a.runs[0].text)||"":yield getVideoDate(d,t);return{id:d,original_title:e.original_title.trim(),title:e.title.trim(),artist:e.artist.trim(),duration:u+c,publishedAt:v}}if(e.didYouMeanRenderer||e.showingResultsForRenderer)return{id:"didyoumean",title:(e=e.didYouMeanRenderer?e.didYouMeanRenderer:e.showingResultsForRenderer).correctedQuery.runs[0].text,artist:"",duration:0,publishedAt:""}}catch(e){console.error("format video failed"),console.error(e)}}))}module.exports={getVideoDate:getVideoDate,getVideoDesc:getVideoDesc,getChannelDesc:getChannelDesc,searchVideo:searchVideo,searchChannel:searchChannel,getChannelVideos:getChannelVideos,getPlaylistVideos:getPlaylistVideos,getVideosFromDesc:getVideosFromDesc};
{
"name": "usetube-improved",
"version": "1.0.8",
"version": "1.0.9",
"description": "crawl youtube with scraperapi without a YouTube api key (search videos, search channels, get all channel/playlist's videos)",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc