-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathParser.js
More file actions
140 lines (111 loc) · 4.79 KB
/
Copy pathParser.js
File metadata and controls
140 lines (111 loc) · 4.79 KB
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
module.exports = class Parser {
parseDocString(string) {
if(string.search(/\n\nyear\nmmdd\nEvent description\nEvent type\n\n\n/g) !== -1){
return string.replace(/\n\nyear\nmmdd\nEvent description\nEvent type\n\n\n/g, '').replace(/\n\n$/g, '').split('\n')
}
else {
return []
}
}
parseAudioString(string) {
return getParsedAudioHash(string)
}
parsePhotoString(string) {
return getParsedPhotoHash(string)
}
parseWtvString(string) {
return getParsedWtvHash(string)
}
parseVideoString(string) {
return getParsedVideoHash(string)
}
}
function getParsedAudioHash(string){
const audioHash = {}
if(string.search(/^{[0-9]*}[[0-9]*]_{[0-9]*}\([0-9]*\)[[0-9]*]\([0-9]*\)_.*\ \ \[.*]_.*/g) !== -1){
audioHash.usChartDate = string.substring(1, string.indexOf('}'))
audioHash.usPeakPosition = string.substring(string.indexOf('_{')+2, string.indexOf('}('))
audioHash.usPeakNumOfWeeks = string.substring(string.indexOf('}(')+2, string.indexOf(')['))
audioHash.ukChartDate = string.substring(string.indexOf('[')+1, string.indexOf(']'))
audioHash.ukPeakPosition = string.substring(string.indexOf(')[')+2, string.indexOf(']('))
audioHash.ukPeakNumOfWeeks = string.substring(string.indexOf('](')+2, string.indexOf(')_'))
audioHash.name = string.substring(string.indexOf(')_')+2, string.indexOf('\ \ ['))
audioHash.information = string.substring(string.indexOf('\ \ [')+3, string.search(/]_[^{]/g))
audioHash.artist = string.substring(string.search(/]_[^{]/g)+2, string.indexOf('.'))
audioHash.fileType = string.split('.')[1]
}
else if(string.search(/^{[0-9]*}[[0-9]*]_{[0-9]*}\([0-9]*\)[[0-9]*]\([0-9]*\)_.*_.*/g) !== -1){
audioHash.usChartDate = string.substring(1, string.indexOf('}'))
audioHash.usPeakPosition = string.substring(string.indexOf('_{')+2, string.indexOf('}('))
audioHash.usPeakNumOfWeeks = string.substring(string.indexOf('}(')+2, string.indexOf(')['))
audioHash.ukChartDate = string.substring(string.indexOf('[')+1, string.indexOf(']'))
audioHash.ukPeakPosition = string.substring(string.indexOf(')[')+2, string.indexOf(']('))
audioHash.ukPeakNumOfWeeks = string.substring(string.indexOf('](')+2, string.indexOf(')_'))
splitStringArray = string.split('_')
audioHash.name = splitStringArray[2]
audioHash.artist = splitStringArray[3].split('.')[0]
audioHash.fileType = splitStringArray[3].split('.')[1]
}
return audioHash
}
function getParsedPhotoHash(string) {
const photoHash = {}
if(string.search(/^\(.+\)_{([0-9]{4}(-[0-9][0-9]){2}){0,1}}<.*>\(.*\)\[.*]/g) !== -1) {
photoHash.name = string.substring(1, string.indexOf(')_'))
const date = string.substring(string.indexOf('{')+1, string.indexOf('}'))
if(date.length !== 0) {
const dateObject = new Date(date)
if (dateObject.isValid()){
photoHash.created_at = dateObject
}
}
photoHash.location = string.substring(string.indexOf('<')+1, string.indexOf('>'))
photoHash.occasion = string.substring(string.indexOf('>(')+2, string.indexOf(')['))
splitStringArray = string.split('.')
const tagString = splitStringArray[0]
const tagArray = tagString.substring(string.indexOf(')[')+2,string.indexOf('].')).split(',')
photoHash.tags = tagArray
photoHash.fileType = splitStringArray[1]
}
return photoHash
}
function getParsedWtvHash(string) {
const wtvHash = {}
const wtvArray = string.split('_')
if(wtvArray.length === 8) {
wtvHash.name = wtvArray[0]
wtvHash.channel = wtvArray[1]
const date = wtvArray[2] + '-' + wtvArray[3] + '-' + wtvArray[4]
const dateObject = new Date(date)
if (dateObject.isValid()){
wtvHash.created_at = dateObject
}
wtvHash.duration = wtvArray[5] + ':' + wtvArray[6] + ':' + wtvArray[7].split('.')[0]
wtvHash.fileType = 'wtv'
}
return wtvHash
}
function getParsedVideoHash(string) {
const videoHash = {}
if(string.search(/^\(.+\)_{([0-9]{4}(-[0-9][0-9]){2}){0,1}}<.*>\(.*\)\[.*]/g) !== -1) {
videoHash.name = string.substring(1, string.indexOf(')_'))
const date = string.substring(string.indexOf('{')+1, string.indexOf('}'))
if(date.length !== 0) {
const dateObject = new Date(date)
if (dateObject.isValid()){
videoHash.created_at = dateObject
}
}
videoHash.actor = string.substring(string.indexOf('<')+1, string.indexOf('>'))
videoHash.description = string.substring(string.indexOf('>(')+2, string.indexOf(')['))
splitStringArray = string.split('.')
const tagString = splitStringArray[0]
const tagArray = tagString.substring(string.indexOf(')[')+2,string.indexOf('].')).split(',')
videoHash.tags = tagArray
videoHash.fileType = splitStringArray[1]
}
return videoHash
}
Date.prototype.isValid = function () {
return this.getTime() === this.getTime()
}