Skip to content

Update fetch_anime_and_play.py #11665

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 15 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 37 additions & 5 deletions web_programming/fetch_anime_and_play.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import subprocess

import requests
from bs4 import BeautifulSoup, NavigableString, Tag
from bs4 import BeautifulSoup
from bs4 import NavigableString
from bs4 import Tag
from fake_useragent import UserAgent


BASE_URL = "https://ww1.gogoanime2.org"

Check failure on line 10 in web_programming/fetch_anime_and_play.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (I001)

web_programming/fetch_anime_and_play.py:1:1: I001 Import block is un-sorted or un-formatted


def search_scraper(anime_name: str) -> list:
Expand Down Expand Up @@ -154,6 +159,12 @@
return [f"{BASE_URL}{episode_url}", f"{BASE_URL}{download_url}"]


def download_video(download_url: str, output_filename: str):
"""Download video using ffmpeg."""
command = ["ffmpeg", "-i", download_url, output_filename]
subprocess.run(command, check=True)

Check failure on line 165 in web_programming/fetch_anime_and_play.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (S603)

web_programming/fetch_anime_and_play.py:165:5: S603 `subprocess` call: check for execution of untrusted input


if __name__ == "__main__":
anime_name = input("Enter anime name: ").strip()
anime_list = search_scraper(anime_name)
Expand All @@ -173,16 +184,37 @@

episode_list = search_anime_episode_list(chosen_anime["url"])
if len(episode_list) == 0:
print("No episode found for this anime")
print("No episodes found for this anime")
else:
print(f"Found {len(episode_list)} results: ")
for i, episode in enumerate(episode_list):
print(f"{i+1}. {episode['title']}")
print(f"{i + 1}. {episode['title']}")

episode_choice = int(input("\nChoose an episode by serial no: ").strip())
episode_choice = int(
input("\nChoose an episode by serial number: ").strip()
)
chosen_episode = episode_list[episode_choice - 1]
print(f"You chose {chosen_episode['title']}. Searching...")

episode_url, download_url = get_anime_episode(chosen_episode["url"])
print(f"\nTo watch, ctrl+click on {episode_url}.")
print(f"To download, ctrl+click on {download_url}.")

# Add an option to download or not
download_choice = (
input("\nDo you want to download this episode? (yes/no): ")
.strip()
.lower()
)
if download_choice in ["yes", "y"]:
output_filename = (
f"{chosen_episode['title']}.mp4" # Change extension as needed
)
download_video(download_url, output_filename)
print(
f"{chosen_episode['title']} has been downloaded as {output_filename}."

Check failure on line 214 in web_programming/fetch_anime_and_play.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (E501)

web_programming/fetch_anime_and_play.py:214:89: E501 Line too long (90 > 88)
)
else:
print("Download skipped.")

# if error download please install ffmeg
# brew install ffmpeg for mac
Loading