import { VideoPrivacy } from '../../shared/models/videos'
import { doRequestAndSaveToFile } from '../helpers/requests'
import { CONSTRAINTS_FIELDS } from '../initializers'
-import { getClient, getVideoCategories, login, searchVideoWithSort, uploadVideo } from '../tests/utils'
+import { getClient, getVideoCategories, login, searchVideoWithSort, uploadVideo } from '../../shared/utils/index'
import { truncate } from 'lodash'
import * as prompt from 'prompt'
import { remove } from 'fs-extra'
-import { safeGetYoutubeDL } from '../helpers/youtube-dl'
+import { sha256 } from '../helpers/core-utils'
+import { safeGetYoutubeDL, buildOriginallyPublishedAt } from '../helpers/youtube-dl'
import { getSettings, netrc } from './cli'
let accessToken: string
settings.remotes[settings.default] :
settings.remotes[0]
}
+
if (!program['username']) program['username'] = netrc.machines[program['url']].login
if (!program['password']) program['password'] = netrc.machines[program['url']].password
}
process.exit(-1)
}
+ removeEndSlashes(program['url'])
+ removeEndSlashes(program['targetUrl'])
+
const user = {
username: program['username'],
password: program['password']
}
- run(user, program['url']).catch(err => console.error(err))
+ run(user, program['url'])
+ .catch(err => {
+ console.error(err)
+ process.exit(-1)
+ })
})
async function promptPassword () {
secret: res.body.client_secret
}
- const res2 = await login(url, client, user)
- accessToken = res2.body.access_token
+ try {
+ const res = await login(program[ 'url' ], client, user)
+ accessToken = res.body.access_token
+ } catch (err) {
+ throw new Error('Cannot authenticate. Please check your username/password.')
+ }
const youtubeDL = await safeGetYoutubeDL()
await processVideo(info, program['language'], processOptions.cwd, url, user)
}
- // https://www.youtube.com/watch?v=2Upx39TBc1s
- console.log('I\'m finished!')
+ console.log('Video/s for user %s imported: %s', program['username'], program['targetUrl'])
process.exit(0)
})
}
return res()
}
- const path = join(cwd, new Date().getTime() + '.mp4')
+ const path = join(cwd, sha256(videoInfo.url) + '.mp4')
console.log('Downloading video "%s"...', videoInfo.title)
let thumbnailfile
if (videoInfo.thumbnail) {
- thumbnailfile = join(cwd, 'thumbnail.jpg')
+ thumbnailfile = join(cwd, sha256(videoInfo.thumbnail) + '.jpg')
await doRequestAndSaveToFile({
method: 'GET',
}, thumbnailfile)
}
+ const originallyPublishedAt = buildOriginallyPublishedAt(videoInfo)
+
const videoAttributes = {
name: truncate(videoInfo.title, {
'length': CONSTRAINTS_FIELDS.VIDEOS.NAME.max,
nsfw: isNSFW(videoInfo),
waitTranscoding: true,
commentsEnabled: true,
+ downloadEnabled: true,
description: videoInfo.description || undefined,
support: undefined,
tags,
privacy: VideoPrivacy.PUBLIC,
fixture: videoPath,
thumbnailfile,
- previewfile: thumbnailfile
+ previewfile: thumbnailfile,
+ originallyPublishedAt: originallyPublishedAt ? originallyPublishedAt.toISOString() : null
}
console.log('\nUploading on PeerTube video "%s".', videoAttributes.name)
return false
}
+
+function removeEndSlashes (url: string) {
+ while (url.endsWith('/')) {
+ url.slice(0, -1)
+ }
+}