Persoenliche Mediazentrale
ulrich
2021-04-30 ea73fab1d832c5e9b815042c6a6a61634125977e
ID3-Tag-Verarbeitung verbessert
3 files modified
34 ■■■■ changed files
README.md 3 ●●●●● patch | view | raw | blame | history
src/de/uhilger/tango/api/ListFileHandler.java 26 ●●●● patch | view | raw | blame | history
www/js/app.js 5 ●●●●● patch | view | raw | blame | history
README.md
@@ -14,3 +14,6 @@
[Mustache](http://mustache.github.io/) - "Logic-less templates."
[RobotoRegular](https://fonts.google.com/specimen/Roboto) - Schriftart
## Lizenz
Veröffentlicht unter den Bedingungen der [GNU Affero Genreal Public License](http://www.gnu.org/licenses/agpl-3.0)
src/de/uhilger/tango/api/ListFileHandler.java
@@ -39,6 +39,7 @@
import java.util.logging.Logger;
import org.farng.mp3.MP3File;
import org.farng.mp3.TagException;
import org.farng.mp3.id3.AbstractID3v2;
import org.farng.mp3.id3.ID3v1;
/**
@@ -52,6 +53,8 @@
  
  private static final String[] specialChars = {new String("\u00c4"), new String("\u00d6"), 
      new String("\u00dc"), new String("\u00e4"), new String("\u00f6"), new String("\u00fc"), new String("\u00df")};
  public static final String UNWANTED_PATTERN = "[^a-zA-Z_0-9 ]";
  
  Map extMap = new HashMap();
  
@@ -123,7 +126,8 @@
        }
      }
      //Collections.sort(list);
      String json = escapeHtml(jsonWithCustomType(list, "Medialiste"));
      String rawjson = jsonWithCustomType(list, "Medialiste");
      String json = escapeHtml(rawjson);
      
      logger.fine(json);
      Headers headers = e.getResponseHeaders();
@@ -163,12 +167,22 @@
      try {
        MP3File mp3 = new MP3File(file);
        ID3v1 tag = mp3.getID3v1Tag();
        sf.setInterpret(tag.getArtist());
        String trackTitel = tag.getTitle();
        if(trackTitel != null && trackTitel.length() > 0) {
          sf.setTitelAnzName(trackTitel);
        if(tag == null) {
          AbstractID3v2 tag2 = mp3.getID3v2Tag();
          sf.setInterpret(tag2.getLeadArtist().replaceAll(UNWANTED_PATTERN, ""));
          String trackTitel = tag2.getSongTitle().replaceAll(UNWANTED_PATTERN, "");
          if(trackTitel != null && trackTitel.length() > 0) {
            sf.setTitelAnzName(trackTitel);
          }
          sf.setAlbum(tag2.getAlbumTitle().replaceAll(UNWANTED_PATTERN, ""));
        } else {
          sf.setInterpret(tag.getArtist().replaceAll(UNWANTED_PATTERN, ""));
          String trackTitel = tag.getTitle().replaceAll(UNWANTED_PATTERN, "");
          if(trackTitel != null && trackTitel.length() > 0) {
            sf.setTitelAnzName(trackTitel);
          }
          sf.setAlbum(tag.getAlbumTitle().replaceAll(UNWANTED_PATTERN, ""));
        }
        sf.setAlbum(tag.getAlbumTitle());
      } catch (IOException ex) {
        Logger.getLogger(ListFileHandler.class.getName()).log(Level.SEVERE, null, ex);
      } catch (TagException ex) {
www/js/app.js
@@ -712,15 +712,14 @@
    self.http_call('DELETE', u, data, cb);
  };
  
  this.http_call = function (method, u, data, scallback) {
  this.http_call = function (method, callurl, data, scallback) {
    var xhr = new XMLHttpRequest();
    var url = u;
    xhr.onreadystatechange = function () {
      if (this.readyState === 4 && this.status === 200) {
        scallback(this.responseText);
      }
    };
    xhr.open(method, url);
    xhr.open(method, callurl);
    if (method === 'GET') {
      xhr.send();
    } else if (method === 'POST' || method === 'PUT' || method === 'DELETE') {