Skip to content

Commit

Permalink
feat: add support for ID3v2.2 text frames
Browse files Browse the repository at this point in the history
  • Loading branch information
eidoriantan committed Feb 15, 2024
1 parent 676bc0c commit 98bf768
Show file tree
Hide file tree
Showing 2 changed files with 232 additions and 6 deletions.
228 changes: 227 additions & 1 deletion src/id3v2/frames.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -591,17 +591,243 @@ export const TSO2 = {
version: [3, 4]
}

/* ID3v2.2 Tags */
/**
* ID3v2.2 Tags
*/
export const TT1 = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TT2 = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TT3 = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TP1 = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TP2 = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TP3 = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TP4 = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TCM = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TXT = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TLA = {
parse: parsers.textFrame,
validate: validators.tlanFrame,
write: writers.win1251Frame,
version: [2]
}

export const TCO = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TAL = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TPA = {
parse: parsers.setFrame,
validate: validators.setFrame,
write: writers.setFrame,
version: [2]
}

export const TRK = {
parse: parsers.setFrame,
validate: validators.setFrame,
write: writers.setFrame,
version: [2]
}

export const TRC = {
parse: parsers.textFrame,
validate: validators.tsrcFrame,
write: writers.win1251Frame,
version: [2]
}

export const TYE = {
parse: parsers.textFrame,
validate: validators.timeFrame,
write: writers.win1251Frame,
version: [2]
}

export const TDA = {
parse: parsers.textFrame,
validate: validators.timeFrame,
write: writers.win1251Frame,
version: [2]
}

export const TIM = {
parse: parsers.textFrame,
validate: validators.timeFrame,
write: writers.win1251Frame,
version: [2]
}

export const TRD = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.win1251Frame,
version: [2]
}

export const TMT = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TFT = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TBP = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.win1251Frame,
version: [2]
}

export const TCR = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TPB = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TEN = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TSS = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TOF = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TLE = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.win1251Frame,
version: [2]
}

export const TSI = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.win1251Frame,
version: [2]
}

export const TDY = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.win1251Frame,
version: [2]
}

export const TKE = {
parse: parsers.textFrame,
validate: validators.tkeyFrame,
write: writers.win1251Frame,
version: [2]
}

export const TOT = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TOA = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.textFrame,
version: [2]
}

export const TOR = {
parse: parsers.textFrame,
validate: validators.textFrame,
write: writers.win1251Frame,
version: [2]
}
10 changes: 5 additions & 5 deletions src/id3v2/validate.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export function textFrame (value, version, strict) {
}

export function setFrame (value, version, strict) {
if (version === 3) value = [value]
if (version === 2 || version === 3) value = [value]
else if (version === 4) value = value.split('\\\\')

value.forEach(set => {
Expand All @@ -51,7 +51,7 @@ export function setFrame (value, version, strict) {
}

export function timeFrame (value, version, strict) {
if (version === 3) value = [value]
if (version === 2 || version === 3) value = [value]
else if (version === 4) value = value.split('\\\\')

value.forEach(time => {
Expand All @@ -70,7 +70,7 @@ export function timeFrame (value, version, strict) {
}

export function tkeyFrame (value, version, strict) {
if (version === 3) value = [value]
if (version === 2 || version === 3) value = [value]
else if (version === 4) value = value.split('\\\\')

value.forEach(tkey => {
Expand All @@ -85,7 +85,7 @@ export function tkeyFrame (value, version, strict) {
}

export function tlanFrame (value, version, strict) {
if (version === 3) value = [value]
if (version === 2 || version === 3) value = [value]
else if (version === 4) value = value.split('\\\\')

value.forEach(tlan => {
Expand All @@ -100,7 +100,7 @@ export function tlanFrame (value, version, strict) {
}

export function tsrcFrame (value, version, strict) {
if (version === 3) value = [value]
if (version === 2 || version === 3) value = [value]
else if (version === 4) value = value.split('\\\\')

value.forEach(tsrc => {
Expand Down

0 comments on commit 98bf768

Please sign in to comment.