mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 12:05:35 +00:00
80 lines
2.7 KiB
Python
80 lines
2.7 KiB
Python
import gi
|
|
import os
|
|
import signal
|
|
|
|
gi.require_version('Gtk', '3.0')
|
|
gi.require_version('WebKit2', '4.0')
|
|
from gi.repository import Gtk, WebKit2, Gdk
|
|
|
|
class WebBrowser(Gtk.Window):
|
|
whitelist = ["streamingcommunity", "vixcloud", "thaculse"]
|
|
|
|
def __init__(self):
|
|
Gtk.Window.__init__(self, title="StreamingCommunity")
|
|
self.set_default_size(800, 600)
|
|
|
|
headerbar = Gtk.HeaderBar()
|
|
headerbar.set_show_close_button(True)
|
|
headerbar.props.title = "StreamingCommunity"
|
|
|
|
self.set_titlebar(headerbar)
|
|
|
|
# Creiamo un box per contenere il WebView
|
|
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
|
self.add(self.box)
|
|
|
|
self.webview = WebKit2.WebView()
|
|
self.webview.connect("load-changed", self.on_load_changed)
|
|
self.box.pack_start(self.webview, True, True, 0) # Aggiungiamo il WebView al box
|
|
self.load_url("https://streamingcommunity.report")
|
|
self.connect("key-press-event", self.on_key_press)
|
|
self.cookie_manager = self.webview.get_context().get_cookie_manager()
|
|
self.load_cookies()
|
|
|
|
# Aggiungiamo il bottone alla barra delle impostazioni
|
|
button = Gtk.Button.new_with_label("Stampa URL del video")
|
|
button.connect("clicked", self.print_video_url)
|
|
headerbar.pack_end(button)
|
|
|
|
def load_url(self, url):
|
|
self.webview.load_uri(url)
|
|
|
|
def on_load_changed(self, webview, event):
|
|
if event == WebKit2.LoadEvent.FINISHED:
|
|
current_uri = webview.get_uri()
|
|
if not self.is_whitelisted(current_uri):
|
|
print("Blocked:", current_uri)
|
|
webview.go_back()
|
|
|
|
@classmethod
|
|
def is_whitelisted(cls, uri):
|
|
domain = cls.get_domain(uri)
|
|
return any(domain.endswith(allowed_domain) for allowed_domain in cls.whitelist)
|
|
|
|
@staticmethod
|
|
def get_domain(uri):
|
|
return uri.split("//www.")[-1].split(".")[0]
|
|
|
|
def on_key_press(self, widget, event):
|
|
if event.keyval == Gdk.KEY_Left and event.state & Gdk.ModifierType.MOD1_MASK:
|
|
self.webview.go_back()
|
|
return True
|
|
|
|
def save_cookies(self):
|
|
self.cookie_manager.save_cookies(".cookies.txt", None, None)
|
|
|
|
def load_cookies(self):
|
|
self.cookie_manager.set_persistent_storage(".cookies.txt", WebKit2.CookiePersistentStorage.TEXT)
|
|
self.cookie_manager.set_accept_policy(WebKit2.CookieAcceptPolicy.ALWAYS)
|
|
|
|
def print_video_url(self, widget):
|
|
current_uri = self.webview.get_uri()
|
|
print("URL attuale:", current_uri)
|
|
|
|
if __name__ == "__main__":
|
|
win = WebBrowser()
|
|
win.connect("destroy", Gtk.main_quit)
|
|
signal.signal(signal.SIGINT, lambda sig, frame: win.save_cookies())
|
|
win.show_all()
|
|
Gtk.main()
|