Series.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import Series from 'App/Models/Series'
  2. import Episode from 'App/Models/Episode'
  3. import BaseSeeder from '@ioc:Adonis/Lucid/Seeder'
  4. import { readdirSync, readFileSync } from 'fs'
  5. import { join } from 'path'
  6. import Decimal from 'decimal.js'
  7. export default class extends BaseSeeder {
  8. public async run() {
  9. // Write your database queries inside the run method
  10. const dir = '/Volumes/Data HD/shortplay/downloaded/'
  11. for (let file of readdirSync(dir)
  12. .filter((file) => /^[^\.].*\.json$/.test(file))
  13. .sort()
  14. .splice(0, 10)) {
  15. const data = JSON.parse(readFileSync(join(dir, file)).toString())
  16. console.log(data.video.title)
  17. const series = await Series.create({
  18. title: data.video.title,
  19. cover: data.video.img,
  20. price: new Decimal('999'),
  21. totalEpisodes: data.video.total
  22. })
  23. let i = 0
  24. const eps: Episode[] = []
  25. for (let s of data.series) {
  26. const ep = new Episode()
  27. ep.merge({
  28. seriesId: series.id,
  29. episodeNum: s.sn,
  30. video: s.path,
  31. price: ++i > 10 ? new Decimal('99') : new Decimal('0')
  32. })
  33. eps.push(ep)
  34. }
  35. await Episode.createMany(eps)
  36. console.log(data.video.id)
  37. }
  38. }
  39. }