Skip to content

Commit 978ce78

Browse files
authored
first commit
Signed-off-by: Farhannnnn <[email protected]>
1 parent 2bf1153 commit 978ce78

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2729
-1
lines changed

LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1818
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE.
21+
SOFTWARE.

commands/Converter/sticker.js

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'use strict';
2+
3+
import axios from 'axios';
4+
import formData from 'form-data';
5+
6+
export default {
7+
views: ['sticker'], // view for message in menu
8+
command: /^(s|sti(c|)ker)$/i, //another command.
9+
description: 'Create Sticker from quoted messsge or url',
10+
usage: '%cmd% quoted or url',
11+
media: true,
12+
execute: async ({ xcoders, m, x, apikeys, query, quoted, mimetype, regex, replyMessage, errorMessage, host }, {}, { addHitCommand }) => {
13+
try {
14+
const FormData = new formData();
15+
const getQuery = query.split('|');
16+
const buffer = await quoted.download();
17+
FormData.append('input', Buffer.from(buffer), {
18+
filename: 'xcoders.png',
19+
contentType: 'image/png'
20+
});
21+
FormData.append('packname', getQuery[0] || packname);
22+
FormData.append('author', getQuery[1] || authorname);
23+
const { data } = await axios.post(`${host}/api/convert/sticker?apikey=${apikeys}`, FormData, {
24+
maxContentLength: Infinity,
25+
headers: {
26+
...FormData.getHeaders()
27+
}
28+
});
29+
const result = Buffer.from(data.result);
30+
addHitCommand('Sticker', true);
31+
return xcoders.sendMessage(m.chat, { sticker: result }, { quoted: x });
32+
} catch (error) {
33+
return errorMessage(m.chat, error, 'Sticker');
34+
}
35+
}
36+
};
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['igdl'], // view for message in menu
7+
command: /^(instadl|igdl|ig)$/i, //another command.
8+
description: 'Download media from Instagram Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url Instagram',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/ig?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Instagram Media');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('Instagram Media Downloader', result);
20+
addHitCommand('Instagram Media', true);
21+
for (let { url } of data.result.data) {
22+
await xcoders.sendFileFromUrl(m.chat, url, caption, x);
23+
}
24+
} catch (error) {
25+
addHitCommand('Instagram Media', false);
26+
throw error;
27+
}
28+
}
29+
};
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['instastory'], // view for message in menu
7+
command: /^(instastory|storydl|igstory|igs)$/i, //another command.
8+
description: 'Download media story from Instagram Url',
9+
query: true,
10+
usage: '%cmd% url/username story Instagram',
11+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
12+
try {
13+
const serialize = regex.isUrl(query) ? { query: 'url', path: 'ig-stories' } : { query: 'username', path: 'ig-story' };
14+
const data = await getJson(`${host}/api/download/${serialize.path}?${serialize.query}=${query}&apikey=${apikeys}`);
15+
if (!data.status || data.result.data.length < 1) return errorMessage(m.chat, getMessage(data), 'Instagram Story');
16+
await waitingMessage(m.chat);
17+
const caption = styleMessage('Instagram Story Downloader', `• ID: ${data.result.id}\n• Username: ${data.result.username}\n• Fullname: ${data.result.fullname}`);
18+
addHitCommand('Instagram Story', true);
19+
for (let { url } of data.result.data) {
20+
if (!url) return errorMessage(m.chat, getMessage(data));
21+
await xcoders.sendFileFromUrl(m.chat, url, caption, x);
22+
}
23+
} catch (error) {
24+
addHitCommand('Instagram Story', false);
25+
throw error;
26+
}
27+
}
28+
};

commands/Downloader/YouTube-audio.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['ytmp3'], // view for message in menu
7+
command: /^yt(mp3|music|musik|audio)$/i, //another command.
8+
description: 'Download music from YouTube Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url youtube',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson, getBuffer }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/ytmp3?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'YouTube Music');
17+
await waitingMessage(m.chat);
18+
const parseCaption = parseResult(data.result);
19+
const caption = styleMessage('YouTube Music Downloader', parseCaption);
20+
const thumbnail = await getBuffer(data.result.thumbnail);
21+
await xcoders.sendMessage(m.chat, { image: thumbnail, caption }, { quoted: x });
22+
addHitCommand('YouTube Music', true);
23+
return xcoders.sendAudioFromUrl(m.chat, data.result.url, x, { fileName: data.result.title + '.mp3', title: data.result.title, thumbnail, source: query, ffmpeg: false });
24+
} catch (error) {
25+
addHitCommand('YouTube Music', false);
26+
throw error;
27+
}
28+
}
29+
};

commands/Downloader/YouTube-short.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['ytshort'], // view for message in menu
7+
command: /^ytshort$/i, //another command.
8+
description: 'Download video from YouTube Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url youtube short',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson, getBuffer }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/yt-short?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'YouTube Short');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('YouTube Short Video Downloader', result);
20+
addHitCommand('YouTube Short', true);
21+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { mimetype: 'video/mp4' });
22+
} catch (error) {
23+
addHitCommand('YouTube Short', false);
24+
throw error;
25+
}
26+
}
27+
};

commands/Downloader/YouTube-video.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['ytmp4'], // view for message in menu
7+
command: /^yt(mp4|video|vidio)$/i, //another command.
8+
description: 'Download video from YouTube Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url youtube',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson, getBuffer }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/ytmp4?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'YouTube Video');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('YouTube Video Downloader', result);
20+
addHitCommand('YouTube Video', true);
21+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { mimetype: 'video/mp4', jpegThumbnail: data.result.thumbnail });
22+
} catch (error) {
23+
addHitCommand('YouTube Video', false);
24+
throw error;
25+
}
26+
}
27+
};

commands/Downloader/capcut.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['capcut'], // view for message in menu
7+
command: /^(cc(|dl|down)|capcut)$/i, //another command.
8+
description: 'Download video from Capcut Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url Capcut',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/capcut?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Capcut');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('Capcut Video Downloader', result);
20+
addHitCommand('Capcut', true);
21+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
22+
} catch (error) {
23+
addHitCommand('Capcut', false);
24+
throw error;
25+
}
26+
}
27+
};

commands/Downloader/cocofun.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['fbdl'], // view for message in menu
7+
command: /^(cocofun(|dl|down))$/i, //another command.
8+
description: 'Download video from Cocofun Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url cocofun',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/cocofun?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Cocofun');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('Cocofun Video Downloader', result);
20+
addHitCommand('Cocofun', true);
21+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
22+
} catch (error) {
23+
addHitCommand('Cocofun', false);
24+
throw error;
25+
}
26+
}
27+
};

commands/Downloader/facebook.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['fbdl'], // view for message in menu
7+
command: /^(fb(|dl|down)|facebook)$/i, //another command.
8+
description: 'Download video from Facebook Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url facebook',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/fb2?url=${query}&server=server2&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Facebook');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('Facebook Video Downloader', result);
20+
addHitCommand('Facebook', true);
21+
return xcoders.sendFileFromUrl(m.chat, data.result.data[0].url, caption, x, { thumbnail: null });
22+
} catch (error) {
23+
addHitCommand('Facebook', false);
24+
throw error;
25+
}
26+
}
27+
};

commands/Downloader/ifunny.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['ifunny'], // view for message in menu
7+
command: /^(ifunny(|dl|down))$/i, //another command.
8+
description: 'Download video from Ifunny Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url ifunny',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/ifunny?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Ifunny');
17+
await waitingMessage(m.chat);
18+
const metadata = _.sample(data.result.data);
19+
const result = parseResult({ ...data.result.title, metadata });
20+
const caption = styleMessage('Ifunny Video Downloader', result);
21+
addHitCommand('Ifunny', true);
22+
return xcoders.sendFileFromUrl(m.chat, metadata.url, caption, x, { thumbnail: null });
23+
} catch (error) {
24+
addHitCommand('Ifunny', false);
25+
throw error;
26+
}
27+
}
28+
};

commands/Downloader/likee.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['likee'], // view for message in menu
7+
command: /^(likee(|dl|down))$/i, //another command.
8+
description: 'Download video from Likee Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url likee',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/likee?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Likee');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('Likee Video Downloader', result);
20+
addHitCommand('Likee', true);
21+
return xcoders.sendFileFromUrl(m.chat, data.result.nowatermark, caption, x, { thumbnail: null });
22+
} catch (error) {
23+
addHitCommand('Likee', false);
24+
throw error;
25+
}
26+
}
27+
};

commands/Downloader/pinterest.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
3+
import _ from 'lodash';
4+
5+
export default {
6+
views: ['pinterest'], // view for message in menu
7+
command: /^(pin(|dl|down)|pinterest)$/i, //another command.
8+
description: 'Download video from Pinterest Url',
9+
query: true,
10+
url: true,
11+
usage: '%cmd% url Pinterest',
12+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, response, apikeys, regex, host }, { getMessage, parseResult, getJson }, { addHitCommand }) => {
13+
try {
14+
if (!regex.media(query)) return invalidUrlMessage(m.chat);
15+
const data = await getJson(`${host}/api/download/pinterest?url=${query}&apikey=${apikeys}`);
16+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Pinterest');
17+
await waitingMessage(m.chat);
18+
const result = parseResult(data.result);
19+
const caption = styleMessage('Pinterest Video Downloader', result);
20+
addHitCommand('Pinterest', true);
21+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
22+
} catch (error) {
23+
addHitCommand('Pinterest', false);
24+
throw error;
25+
}
26+
}
27+
};

0 commit comments

Comments
 (0)