Gibt es eine Möglichkeit, den Benachrichtigungsverlauf des Chrome-Browsers anzuzeigen?

55

Ich erhalte Chrome-Benachrichtigungen von mehreren Websites und sie funktionieren, wenn für diese Websites nicht einmal Registerkarten geöffnet sind.

Aber manchmal erhalte ich diese Chrome-Benachrichtigungen, wenn ich nicht an meinem Schreibtisch bin oder auf meinen Laptop schaue.

Da einige dieser Benachrichtigungen für mich nützlich sind, möchte ich auf alle Benachrichtigungen zugreifen können, die ich verpasst habe.

Gibt es eine Möglichkeit, den Benachrichtigungsverlauf anzuzeigen?

paradroid
quelle
1
Scheint nicht so. In diesem Beitrag ( theverge.com/2015/10/14/9531133/… ) wurde die Benachrichtigungsrichtlinie geändert und vom Desktop entfernt, um sie auf einzelne Webseiten zu übertragen. Sie können nur auf neue Benachrichtigungen zugreifen, indem Sie auf einer Google-Seite auf die Glocke klicken.
Terry
1
Scheint wie nein: productforums.google.com/forum/#!msg/chrome/xs9PflHTfho/… - sehr bedauerlich.
LB
Der einzige Ort, an dem ich Benachrichtigungen als Liste gefunden habe, ist, wenn die Website, die sie auslöst, sie über ihre Website führt. Chrome scheint sie nicht in so etwas wie zu sammeln chrome://notificationsund sie schaffen es nicht bis zum Betriebssystem.
Jason Lydon
Akzeptiere die gültige Antwort @paradroid
Satheesh

Antworten:

31

Wenn Sie einen Mac haben, gibt es einen Weg! 😄

So würde die Benachrichtigungsliste aussehen:

So würde die Benachrichtigungsliste aussehen.

Alles, was Sie tun müssen, ist:

1. Gehen Sie in Chrome zu:

chrome://flags/

2. Suchen Sie nach:

Enable native notifications. Mac

3. Aktivieren Sie es, starten Sie Chrome neu, fertig. Genießen!

BEARBEITEN:

  • Möglicherweise müssen Sie die obigen Schritte nicht mehr ausführen.

Ab Chrome 59 werden Benachrichtigungen, die über die Benachrichtigungs-API oder die chrome.notifications-Erweiterungs-API gesendet werden, direkt vom nativen Benachrichtigungssystem von macOS anstelle des Chrome-eigenen Systems angezeigt. [ Quelle ]

Esdras Lopez
quelle
2
Dies beantwortet nicht die Frage, ob der Benachrichtigungsverlauf angezeigt werden soll, sondern nur, ob Benachrichtigungen angezeigt werden.
Bjorn
6
@ BjornTipling Es beantwortet es. Er fragt, ob er die Benachrichtigungen sehen kann, die er während seiner Abwesenheit verpasst hat, und meine Methode tut genau das.
Esdras Lopez
1
Wenn Sie die Links als Kommentare einfügen, füge ich sie für Sie in Ihren Post ein, @EsdrasLopez
user418150
1
@ user418150 Ich weiß das zu schätzen, aber ich habe jetzt den Ruf. :) Überprüfen Sie die Änderungen.
Esdras Lopez
2
Das Hauptproblem hierbei ist, dass die Benachrichtigung nur gespeichert wird, wenn Sie nicht darauf klicken. Ich habe mehrmals auf einen interessanten Artikeltitel geklickt, damit er nicht geladen werden konnte. Er wurde jedoch immer noch aus der Benachrichtigungsliste entfernt. Normalerweise sind die Artikel zu neu, um gegoogelt zu werden, und häufig stimmt der Titel der Benachrichtigung nicht mit dem Titel des Artikels überein, sodass er im Web verloren geht.
iBorg
11

Unter MacOSX befindet sich das Chrome-Verzeichnis unter Library / Application Support. Öffnen Sie die Terminalanwendung und führen Sie die folgenden Befehle aus:

cd ~/Library/Application\ Support/Google/Chrome/Default/Platform\ Notifications/
ls -la

Jetzt sehen Sie Dateien wie diese:

drwx------@  7 visi  staff   224 Jul 13 18:16 .
drwx------  75 visi  staff  2400 Jul 15 11:05 ..
-rw-------@  1 visi  staff   759 Jul 15 10:57 000003.log
-rw-------@  1 visi  staff    16 Jul 13 18:16 CURRENT
-rw-------@  1 visi  staff     0 Jul 13 18:16 LOCK
-rw-------@  1 visi  staff   147 Jul 13 18:16 LOG
-rw-------@  1 visi  staff    41 Jul 13 18:16 MANIFEST-000001

Sie können sehen, dass die neueste Datei 000003.log ist. Überprüfen Sie sie mit dem nächsten Befehl:

tail -n 100 000003.log

Und Sie werden die letzten 100 Elemente aus diesem Protokoll sehen. Anschließend können Sie die Chrome-Einstellungen öffnen und die Website-Benachrichtigung deaktivieren.

Beachten Sie, dass Ihr Pfad bei mehreren Profilen in Chrome unterschiedlich sein kann (Profil1 anstelle von Standard):

cd ~/Library/Application\ Support/Google/Chrome/Profile\ 1/Platform\ Notifications/
Andrey Bezpalenko
quelle
3
Dies sollte die akzeptierte Antwort sein. :)
Cody A. Ray
1
Arbeitet noch im Jahr 2019 (obwohl das Protokoll ein wenig gedolmetscht werden muss). Tolle Antwort, danke
carpii
11

Wenn Sie zu gehen %LocalAppData%\Google\Chrome\User Data\Default\Platform Notifications, gibt es eine Protokolldatei mit früheren Benachrichtigungen.

Corey
quelle
4
Gut, aber geben Sie den Pfad "% LocalAppData% \ Google \ Chrome \ Benutzerdaten \ Standard \ Plattformbenachrichtigungen" anstelle von Hardcode an. Es funktioniert perfekt auf jedem PC.
Dmitry Gusarov
Im UserData / -Ordner müssen Sie möglicherweise zuerst Ihren Profilordner suchen, z. B. "C: \ Users \ Benutzername \ AppData \ Local \ Google \ Chrome \ UserData \ Profil 1 \ Plattformbenachrichtigungen"
Maffelu
1
Diese Daten sind binär. Wie lese ich es?
Gaia
In Chrome 71 ist die Protokolldatei leer. Wurde dies irgendwann deaktiviert?
James
2
@Gaia Ich habe mich das Gleiche gefragt und mir einfach einen beschissenen Java-Code ausgedacht, der einen akzeptablen Job bei der Entschlüsselung des größten Teils davon macht. Ich stellte es unter: superuser.com/a/1410742/778383
Dreamspace Präsident
3

Da es nicht möglich zu sein scheint, eine Aufzeichnung der Benachrichtigungen direkt abzurufen, würde ich, wenn ich das gleiche Problem hätte, mit einem Android-Telefonemulator oder einem Telefon als Benutzer, der Pushbullet empfohlen hat, betrügen. Aber es gibt nicht nur Pushbullet, es gibt eine Menge anderer Apps, wir könnten die Android-Tricks zum Abhören und Aufzeichnen von Benachrichtigungen in einem separaten Thread diskutieren.

Wenn Sie ein Programmierer sind, können Sie Ihr Problem möglicherweise mit einer selbst erstellten Erweiterung lösen:

https://stackoverflow.com/questions/15949606/how-can-i-listen-to-notifications

"Sie können die Funktion webkitNotifications.createNotification so einbinden, dass Sie bei jeder Erstellung einer Benachrichtigung einen bestimmten Code ausführen."

Quidam
quelle
2

Sie können den Verlauf von Push-Benachrichtigungen anzeigen. Ganz rechts unten auf Ihrem PC-Bildschirm in der Taskleiste sehen Sie eine Sprechblase. Wenn Sie den Mauszeiger darüber halten, werden Sie feststellen, dass es sich tatsächlich um "Benachrichtigungen" handelt. Wenn Sie auf diese Blase klicken, werden Ihre ungelesenen / neuen E-Mails und alle Push-Benachrichtigungen angezeigt, die Sie nicht verworfen haben. Ich bin auf der Suche nach dieser Antwort hierher gekommen und habe sie nicht gefunden, aber es ist mir dann gelungen, das herauszufinden. Ich benutze Windows 10.

Shea Bethell
quelle
Ja, dies ist eine neue Sache unter Win10, aber es ist die endgültige Antwort für Windows.
Paradroid
1

Berühren Sie etwas, das oben erwähnt wurde, aber mit einer Wendung, die sicherstellt, dass Sie die Benachrichtigung unter OSX nicht verpassen:

  1. Klicken Sie auf der rechten Seite der oberen Hauptleiste auf das Benachrichtigungssymbol.

  2. Klicken Sie auf das Zahnrad (rechts unten in der Benachrichtigungsanzeige)

  3. Wählen Sie Chrome, um festzulegen, wie Benachrichtigungen angezeigt werden.

  4. Standardmäßig sind "Banner" ausgewählt, die automatisch verschwinden können. Wählen Sie stattdessen den Typ "Alarm" und sie bleiben dort, solange Sie sie nicht bestätigen!

Bitte schön :)

Patrick St-Onge
quelle
-1

Scheint, als ob Pushbullet Ihr Problem lösen könnte. Sie behaupten, dass Sie Ihre verpassten Benachrichtigungen mithilfe ihrer Chrome-Erweiterung sehen können.

https://blog.pushbullet.com/2014/10/23/easily-access-your-recent-notifications-in-chrome/

Socialorganix Contentbrandmgmt
quelle
Bitte lesen Sie Wie Sie Software empfehlen, um die erforderlichen Mindestinformationen und Vorschläge zu erhalten, wie Sie Software für Super User empfehlen können. Damit Ihre Antwort auch dann nützlich bleibt, wenn der / die bereitgestellte (n) Link (s) nicht funktioniert (n), sollten Sie diese Angaben in Ihre Antwort aufnehmen.
Ich sage Reinstate Monica
Hey, schön. Ich werde das ausprobieren. Ich benutze Pushbullet eigentlich schon, wusste aber nichts von dieser Chrome-Erweiterung.
Paradroid
Diese Funktion scheint nicht zu finden. Eine Benachrichtigung tauchte auf und es gibt keine Spur davon im Verlauf der Benachrichtigung.
Madprops
Ich überlegte die Frage und der Haken ist dies. Wenn Ihr Telefon eine Benachrichtigung erhält, sendet Pushbullet diese an Ihren Desktop und teilt Ihnen mit, dass Sie möglicherweise ungelesene Benachrichtigungen haben (Sie haben sie möglicherweise auf Ihrem Telefon gesehen oder was haben Sie). Für welche Websites erhalten Sie Chrome-Benachrichtigungen? Wenn es eine App dafür gibt, können Sie sie jederzeit installieren und Sie erhalten die Benachrichtigungen von pushbullet auf Ihren Desktop / Laptop / was auch immer.
Socialorganix Contentbrandmgmt
1
Die Funktion "Benachrichtigungen" in Pushbullet dient nur zum Anzeigen von Benachrichtigungen von Ihrem Android-Telefon auf dem Desktop. Das Gleiche gilt für das iPhone, wenn Sie einen Mac-Desktop haben. Es hat nichts mit Chrome-Benachrichtigungen zu tun.
Boaz
-1

Dank Corey ‚s Antwort oben, und einen faulen Samstag mit zu viel Zeit auf meinen Händen, ich sehe jetzt eine Liste der letzten Chrome - Benachrichtigungen meine IDE in der Konsole, wo ich auf die URLs auch klicken können.

Der Code ist beschissen und verwendet grobe Heuristiken, da ich keine Ahnung habe, wie die Binärdaten richtig interpretiert werden.

Aber es ist eine Tonne besser als nichts. Beispielausgabe (Auszug):

https://www.finanzen.net/nachricht/aktien/kw-9-tops-und-flops-der-tecdax-aktien-in-der-vergangenen-woche-7195100
https://images.finanzen.net/mediacenter/unsortiert/TecDAX_boerse_frankfurt0016_kl.jpg
So bewegten sich die Einzelwerte des TecDAX in der zurückliegenden Handelswoche.*
KW 9: Tops und Flops der TecDAX-Aktien in der vergangenen Woche
So bewegten sich die Einzelwerte des TecDAX in der zurückliegenden Handelswoche.
HideOnTheseRoutes
Home/Index;Article/News/Index
tag-7195100
NotificationIdentifier
1061622960{


https://www.youtube.com/watch?v=W-mlD_bYKdU&feature=push-u-sub&attr_tag=0SL8UpnrTOnTECxr%3A6
https://lh5.googleusercontent.com/-raJM5SITO34/AAAAAAAAAAI/AAAAAAAAAAA/UtLljlL4Wpc/s96-c-mo/photo.jpg
New from Market Moves
Trade Recap: $1,500 in PROFITS*˜
COuAyJGY4uACEAY=
attributionTag
0SL8UpnrTOnTECxr:6{
 from Market MovesTrade Recap: $1,500 in PROFITS

Kreuzigungswürdiger Java-Code:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;




/**
 * v[1, 2019-03-02 13:00 UTC]
 *
 * by dreamspace-president.com
 */
final public class CrappyChromeNotificationHistoryReader {


    public static void main(final String[] args) {

        final File file = new File(
                "C:\\Users\\[YOUR_NAME_HERE]\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Platform Notifications\\000003.log");

        final List<ChromeNotificationStuff> notifications = obtainChromeNotificationStuff(file);
        for (ChromeNotificationStuff notification : notifications) {
            System.err.println();
            System.err.println(notification);
        }
        System.exit(0);
    }


    public static List<ChromeNotificationStuff> obtainChromeNotificationStuff(final File file) {

        final List<ChromeNotificationStuff> ret = new ArrayList<>();

        final List<DumbTokenList> listOfDumbTokenLists = doTheInsaneParsingThing(file);
        int instanceCounter = 0;
        for (DumbTokenList dtl : listOfDumbTokenLists) {

            final List<String> urls = new ArrayList<>();
            final List<String> texts = new ArrayList<>();

            for (String token : dtl.tokens) {
                if (token.startsWith("https://") || token.startsWith("http://")) {
                    urls.add(token);
                } else {
                    texts.add(token);
                }
            }


            // Remove unimportant URLs.
            for (int i = urls.size() - 1; i > 0; i--) {
                final String urlThis = urls.get(i);
                final int lenThis = urlThis.length();
                for (int ii = i - 1; ii >= 0; ii--) {
                    final String urlThat = urls.get(ii);
                    final int lenThat = urlThat.length();

                    if (lenThis > lenThat) {
                        if (urlThis.startsWith(urlThat)) {
                            final String removed = urls.remove(ii);
                            //                            System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + urlThis); // because was better or equal
                            break;
                        }
                    } else {
                        if (urlThat.startsWith(urlThis)) {
                            final String removed = urls.remove(i);
                            //                            System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + urlThat); // because was better or equal
                            break;
                        }
                    }

                }
            }

            ret.add(new ChromeNotificationStuff(instanceCounter, urls, texts));
            instanceCounter++;
        }

        ret.sort(null);

        return ret;
    }


    final public static class ChromeNotificationStuff implements Comparable<ChromeNotificationStuff> {


        private final int instanceCounter;
        final public List<String> urls;
        final public List<String> texts;


        private ChromeNotificationStuff(final int instanceCounter,
                                        final List<String> urls,
                                        final List<String> texts) {

            this.instanceCounter = instanceCounter;

            this.urls = Collections.unmodifiableList(urls);
            this.texts = Collections.unmodifiableList(texts);
        }


        public String toString() {

            final StringBuilder sb = new StringBuilder();
            for (String url : urls) {
                sb.append(url).append('\n');
            }
            for (String text : texts) {
                sb.append(text).append('\n');
            }
            return sb.toString();
        }


        @Override
        public int compareTo(final ChromeNotificationStuff o) { // Newest (= last) notifications first, please.

            return Integer.compare(o.instanceCounter, instanceCounter);
        }
    }




    final private static double MIN_LENGTH_DIFFERENCE_RATIO = 0.7;//0.9;
    final private static double MIN_REMAININGLINES_PERCENTAGEOF_ALLLINES = 0.2;




    final private static class DumbTokenList {


        final private static int MIN_LENGTH = 10; //6;
        final private static String[] EXTENSIONS = new String[] { ".jpg", ".jpeg", ".png", ".gif", ".html", ".htm", ".php" };
        final private static int MAX_EXTRA_CRAP_AFTER_EXTENSIONS = 3;
        final private static String SAFE_URL_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;="; // https://stackoverflow.com/a/1547940/3500521

        final private String originalText;
        final private List<String> tokens;


        private DumbTokenList(final String textWithBinaryCrap) {

            originalText = textWithBinaryCrap;

            final List<String> tokens = new ArrayList<>();

            final Consumer<String> addTokenButTryToDecrappifyExtensionsFirstAnTing = token -> {


                if (token.startsWith("ttps://") || token.startsWith("ttp://")) {
                    token = "h" + token;
                }


                final List<String> newTokens = new ArrayList<>();

                if (token.startsWith("http")) {
                    final int tokenLength = token.length();
                    boolean found = false;
                    for (int i = 0; i < tokenLength; i++) {
                        final char c = token.charAt(i);
                        if (SAFE_URL_CHARACTERS.indexOf(c) < 0) {
                            newTokens.add(token.substring(0, i));
                            newTokens.add(token.substring(i));
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        newTokens.add(token);
                    }
                } else {
                    newTokens.add(token);
                }

                for (String newToken : newTokens) {


                    String foundExt = null;
                    int foundExtLen = 0;
                    int foundExtAt = -1;
                    for (String extension : EXTENSIONS) {
                        final int idx = newToken.indexOf(extension);
                        if (idx >= 0) {
                            final int extLen = extension.length();
                            if (idx > foundExtAt || (idx == foundExtAt && extLen > foundExtLen)) {
                                foundExt = extension;
                                foundExtLen = extLen;
                                foundExtAt = idx;
                            }
                        }
                    }
                    if (foundExt != null) {
                        final int amountOfCharactersAfterThisFind = newToken.length() - foundExtAt - foundExtLen;
                        if (amountOfCharactersAfterThisFind <= MAX_EXTRA_CRAP_AFTER_EXTENSIONS) {
                            // OK. Shorten this bitch.
                            newToken = newToken.substring(0, foundExtAt + foundExtLen);
                        }
                    }


                    if (newToken.startsWith("http")) {
                        if (!newToken.startsWith("http://") && !newToken.startsWith("https://")) {
                            continue;
                        }
                    }


                    if (newToken.startsWith("/watch?v=")) {
                        newToken = "https://www.youtube.com" + newToken;
                    }


                    if (newToken.length() >= MIN_LENGTH) {
                        tokens.add(newToken);
                    }


                }

            };

            final StringBuilder sb = new StringBuilder();

            final int len = textWithBinaryCrap.length();
            for (int i = 0; i <= len + 1; i++) {

                final char c = i < len ? textWithBinaryCrap.charAt(i) : 0;

                if (c < ' ' || c == '"') {

                    String potentialText = sb.toString();
                    while (true) {
                        final int httpIDX = potentialText.indexOf("http", 1);
                        if (httpIDX < 0) {
                            addTokenButTryToDecrappifyExtensionsFirstAnTing.accept(potentialText);
                            break;
                        } else {
                            final String snippet = potentialText.substring(0, httpIDX);
                            potentialText = potentialText.substring(httpIDX);
                            addTokenButTryToDecrappifyExtensionsFirstAnTing.accept(snippet);
                        }
                    }

                    sb.setLength(0);

                    if (c == '"') {
                        // Skip this and the next. (thus "i < len +1")
                        i++;
                    }
                } else {
                    sb.append(c);
                }
            }


            // Remove quasi-duplicates. Sue me.
            //            System.err.println("\n*** STARTING DEDUPLICATION ***");
            final int lSize = tokens.size();
            for (int i = lSize - 1; i > 0; i--) { // (not 0 itself, wouldn't make sense)

                if (i < tokens.size()) {

                    final String entry = tokens.get(i);

                    for (int ii = i - 1; ii >= 0; ii--) { // (incl. 0)

                        final String otherEntry = tokens.get(ii);

                        final Boolean removeNoneOrFirstOrSecond = areLinesTooSimilar(entry, otherEntry);
                        if (removeNoneOrFirstOrSecond != null) {

                            if (!removeNoneOrFirstOrSecond) {
                                final String removed = tokens.remove(i);
                                //                                System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + otherEntry); // because was better or equal
                            } else {
                                final String removed = tokens.remove(ii);
                                //                                System.err.println("\nREMOVED: " + removed + "\nKEPT   : " + entry); // because was better or equal
                            }
                            break; // IMPORTANT!
                        }

                    }
                }
            }


            this.tokens = Collections.unmodifiableList(tokens);

        }


        public String toString() {

            final StringBuilder sb = new StringBuilder();
            for (String token : tokens) {
                sb.append(token).append('\n');
            }
            return sb.toString();
        }


    }


    /**
     * Do NOT call with NULL/EMPTY arguments.
     *
     * @return NULL if not too similar. False if the FIRST seems superfluous. True if the SECOND seems superfluous.
     */
    private static Boolean areLinesTooSimilar(final String line1,
                                              final String line2) {

        final int l1 = line1.length();
        final int l2 = line2.length();

        final double lenDiffRatio = Math.min(l1, l2) / (double) Math.max(l1, l2); // Results in 1 or less.

        if (lenDiffRatio >= MIN_LENGTH_DIFFERENCE_RATIO) {

            if (l2 < l1) {
                // Compare the other way round.
                if (line1.contains(line2)) {
                    return false;
                }
            } else {
                if (line2.contains(line1)) {
                    return true;
                }
            }

        }

        return null;
    }


    private static List<DumbTokenList> doTheInsaneParsingThing(final File file) {

        final List<DumbTokenList> ret = new ArrayList<>();

        final StringBuilder sb = new StringBuilder();
        try (final InputStream is = new BufferedInputStream(new FileInputStream(file))) {

            final int bufMinus1 = 4;
            final Charset charset = Charset.forName("Cp1252"); // =ansi

            final int[] buf = new int[bufMinus1 + 1]; // "DATA"
            //            while ((buf[buf.length - 1] = is.read()) >= 0) {
            while (true) {

                buf[bufMinus1] = is.read();

                if (buf[bufMinus1] < 0 || (
                        buf[0] == 'D' &&
                                buf[1] == 'A' &&
                                buf[2] == 'T' &&
                                buf[3] == 'A' &&
                                buf[4] == ':')) {

                    if (sb.length() > 0) {
                        ret.add(new DumbTokenList(sb.toString()));
                        sb.setLength(0);
                    }

                    if (buf[bufMinus1] < 0) {
                        break;
                    }

                } else {

                    sb.append(new String(new byte[] { (byte) buf[bufMinus1] }, charset));
                    //                    sb.append((char) buf[bufMinus1]);
                }


                // Shift minibuffer to front.
                for (int i = 0; i < bufMinus1; i++) {
                    buf[i] = buf[i + 1];
                }
            }


        } catch (IOException e) {
            e.printStackTrace();
        }


        // DEDUPLICATE DTLs
        for (int i = ret.size() - 1; i > 0; i--) {

            if (i < ret.size()) {
                final DumbTokenList dtlThis = ret.get(i);
                final int dtlThisTokenCount = dtlThis.tokens.size();

                for (int ii = i - 1; ii >= 0; ii--) {
                    final DumbTokenList dtlThat = ret.get(ii);
                    final int dtlThatTokenCount = dtlThat.tokens.size();


                    int scoreViaRemainingLines_this = dtlThisTokenCount;
                    int scoreViaRemainingLines_that = dtlThatTokenCount;


                    for (int o = 0; o < dtlThisTokenCount; o++) {
                        final String tokenThis = dtlThis.tokens.get(o);
                        for (int oo = 0; oo < dtlThatTokenCount; oo++) {
                            final String tokenThat = dtlThat.tokens.get(oo);

                            final Boolean tooSimilar = areLinesTooSimilar(tokenThis, tokenThat);
                            if (tooSimilar != null) {
                                scoreViaRemainingLines_this--;
                                scoreViaRemainingLines_that--;
                                break;
                            }

                        }
                    }

                    if (scoreViaRemainingLines_this < 0 || scoreViaRemainingLines_that < 0) {
                        throw new Error();
                    }

                    final double scoreActual_this = scoreViaRemainingLines_this / (double) dtlThisTokenCount;
                    final double scoreActual_that = scoreViaRemainingLines_that / (double) dtlThatTokenCount;


                    if (scoreViaRemainingLines_this < scoreViaRemainingLines_that) {
                        if (scoreActual_this < MIN_REMAININGLINES_PERCENTAGEOF_ALLLINES) {
                            final DumbTokenList removed = ret.remove(i);
                            //                            System.err.println("\nREMOVED:\n" + removed + "\nKEPT   :\n" + dtlThat);
                            break; // IMPORTANT.
                        }
                    } else {
                        if (scoreActual_that < MIN_REMAININGLINES_PERCENTAGEOF_ALLLINES) {
                            final DumbTokenList removed = ret.remove(ii);
                            //                            System.err.println("\nREMOVED:\n" + removed + "\nKEPT   :\n" + dtlThis);
                            break; // IMPORTANT.
                        }
                    }


                }

            }
        }

        return ret;
    }


}
Dreamspace Präsident
quelle
1
Um dies zum Laufen zu bringen, habe ich die folgenden Befehle verwendet, javac "C:\Users\MLM\Downloads\CrappyChromeNotificationHistoryReader.java"(zum Kompilieren), java -cp C:\Users\MLM\Downloads CrappyChromeNotificationHistoryReader(zum Ausführen). Das Skript schlug if (scoreViaRemainingLines_this < 0 || scoreViaRemainingLines_that < 0) {fehl, so dass ich das gesamte Einlesen auskommentierte doTheInsaneParsingThingund einfach alles druckte, System.out.println(sb.toString());wenn das Token zur Liste hinzugefügt wurde. Es sieht so aus, als ob "Plattformbenachrichtigungen" nur die Server-Worker-Push-Benachrichtigungen behandelt.
MLM
@MLM: Danke für die Javac Info. Problem: Funktioniert bei mir, wenn ich die Quelle in ein geöffnetes Java 8 IntelliJ-Projekt einfüge, meinen Benutzernamen (Variable "file") eingebe und den Code ausführe.
Dreamspace President