├── .gitattributes ├── data ├── actions │ ├── Audiobook action GENRE.mta │ ├── Audiobook action genre SERIES.mta │ ├── Audiobook action.mta │ ├── Music Action Albums.mta │ ├── Music Action LIVE.mta │ ├── Music Action Singles.mta │ └── Soundtrack action.mta └── sources │ ├── Audible.com#Authors images.src │ ├── Audible.com#Search by Album Json.src │ ├── Audible.com#Search by Album.src │ ├── Audiobooks.com#Search by Title[v.18.02.2024].src │ ├── Deezer Api v.1.02.src │ ├── Everand.com#Search by &Album Json Version.src │ ├── Everand.com#Search by &Album.src │ ├── Goodreads#Search by Artist+Album.src │ ├── Libro.fm#Json_Search by Album[v.02.06.2024].src │ ├── Mofibo.com#By Album[v.01.07.2023].src │ ├── Mofibo_JSON.src │ ├── Soundtrack.Net#Search by Album.src │ ├── Storytel JSON.src │ ├── Storytel.com#Search by Album.src │ ├── VGMdb#Search by &Album JSON.src │ ├── VGMdb#Search by &Album.src │ ├── VGMdb#U&RL.src │ └── VGMdbAlbumParser.inc ├── export ├── Audiobook export txt.mte ├── Export Audiobooks Standalone no cover.mte ├── Export Audiobooks Standalone.mte ├── Export Audiobooks series.mte └── Export Music.mte └── readme.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /data/actions/Audiobook action GENRE.mta: -------------------------------------------------------------------------------- 1 | [#0] 2 | T=5 3 | 1=%_counter% 4 | F=TRACK 5 | 6 | [#1] 7 | T=2 8 | F=GENRE 9 | 1=/ 10 | 2= - 11 | 3=0|0 12 | 13 | [#2] 14 | T=5 15 | F=_DIRECTORY 16 | 1=Y:\\%genre%\\%albumartist%\\[%series%]\\[Part %series-part%.]%year%. %album% (%_bitrate%kb) 17 | 18 | [#3] 19 | T=5 20 | 1=$num(%track%,2). %album% (%year%) [%series% - Book %series-part%] 21 | F=_FILENAME 22 | 23 | [#4] 24 | T=5 25 | 1=%album% (%year%) [Book %series-part%] 26 | F=TITLE 27 | 28 | [#5] 29 | T=5 30 | 1=$num(%_counter%,2)/$num(%_total_files%,2) 31 | F=TRACK 32 | 33 | [#6] 34 | T=13 35 | 1=folder 36 | 3=1|3 37 | 2=1 38 | 39 | -------------------------------------------------------------------------------- /data/actions/Audiobook action genre SERIES.mta: -------------------------------------------------------------------------------- 1 | [#0] 2 | T=5 3 | 1=%_counter% 4 | F=TRACK 5 | 6 | [#1] 7 | T=2 8 | F=GENRE 9 | 1=/ 10 | 2= - 11 | 3=0|0 12 | 13 | [#2] 14 | T=5 15 | F=_DIRECTORY 16 | 1=Y:\\%genre%\\%albumartist%\\[%series%]\\[Part %series-part%.]%year%. %album% (%_bitrate%kb) 17 | 18 | [#3] 19 | T=5 20 | 1=$num(%track%,2). %album% (%year%) [%series% - Book %series-part%] 21 | F=_FILENAME 22 | 23 | [#4] 24 | T=5 25 | 1=%album% (%year%) [Book %series-part%] 26 | F=TITLE 27 | 28 | [#5] 29 | T=5 30 | 1=$num(%_counter%,2)/$num(%_total_files%,2) 31 | F=TRACK 32 | 33 | [#6] 34 | T=13 35 | 1=folder 36 | 3=1|3 37 | 2=1 38 | 39 | [#7] 40 | T=13 41 | 1=..\\..\\artist-poster 42 | 3=1|8 43 | 2=0 44 | 45 | -------------------------------------------------------------------------------- /data/actions/Audiobook action.mta: -------------------------------------------------------------------------------- 1 | [#0] 2 | T=5 3 | F=_DIRECTORY 4 | 1=X:\\%albumartist%\\[%series%]\\[Part %series-part%.]%year%. %album% (%_bitrate%kb) 5 | 6 | [#1] 7 | T=5 8 | 1=$num(%track%,2). %album% (%year%) [%series% - Book %series-part%] 9 | F=_FILENAME 10 | 11 | [#2] 12 | T=5 13 | 1=%album% (%year%) [Book %series-part%] 14 | F=TITLE 15 | 16 | [#3] 17 | T=5 18 | 1=$num(%_counter%,2)/$num(%_total_files%,2) 19 | F=TRACK 20 | 21 | [#4] 22 | T=13 23 | 1=folder 24 | 3=1|3 25 | 2=0 26 | 27 | [#5] 28 | T=13 29 | 1=..\\artist-poster 30 | 3=1|8 31 | 2=0 32 | 33 | -------------------------------------------------------------------------------- /data/actions/Music Action Albums.mta: -------------------------------------------------------------------------------- 1 | [#0] 2 | T=5 3 | F=_DIRECTORY 4 | 1=X:\\%albumartist%\\Albums\\%album% (%year%) 5 | 6 | [#1] 7 | T=5 8 | 1=$num(%track%,2). %title% 9 | F=_FILENAME 10 | 11 | -------------------------------------------------------------------------------- /data/actions/Music Action LIVE.mta: -------------------------------------------------------------------------------- 1 | [#0] 2 | T=5 3 | F=_DIRECTORY 4 | 1=X:\\%albumartist%\\Live\\%album% (%year%) 5 | 6 | [#1] 7 | T=5 8 | 1=$num(%track%,2). %title% 9 | F=_FILENAME 10 | 11 | -------------------------------------------------------------------------------- /data/actions/Music Action Singles.mta: -------------------------------------------------------------------------------- 1 | [#0] 2 | T=5 3 | F=_DIRECTORY 4 | 1=X:\\%albumartist%\\Singles & Eps\\%album% (Single) (%_extension%-%_bitrate%) 5 | 6 | [#1] 7 | T=5 8 | 1=%_counter% 9 | F=TRACK 10 | 11 | [#2] 12 | T=5 13 | 1=$num(%track%,2). %title% 14 | F=_FILENAME 15 | 16 | -------------------------------------------------------------------------------- /data/actions/Soundtrack action.mta: -------------------------------------------------------------------------------- 1 | [#0] 2 | T=5 3 | 1=%_counter% 4 | F=TRACK 5 | 6 | [#1] 7 | T=5 8 | F=_DIRECTORY 9 | 1=U:\\%albumartist%\\%album% [(%comment%)](%_bitrate%kb) [(%year%)] 10 | 11 | [#2] 12 | T=5 13 | 1=$num(%track%,2). %title% 14 | F=_FILENAME 15 | 16 | -------------------------------------------------------------------------------- /data/sources/Audible.com#Authors images.src: -------------------------------------------------------------------------------- 1 | # ################################################################### 2 | # 3 | # Mp3tag parsing for Audible.com, created by romano. 4 | # This is only to get artist Cover and Bio. 5 | # 6 | # 2020-04-24: wip first(romano) 7 | # Changes in the commits: https://github.com/romanoh/Mp3tag-Repository 8 | # Last Change: 16.09.2021 9 | # 10 | # Copy this file to your sources directory at 11 | # %APPDATA%\Mp3tag\data\sources 12 | # 13 | # ################################################################### 14 | 15 | [Name]=Audible.com 16 | [BasedOn]=www.audible.com 17 | [IndexUrl]=https://www.audible.com/search?keywords= 18 | [AlbumUrl]=https://www.audible.com 19 | [WordSeperator]=+ 20 | [IndexFormat]=%_url%|%Author% 21 | [SearchBy]=%artist% %album% 22 | [Encoding]=url-utf-8 23 | 24 | [ParserScriptIndex]=... 25 | # ################################################################### 26 | # I N D E X 27 | # ################################################################### 28 | #DebugWriteInput "C:\Users\xxxx\Desktop\mp3tag.html" 29 | #Debug "ON" "C:\Users\xxxxx\Desktop\mp3tagdebug.txt" 30 | 31 | #join everything until end 32 | joinuntil "" 33 | 34 | #remove spaces after lines 35 | regexpreplace "[\r\n]+" "" 36 | 37 | #.+ Matches any character except linebreaks and replace them whit "results" 38 | regexpreplace ".+results" "results" 39 | 40 | regexpreplace "" 126 | unspace 127 | 128 | # Matches any whitespace character (spaces, tabs, line breaks). 129 | regexpreplace "\s\s+" " " 130 | # Remove the second Json 131 | regexpreplace ",\s*{ \"@context\": \"http:\/\/schema\.org\", \"@type\": \"BreadcrumbList\", \"itemListElement\": \[.*?\]" "" 132 | replace " } ]" "" 133 | 134 | # Use this to remove the html tags 135 | RegexpReplace "<[^>]+>" "" 136 | Replace "\\/" "/" 137 | # ------------------------------------------------------------------ 138 | 139 | 140 | # replace problematic characters for Mp3tag 141 | replace "|" "$verticalBar()" 142 | 143 | # use "current" json (applies replacements above) 144 | json "on" "current" 145 | 146 | # Album/Title 147 | outputto "Album" 148 | json_select "name" 149 | sayrest 150 | 151 | # Comments 152 | OutputTo "comment" 153 | json_select "description" 154 | SayRest 155 | 156 | # Cover 157 | OutputTo "COVERURL" 158 | json_select "image" 159 | SayRest 160 | 161 | # abridged 162 | OutputTo "abridged" 163 | json_select "abridged" 164 | SayRest 165 | 166 | # Author 167 | OutputTo "artist" 168 | json_select_array "author" 1 169 | json_select "name" 170 | SayRest 171 | json_unselect_object 172 | 173 | # narrator/composer 174 | OutputTo "composer" 175 | json_select_array "readBy" 1 176 | json_select "name" 177 | SayRest 178 | json_unselect_object 179 | 180 | # publisher 181 | OutputTo "publisher" 182 | json_select "publisher" 183 | SayRest 184 | 185 | # datePublished 186 | OutputTo "Year" 187 | json_select "datePublished" 188 | RegexpReplace "^.*?(?:^|\D)(\d{4})(?:\D|$).*$" "$1" 189 | SayRest 190 | 191 | # language 192 | OutputTo "language" 193 | json_select "inLanguage" 194 | SayRest 195 | 196 | # duration 197 | OutputTo "duration" 198 | json_select "duration" 199 | SayRest 200 | 201 | # Set Artist = Albumartist 202 | OutputTo "albumartist" 203 | sayoutput "artist" 204 | sayrest 205 | 206 | 207 | json "off" 208 | # Second Json for genres 209 | 210 | # Genres 211 | #outputto "genre" 212 | gotoline 1 213 | findline "" 214 | joinuntil "" 215 | 216 | do 217 | OutputTo "genre" 218 | findinline "data-text=\"" 219 | sayuntil "\"" 220 | say " " 221 | saynewline 222 | findinline " " 227 | 228 | 229 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /data/sources/Audible.com#Search by Album.src: -------------------------------------------------------------------------------- 1 | # ################################################################### 2 | # Mp3tag parsing for Audible.com. 3 | # Initially created by dano on 2013-03-11 4 | # After 11.04.2020, improved by romano, changes in the commits: https://github.com/romanoh/Mp3tag-Repository 5 | # 22.12.2021: Fix a rare error in series name appearing as "Audible Original Stories" 6 | # 03.12.2022: Fix a small html error. 7 | # 8 | # 9 | # This file should be in your sources dir. 10 | # On Windows XP it's C:\Documents and Settings\*username*\Application Data\Mp3tag\data\sources 11 | # #################################################################### 12 | 13 | [Name]=Audible.com [v.03.12.2022] 14 | [BasedOn]=www.audible.com 15 | [IndexUrl]=https://www.audible.com/search?keywords= 16 | [AlbumUrl]=https://www.audible.com 17 | [WordSeparator]=+ 18 | [IndexFormat]=%_url%|% ↓ Album%|% ↓ Author%|% ↓ Duration%|% ↓ Year%|% ↓ Language% 19 | [SearchBy]=Enter Artist and/or Album||%artist% $regexp(%album%,'[- ]+cd ?\d+$',,1)||%s 20 | [Encoding]=url-utf-8 21 | 22 | 23 | [ParserScriptIndex]=... 24 | # ################################################################### 25 | # I N D E X 26 | # ################################################################### 27 | #DebugWriteInput "C:\Users\xxxx\Desktop\mp3tag.html" 28 | #Debug "ON" "C:\Users\xxxxx\Desktop\mp3tagdebug.txt" 29 | 30 | #Only select the area we need instead of everyting. 31 | findline "center-3" 32 | joinuntil "center-4" 33 | 34 | #Matches any whitespace character (spaces, tabs, line breaks). 35 | regexpreplace "\s\s+" " " 36 | 37 | #Matches a TAB character 38 | regexpreplace "\t+" " " 39 | replace "\" >" "\">" 40 | replace "> <" "><" 41 | replace "Running Time:" "" 42 | 43 | findinline "results" 44 | findinline "

" 55 | sayuntil "<" 56 | 57 | findinline "" 58 | if "
  • " 61 | sayuntil "<" 62 | 63 | else 64 | if "
  • " 67 | sayuntil "<" 68 | endif 69 | 70 | endif 71 | say "|" 72 | 73 | #Author 74 | findinline "authorLabel\">" 75 | findinline "href=" 76 | findinline ">" 77 | sayuntil "<" 78 | say "|" 79 | 80 | #Series 81 | #findinline "Series:" 1 1 82 | #findinline "href=\"/series/" 1 1 83 | #findinline "\">" 1 1 84 | #sayuntil "<" 85 | #findinline "Book " 1 1 86 | #say " " 87 | #saynextnumber 88 | #say "|" 89 | 90 | # Duration 91 | findinline "runtimeLabel\">" 92 | findinline "Length: " 93 | sayuntil "<" 94 | say "|" 95 | 96 | # Year 97 | findinline "Release date:" 98 | sayuntil "<" 99 | say "|" 100 | 101 | # Language 102 | findinline "languageLabel\">" 103 | findinline "Language:" 104 | sayuntil "<" 105 | 106 | 107 | saynewline 108 | 109 | findinline "

    " 132 | findinline ":" 1 1 133 | movechar -1 134 | if ":" 135 | findline "

    " 138 | outputto "Album" 139 | regexpreplace "<]+>" "" 140 | unspace 141 | regexpreplace " +" " " 142 | sayuntil ":" 143 | outputto "subtitle" 144 | movechar 2 145 | sayuntil "<" 146 | else 147 | findline "

    " 1 1 150 | outputto "Album" 151 | sayuntil "<" 152 | endif 153 | 154 | # Subtitle of Album 155 | regexpreplace " +" " " 156 | replace "" "" 157 | findinline "bc-text bc-size-medium\" " 1 1 158 | if ">" 159 | movechar 1 160 | outputto "Subtitle" 161 | sayuntil "<" 162 | else 163 | gotoline 1 164 | endif 165 | 166 | # Author 167 | outputto "Artist" 168 | findline "authorLabel" 169 | moveline 3 1 170 | joinuntil "

  • " 171 | regexpreplace "<]+>" "" 172 | unspace 173 | regexpreplace " +" " " 174 | regexpreplace ".+By:" "" 175 | sayrest 176 | 177 | # narratorLabel 178 | outputto "Composer" 179 | findline "narratorLabel" 180 | moveline 3 1 181 | joinuntil "" 182 | regexpreplace "<]+>" "" 183 | unspace 184 | #join more than one space 185 | regexpreplace " +" " " 186 | replace "Narrated by: " "" 187 | sayrest 188 | 189 | # Grouping / Series 190 | findline "seriesLabel" 1 1 191 | unspace 192 | if "seriesLabel" 193 | outputto "SERIES" 194 | findline "href=" 195 | findinline ">" 196 | if "Audible Original Stories" 197 | sayoutput "" 198 | else 199 | sayuntil "<" 200 | outputto "series-part" 201 | findinline "a>, Book " 1 1 202 | SayRegexp "^[.?\d]+$" 203 | endif 204 | else 205 | gotoline 1 206 | endif 207 | 208 | # 1st Genre 209 | findline "categoriesLabel" 1 1 210 | unspace 211 | if "categoriesLabel" 212 | outputto "tmp_Genre1" 213 | findinline "categoriesLabel" 1 1 214 | joinuntil "" 215 | findinline "href=" 216 | findinline ">" 217 | sayuntil "<" 218 | # 2nd Genre 219 | findinline "href=" 1 1 220 | movechar -1 221 | if "=" 222 | findinline ">" 223 | outputto "tmp_Genre2" 224 | sayuntil "<" 225 | outputto "genre" 226 | sayoutput "tmp_Genre1" 227 | say "/" 228 | sayoutput "tmp_Genre2" 229 | else 230 | outputto "genre" 231 | sayoutput "tmp_Genre1" 232 | endif 233 | else 234 | gotoline 1 235 | endif 236 | 237 | # Rating 238 | outputto "RATING WINAMP" 239 | findline "ratingsLabel" 1 1 240 | unspace 241 | if "ratingsLabel" 242 | findline "bc-pub-offscreen" 243 | findinline ">" 244 | saynextnumber 245 | else 246 | gotoline 1 247 | endif 248 | 249 | 250 | # Description 251 | findline "Publisher's Summary" 252 | outputto "Comment" 253 | findline "" 255 | regexpreplace "<]+>" "" 256 | unspace 257 | regexpreplace " +" " " 258 | replace "bc-color-secondary\" >" "" 259 | sayrest 260 | 261 | # © Year, ©, Release Year, Publisher, the closest we can get to Original Pub year, Audible is not consistent with dates 262 | findline "" 263 | joinuntil "" 264 | findinline "(P)" 1 1 265 | movechar -17 266 | if "Public Domain" 267 | outputto "Copyright" 268 | say "Public Domain" 269 | outputto "year" 270 | findinline "(P)" 271 | SayNChars 4 272 | outputto "Publisher" 273 | movechar 1 274 | sayuntil "<" 275 | else 276 | gotoline 1 277 | findline "©" 278 | findinline "©" 279 | outputto "Year" 280 | SayNChars 4 281 | gotoline 1 282 | findline "©" 283 | replace "(P)" "; " 284 | findinline "©" 285 | outputto "Copyright" 286 | sayuntil ";" 287 | movechar 2 288 | outputto "RELEASETIME" 289 | SayNChars 4 290 | outputto "Publisher" 291 | movechar 1 292 | sayuntil "<" 293 | endif 294 | 295 | # Cover 296 | outputto "Coverurl" 297 | findline "\"image\": \"" 298 | replace "_SL175_" "_SS500_" 299 | replace "_SL300_" "_SS500_" 300 | findinline "\"image\": \"" 301 | sayuntil "\"" 302 | 303 | # Set "Albumsort" 304 | IfOutput "series" 305 | outputto "Albumsort" 306 | sayoutput "series" 307 | say " " 308 | sayoutput "series-part" 309 | say " " 310 | say "- " 311 | sayoutput "Year" 312 | say ". " 313 | sayoutput "album" 314 | else 315 | outputto "Albumsort" 316 | sayoutput "Year" 317 | say ". " 318 | sayoutput "album" 319 | endif 320 | 321 | # Set Artist = Albumartist 322 | outputto "albumartist" 323 | sayoutput "Artist" 324 | 325 | # Set Disknumber 326 | outputto "DISCNUMBER" 327 | sayoutput "series-part" 328 | 329 | # Set Audible Album URL 330 | outputto "WWWAUDIOFILE" 331 | sayoutput "CurrentUrl" 332 | 333 | # Set Comment to DESCRIPTION for better MP4 support 334 | outputto "DESCRIPTION" 335 | sayoutput "Comment" 336 | -------------------------------------------------------------------------------- /data/sources/Audiobooks.com#Search by Title[v.18.02.2024].src: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Mp3tag Tag Source for Audiobooks.com 3 | # 4 | # Created by romano in 29.08.2020 5 | # 6 | # This file needs to be stored in Mp3tag's tag sources directory: 7 | # %APPDATA%\Mp3tag\data\sources 8 | # 9 | # [2020-08-29]NEW: Initial work 10 | # [2020-08-29]NEW: Some cleanup 11 | # [2020-08-29]CHG: "Description" is now "comment" and updated to "Edition" 12 | # [2021-11-26]CHG: Improved Duration. 13 | # [2021-11-26]FIX: Fixed to work with new html. 14 | # [2022-01-04]FIX: Handle search redirect to book (Frozer); Only ouput year (Frozer); List all search results on page (Frozer) 15 | # [2023-01-29]FIX: Fixed to work with new html again. 16 | # [2023-09-23]FIX: Fixed to work with new html again in index. 17 | # [2023-10-20]FIX: Some fixes 18 | # [2024-02-17]FIX: Fixed to work with new html again. 19 | # [2024-02-18]FIX: Some fixes, now it works to book directly. 20 | # 21 | # Notes: 22 | # This web site only allows search for book or author. 23 | ################################################################################ 24 | 25 | [Name]=Audiobooks.com [18-02-2024] 26 | [BasedOn]=Audiobooks.com 27 | [IndexUrl]=https://www.audiobooks.com/search/book/ 28 | [AlbumUrl]= 29 | [WordSeparator]=%20 30 | [IndexFormat]=%_url%|% ↓ Album%|% ↓ Artist%|% ↓ Duration% 31 | [SearchBy]=%Album% 32 | [Encoding]=url-utf-8 33 | 34 | ################################################################################ 35 | # LIST OF SEARCH RESULTS DIALOG # 36 | ################################################################################ 37 | [ParserScriptIndex]=... 38 | 39 | ## Comment/uncomment for debugging purposes: 40 | #DebugWriteInput "C:\Users\xxxx\Desktop\mp3tag_audiobooks.com.html" 41 | #Debug "on" "C:\Users\xxx\Desktop\audiobooks.com.txt" 42 | 43 | FindLine "
    " 1 1 44 | findline "data-bookid" 1 1 45 | unspace 46 | 47 | if "" 60 | Say "|" 61 | 62 | # ARTIST 63 | findline " " 1 1 64 | findinline " " 1 1 65 | SayUntil "<" 66 | Say "|" 67 | 68 | # DURATION 69 | findline "duration d-block\">" 1 1 70 | findinline "duration d-block\">" 1 1 71 | SayUntil "<" 72 | #sayrest 73 | 74 | SayNewline 75 | 76 | findline "credit" 80 | else 81 | gotoline 1 82 | FindLine "" 102 | joinuntil "" 103 | 104 | # Cover 105 | outputto "Coverurl" 106 | findinline "src=\"//" 107 | say "https://" 108 | sayuntil "\"" 109 | 110 | #Album Title 111 | outputto "Album" 112 | findinline "title=\"" 113 | sayuntil "\"" 114 | 115 | #Author 116 | outputto "Artist" 117 | findinline "Written by:" 118 | # todo: use more authors here 119 | findinline "\">" 120 | sayuntil "<" 121 | 122 | #Narrator 123 | outputto "Composer" 124 | findinline "Narrated by:" 125 | # todo: use more narrators here 126 | findinline "\">" 127 | sayuntil "<" 128 | 129 | # I have to put the Unabridged somewhere 130 | #Edition 131 | outputto "Edition" 132 | findinline "abridged-text\">" 133 | sayuntil "<" 134 | 135 | #Year 136 | outputto "Year" 137 | #todo: improve date 138 | findinline "meta__date\">" 139 | sayuntil "<" 140 | 141 | #Duration 142 | # Is it worth it? 143 | # todo: improve it 144 | outputto "Duration" 145 | findinline "Duration" 146 | findinline "" 147 | sayuntil "<" 148 | 149 | #Comment 150 | outputto "Comment" 151 | findinline "description\">" 152 | sayuntil "
    " 153 | replace "
    " " " 154 | 155 | #Genres 156 | #todo more genres 157 | findinline "genres-list\">" 158 | outputto "Genre 1" 159 | findinline "" 160 | sayuntil "<" 161 | outputto "Genre 2" 162 | findinline "" 163 | sayuntil "<" 164 | outputto "Genre" 165 | sayoutput "Genre 1" 166 | say "/" 167 | sayoutput "Genre 2" 168 | 169 | #remove temps 170 | Set "Genre 1" 171 | Set "Genre 2" 172 | 173 | # Set Artist = Albumartist 174 | outputto "albumartist" 175 | sayoutput "Artist" 176 | 177 | # Set Audible Album URL 178 | outputto "WWWAUDIOFILE" 179 | sayoutput "CurrentUrl" 180 | 181 | # Set Comment to DESCRIPTION for better MP4 support 182 | outputto "DESCRIPTION" 183 | sayoutput "Comment" -------------------------------------------------------------------------------- /data/sources/Deezer Api v.1.02.src: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Mp3tag Tag Source for Deezer.com 3 | # I used vikaesar web source(v1.00) to make my own(this version uses the json 4 | # in https://api.deezer.com, instead of the json inside the html). 5 | # 6 | # INSTRUCTIONS: This file needs to be stored in Mp3tag's tag sources 7 | # directory: 8 | # %APPDATA%\Mp3tag\data\sources 9 | # 10 | # CHANGELOG 11 | # [2022-02-27] v1.01 Initial release 12 | # [2022-03-01] v1.02 Some cleanup and added date to date tag. 13 | ################################################################################ 14 | 15 | [Name]=Deezer [2022-03-01 v1.02] 16 | [BasedOn]=www.deezer.com 17 | [IndexUrl]=https://www.deezer.com/search/%s 18 | [AlbumUrl]=https://api.deezer.com/album/ 19 | [WordSeparator]=%20 20 | [IndexFormat]=%_preview%|%_url%|%Album%|%Artist%|%Year% 21 | [SearchBy]=%Artist% %Album% 22 | [Encoding]=url-utf-8 23 | [UserAgent]=1 24 | 25 | ################################################################################ 26 | # LIST OF SEARCH RESULTS DIALOG # 27 | ################################################################################ 28 | [ParserScriptIndex]=... 29 | 30 | ## Comment/uncomment for debugging purposes: 31 | # DebugWriteInput "C:\Users\your_username\Desktop\deezer_index_debug.html" 32 | # Debug "ON" "C:\Users\xxxx\Desktop\deezer_index_debug.txt" 33 | 34 | FindLine ".+" "" 37 | 38 | json "ON" "current" 39 | 40 | ## First, check if we've found anything 41 | json_select_object "ALBUM" 42 | json_select "count" 43 | 44 | ## Then iterate over all releases 45 | ifnot "0" 46 | json_foreach "data" 47 | 48 | # Preview (no column, only for preview) 49 | say "https://www.deezer.com/pt/album/" 50 | json_select "ALB_ID" 51 | SayRest 52 | Say "|" 53 | 54 | # URL 55 | json_select "ALB_ID" 56 | SayRest 57 | Say "|" 58 | 59 | # Album 60 | json_select "ALB_TITLE" 61 | SayRest 62 | Say "|" 63 | 64 | # Artist 65 | json_select "ART_NAME" 66 | SayRest 67 | Say "|" 68 | 69 | # Year 70 | json_select "PHYSICAL_RELEASE_DATE" 71 | SayRest 72 | 73 | SayNewline 74 | 75 | json_foreach_end 76 | endif 77 | 78 | 79 | ################################################################################ 80 | # ADJUST TAG INFORMATION DIALOG # 81 | ################################################################################ 82 | [ParserScriptAlbum]=... 83 | 84 | ## Comment/uncomment for debugging purposes: 85 | # DebugWriteInput "C:\Users\your_username\Desktop\deezer_album_debug.html" 86 | # Debug "ON" "C:\Users\xxxx\Desktop\deezer_album_debug.txt" 87 | 88 | 89 | json "ON" "current" 90 | 91 | # Album 92 | OutputTo "ALBUM" 93 | json_select "title" 94 | SayRest 95 | 96 | # Single or Album 97 | OutputTo "MEDIATYPE" 98 | json_select "record_type" 99 | SayRest 100 | 101 | # UPC 102 | OutputTo "UPC" 103 | json_select "upc" 104 | SayRest 105 | 106 | # Link 107 | OutputTo "www" 108 | json_select "link" 109 | SayRest 110 | 111 | # Album artist 112 | outputto "albumartist" 113 | json_select_object "artist" 114 | json_select "name" 115 | SayRest 116 | json_unselect_object 117 | 118 | # Publisher 119 | OutputTo "PUBLISHER" 120 | json_select "label" 121 | SayRest 122 | 123 | # Cover 124 | OutputTo "COVERURL" 125 | json_select "cover_big" 126 | SayRest 127 | ## You can choose the cover resolution here, up to 1000px x 1000px 128 | ## Just use "cover_medium" or "cover_big" or "cover_xl" 129 | 130 | # Release date 131 | OutputTo "YEAR" 132 | json_select "release_date" 133 | ## A) Full date, e.g. 2018-09-26 134 | #SayRest 135 | ## B) Year only, e.g. 2018 136 | SayUntil "-" 137 | 138 | # Date 139 | OutputTo "Date" 140 | json_select "release_date" 141 | sayrest 142 | 143 | # Genres 144 | outputto "GENRE" 145 | json_select_object "genres" 146 | json_foreach "data" 147 | ifnot "0" 148 | json_select "name" 149 | ifoutput "genre" 150 | say "/" 151 | endif 152 | sayrest 153 | endif 154 | json_foreach_end 155 | json_unselect_object 156 | 157 | # All kind of contributors(the data in Deezer is small) 158 | OutputTo "INVOLVEDPEOPLE" 159 | json_foreach "contributors" 160 | ifnot "0" 161 | json_select "type" 162 | sayrest 163 | say "(" 164 | json_select "role" 165 | sayrest 166 | say "):" 167 | json_select "name" 168 | sayrest 169 | endif 170 | json_foreach_end 171 | json_unselect_object 172 | 173 | # Comment 174 | outputto "comment" 175 | say "Full release date: " 176 | json_select "release_date" 177 | SayRest 178 | 179 | # Track count 180 | outputto "TOTALTRACKS" 181 | json_select "nb_tracks" 182 | SayRest 183 | 184 | ## Iterate over all tracks 185 | json_select_object "tracks" 186 | json_foreach "data" 187 | ifnot "0" 188 | 189 | # tracks title 190 | outputto "tracks" 191 | json_select "title" 192 | sayrest 193 | say "|" 194 | 195 | # Lenght 196 | outputto "_LENGTH" 197 | json_select "duration" 198 | sayrest 199 | say "|" 200 | 201 | # artist 202 | outputto "Artist" 203 | json_select_object "artist" 204 | json_select "name" 205 | sayrest 206 | say "|" 207 | 208 | endif 209 | 210 | json_foreach_end 211 | json_unselect_object -------------------------------------------------------------------------------- /data/sources/Everand.com#Search by &Album Json Version.src: -------------------------------------------------------------------------------- 1 | # ###################################################################### 2 | # Mp3tag web source for Everand.com, Created by Romano. 3 | # Former scribd.com 4 | # 5 | # Copy this file to your sources directory at 6 | # %APPDATA%\Mp3tag\data\sources 7 | # 8 | # Changes: https://github.com/romanoh/Mp3tag-Repository 9 | # 10 | # [2024.02.24] NEW: First updated version using Json 11 | # 12 | # ###################################################################### 13 | 14 | [Name]=everand.com [v.24.02.2024] 15 | [BasedOn]=everand.com 16 | [IndexUrl]=https://www.everand.com/search/query?query=%s 17 | [AlbumUrl]=https://www.everand.com/audiobook/ 18 | [WordSeparator]=%20 19 | [IndexFormat]=%_preview%|%_url%|% ↓ Release Date%|% ↓ Title%|% ↓ Author% 20 | #remove everything inside () 21 | [SearchBy]=Enter Album Name||$regexp(%album%,'\([^)]*\)',,1)||%s 22 | [Encoding]=url-utf-8 23 | [UserAgent]=1 24 | 25 | [ParserScriptIndex]=... 26 | # ################################################################### 27 | # I N D E X 28 | # ################################################################### 29 | #DebugWriteInput "C:\Users\xxxx\Desktop\scribd.html" 30 | #Debug "ON" "C:\Users\xxxx\Desktop\index_scrib.txt" 31 | 32 | json "ON" 33 | 34 | json_select_object "results" 35 | json_select_object "audiobooks" 36 | json_select_object "content" 37 | 38 | json_foreach "documents" 39 | 40 | # Preview (no column, only for preview) 41 | json_select "book_preview_url" 42 | SayRest 43 | Say "|" 44 | 45 | json_select "id" 46 | SayRest 47 | Say "|" 48 | 49 | json_select "releasedAt" 50 | SayRest 51 | Say "|" 52 | 53 | json_select "title" 54 | SayRest 55 | Say "|" 56 | 57 | json_select "author" 58 | json_select "name" 59 | SayRest 60 | 61 | saynewline 62 | 63 | json_foreach_end 64 | json_unselect_object 65 | 66 | ################################################################################ 67 | # ADJUST TAG INFORMATION DIALOG # 68 | ################################################################################ 69 | [ParserScriptAlbum]=... 70 | 71 | ## Comment/uncomment for debugging purposes: 72 | #DebugWriteInput "C:\Users\xxxx\Desktop\scribd_album_debug.html" 73 | #Debug "ON" "C:\Users\xxx\Desktop\scribd_album_debug.txt" 74 | 75 | # Use the json inside the html 76 | findline "\">" 106 | # Use this to remove the html tags 107 | RegexpReplace "<[^>]+>" "" 108 | Replace "\\/" "/" 109 | Unspace 110 | 111 | json "on" "current" 112 | 113 | # Album 114 | OutputTo "ALBUM" 115 | json_select "name" 116 | SayRest 117 | 118 | # Comments 119 | OutputTo "comment" 120 | json_select "description" 121 | SayRest 122 | 123 | # Isbn 124 | OutputTo "isbn" 125 | json_select "isbn" 126 | SayRest 127 | 128 | # Cover 129 | OutputTo "COVERURL" 130 | json_select "image" 131 | SayRest 132 | 133 | # Cover 134 | OutputTo "abridged" 135 | json_select "abridged" 136 | SayRest 137 | 138 | # Artist 139 | outputto "artist" 140 | json_foreach "author" 141 | ifnot "0" 142 | json_select_object "name" 143 | json_select "name" 144 | ifoutput "artist" 145 | say "/" 146 | endif 147 | sayrest 148 | json_unselect_object 149 | endif 150 | json_foreach_end 151 | 152 | # narrator 153 | outputto "composer" 154 | json_foreach "readBy" 155 | ifnot "0" 156 | json_select_object "name" 157 | json_select "name" 158 | ifoutput "composer" 159 | say "/" 160 | endif 161 | sayrest 162 | json_unselect_object 163 | endif 164 | json_foreach_end 165 | 166 | # Publisher 167 | OutputTo "publisher" 168 | json_select "publisher" 169 | SayRest 170 | 171 | # Release_date 172 | OutputTo "YEAR" 173 | json_select "datePublished" 174 | RegexpReplace "^.*?(?:^|\D)(\d{4})(?:\D|$).*$" "$1" 175 | SayRegexp "^.*$" 176 | 177 | # Language 178 | OutputTo "language" 179 | json_select "inLanguage" 180 | SayRest 181 | 182 | # Duration 183 | OutputTo "duration" 184 | json_select "duration" 185 | replace "PT" "" 186 | SayRest 187 | 188 | 189 | json "off" 190 | 191 | #---------------------------------------------------- 192 | #Genres 193 | outputto "GENRE" 194 | findline "genres" 1 1 195 | Unspace 196 | if "
    " 197 | joinuntil "
    " 198 | 199 | outputto "GenreTMP1" 200 | findinline "href=\"" 1 1 201 | if "/" 202 | findinline ">" 203 | sayuntil "<" 204 | else 205 | say "" 206 | endif 207 | 208 | outputto "GenreTMP2" 209 | findinline "href=\"" 1 1 210 | if "/" 211 | findinline ">" 212 | sayuntil "<" 213 | else 214 | say "" 215 | endif 216 | 217 | outputto "GenreTMP3" 218 | findinline "href=\"" 1 1 219 | if "/" 220 | findinline ">" 221 | sayuntil "<" 222 | else 223 | say "" 224 | endif 225 | 226 | outputto "GenreTMP4" 227 | findinline "href=\"" 1 1 228 | if "/" 229 | findinline ">" 230 | sayuntil "<" 231 | else 232 | say "" 233 | endif 234 | else 235 | 236 | endif 237 | 238 | 239 | outputto "Genre" 240 | 241 | IfOutput "GenreTMP1" 242 | sayoutput "GenreTMP1" 243 | else 244 | endif 245 | 246 | IfOutput "GenreTMP2" 247 | say "//" 248 | sayoutput "GenreTMP2" 249 | else 250 | endif 251 | 252 | IfOutput "GenreTMP3" 253 | say "//" 254 | sayoutput "GenreTMP3" 255 | else 256 | endif 257 | 258 | IfOutput "GenreTMP4" 259 | say "//" 260 | sayoutput "GenreTMP4" 261 | else 262 | endif 263 | 264 | # remove tags 265 | set "GenreTMP1" 266 | set "GenreTMP2" 267 | set "GenreTMP3" 268 | set "GenreTMP4" 269 | 270 | #---------------------------------------------------- 271 | 272 | # Series 273 | gotoline 1 274 | outputto "SERIES" 275 | findline "audiobook-title__series" 1 1 276 | findinline "title__series\">" 1 1 277 | findinline ">" 1 1 278 | sayuntil "
    " 279 | 280 | # Series-part 281 | outputto "series-part" 282 | replace " Book #" "" 283 | findinline ":" 1 1 284 | sayuntil "<" 285 | 286 | 287 | # Set "Albumsort" 288 | IfOutput "series" 289 | outputto "Albumsort" 290 | sayoutput "series" 291 | say " " 292 | sayoutput "series-part" 293 | say " " 294 | say "- " 295 | sayoutput "Year" 296 | say ". " 297 | sayoutput "album" 298 | else 299 | outputto "Albumsort" 300 | sayoutput "Year" 301 | say ". " 302 | sayoutput "album" 303 | endif 304 | 305 | # Set Artist = Albumartist 306 | outputto "albumartist" 307 | sayoutput "Artist" 308 | 309 | # Set Disknumber 310 | outputto "DISCNUMBER" 311 | sayoutput "series-part" 312 | 313 | # Set Audible Album URL 314 | outputto "WWWAUDIOFILE" 315 | sayoutput "CurrentUrl" 316 | 317 | # Set Comment to DESCRIPTION for better MP4 support 318 | outputto "DESCRIPTION" 319 | sayoutput "Comment" -------------------------------------------------------------------------------- /data/sources/Mofibo.com#By Album[v.01.07.2023].src: -------------------------------------------------------------------------------- 1 | # ################################################################### 2 | # 3 | # Mp3tag parsing for mofibo.com, created by @romano 4 | # 5 | # 25.11.2022 - Started 6 | # 26.11.2022 - Improved Author and composer 7 | # 01.07.2023 - New script as html as changed (wip) 8 | # 9 | # #################################################################### 10 | 11 | [Name]=Mofibo [v.07.07.2023] 12 | [BasedOn]=mofibo.com 13 | [IndexUrl]=https://mofibo.com/dk/da/soeg- 14 | [AlbumUrl]=https://mofibo.com 15 | [WordSeperator]=+ 16 | [IndexFormat]=% ↓ Sprog%|% ↓ Bogtitel%|% ↓ Forfatter%|% ↓ Format%|%_url% 17 | [SearchBy]=Indtast bogtitel eller forfatter||$regexp(%album%,'[- ]+cd ?\d+$',,1)||%s 18 | [Encoding]=url-utf-8 19 | 20 | [ParserScriptIndex]=... 21 | # ################################################################### 22 | # I N D E X 23 | # ################################################################### 24 | #DebugWriteInput "C:\Users\xxxx\Desktop\mp3tag.html" 25 | #Debug "ON" "C:\Users\xxxx\Desktop\mp3tagdebug.txt" 26 | 27 | #Only select the area we need instead of everyting. 28 | findline "gridItem" 29 | joinuntil "hiddenSearchPhrase" 30 | 31 | replace "asAudio" "Audiobook" 32 | replace "asEbook" "Ebook" 33 | 34 | ##This is the list of the seach results 35 | do 36 | # Sprog 37 | findinline "language=\"" 38 | sayuntil "\"" 39 | say "|" 40 | 41 | # Bogtitel 42 | findinline "name=\"" 43 | sayuntil "\"" 44 | say "|" 45 | 46 | # Forfatter 47 | findinline "authors=\"" 48 | sayuntil "\"" 49 | say "|" 50 | 51 | # Format 52 | findinline "
    " 89 | sayuntil "<" 90 | 91 | # Author/Artist------------- 92 | outputto "Artist" 93 | findinline "" 95 | sayuntil "<" 96 | 97 | #add more authors by copying and duplicate the below code 98 | #outputto "Artist1" 99 | #indinline "" 1 1 101 | #sayuntil "<" 102 | 103 | #IfOutput "Artist1" 104 | # outputto "Artist" 105 | # say " / " 106 | # sayoutput "Artist1" 107 | #else 108 | #endif 109 | 110 | # Narrator ----------- 111 | outputto "Composer" 112 | findinline "" 1 1 114 | sayuntil "<" 115 | 116 | #Publisher------------- 117 | outputto "Publisher" 118 | findinline "/dk/publishers" 1 1 119 | findinline ">" 1 1 120 | sayuntil "<" 121 | 122 | # Lenght------------- 123 | outputto "lenght" 124 | findinline "Længde" 125 | findinline " " 126 | sayuntil "" 127 | 128 | 129 | #Language----------------- 130 | outputto "Language" 131 | findinline "Sprog" 132 | findinline " " 133 | sayuntil "" 134 | 135 | # Genre ---------------- 136 | outputto "Genre" 137 | findinline "Kategori" 138 | findinline "dcCHIG\">" 139 | sayuntil "

    " 140 | 141 | # Description------------ 142 | outputto "Description" 143 | findinline "dqTajv\">" 144 | sayuntil "

    " 145 | 146 | # Comment and description same content---------- 147 | outputto "Comment" 148 | sayoutput "Description" 149 | 150 | # Year--------------------- 151 | outputto "year" 152 | findinline "© " 153 | saynextnumber 154 | 155 | #ISBN ------------- 156 | outputto "ISBN" 157 | findinline ": " 158 | saynextnumber 159 | 160 | # Release date -------------------- 161 | outputto "RELEASEDATE" 162 | findinline "