Jak łatwo odblokować wiele repozytoriów na Github?

81

Zdaję sobie sprawę, że oglądam zbyt wiele repozytoriów w GitHub, a jedynym sposobem, w jaki znalazłem wiele z nich, jest przejście na github.com/my_user_name/following, wejście do każdego z nich i naciśnięcie przycisku Unwatch.

Czy nie ma sposobu na szybsze i łatwiejsze odblokowanie ich?

Fernando Á.
źródło
5
Na github.com/watching jest teraz przycisk „Unwatch all” .
Geremia,

Odpowiedzi:

161

Dla leniwych można to zrobić dość szybko bez API pod tym adresem URL: https://github.com/watching

Czysta prosta lista, kliknij, kliknij, kliknij, kliknij.

Dodatkowo jest pudełko, które jest złote. Odznacz to, aby nie było ustawione automatyczne oglądanie wszystkich repozytoriów, do których masz dostęp push. Brawo za zarządzanie stosunkiem sygnału do szumu.

BeepDog
źródło
9
Jest tu nawet przycisk „Przestań oglądać wszystkie repozytoria”!
Francesc Rosas
4
Nawet bez takiego przycisku możesz po prostu otworzyć konsolę programisty i szybko $('button').filter(function(){return $(this).text() === 'Unwatch'}).click(). Strony internetowe + jQuery = najlepsze API!
Patrick Oscity
4
Dzięki @ p11y, świetny pomysł. Oto ulepszona wersja z filtrowaniem kont (jeśli chcesz tylko przefiltrować repozytoria określonej organizacji)$('button').filter(function(){return $(this).text() === 'Unwatch' && $(this).parent().parent().find("a span").html() == "organisationName" }).click();
Matej Balantič
@Matej: czy mógłbyś opublikować to jako odpowiedź? Działa również świetnie jako bookmarklet, co pomaga, gdy organizacja jest ogromna i ma więcej repozytoriów niż mieści się na jednej stronie!
Marius Gedminas,
1
Jeśli masz wiele stron oglądanych repo, robi „unwatch wszystko” przycisk unwatch wszystkich repo czy tylko te na bieżącej stronie?
Dennis
16

Natywna wersja JS poprzedniej odpowiedzi . Przejdź do https://github.com/watching, a następnie uruchom:

Oneliner:

Array.prototype.slice.apply(document.querySelectorAll('.js-subscription-row')).forEach(el => { const org = el.querySelector('a[href^="/YOUR_ORG"]'); if (org) el.querySelector('button').click()})

Nieopakowane:

const org = 'YOUR_ORG'
const query = document.querySelectorAll('.js-subscription-row')
const rows = Array.prototype.slice.apply(query)
rows.forEach(function (el) {
  const org = el.querySelector('a[href^="/' + org + '"]')
  if (org) el.querySelector('button').click()
})
Yoshua Wuyts
źródło
1
Wersja rozpakowana zgłasza błąd przy orgwielokrotnym definiowaniu stałej . To działa dla mnie: const orgName = 'YOUR_ORG' const query = document.querySelectorAll ('. Js-subscription-row') const rows = Array.prototype.slice.apply (query) rows.forEach (function (el) {let org = el.querySelector ('a [href ^ = "/' + orgName + '"]') if (org) el.querySelector ('button'). click ()})
Jon Dean
Selektory uległy zmianie, obecnie działaArray.prototype.slice.apply(document.querySelectorAll('.Box-row')).forEach(el => { const org = el.querySelector('a[href^="/alphagov"]'); if (org) el.querySelector('button').click()})
nacnudus
Wygląda na to, że Github zaktualizował tę stronę. Aktualizacja powyższego kodu to ta, której właśnie użyłem: Array.from(document.querySelectorAll('.repo-list > li')).filter(el => !!el.querySelector('a[href^="/YOUR-ORG"]')).forEach(el => el.querySelector('details-menu button[value="included"]').click())po prostu odśwież stronę i uruchom ją ponownie, aż wszystko będzie gotowe.
J_A_X
10

Specyficzna dla organizacji

Jeśli chcesz po prostu odblokować repozytoria z jednej organizacji, możesz tego użyć na https://github.com/watching

$('.js-subscription-row').each(function(){ var isYourOrganisation = $(this).find("a[href^='/YOUR_ORG']"); if(isYourOrganisation.length){ $(this).find('button:contains("Unwatch")').click(); } });

Zastąp YOUR_ORGto, jak nazywa się Twoja organizacja.

Ralph Cowling
źródło
1

Nie widziałem żadnego ale, ponieważ mamy moc całego wszechświata (w skrócie jesteśmy programistami). Skorzystaj z ich API programisty i utwórz małe narzędzie. API jest bardzo opisowe,

http://developer.github.com/

TeaCupApp
źródło
0

Znalazłem również narzędzie wiersza poleceń, które wykorzystuje interfejs API GitHub do otwierania wielu repozytoriów: https://www.npmjs.com/package/github-unwatch-org-repos

Nie jestem fanem narzędzi wiersza poleceń, które chcą, aby moje hasło było w postaci zwykłego tekstu w wierszu poleceń (w ten sposób widoczne dla wszystkich użytkowników systemu, którzy uruchamiają `` ps '' we właściwym czasie, a także przechowywane w postaci zwykłego tekstu w ~ / .bash_history chyba że bardzo się starasz, aby tego uniknąć), więc nie próbowałem tego.

Marius Gedminas
źródło