|
Кто знает как безопасно добавить TAG1 или TAG2 в MP3 если его не существовало до того
#36429839
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
|
Кое что начертил, что работает, только еще не все поля послушны. Несколько полей еще не работают. Работаю над этим.
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. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192.
'Конвертує вхідний адрес в 16кову систему і розкидує в два байти їх
Public Function KonvertTo_2ByteHEXAdres(Adres As Long) As String
Dim S As String
S = Right("00000000" + Hex(Adres), 8 )
KonvertTo_2ByteHEXAdres = Chr(CInt("&H" + Left(S, 2 ))) + Chr(CInt("&H" + Mid(S, 3 , 2 ))) + Chr(CInt("&H" + Mid(S, 5 , 2 ))) + Chr(CInt("&H" + Mid(S, 7 , 2 )))
End Function
'Редагує TAG2
Public Function P_Tag2Save(VhShlah As String, NewTitle As String, NewArtist As String, NewAlbum As String, NewYear As String, NewComment As String, NewJanr As String, NewTrack As String, NewComposer As String, NewOrigArtist As String, NewCopyright As String, NewEncoder As String, NewURL As String, NewBPM As String) As Boolean
'Ця функція нічого не перевіряє. Вона прямо виконує збереження без перевірок. Перевірки повинні бути до неї!!!!
Dim StatONTAG2 As Boolean
StatONTAG2 = Not (NewTitle = "" And NewArtist = "" And NewAlbum = "" And NewYear = "" And NewComment = "" And NewJanr = "" And NewTrack = "" And NewComposer = "" And NewOrigArtist = "" And NewCopyright = "" And NewEncoder = "" And NewURL = "" And NewBPM = "")
Dim L As Long
Dim S As String
Dim MPos As Long
Dim TmpS As String
Dim TmpS_2 As String
Dim n As Long
Dim TmpZ As String
Dim TmpL As Long
Dim TypTag As Boolean
Dim GotoMP3 As Long
Dim MP3 As String
Dim Vstup As String
L = FileLen(VhShlah)
Open VhShlah For Binary As # 55
S = Space(L)
Get # 55 , 1 , S
Close 55
MPos = 1
If Left(S, 3 ) = "ID3" Then
GotoMP3 = (Asc(Mid(S, 7 )) * 2048383 ) + (Asc(Mid(S, 8 )) * 16129 ) + (Asc(Mid(S, 9 )) * 127 ) + Asc(Mid(S, 10 ))
MP3 = Mid(S, GotoMP3)
Else
MP3 = S
End If
S = ""
'If NewEncoder <> "" Then
' S = S + "TBPM" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewEncoder))) + Chr(0) + Chr(0) + KonvToSimvOut_All(NewEncoder)
'End If
If NewEncoder <> "" Then
S = S + "TENC" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewEncoder)) + 3 ) + Chr( 64 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewEncoder)
End If
''If NewURL <> "" Then ' Є помилка!!!
'' S = S + "WXXX" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewURL)) + 2) + Chr(0) + Chr(0) + Chr(0) + Chr(0) + KonvToSimvOut_All(NewURL)
''End If
If NewCopyright <> "" Then
S = S + "TCOP" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewCopyright)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewCopyright)
End If
If NewOrigArtist <> "" Then
S = S + "TOPE" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewOrigArtist)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewOrigArtist)
End If
'If NewOrigArtist <> "" Then
' S = S + "TPUB" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewOrigArtist)) + 3) + Chr(0) + Chr(0) + Chr(1) + Chr(255) + Chr(254) + KonvToSimvOut_All(NewOrigArtist)
'End If
'If NewOrigArtist <> "" Then
' S = S + "TPOS" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewOrigArtist)) + 3) + Chr(0) + Chr(0) + Chr(1) + Chr(255) + Chr(254) + KonvToSimvOut_All(NewOrigArtist)
'End If
If NewTrack <> "" Then
S = S + "TRCK" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewTrack)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewTrack)
End If
If NewComposer <> "" Then
S = S + "TCOM" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewComposer)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewComposer)
End If
If NewArtist <> "" Then 'СПІВАК АЛЬБОМУ
S = S + "TPE2" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewArtist)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewArtist)
End If
'Повторюється бо то тоже композитор
'If NewArtist <> "" Then
' S = S + "COMM" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewArtist)) + 10) + Chr(0) + Chr(0) + Chr(1)+Chr(0)+Chr(0)+Chr(0)+Chr(255)+Chr(254)+Chr(0)+Chr(0) + Chr(255) + Chr(254) + KonvToSimvOut_All(NewArtist)
'End If
If NewTitle <> "" Then
S = S + "TIT2" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewTitle)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewTitle)
End If
If NewAlbum <> "" Then
S = S + "TALB" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewAlbum)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewAlbum)
End If
If NewArtist <> "" Then ' ЦЕ СПІВАК
S = S + "TPE1" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewArtist)) + 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 1 ) + Chr( 255 ) + Chr( 254 ) + KonvToSimvOut_All(NewArtist)
End If
''If NewComment <> "" Then ' коментар не працює!!!
'' S = S + "COMM" + KonvertTo_2ByteHEXAdres(Len(KonvToSimvOut_All(NewComment)) + 3) + Chr(0) + Chr(0) + Chr(1) + Chr(255) + Chr(254) + KonvToSimvOut_All(NewComment)
''End If
If Len(S) < 2049 Then
For n = 1 To 2049 - Len(S): S = S + Chr( 0 ): Next
MP3 = "ID3" + Chr( 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) + Chr( 15 ) + Chr( 18 ) + S + MP3
End If
If Len(S) > 2048 And Len(S) < 4097 Then
For n = 1 To 4097 - Len(S): S = S + Chr( 0 ): Next
MP3 = "ID3" + Chr( 3 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) + Chr( 32 ) + Chr( 0 ) + S + MP3
End If
Open VhShlah For Binary As # 55
Put # 55 , 1 , MP3
Close # 55
End Function
Public Function KonvToSimvOut_All(Vhid As String) As String
If Vhid = "" Then Exit Function
Dim i As Long
For i = 1 To Len(Vhid)
KonvToSimvOut_All = KonvToSimvOut_All + KonvToSimvOut(Mid(Vhid, i, 1 ))
Next
End Function
Function KonvToSimvOut(Simv As String) As String
If Simv = "Ё" Then KonvToSimvOut = Chr( 1 ) + Chr( 4 ): Exit Function
If Simv = "Є" Then KonvToSimvOut = Chr( 4 ) + Chr( 4 ): Exit Function
If Simv = "І" Then KonvToSimvOut = Chr( 6 ) + Chr( 4 ): Exit Function
If Simv = "Ї" Then KonvToSimvOut = Chr( 7 ) + Chr( 4 ): Exit Function
If Simv = "А" Then KonvToSimvOut = Chr( 16 ) + Chr( 4 ): Exit Function
If Simv = "Б" Then KonvToSimvOut = Chr( 17 ) + Chr( 4 ): Exit Function
If Simv = "В" Then KonvToSimvOut = Chr( 18 ) + Chr( 4 ): Exit Function
If Simv = "Г" Then KonvToSimvOut = Chr( 19 ) + Chr( 4 ): Exit Function
If Simv = "Д" Then KonvToSimvOut = Chr( 20 ) + Chr( 4 ): Exit Function
If Simv = "Е" Then KonvToSimvOut = Chr( 21 ) + Chr( 4 ): Exit Function
If Simv = "Ж" Then KonvToSimvOut = Chr( 22 ) + Chr( 4 ): Exit Function
If Simv = "З" Then KonvToSimvOut = Chr( 23 ) + Chr( 4 ): Exit Function
If Simv = "И" Then KonvToSimvOut = Chr( 24 ) + Chr( 4 ): Exit Function
If Simv = "Й" Then KonvToSimvOut = Chr( 25 ) + Chr( 4 ): Exit Function
If Simv = "К" Then KonvToSimvOut = Chr( 26 ) + Chr( 4 ): Exit Function
If Simv = "Л" Then KonvToSimvOut = Chr( 27 ) + Chr( 4 ): Exit Function
If Simv = "М" Then KonvToSimvOut = Chr( 28 ) + Chr( 4 ): Exit Function
If Simv = "Н" Then KonvToSimvOut = Chr( 29 ) + Chr( 4 ): Exit Function
If Simv = "О" Then KonvToSimvOut = Chr( 30 ) + Chr( 4 ): Exit Function
If Simv = "П" Then KonvToSimvOut = Chr( 31 ) + Chr( 4 ): Exit Function
If Simv = "Р" Then KonvToSimvOut = Chr( 32 ) + Chr( 4 ): Exit Function
If Simv = "С" Then KonvToSimvOut = Chr( 33 ) + Chr( 4 ): Exit Function
If Simv = "Т" Then KonvToSimvOut = Chr( 34 ) + Chr( 4 ): Exit Function
If Simv = "У" Then KonvToSimvOut = Chr( 35 ) + Chr( 4 ): Exit Function
If Simv = "Ф" Then KonvToSimvOut = Chr( 36 ) + Chr( 4 ): Exit Function
If Simv = "Х" Then KonvToSimvOut = Chr( 37 ) + Chr( 4 ): Exit Function
If Simv = "Ц" Then KonvToSimvOut = Chr( 38 ) + Chr( 4 ): Exit Function
If Simv = "Ч" Then KonvToSimvOut = Chr( 39 ) + Chr( 4 ): Exit Function
If Simv = "Ш" Then KonvToSimvOut = Chr( 40 ) + Chr( 4 ): Exit Function
If Simv = "Щ" Then KonvToSimvOut = Chr( 41 ) + Chr( 4 ): Exit Function
If Simv = "Ъ" Then KonvToSimvOut = Chr( 42 ) + Chr( 4 ): Exit Function
If Simv = "Ы" Then KonvToSimvOut = Chr( 43 ) + Chr( 4 ): Exit Function
If Simv = "Ь" Then KonvToSimvOut = Chr( 44 ) + Chr( 4 ): Exit Function
If Simv = "Э" Then KonvToSimvOut = Chr( 45 ) + Chr( 4 ): Exit Function
If Simv = "Ю" Then KonvToSimvOut = Chr( 46 ) + Chr( 4 ): Exit Function
If Simv = "Я" Then KonvToSimvOut = Chr( 47 ) + Chr( 4 ): Exit Function
If Simv = "а" Then KonvToSimvOut = Chr( 48 ) + Chr( 4 ): Exit Function
If Simv = "б" Then KonvToSimvOut = Chr( 49 ) + Chr( 4 ): Exit Function
If Simv = "в" Then KonvToSimvOut = Chr( 50 ) + Chr( 4 ): Exit Function
If Simv = "г" Then KonvToSimvOut = Chr( 51 ) + Chr( 4 ): Exit Function
If Simv = "д" Then KonvToSimvOut = Chr( 52 ) + Chr( 4 ): Exit Function
If Simv = "е" Then KonvToSimvOut = Chr( 53 ) + Chr( 4 ): Exit Function
If Simv = "ж" Then KonvToSimvOut = Chr( 54 ) + Chr( 4 ): Exit Function
If Simv = "з" Then KonvToSimvOut = Chr( 55 ) + Chr( 4 ): Exit Function
If Simv = "и" Then KonvToSimvOut = Chr( 56 ) + Chr( 4 ): Exit Function
If Simv = "й" Then KonvToSimvOut = Chr( 57 ) + Chr( 4 ): Exit Function
If Simv = "к" Then KonvToSimvOut = Chr( 58 ) + Chr( 4 ): Exit Function
If Simv = "л" Then KonvToSimvOut = Chr( 59 ) + Chr( 4 ): Exit Function
If Simv = "м" Then KonvToSimvOut = Chr( 60 ) + Chr( 4 ): Exit Function
If Simv = "н" Then KonvToSimvOut = Chr( 61 ) + Chr( 4 ): Exit Function
If Simv = "о" Then KonvToSimvOut = Chr( 62 ) + Chr( 4 ): Exit Function
If Simv = "п" Then KonvToSimvOut = Chr( 63 ) + Chr( 4 ): Exit Function
If Simv = "р" Then KonvToSimvOut = Chr( 64 ) + Chr( 4 ): Exit Function
If Simv = "с" Then KonvToSimvOut = Chr( 65 ) + Chr( 4 ): Exit Function
If Simv = "т" Then KonvToSimvOut = Chr( 66 ) + Chr( 4 ): Exit Function
If Simv = "у" Then KonvToSimvOut = Chr( 67 ) + Chr( 4 ): Exit Function
If Simv = "ф" Then KonvToSimvOut = Chr( 68 ) + Chr( 4 ): Exit Function
If Simv = "х" Then KonvToSimvOut = Chr( 69 ) + Chr( 4 ): Exit Function
If Simv = "ц" Then KonvToSimvOut = Chr( 70 ) + Chr( 4 ): Exit Function
If Simv = "ч" Then KonvToSimvOut = Chr( 71 ) + Chr( 4 ): Exit Function
If Simv = "ш" Then KonvToSimvOut = Chr( 72 ) + Chr( 4 ): Exit Function
If Simv = "щ" Then KonvToSimvOut = Chr( 73 ) + Chr( 4 ): Exit Function
If Simv = "ъ" Then KonvToSimvOut = Chr( 74 ) + Chr( 4 ): Exit Function
If Simv = "ы" Then KonvToSimvOut = Chr( 75 ) + Chr( 4 ): Exit Function
If Simv = "ю" Then KonvToSimvOut = Chr( 78 ) + Chr( 4 ): Exit Function
If Simv = "я" Then KonvToSimvOut = Chr( 79 ) + Chr( 4 ): Exit Function
If Simv = "ь" Then KonvToSimvOut = Chr( 76 ) + Chr( 4 ): Exit Function
If Simv = "э" Then KonvToSimvOut = Chr( 77 ) + Chr( 4 ): Exit Function
If Simv = "ё" Then KonvToSimvOut = Chr( 81 ) + Chr( 4 ): Exit Function
If Simv = "є" Then KonvToSimvOut = Chr( 84 ) + Chr( 4 ): Exit Function
If Simv = "і" Then KonvToSimvOut = Chr( 86 ) + Chr( 4 ): Exit Function
If Simv = "ї" Then KonvToSimvOut = Chr( 87 ) + Chr( 4 ): Exit Function
KonvToSimvOut = Simv + Chr( 0 )
End Function
Call P_Tag2Save("z:\p1.mp3","Title","Artist","Albom","God","Coment","Janr","Track","Composer","OrigArtist","Copyright","Encoder","URL","BMP")
|
|
|