diff --git a/module_example/multi_song_upload.js b/module_example/multi_song_upload.js new file mode 100644 index 0000000..5b7f008 --- /dev/null +++ b/module_example/multi_song_upload.js @@ -0,0 +1,89 @@ +const { cloud, login_cellphone } = require('../main') +const fs = require('fs') +const path = require('path') +const yargs = require('yargs') + +const MUSIC_FILE_EXTENSIONS = new Set(['.mp3', '.flac']) + +function getAllMusicFiles(dir, arrayOfFiles) { + arrayOfFiles = arrayOfFiles || [] + + fs.readdirSync(dir).forEach((file) => { + let fullPath = path.join(dir, file) + if (fs.lstatSync(fullPath).isDirectory()) { + getAllMusicFiles(fullPath, arrayOfFiles) + } else { + if (MUSIC_FILE_EXTENSIONS.has(path.extname(fullPath))) { + arrayOfFiles.push(fullPath) + } + } + }) + + return arrayOfFiles +} + +function getParsedArgs() { + return yargs(process.argv.slice(2)) + .option('country_code', { + default: '86', + describe: 'The country code of your phone number', + type: 'string', + }) + .option('phone_number', { + demandOption: true, + describe: 'Your phone number', + type: 'string', + }) + .option('password', { + demandOption: true, + describe: 'Your password', + type: 'string', + }) + .option('file', { + describe: 'The absolute path to the single music file to be uploaded', + type: 'string', + }) + .option('dir', { + describe: 'The absolute to the directory of music files to be uploaded', + type: 'string', + }) + .conflicts('file', 'dir') + .help() + .alias('help', 'h').argv +} + +async function main() { + const args = getParsedArgs() + const result = await login_cellphone({ + countrycode: args.country_code, + phone: args.phone_number, + password: args.password, + }) + const files = args.file + ? getAllMusicFiles(args.file) + : getAllMusicFiles(args.dir) + let processed = 0 + let failed = 0 + for (let k in files) { + const file = files[k] + try { + await cloud({ + songFile: { + name: path.basename(file), + data: fs.readFileSync(file), + }, + cookie: result.body.cookie, + }) + } catch (error) { + console.log(error) + failed += 1 + } + processed += 1 + console.log(`Processed ${processed}/${files.length} songs...`) + if (failed) { + console.log(`Failed to upload ${failed} songs...`) + } + } + console.log('Finished!') +} +main() diff --git a/module_example/song_upload.js b/module_example/song_upload.js index 5b7f008..6973301 100644 --- a/module_example/song_upload.js +++ b/module_example/song_upload.js @@ -1,89 +1,23 @@ const { cloud, login_cellphone } = require('../main') const fs = require('fs') const path = require('path') -const yargs = require('yargs') - -const MUSIC_FILE_EXTENSIONS = new Set(['.mp3', '.flac']) - -function getAllMusicFiles(dir, arrayOfFiles) { - arrayOfFiles = arrayOfFiles || [] - - fs.readdirSync(dir).forEach((file) => { - let fullPath = path.join(dir, file) - if (fs.lstatSync(fullPath).isDirectory()) { - getAllMusicFiles(fullPath, arrayOfFiles) - } else { - if (MUSIC_FILE_EXTENSIONS.has(path.extname(fullPath))) { - arrayOfFiles.push(fullPath) - } - } - }) - - return arrayOfFiles -} - -function getParsedArgs() { - return yargs(process.argv.slice(2)) - .option('country_code', { - default: '86', - describe: 'The country code of your phone number', - type: 'string', - }) - .option('phone_number', { - demandOption: true, - describe: 'Your phone number', - type: 'string', - }) - .option('password', { - demandOption: true, - describe: 'Your password', - type: 'string', - }) - .option('file', { - describe: 'The absolute path to the single music file to be uploaded', - type: 'string', - }) - .option('dir', { - describe: 'The absolute to the directory of music files to be uploaded', - type: 'string', - }) - .conflicts('file', 'dir') - .help() - .alias('help', 'h').argv -} async function main() { - const args = getParsedArgs() const result = await login_cellphone({ - countrycode: args.country_code, - phone: args.phone_number, - password: args.password, + phone: '手机号', + password: '密码', }) - const files = args.file - ? getAllMusicFiles(args.file) - : getAllMusicFiles(args.dir) - let processed = 0 - let failed = 0 - for (let k in files) { - const file = files[k] - try { - await cloud({ - songFile: { - name: path.basename(file), - data: fs.readFileSync(file), - }, - cookie: result.body.cookie, - }) - } catch (error) { - console.log(error) - failed += 1 - } - processed += 1 - console.log(`Processed ${processed}/${files.length} songs...`) - if (failed) { - console.log(`Failed to upload ${failed} songs...`) - } + const filePath = './test.mp3' + try { + await cloud({ + songFile: { + name: path.basename(filePath), + data: fs.readFileSync(filePath), + }, + cookie: result.body.cookie, + }) + } catch (error) { + console.log(error, 'error') } - console.log('Finished!') } main()