diff --git a/docs/TurkAnimu.ico b/docs/TurkAnimu.ico new file mode 100644 index 0000000..2e4b0a0 Binary files /dev/null and b/docs/TurkAnimu.ico differ diff --git a/docs/build_exe.bat b/docs/build_exe.bat new file mode 100644 index 0000000..806e6a7 --- /dev/null +++ b/docs/build_exe.bat @@ -0,0 +1,3 @@ +;; Windows için PyInstaller ile build: terminal tabanlı tek dosya exe +cd .. +pyinstaller --noconfirm --onefile --console --icon "docs\TurkAnimu.ico" --name "TurkAnimu" "turkanime.py" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..5013b98 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,43 @@ +[tool.poetry] +name = "turkanime-cli" +version = "7.0.4" +description = "Türkanime video oynatıcı ve indirici" +authors = ["Junicchi "] +readme = "README.md" +license = "CC-BY-NC-ND-4.0" +repository = "https://github.com/kebablord/turkanime-indirici" +keywords = ["turkanime","turk","anime","downloader"] + +classifiers = [ + "Environment :: Console", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9" +] + +packages = [ + { include = "turkanime_api" } +] + +[tool.poetry.dependencies] +python = ">=3.6,<4" +youtube_dl = ">=2021.0.0" +questionary = "*" +selenium = ">=3.141.0" +bs4 = ">=0.0.1" +easygui = ">=0.98.2" +rich = ">=9.5.1" +requests = "*" +py7zr = "*" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry.scripts] +# Publish sırasında buraya kopyalanmalı +# ./turkanime.py -> turkanime_api/cli/turkanime.py +turkanime = 'turkanime_api.cli.turkanime:run' diff --git a/turkanime.py b/turkanime.py index 3a74933..f514457 100755 --- a/turkanime.py +++ b/turkanime.py @@ -1,5 +1,5 @@ """ TürkAnimu Downloader v7 """ -from os import path,mkdir +from os import path,mkdir,name,environ from sys import exit as kapat from time import sleep from atexit import register @@ -11,6 +11,10 @@ from turkanime_api import AnimeSorgula,Anime,DosyaManager,gereksinim_kontrol from turkanime_api import elementi_bekle,webdriver_hazirla,prompt_tema,clear +dosya = DosyaManager() +sep = ";" if name=="nt" else ":" +environ["PATH"] += sep + dosya.ROOT + sep + with Progress(SpinnerColumn(), '[progress.description]{task.description}', BarColumn(bar_width=40)) as progress: task = progress.add_task("[cyan]Sürücü başlatılıyor..", start=False) gereksinim_kontrol(progress) @@ -63,7 +67,7 @@ while True: if "izle" in islem: sorgu.mark_bolumler(seri_slug,bolumler,islem="izlendi") - previous = sorgu.son_bolum if previous == None else previous + previous = sorgu.son_bolum if previous is None else previous clear() secilen = select( message='Bölüm seç', @@ -75,7 +79,7 @@ previous = set_prev(secilen) else: sorgu.mark_bolumler(seri_slug,bolumler,islem="indirildi") - previous = sorgu.son_bolum if previous == None else previous + previous = sorgu.son_bolum if previous is None else previous clear() secilen = checkbox( message = "Bölüm seç", @@ -142,3 +146,11 @@ elif "Kapat" in islem: break + + +""" Poetry script'leri modül gibi çalışmaya zorladığından + limitasyonu aşmak için kirli bir çözüm. +""" +run = lambda: None +if __name__=="__main__": + run() diff --git a/turkanime_api/anime.py b/turkanime_api/anime.py index b35bae2..0972b72 100644 --- a/turkanime_api/anime.py +++ b/turkanime_api/anime.py @@ -1,4 +1,4 @@ -from os import system,path,mkdir +from os import system,path,mkdir,environ,name import json from bs4 import BeautifulSoup as bs4 from rich.progress import Progress, BarColumn, SpinnerColumn @@ -78,6 +78,7 @@ def __init__(self,driver,seri,bolumler): self.bolumler = bolumler self.dosya = DosyaManager() self.otosub = self.dosya.ayar.getboolean("TurkAnime","manuel fansub") + environ["PATH"] += ";" if name=="nt" else ":" + self.dosya.ROOT def indir(self): self.dosya.tazele() diff --git a/turkanime_api/dosyalar.py b/turkanime_api/dosyalar.py index 0f7090b..7518910 100644 --- a/turkanime_api/dosyalar.py +++ b/turkanime_api/dosyalar.py @@ -4,7 +4,7 @@ DownloadGereksinimler() - Gereksinimlerin indirilmesini ve paketten çıkarılmasını sağlar. """ -from os import path,mkdir,replace,rename,remove,system +from os import path,mkdir,replace,rename,remove,system,getcwd from struct import calcsize from configparser import ConfigParser import json @@ -26,7 +26,6 @@ TransferSpeedColumn,TimeRemainingColumn ) - class DosyaManager(): """ Yazılımın konfigürasyon ve indirilenler klasörünü yönet - Windows'ta varsayılan dizin: Belgelerim/TurkAnimu @@ -34,7 +33,7 @@ class DosyaManager(): """ def __init__(self): if path.isdir(".git"): # Git reposundan çalıştırıldığında. - self.ROOT = "." + self.ROOT = getcwd() else: # Pip modülü veya Exe olarak çalıştırıldığında. self.ROOT = path.join(path.expanduser("~"), "TurkAnimu" ) diff --git a/turkanime_api/tools.py b/turkanime_api/tools.py index 9e7368a..e8cdaf1 100644 --- a/turkanime_api/tools.py +++ b/turkanime_api/tools.py @@ -86,13 +86,13 @@ def webdriver_hazirla(progress=None): progress.stop() input("Yazılım firefox'un kurulu olduğu dizini tespit edemedi\n"+ "Manual olarak Program Files'ten firefox.exe'yi"+ - "seçmek için yönlendirileceksiniz.\n\n( Devam etmek için entera basın)") + "seçmek için yönlendirileceksiniz.\n\n( Devam etmek için entera basın )") from easygui import fileopenbox firefox_dizin=fileopenbox("/") if firefox_dizin: dosya.ayar.set("TurkAnime","firefox konumu",firefox_dizin) dosya.save_ayarlar() - input("Programı yeniden başlatmalısınız. (Devam etmek için entera basın)") + input("Programı yeniden başlatmalısınız. \n\n( Devam etmek için entera basın )") kapat() return webdriver.Firefox( profile, options=options,