2
2
import requests
3
3
from bs4 import BeautifulSoup , NavigableString , Tag
4
4
from fake_useragent import UserAgent
5
- import re
6
5
7
6
BASE_URL = "https://ww1.gogoanime2.org"
8
7
9
8
10
- def is_safe_filename (filename : str ) -> bool :
11
- return re .match (r"^[\w\-. ]+$" , filename ) is not None
12
-
13
-
14
9
def search_scraper (anime_name : str ) -> list :
15
10
"""[summary]
16
11
@@ -159,14 +154,11 @@ def get_anime_episode(episode_endpoint: str) -> list:
159
154
160
155
return [f"{ BASE_URL } { episode_url } " , f"{ BASE_URL } { download_url } " ]
161
156
162
-
163
157
def download_video (download_url : str , output_filename : str ):
164
- if not is_safe_filename (output_filename ):
165
- raise ValueError ("Unsafe output filename provided." )
166
- command = ["ffmpeg" , "-i" , download_url , output_filename ]
158
+ """Download video using ffmpeg."""
159
+ command = ['ffmpeg' , '-i' , download_url , output_filename ]
167
160
subprocess .run (command , check = True )
168
161
169
-
170
162
if __name__ == "__main__" :
171
163
anime_name = input ("Enter anime name: " ).strip ()
172
164
anime_list = search_scraper (anime_name )
@@ -186,34 +178,28 @@ def download_video(download_url: str, output_filename: str):
186
178
187
179
episode_list = search_anime_episode_list (chosen_anime ["url" ])
188
180
if len (episode_list ) == 0 :
189
- print ("No episode found for this anime" )
181
+ print ("No episodes found for this anime" )
190
182
else :
191
183
print (f"Found { len (episode_list )} results: " )
192
184
for i , episode in enumerate (episode_list ):
193
- print (f"{ i + 1 } . { episode ['title' ]} " )
185
+ print (f"{ i + 1 } . { episode ['title' ]} " )
194
186
195
- episode_choice = int (input ("\n Choose an episode by serial no : " ).strip ())
187
+ episode_choice = int (input ("\n Choose an episode by serial number : " ).strip ())
196
188
chosen_episode = episode_list [episode_choice - 1 ]
197
189
print (f"You chose { chosen_episode ['title' ]} . Searching..." )
198
190
199
191
episode_url , download_url = get_anime_episode (chosen_episode ["url" ])
200
192
print (f"\n To watch, ctrl+click on { episode_url } ." )
201
- print ( f"To download, ctrl+click on { download_url } ." )
193
+
202
194
203
195
# Add an option to download or not
204
- download_choice = (
205
- input ("\n Do you want to download this episode? (yes/no): " )
206
- .strip ()
207
- .lower ()
208
- )
196
+ download_choice = input ("\n Do you want to download this episode? (yes/no): " ).strip ().lower ()
209
197
if download_choice in ["yes" , "y" ]:
210
198
output_filename = f"{ chosen_anime ['title' ]} - { chosen_episode ['title' ]} .mp4" # Change extension as needed
211
199
download_video (download_url , output_filename )
212
- print (
213
- f"{ chosen_episode ['title' ]} has been downloaded as { output_filename } ."
214
- )
200
+ print (f"{ chosen_episode ['title' ]} has been downloaded as { output_filename } ." )
215
201
else :
216
202
print ("Download skipped." )
217
203
218
- # if error download please install ffmeg
219
- # brew install ffmpeg for mac
204
+ #if error download please install ffmeg
205
+ #brew install ffmpeg for mac
0 commit comments