File size: 3,561 Bytes
0bfe2e3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import { ParsedStream } from '@aiostreams/types';
import { formatDuration, formatSize, languageToEmoji } from './utils';
import { serviceDetails, Settings } from '@aiostreams/utils';

export function gdriveFormat(
  stream: ParsedStream,
  minimalistic: boolean = false
): {
  name: string;
  description: string;
} {
  let name: string = '';

  if (stream.provider) {
    const cacheStatus = stream.provider.cached
      ? '⚑'
      : stream.provider.cached === undefined
        ? '❓'
        : '⏳';
    const serviceShortName =
      serviceDetails.find((service) => service.id === stream.provider!.id)
        ?.shortName || stream.provider.id;
    name += `[${serviceShortName}${cacheStatus}] `;
  }

  if (stream.torrent?.infoHash) {
    name += `[P2P] `;
  }

  name += `${stream.addon.name} ${stream.personal ? '(Your Media) ' : ''}`;
  if (!minimalistic) {
    name += stream.resolution;
  } else {
    name += stream.resolution !== 'Unknown' ? stream.resolution + '' : '';
  }

  // let description: string = `${stream.quality !== 'Unknown' ? 'πŸŽ₯ ' + stream.quality + ' ' : ''}${stream.encode !== 'Unknown' ? '🎞️ ' + stream.encode : ''}`;
  let description: string = '';
  if (
    stream.quality ||
    stream.encode ||
    (stream.releaseGroup && !minimalistic)
  ) {
    description += stream.quality !== 'Unknown' ? `πŸŽ₯ ${stream.quality} ` : '';
    description += stream.encode !== 'Unknown' ? `🎞️ ${stream.encode} ` : '';
    description +=
      stream.releaseGroup !== 'Unknown' && !minimalistic
        ? `🏷️ ${stream.releaseGroup}`
        : '';
    description += '\n';
  }

  if (stream.visualTags.length > 0 || stream.audioTags.length > 0) {
    description +=
      stream.visualTags.length > 0
        ? `πŸ“Ί ${stream.visualTags.join(' | ')}   `
        : '';
    description +=
      stream.audioTags.length > 0 ? `🎧 ${stream.audioTags.join(' | ')}` : '';
    description += '\n';
  }
  if (
    stream.size ||
    (stream.torrent?.seeders && !minimalistic) ||
    (minimalistic && stream.torrent?.seeders && !stream.provider?.cached) ||
    stream.usenet?.age ||
    stream.duration
  ) {
    description += `πŸ“¦ ${formatSize(stream.size || 0)} `;
    description += stream.duration
      ? `⏱️ ${formatDuration(stream.duration)} `
      : '';
    description +=
      (stream.torrent?.seeders !== undefined && !minimalistic) ||
      (minimalistic && stream.torrent?.seeders && !stream.provider?.cached)
        ? `πŸ‘₯ ${stream.torrent.seeders} `
        : '';

    description += stream.usenet?.age ? `πŸ“… ${stream.usenet.age} ` : '';
    description +=
      stream.indexers && !minimalistic ? `πŸ” ${stream.indexers}` : '';
    description += '\n';
  }

  if (stream.languages.length !== 0) {
    let languages = stream.languages;
    if (minimalistic) {
      languages = languages.map(
        (language) => languageToEmoji(language) || language
      );
    }
    description += `🌎 ${languages.join(minimalistic ? ' / ' : ' | ')}`;
    description += '\n';
  }

  if (!minimalistic && (stream.filename || stream.folderName)) {
    description += stream.folderName ? `πŸ“ ${stream.folderName}\n` : '';
    description += stream.filename ? `πŸ“„ ${stream.filename}\n` : 'πŸ“„ Unknown\n';
  }

  if (stream.message) {
    description += `πŸ“’ ${stream.message}`;
  }

  if (stream.proxied) {
    name = `πŸ•΅οΈβ€β™‚οΈ ${name}`;
  } else if (Settings.SHOW_DIE) {
    name = `🎲 ${name}`;
  }

  description = description.trim();
  name = name.trim();
  return { name, description };
}