X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=scripts%2Fupdate-host.ts;h=3fb5f1972dd85b6491fed4d9979533743dbeefe7;hb=d169c4ad46291b8895498da268800bec650b43f2;hp=0f6af094280eba035ef948d8d910f00abe4b82c6;hpb=75d612ce3ca9d6f69fe8e4e83dc3070d9ab56615;p=github%2FChocobozzz%2FPeerTube.git diff --git a/scripts/update-host.ts b/scripts/update-host.ts index 0f6af0942..3fb5f1972 100755 --- a/scripts/update-host.ts +++ b/scripts/update-host.ts @@ -1,37 +1,40 @@ -import { readFileSync, writeFileSync } from 'fs' -import * as parseTorrent from 'parse-torrent' - -import { CONFIG, STATIC_PATHS } from '../server/initializers/constants' -import { database as db } from '../server/initializers/database' -import { hasFriends } from '../server/lib/friends' - -db.init(true, function () { - hasFriends(function (err, itHasFriends) { - if (err) throw err - - if (itHasFriends === true) { - console.log('Cannot update host because you have friends!') +import { getServerActor } from '../server/helpers/utils' +import { initDatabaseModels } from '../server/initializers' +import { ActorFollowModel } from '../server/models/activitypub/actor-follow' +import { VideoModel } from '../server/models/video/video' + +initDatabaseModels(true) + .then(() => { + return getServerActor() + }) + .then(serverAccount => { + return ActorFollowModel.listAcceptedFollowingUrlsForApi([ serverAccount.id ], undefined) + }) + .then(res => { + return res.total > 0 + }) + .then(hasFollowing => { + if (hasFollowing === true) { + console.log('Cannot update host because you follow other servers!') process.exit(-1) } console.log('Updating torrent files.') - db.Video.list(function (err, videos) { - if (err) throw err - - videos.forEach(function (video) { - const torrentName = video.id + '.torrent' - const torrentPath = CONFIG.STORAGE.TORRENTS_DIR + torrentName - const filename = video.id + video.extname + return VideoModel.list() + }) + .then(videos => { + const tasks: Promise[] = [] - const parsed = parseTorrent(readFileSync(torrentPath)) - parsed.announce = [ CONFIG.WEBSERVER.WS + '://' + CONFIG.WEBSERVER.HOST + '/tracker/socket' ] - parsed.urlList = [ CONFIG.WEBSERVER.URL + STATIC_PATHS.WEBSEED + filename ] + videos.forEach(video => { + console.log('Updating video ' + video.uuid) - const buf = parseTorrent.toTorrentFile(parsed) - writeFileSync(torrentPath, buf) + video.VideoFiles.forEach(file => { + tasks.push(video.createTorrentAndSetInfoHash(file)) }) - - process.exit(0) }) + + return Promise.all(tasks) + }) + .then(() => { + process.exit(0) }) -})