-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathThinkRSS.py
161 lines (129 loc) · 7.31 KB
/
ThinkRSS.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
"""
Script: ThinkRSS
Autor: ThinkRoot
Versiune: 1.1
Descriere:
Acest script Python este un instrument simplu și eficient pentru gestionarea și interacționarea cu linkuri din diferite surse, inclusiv fluxuri de știri RSS și clipuri video de pe YouTube. Utilizatorul poate deschide și explora linkurile dintr-un fișier specificat, având posibilitatea de a vizualiza și a interacționa cu articolele din fluxurile de știri RSS sau de a reda clipurile video direct din terminal. Interfața este intuitivă, oferind o experiență utilizator prietenoasă, iar gestionarea erorilor este realizată în mod adecvat pentru a asigura o experiență lipsită de probleme.
Utilizare:
Pentru a putea instala modulele necesare Phython trebuie să instalați prima dată `python-pip` sau `python3-pip`, în funcție de fiecare distribuție Linux. Iar pentru a putea vedea clipurile video de pe YouTube trebuie să instalați aplicația **mpv**.
1. Asigurați-vă că aveți modulele Python necesare instalate. Puteți instala modulele Colorama și feedparser folosind comanda:
pip install colorama feedparser
2. În directorul în care se află scriptul, creați un fișier text numit 'links.txt'. Acesta va conține linkurile pe care doriți să le gestionați. Asigurați-vă că fiecare link este pe o linie separată în fișier.
3. Deschideți fișierul 'links.txt' și adăugați linkurile dorite. Acestea pot fi linkuri RSS sau linkuri către clipuri YouTube. Asigurați-vă că fiecare link este pe o linie separată.
4. Deschideți un terminal în directorul în care se află scriptul și rulați-l cu comanda:
python ThinkRSS.py
5. Interacțiunea cu scriptul:
- Veți vedea o listă numerotată a link-urilor din fișierul 'links.txt' în terminal.
- Selectați numărul corespunzător link-ului pe care doriți să-l deschideți sau să interacționați cu el.
- Dacă linkul este un flux RSS, veți putea vizualiza titlurile articolelor și să selectați unul pentru a-l deschide în browser.
- Dacă link-ul este un link către YouTube, veți putea vizualiza titlurile clipurilor și să selectați unul pentru a-l reda într-un player video integrat în terminal (mpv).
- Pentru a ieși din script, selectați "0" în timpul afișării linkurilor.
"""
import subprocess
import feedparser
import os
import importlib
from colorama import init, Fore, Style
# Inițializează Colorama pentru a adăuga culori în terminal
init(autoreset=True)
# Verifică și instalează automat modulele necesare
def verificare_module():
required_modules = ['feedparser', 'colorama']
for module in required_modules:
try:
importlib.import_module(module)
except ImportError:
print(f"Modulele necesare nu sunt instalate. Se instalează {module}...")
subprocess.run(["pip", "install", module])
print(f"{module} a fost instalat cu succes.")
# Apelăm funcția pentru verificarea și instalarea modulelor necesare
verificare_module()
# Funcție pentru deschiderea unui link în browser
def deschide_link_browser(link):
subprocess.run(["xdg-open", link])
# Funcție pentru redarea unui video în player-ul mpv
def reda_video_cu_mpv(link):
subprocess.run(["mpv", link])
# Funcție pentru deschiderea unui articol în browser
def deschide_articol(link):
subprocess.run(["xdg-open", link])
# Funcție pentru extragerea linkului dintr-o linie de input
def extrage_link(link):
return link.split(' ', 1)[0]
# Funcție pentru prelucrarea feed-ului RSS
def prelucreaza_feed_rss(link):
while True:
os.system('clear') # Curăță ecranul terminalului
feed = feedparser.parse(link)
for idx, entry in enumerate(feed.entries, start=1):
print(f"{Fore.BLUE}{idx}. {Fore.CYAN}{entry.title}")
alegere_articol = input(f"{Fore.YELLOW}Selectează numărul articolului pe care dorești să-l deschizi (0 pentru a reveni): ")
if alegere_articol == '0':
return
try:
alegere_articol = int(alegere_articol)
if 1 <= alegere_articol <= len(feed.entries):
deschide_articol(feed.entries[alegere_articol - 1].link)
except ValueError:
print(f"{Fore.RED}Alegere invalidă.")
# Funcție pentru prelucrarea feed-ului YouTube
def prelucreaza_feed_youtube(link):
while True:
os.system('clear') # Curăță ecranul terminalului
feed = feedparser.parse(link)
for idx, entry in enumerate(feed.entries, start=1):
print(f"{Fore.BLUE}{idx}. {Fore.CYAN}{entry.title}")
alegere_clip = input(f"{Fore.YELLOW}Selectează numărul clipului pe care dorești să-l redai în mpv (0 pentru a reveni): ")
if alegere_clip == '0':
return
try:
alegere_clip = int(alegere_clip)
if 1 <= alegere_clip <= len(feed.entries):
reda_video_cu_mpv(feed.entries[alegere_clip - 1].link)
except ValueError:
print(f"{Fore.RED}Alegere invalidă.")
# Citirea linkurilor din fișierul "links.txt"
nume_fisier = "links.txt"
try:
with open(nume_fisier, "r") as f:
lines = f.readlines()
links = [line.strip() for line in lines if line.strip()]
while True:
os.system('clear') # Curăță ecranul terminalului
# Afisează lista de linkuri numerotate
for idx, line in enumerate(links, start=1):
if line.startswith("#"):
print(f"{Fore.CYAN}{line}")
else:
parts = line.split('"')
if len(parts) >= 3:
print(f"{Fore.MAGENTA}{idx}. {Fore.GREEN}{parts[0]}{Fore.CYAN}\"{Fore.WHITE}{parts[1]}{Fore.CYAN}\"{Fore.MAGENTA}{parts[2]}")
else:
print(f"{Fore.MAGENTA}{idx}. {Fore.CYAN}{line}")
# Alegerea utilizatorului pentru linkul de prelucrat
alegere_str = input(f"{Fore.YELLOW}Selectează numărul link-ului pe care dorești să-l deschizi (0 pentru ieșire): ")
try:
alegere = int(alegere_str)
if alegere == 0:
print(f"{Fore.YELLOW}La revedere!")
break
elif alegere >= 1 and alegere <= len(links):
line_ales = links[alegere - 1]
link_ales = extrage_link(line_ales)
if link_ales.startswith("https://www.youtube.com/"):
print(f"{Fore.MAGENTA}Prelucrez feed YouTube...")
prelucreaza_feed_youtube(link_ales)
else:
print(f"{Fore.MAGENTA}Prelucrez feed RSS...")
prelucreaza_feed_rss(link_ales)
else:
print(f"{Fore.RED}Alegere invalidă.")
except ValueError:
print(f"{Fore.RED}Te rog introdu un număr valid.")
except FileNotFoundError:
print(f"{Fore.RED}Fișierul nu a fost găsit.")
# Instrucțiuni de folosire
print(f"{Fore.CYAN}Instrucțiuni de folosire:")
print(f"{Fore.GREEN}1. Asigurați-vă că aveți instalate toate modulele necesare. Dacă nu, instalează-le folosind 'pip install colorama feedparser'.")
print(f"{Fore.GREEN}2. Creează un fișier numit 'links.txt' în directorul curent și adaugă linkurile dorite. Asigurați-vă că fiecare link este pe o linie separată.")
print(f"{Fore.GREEN}3. Rulează scriptul pentru a gestiona și interacționa cu linkurile.")