John741 Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Γεια σε όλους,Αγαπητοί μου συμπολίτες, θα ήθελα να ζητήσω, σεμνά και ταπεινά, αν μπορεί κάποιος να μου πει τι σόι 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"): Την σύνταξη του κώδικα δεν την ξέρω, αλλά βλέπω "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";
kaliakman Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Στον κώδικα που δίνεις (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: Σε μια δεύτερη ανάγνωση φαίνεται να ισχύουν και οι δυο συνθήκες οπότε μάλλον δεν είναι εκεί το πρόβλημα. Είσαι σίγουρος οτί όντως υπάρχει πρόβλημα;
John741 Δημοσ. 3 Φεβρουαρίου 2017 Μέλος Δημοσ. 3 Φεβρουαρίου 2017 Ευχαριστώ για την απάντηση! Λες ότι "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 Ή κάνω λάθος και απλώς μπλοκάρω την εμφάνιση του κουμπιού στην οθόνη μου, αλλά αυτό σαν κώδικας είναι ακόμα εκεί και κάτι ότι είναι αυτό που κάνει?
kaliakman Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Μήπως άλλαξες την γλώσσα στο youtube σε ελληνικά? Αν ναι πήγαινει εκει που λέει all_labels[i].innerHTML == "Annotations" και όπου Annotations βάλε Σχολιασμοί δηλαδή all_labels[i].innerHTML == "Σχολιασμοί" και δες αν σου δουλεύει!
John741 Δημοσ. 3 Φεβρουαρίου 2017 Μέλος Δημοσ. 3 Φεβρουαρίου 2017 Όχι δεν άλλαξα γλώσσα, δεν αλλάζει κάτι αν το αλλάξω σε ελληνικά... Έχω ήδη δοκιμάσει να απεγκαταστήσω το Enhancer for YouTube Extension και να το ξαναπεράσω αλλά τίποτα, και μετά έτρεξα από ένα backup του 10-12-2016 την portable έκδοση Waterfox 50.0.2 με το profile μου το τότε (το είχα το Enhancer και τότε), και ούτε αυτό παίζει, άρα το Youtube κάτι άλλαξε 99%
kaliakman Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Είσαι σίγουρος? Εμένα μου δουλεύει κανονικά με την αλλαγή και με greasemonkey και με executejs. (addons) Btw έχω σβήσει τις πρώτες 3 γραμμές κώδικα γιατί το annotations μου το εμφανίζει αυτόματα εμένα.
John741 Δημοσ. 3 Φεβρουαρίου 2017 Μέλος Δημοσ. 3 Φεβρουαρίου 2017 Είσαι σίγουρος? Εμένα μου δουλεύει κανονικά με την αλλαγή και με greasemonkey και με executejs. (addons) Btw έχω σβήσει τις πρώτες 3 γραμμές κώδικα γιατί το annotations μου το εμφανίζει αυτόματα εμένα. Σίγουρα τα πάντα είναι στα Αγγλικά, και σίγουρα δεν κάνει τίποτα και με την αλλαγή, δυστυχώς! Το έβαλα τώρα και στο "My Filters" του uBlock, αν και δεν ξέρω αν είναι ο ίδιος τύπος κώδικα, και τίποτα. Το οτι δουλεύει σε εσένα, εμένα με μπερδεύει πιο πολύ γιατί δεν άλλαξα κάτι hardware ή software στο PC, να πώ ότι από τότε που πέρασα το τάδε extension ή την τάδε αναβάθμιση σε Waterfox/Windows, σταμάτησε να αφαιρεί τα annotations... Αναβάθμισα σε 51.0.1 πριν 2-3 μέρες, αλλά αυτό το πρόβλημα προϋπήρχε, απλώς τώρα έκατσα να αφιερώσω ώρες για να το "φτιάξω"...
kaliakman Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Δοκίμασε το greasemonkey. Μπορεί να φταίει το YouTube enhancer.
John741 Δημοσ. 3 Φεβρουαρίου 2017 Μέλος Δημοσ. 3 Φεβρουαρίου 2017 Το εγκατέστησα το GreaseMonkey για δοκιμή, πάλι τίποτα, και με αγγλικά και με ελληνικά... Αλλά αν το script σε εσένα δουλεύει, τότε κάτι σε εμένα είναι το πρόβλημα και όχι κάποια αλλαγή του Youtube όπως νόμιζα
kaliakman Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Μα δεν γίνεται :Ρ Τελευταιά προσπάθεια. Δοκίμασε το ExecuteJS. Με αυτό το πρωτοδοκίμασα και δούλεψε.
John741 Δημοσ. 3 Φεβρουαρίου 2017 Μέλος Δημοσ. 3 Φεβρουαρίου 2017 Το πέρασα, βρήκα πως στο καλό να το "τρέξω" (το δυσκολότερο κομμάτι!), έβγαλα και όσα extensions μπορούσα (αυτά στα οποία δεν έχω custom filters/rules/κτλ) αν και δεν θα έπρεπε να υπάρχει θέμα, αλλά τίποτις... "settings_button is null" Και εγώ που έλεγα ότι θα ήταν 5 λεπτά δουλειά να βρω ένα script όπως είχα κάνει παλιά, τελικά κάτι θα έχει αλλάξει στο PC πριν βδομάδες και άντε βρες το τώρα XD
kaliakman Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Το πέρασα, βρήκα πως στο καλό να το "τρέξω" (το δυσκολότερο κομμάτι!), έβγαλα και όσα extensions μπορούσα (αυτά στα οποία δεν έχω custom filters/rules/κτλ) αν και δεν θα έπρεπε να υπάρχει θέμα, αλλά τίποτις... "settings_button is null" Και εγώ που έλεγα ότι θα ήταν 5 λεπτά δουλειά να βρω ένα script όπως είχα κάνει παλιά, τελικά κάτι θα έχει αλλάξει στο PC πριν βδομάδες και άντε βρες το τώρα XD Ναι βγάλε τις 3 πρώτες γραμμές και θα τρέξει
John741 Δημοσ. 3 Φεβρουαρίου 2017 Μέλος Δημοσ. 3 Φεβρουαρίου 2017 Τα καλά νέα είναι ότι τεχνικά, ναι τρέχει. Τα κακά είναι ότι δεν κάνει τίποτα. Ούτε αν το βάλω στο Enhancer (που ματαξαναπέρασα πάλι)... Σε εσένα δουλεύει όπως πρέπει, χωρις script εμφανίζονται στο παράθυρο τα annotations και με το script εξαφανίζονται ??? Πάντως όταν έβγαλα το Enhancer τα βίντεο σταμάτησαν να ανοίγουν "default" σε 1080p, και τώρα που το ξαναπέρασα το extension, πάλι ξεκινάν σε 1080p, άρα οι υπόλοιπες λειτουργίες του Enhancer δουλεύουν... Γμτ και είναι καιρός που το κάνει αυτό με τα annotations, αλλά βαριόμουνα να κάτσω να το ψάξω και επίσης δεν θυμάμαι να ξεκίνησε να το κάνει αυτό μετά από "κάτι", γενικά δεν έχει αλλάξει τίποτα στο PC για μήνες, εκτός της αναβάθμισης του Waterfox, που έγινε 100% μετά την εμφάνιση του θέματος με το Youtube.
k33theod Δημοσ. 3 Φεβρουαρίου 2017 Δημοσ. 3 Φεβρουαρίου 2017 Στον κώδικα δεν φένεται τι κάνει το click all_labels.click(); και μετά;;; εκτός εάν το click και μόνο αλλάζει την ιδιότητα σε false. κάπου πρέπει να έχει έναν event handler να λέει να αλλάξει την ιδιότητα και ίσως άλλα. λογικά αν είναι μόνο αλλαγή ιδιότητας αντί για το παραπάνω θα έπρεπε να γράφει all_labels.setAttribute("aria-checked", "false");
John741 Δημοσ. 3 Φεβρουαρίου 2017 Μέλος Δημοσ. 3 Φεβρουαρίου 2017 Το ξαναβάζω, το έσωσα σε ένα αρχείο 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% δούλευε πριν, ήταν μεγάλη η χαρά μου όταν το πέρασα Σε εσάς δουλεύει κανονικά το script πάντως, έτσι?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα