Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σε όλους,

Αγαπητοί μου συμπολίτες, θα ήθελα να ζητήσω, σεμνά και ταπεινά, αν μπορεί κάποιος να μου πει τι σόι script (σωστά?) χρειάζεται να "τρέξει" (???) ώστε να βρει σε μία σελίδα (HTML?) ένα συγκεκριμένο "true" και να το αλλάξει σε "false" (την επιλογή των Annotations στο Youtube). Είχα ήδη παρόμοιο script που έτρεχε αυτόματα (μέσο extension του Firefox), αλλά εδώ και λίγο καιρό δεν δουλεύει πια :(

Πιστεύω ότι είμαι τυχερός και ότι αυτό δεν είναι κάτι παραπάνω από 2 γραμμές κώδικα (Java?) για κάποιον που ξέρει την γλώσσα. Αν κάνω λάθος ή το να ζητάω έτοιμο κώδικα απαγορεύεται ή κάτι τέτοιο, συγνώμη εκ των προτέρων και αγνοήστε το παρακάτω/ διαχειριστές διαγράψτε το Θέμα...
Σε κάθε περίπτωση ευχαριστώ για τον χρόνο σας και συγνώμη αν η μη χρήση της σωστής ορολογία σας προκαλεί πόνο στο δεξί ημισφαίριο του εγκεφάλου...

 

 

Λοιπόν και λοιπόν, εγώ είχα το παρακάτω script που είχα βρει παλιά και το έτρεχα μέσω του πρόσθετου "Enhancer for YouTube" (αλλά έχω και uBlock/uMatrix αν αυτό παίζει κάποιο ρόλο), το οποίο έκανε την δουλειά που ήθελα:

Όταν άνοιγα ένα βίντεο σε νέα καρτέλα, απενεργοποιούσε τα annotations.

var settings_button = document.querySelector(".ytp-settings-button");
settings_button.click();
 settings_button.click();
 // open and close settings, so annotations label is created

var all_labels = document.getElementsByClassName("ytp-menuitem-label");
for (var i = 0; i < all_labels.length; i++) {
  if ((all_labels[i].innerHTML == "Annotations") && (all_labels[i].parentNode.getAttribute("aria-checked") 

== "true")) { // find the correct label and see if it is active
    all_labels[i].click(); // and in that case, click it
  }
}

Όμως είναι καιρός που σταμάτησε να δουλεύει, και (θέλω να) πιστεύω ότι κάτι άλλαξε το Youtube στον κώδικα, ας πούμε το όνομα της "μεταβλητής" (?), και ότι είναι εύκολο να ξαναγραφτεί κώδικας που να κάνει την ίδια δουλειά.

 

Googlάρισα αρκετά για "Youtube annotations remove script" γιατί έτσι είχα βρει και το παλιό script, αλλά τζίφος.

Έκανα όμως μία αναζήτηση στον "κώδικα" (?) της σελίδας του youtube (Inspect Element, search: "annot"), και βρήκα ίσως τι αλλάζει όταν απενεργοποιώ τα annotations (τουλάχιστον αλλάζει και το συγκεκριμένο τμήμα του κώδικα από "true" σε "false"):

 

QYKvd0H.png

 

Την σύνταξη του κώδικα δεν την ξέρω, αλλά βλέπω "ytp-menuitem-label", βλέπω  "Annotation" και βλέπω ότι αλλάζει από true σε false!

 

Κοίταξα το παλιό script και έχει βάλει και σχόλια ο άνθρωπος που το έγραψε, αλλά εγώ δεν ξέρω την τύφλα μου από κώδικα (είχα κάνει Basic στο λύκειο πριν 182 χρόνια), και το μόνο που κατάλαβα είναι η βασική λειτουργία του (βασικά μόνο τα σχόλια). Η ελπίδα μου να βρω την γραμμή "set 'xxx-menuitem-label'/'Annotatons' to 'NoThanks'" και να την αλλάξω σε "set 'ytp-menuitem-label'/'Annotatons' to 'NoThanks'" δυστυχώς έπεσε στο κενό...

 

Άλλες 2 ώρες ψαξίματος στο Google για "change "true" to "false" Java" ή "Java script to ...." ή "Script basics" κτλ δεν είχαν κανένα αποτέλεσμα δυστυχώς :(

 

Και έτσι έφτασα εδώ, είπα "δεν ρωτάω και σε ένα forum, τι έχω να χάσω?".

 

Σας ευχαριστώ εκ των προτέρων,

Γιάννης

 

EDIT :

 

Ξέχασα να πώ ότι στο ψάξιμο που έκανα, βρήκα και ένα script που υποτίθεται ότι είναι αυτό που ψάχνω, αλλά ούτε δουλεύει (σε εμένα?), ούτε βρήκα τρόπο να το τροποποιήσω ώστε να αλλάζει την γραμμή που θέλω:

// ==UserScript==
// @name         Youtube Annotation Destroyer
// @namespace    http://userscripts.org/users/zackton
// @description  If you want those damn annotations to go away at the start of every video, this is the right script for you!
// @grant        GM_log
// @include	 http://www.youtube.com/watch*
// @include	 https://www.youtube.com/watch*
// @include	 http://www.youtube.com/user/*
// @include	 https://www.youtube.com/user/*
// @version      1.4
// ==/UserScript==

Element.prototype.remove = function() {
    this.parentElement.removeChild(this);
};
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
    for(var i = 0, len = this.length; i < len; i++) {
        if(this[i] && this[i].parentElement) {
            this[i].parentElement.removeChild(this[i]);
        }
    }
};

document.getElementsByClassName('ytp-player-content ytp-iv-player-content').remove();
document.getElementsByClassName('video-annotations iv-module')[0].style.display = "none";
Δημοσ.

Στον κώδικα που δίνεις (javascript btw) λέει αν δεις

var all_labels = document.getElementsByClassName("ytp-menuitem-label");

Δηλαδή είναι όντως set στο σωστό μέρος.

 

Από ότι κατάλαβα αυτό πηγαίνει και βρίσκει όλα όσα λέγονται ytp-menuitem-label  και μόλις βρει το σωστό:

all_labels[i].innerHTML == "Annotations"

και είναι και ενεργοποιημένο(?? μήπως εδώ έχει αλλάξει κάτι):

all_labels[i].parentNode.getAttribute("aria-checked") == "true"

Τα κλικάρει  για να απενεργοποιηθεί.

 

Δεν ξέρω πολλά από js και δεν έχω τώρα τον χρόνο να δώ το HTML αλλά κάτι από τα δυο αυτά(που ανέφερα παραπάνω) δεν ισχύει οπότε δεν μπαίνει στην εντολή που "κλικάρει".

 

EDIT: Σε μια δεύτερη ανάγνωση φαίνεται να ισχύουν και οι δυο συνθήκες οπότε μάλλον δεν είναι εκεί το πρόβλημα. Είσαι σίγουρος οτί όντως υπάρχει πρόβλημα;

Δημοσ.

Ευχαριστώ για την απάντηση!

 

Λες ότι "ytp-menuitem-label" και "Annotations" είναι οι σωστές "τοποθεσίες", αλλά δεν αλλάζει το "true" σε "false".

 

Η τελευταία γραμμή όμως λέει απλώς "κλίκαρε αυτό το κουμπί", αν το καταλαβαίνω σωστά.

Στα 100% άσχετα μάτια μου, ακούγετε λίγο, δεν ξέρω, μπακαλίστικο αυτό (το "πάτα το κουμπί" κομμάτι).

Δεν υπάρχει τρόπος να αλλάξεις τον κώδικα της σελίδας τον ίδιο (από true σε false)?

 

Γιατί έπαιξα με τους custom κανόνες το uBlock (που δημιουργούν scripts?), και εξαφάνισα όλο το κουμπί με το γρανάζι, άρα φαντάζομαι ότι κάτι άλλαξα στην σελίδα (στην δικιά μου μεριά, στον browser μου). Όταν το έκανα αυτό (Block Element), εμφανίστηκε σαν "κώδικας" στα Φίλτρα του uBlock ως

www.youtube.com##.ytp-hd-quality-badge.ytp-settings-button.ytp-button

Ή κάνω λάθος και απλώς μπλοκάρω την εμφάνιση του κουμπιού στην οθόνη μου, αλλά αυτό σαν κώδικας είναι ακόμα εκεί και κάτι ότι είναι αυτό που κάνει?

Δημοσ.

Μήπως άλλαξες την γλώσσα στο youtube σε ελληνικά? :)

Αν ναι πήγαινει εκει που λέει

all_labels[i].innerHTML == "Annotations"

και όπου Annotations βάλε Σχολιασμοί

 

δηλαδή

all_labels[i].innerHTML == "Σχολιασμοί"

και δες αν σου δουλεύει! :)

Δημοσ.

Όχι δεν άλλαξα γλώσσα, δεν αλλάζει κάτι αν το αλλάξω σε ελληνικά... :(

 

Έχω ήδη δοκιμάσει να απεγκαταστήσω το Enhancer for YouTube Extension και να το ξαναπεράσω αλλά τίποτα, και μετά έτρεξα από ένα backup του 10-12-2016 την portable έκδοση Waterfox 50.0.2 με το profile μου το τότε (το είχα το Enhancer και τότε), και ούτε αυτό παίζει, άρα το Youtube κάτι άλλαξε 99%

Δημοσ.

Είσαι σίγουρος? Εμένα μου δουλεύει κανονικά με την αλλαγή και με greasemonkey και με executejs. (addons)

 

Btw έχω σβήσει τις πρώτες 3 γραμμές κώδικα γιατί το annotations μου το εμφανίζει αυτόματα εμένα.

Δημοσ.

Είσαι σίγουρος? Εμένα μου δουλεύει κανονικά με την αλλαγή και με greasemonkey και με executejs. (addons)

 

Btw έχω σβήσει τις πρώτες 3 γραμμές κώδικα γιατί το annotations μου το εμφανίζει αυτόματα εμένα.

 

Σίγουρα τα πάντα είναι στα Αγγλικά, και σίγουρα δεν κάνει τίποτα και με την αλλαγή, δυστυχώς!

Το έβαλα τώρα και στο "My Filters" του uBlock, αν και δεν ξέρω αν είναι ο ίδιος τύπος κώδικα, και τίποτα.

 

Το οτι δουλεύει σε εσένα, εμένα με μπερδεύει πιο πολύ γιατί δεν άλλαξα κάτι hardware ή software στο PC, να πώ ότι από τότε που πέρασα το τάδε extension ή την τάδε αναβάθμιση σε Waterfox/Windows, σταμάτησε να αφαιρεί τα annotations...

Αναβάθμισα σε 51.0.1 πριν 2-3 μέρες, αλλά αυτό το πρόβλημα προϋπήρχε, απλώς τώρα έκατσα να αφιερώσω ώρες για να το "φτιάξω"...

 

7stOxRQ.png

Δημοσ.

Το εγκατέστησα το GreaseMonkey για δοκιμή, πάλι τίποτα, και με αγγλικά και με ελληνικά...

Αλλά αν το script σε εσένα δουλεύει, τότε κάτι σε εμένα είναι το πρόβλημα και όχι κάποια αλλαγή του Youtube όπως νόμιζα :(

 

XjInt1z.png

Δημοσ.

Το πέρασα, βρήκα πως στο καλό να το "τρέξω" (το δυσκολότερο κομμάτι!), έβγαλα και όσα extensions μπορούσα (αυτά στα οποία δεν έχω custom filters/rules/κτλ) αν και δεν θα έπρεπε να υπάρχει θέμα, αλλά τίποτις...

 

"settings_button is null"

 

Και εγώ που έλεγα ότι θα ήταν 5 λεπτά δουλειά να βρω ένα script όπως είχα κάνει παλιά, τελικά κάτι θα έχει αλλάξει στο PC πριν βδομάδες και άντε βρες το τώρα XD

 

vtdY4Sq.png

Δημοσ.

Το πέρασα, βρήκα πως στο καλό να το "τρέξω" (το δυσκολότερο κομμάτι!), έβγαλα και όσα extensions μπορούσα (αυτά στα οποία δεν έχω custom filters/rules/κτλ) αν και δεν θα έπρεπε να υπάρχει θέμα, αλλά τίποτις...

 

"settings_button is null"

 

Και εγώ που έλεγα ότι θα ήταν 5 λεπτά δουλειά να βρω ένα script όπως είχα κάνει παλιά, τελικά κάτι θα έχει αλλάξει στο PC πριν βδομάδες και άντε βρες το τώρα XD

 

vtdY4Sq.png

Ναι βγάλε τις 3 πρώτες γραμμές και θα τρέξει

Δημοσ.

Τα καλά νέα είναι ότι τεχνικά, ναι τρέχει.

Τα κακά είναι ότι δεν κάνει τίποτα.

Ούτε αν το βάλω στο Enhancer (που ματαξαναπέρασα πάλι)...

 

Σε εσένα δουλεύει όπως πρέπει, χωρις script εμφανίζονται στο παράθυρο τα annotations και με το script εξαφανίζονται ???

 

Dg9gFvl.png


Πάντως όταν έβγαλα το Enhancer τα βίντεο σταμάτησαν να ανοίγουν "default" σε 1080p, και τώρα που το ξαναπέρασα το extension, πάλι ξεκινάν σε 1080p, άρα οι υπόλοιπες λειτουργίες του Enhancer δουλεύουν...

 

Γμτ και είναι καιρός που το κάνει αυτό με τα annotations, αλλά βαριόμουνα να κάτσω να το ψάξω και επίσης δεν θυμάμαι να ξεκίνησε να το κάνει αυτό μετά από "κάτι", γενικά δεν έχει αλλάξει τίποτα στο PC για μήνες, εκτός της αναβάθμισης του Waterfox, που έγινε 100% μετά την εμφάνιση του θέματος με το Youtube.

Δημοσ.

Στον κώδικα δεν φένεται τι κάνει το click

all_labels.click(); και μετά;;; εκτός εάν το click και μόνο αλλάζει την ιδιότητα σε false.

κάπου πρέπει να έχει έναν event handler να λέει να αλλάξει την ιδιότητα και ίσως άλλα.

λογικά αν είναι μόνο αλλαγή ιδιότητας αντί για το παραπάνω θα έπρεπε να γράφει

all_labels.setAttribute("aria-checked", "false");

Δημοσ.

Το ξαναβάζω, το έσωσα σε ένα αρχείο txt πριν αρχίσω να σκαλίζω:

var settings_button = document.querySelector(".ytp-settings-button");
settings_button.click(); settings_button.click(); // open and close settings, so annotations label is 

created

var all_labels = document.getElementsByClassName("ytp-menuitem-label");
for (var i = 0; i < all_labels.length; i++) {
  if ((all_labels[i].innerHTML == "Annotations") && (all_labels[i].parentNode.getAttribute("aria-checked") 

== "true")) { // find the correct label and see if it is active
    all_labels[i].click(); // and in that case, click it
  }
}

θα ψάξω να βρω και την αρχική πηγή

 

EDIT:

 

από εδώ πρέπει να είναι, δεν είμαι και σίγουρος γιατί είναι πολύς καιρός...


Το πήρα πάλι από την αρχική σελίδα, έτσι για το γαμώτο, πάλι τίποτα.

Πάντως 1000% δούλευε πριν, ήταν μεγάλη η χαρά μου όταν το πέρασα :D

 

Σε εσάς δουλεύει κανονικά το script πάντως, έτσι?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...