mirror of
https://github.com/nexus-stc/hyperboria
synced 2025-01-10 18:56:03 +01:00
dd23846059
- [nexus] Switch bot - [bot] Added extra receivers functionality GitOrigin-RevId: 68fc32d3e79ff411758f54f435fe8680fc42dead
132 lines
3.2 KiB
JavaScript
132 lines
3.2 KiB
JavaScript
import { castStringToSingleString, quoteUrl } from './utils'
|
|
import { getIssuedDate } from './helpers'
|
|
|
|
export class BaseView {
|
|
constructor (dataPb) {
|
|
Object.assign(this, dataPb)
|
|
}
|
|
|
|
getFilename () {
|
|
const processedAuthor = castStringToSingleString((this.getFirstAuthors()).toLowerCase())
|
|
const processedTitle = castStringToSingleString(this.getRobustTitle()).toLowerCase()
|
|
|
|
const parts = []
|
|
if (processedAuthor) {
|
|
parts.push(processedAuthor)
|
|
}
|
|
if (processedTitle) {
|
|
parts.push(processedTitle)
|
|
}
|
|
|
|
let filename = parts.join('-')
|
|
|
|
if (!filename) {
|
|
if (this.doi) {
|
|
filename = quoteUrl(this.doi, '')
|
|
} else {
|
|
filename = this.md5
|
|
}
|
|
}
|
|
|
|
const year = getIssuedDate(this.issuedDate)
|
|
|
|
if (year) {
|
|
filename = `${filename}-${year}`
|
|
}
|
|
filename = filename.replace(/-+/g, '-')
|
|
|
|
return `${filename}.${this.extension}`
|
|
}
|
|
|
|
getExtension () {
|
|
if (this.extension) {
|
|
return this.extension
|
|
} else {
|
|
return 'pdf'
|
|
}
|
|
}
|
|
|
|
getFirstAuthors (etAl = true, firstNAuthors = 1) {
|
|
let etAlSuffix = ''
|
|
if (etAl) {
|
|
etAlSuffix = ' et al'
|
|
}
|
|
if (this.authorsList) {
|
|
if (this.authorsList.length > firstNAuthors) {
|
|
return this.authorsList.slice(0, firstNAuthors).join('; ') + etAlSuffix
|
|
} else if (this.authorsList.length === 1) {
|
|
if (this.authorsList[0].split(';').length - 1 >= 1) {
|
|
const commaAuthors = this.authorsList[0].split(';').map(function (el) {
|
|
return el.trim()
|
|
})
|
|
if (commaAuthors.length > firstNAuthors) {
|
|
return (commaAuthors.slice(0, firstNAuthors)).join('; ') + etAlSuffix
|
|
} else {
|
|
return commaAuthors.join('; ')
|
|
}
|
|
}
|
|
return this.authorsList[0]
|
|
} else {
|
|
return this.authorsList.join('; ')
|
|
}
|
|
} else {
|
|
return ''
|
|
}
|
|
}
|
|
|
|
getFormattedDatetime () {
|
|
if (this.issuedAt) {
|
|
const date = new Date(this.issuedAt * 1000)
|
|
const today = new Date()
|
|
const diffTime = Math.abs(date - today)
|
|
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))
|
|
if (diffDays < 365) {
|
|
return `${date.getUTCFullYear()}.${date.getUTCMonth()}`
|
|
} else {
|
|
return date.getUTCFullYear()
|
|
}
|
|
}
|
|
}
|
|
|
|
getFormattedFiledata () {
|
|
const parts = []
|
|
if (this.language) {
|
|
parts.push(this.language.toUpperCase())
|
|
}
|
|
parts.push(this.getExtension().toUpperCase())
|
|
if (this.filesize) {
|
|
parts.push(this.getFormattedFilesize())
|
|
}
|
|
return parts.join(' | ')
|
|
}
|
|
|
|
getFormattedFilesize () {
|
|
if (this.filesize) {
|
|
return (Math.max(1024, this.filesize) / (1024 * 1024)).toFixed(2) + 'Mb'
|
|
}
|
|
return ''
|
|
}
|
|
|
|
getIpfsMultihash () {
|
|
if (this.ipfsMultihashesList) {
|
|
return this.ipfsMultihashesList[0]
|
|
}
|
|
}
|
|
|
|
getTelegramLink () {
|
|
return `https://t.me/libgen_scihub_1_bot?start=${Buffer.from('NID: ' + this.id.toString()).toString('base64')}`
|
|
}
|
|
|
|
getRobustTitle () {
|
|
let result = this.title || ''
|
|
if (this.volume) {
|
|
if (this.title) {
|
|
result += ` ${this.volume}`
|
|
} else {
|
|
result += this.volume
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
}
|