Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const axios = require('axios')
- const FormData = require('form-data')
- class Utils {
- isUrl = url => {
- try {
- new URL(url)
- return true
- } catch {
- return false
- }
- }
- toBuffer = async i => {
- try {
- const file = Buffer.isBuffer(i) ? i : this.isUrl(i) ? await (await axios.get(i, {
- responseType: 'arraybuffer'
- })).data : null
- return Buffer.from(file)
- } catch (e) {
- return null
- }
- }
- randomString = length => {
- const characters = 'abcdefghijklmnopqrstuvwxyz0123456789'
- let result = ''
- for (let i = 0; i < length; i++) {
- const randomIndex = Math.floor(Math.random() * characters.length)
- result += characters[randomIndex]
- }
- return result
- }
- delay = ms => new Promise(resolve => setTimeout(resolve, ms))
- }
- class PDF extends Utils {
- constructor() {
- super()
- this.baseUrl = 'https://pdftotext.com'
- this.headers = {
- 'Accept': 'application/json, text/plain, */*',
- 'Accept-Language': 'en-US,en;q=0.9,id;q=0.8',
- 'Cache-Control': 'no-cache',
- 'Connection': 'Keep-Alive',
- 'Origin': this.baseUrl,
- 'Pragma': 'no-cache',
- 'Referer': this.baseUrl + '/',
- 'Referrer-Policy': 'strict-origin-when-cross-origin',
- 'User-Agent': 'Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
- 'X-Requested-With': 'XMLHttpRequest',
- 'X-Forwarded-For': Array(4).fill(0).map(() => Math.floor(Math.random() * 256)).join('.')
- }
- }
- upload = input => new Promise(async resolve => {
- try {
- const file = await this.toBuffer(input)
- if (!file) return resolve({
- creator: global.creator,
- status: false,
- msg: `Invalid file, please check your file.`
- })
- const id = this.randomString(16)
- const filename = `${this.randomString(5)}.pdf`
- let form = new FormData
- form.append('file', file, filename)
- form.append('id', 'file_' + this.randomString(26))
- form.append('name', filename)
- form.append('rnd', Math.random())
- const upload = await axios.post(this.baseUrl + '/upload/' + id, form, {
- headers: {
- ...this.headers,
- ...form.getHeaders()
- }
- })
- if (!upload.data.id) return resolve({
- creator: global.creator,
- status: false,
- msg: `Error, can't upload file.`
- })
- const convert = await (await axios.get(`${this.baseUrl}/convert/${id}/${upload.data.id}?rnd=${Math.random()}`, {
- headers: {
- ...this.headers,
- Cookie: upload.headers['set-cookie'].join('; ')
- }
- })).data
- if (convert.status !== 'success') return resolve({
- creator: global.creator,
- status: false,
- msg: `Error, can't convert file.`
- })
- let i = 0
- while(true) {
- i++
- var status = await (await axios.get(`${this.baseUrl}/status/${id}/${upload.data.id}`, {
- headers: {
- ...this.headers,
- Cookie: upload.headers['set-cookie'].join('; ')
- }
- })).data
- await this.delay(1100)
- if (status.status === 'success') break
- if (i >= 25) break
- }
- if (!status.convert_result) return resolve({
- creator: global.creator,
- status: false,
- msg: `Error, can't convert file.`
- })
- resolve({
- creator: global.creator,
- status: true,
- data: status
- })
- } catch (e) {
- resolve({
- creator: global.creator,
- status: false,
- msg: e.message
- })
- }
- })
- }
- const p = new PDF
- p.upload('https://pdfobject.com/pdf/sample.pdf').then(console.log)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement