diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index b7cee4c..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,17 +0,0 @@ -on: [pull_request, push] -name: Hata kontrolü ve lint -jobs: - gitHubActionForPylint: - name: pylint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - - name: GitHub Action for pylint - uses: cclauss/GitHub-Action-for-pylint@master - with: - args: | - pip install --upgrade pyOpenSSL; - pip install selenium bs4 PyInquirer easygui; - pylint -E **/*.py && - pylint turkanime_api/ --fail-under 8.2 && - pylint turkanime.py --fail-under 9.2 diff --git a/README.md b/README.md index a70333a..38b79f7 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,4 @@ -# TURKANIME İNDİRİCİ -Türkanime için terminal video oynatıcı ve indirici. İtinayla her bölümü indirir & oynatır. - - Yığın bölüm indirebilir - - Animu izleyebilir - - Çözünürlük seçebilir - - Uygulama içinden arama yapabilir - - Bir yandan izlerken bir yandan animeyi kaydedebilir - -#### Desteklenen kaynaklar: -```Sibnet, Odnoklassinki, Sendvid, Mail.ru, VK, Google+, Myvi, GoogleDrive, Yandisk, Vidmoly, Yourupload, Dailymotion``` - -#### İndirme bölümü: -https://github.com/KebabLord/turkanime-downloader/releases/tag/v3 - - ### İndirme - ![indirme.gif](ss_indir.gif) - - ### İzleme - ![indirme.gif](ss_izle.gif) - -### Yapılacaklar: - - ~~Domain güncellemesinden beridir kod stabil çalışmıyor, düzeltilecek.~~ - - ~~Kod çorba gibi, basitleştirilecek.~~ - - ~~Navigasyon ve indirme algoritması http talepleriyle sağlanacak.~~ - - ~~Zaman bloğu olarak sleep'den kurtulunacak, elementin yüklenmesi beklenecek.~~ +# Windows için PyInstaller ile build +``` +pyinstaller --noconfirm --onefile --console --icon "ta.ico" --name "TurkAnimu" --add-binary "geckodriver.exe;." --add-binary "mpv.exe;." --add-binary "youtube-dl.exe;." "turkanime.py" +``` diff --git a/ta.ico b/ta.ico new file mode 100755 index 0000000..2e4b0a0 Binary files /dev/null and b/ta.ico differ diff --git a/turkanime.py b/turkanime.py index f84b5da..728e797 100644 --- a/turkanime.py +++ b/turkanime.py @@ -4,10 +4,9 @@ from PyInquirer import prompt from selenium import webdriver from selenium.webdriver.firefox.options import Options -from turkanime_api import AnimeSorgula,Anime,gereksinim_kontrol +from turkanime_api import AnimeSorgula,Anime,dosya,get_config print('TürkAnimu İndirici - github/Kebablord') -gereksinim_kontrol() def at_exit(): # Program kapatıldığında print(" "*50+"\rProgram kapatılıyor..",end="\r") @@ -22,7 +21,7 @@ def at_exit(): # Program kapatıldığında profile.set_preference("network.proxy.type", 0) if name == 'nt': # WINDOWS - driver = webdriver.Firefox(profile, options=options,service_log_path='NUL', executable_path=r'geckodriver.exe') + driver = webdriver.Firefox(profile, options=options,service_log_path='NUL', executable_path=dosya('geckodriver.exe')) else: # LINUX driver = webdriver.Firefox(profile, options=options, service_log_path='/dev/null') @@ -71,7 +70,7 @@ def at_exit(): # Program kapatıldığında elif "Ayarlar" in islem: parser = ConfigParser() while True: - parser.read(path.join(".","config.ini")) + parser.read(get_config()) isAutosave = parser.getboolean("TurkAnime","izlerken kaydet") dlFolder = parser.get("TurkAnime","indirilenler") opsiyon = prompt([{ @@ -92,7 +91,7 @@ def at_exit(): # Program kapatıldığında else: break - with open("./config.ini","w") as f: + with open(get_config(),"w") as f: parser.write(f) elif "Kapat" in islem: diff --git a/turkanime_api/__init__.py b/turkanime_api/__init__.py index 0759a5a..df32f9a 100644 --- a/turkanime_api/__init__.py +++ b/turkanime_api/__init__.py @@ -1,6 +1,7 @@ from sys import exit as kapat import subprocess as sp from .anime import AnimeSorgula,Anime +from .compile import dosya,get_config def gereksinim_kontrol(): """ Gereksinimlerin erişilebilir olup olmadığını kontrol eder """ diff --git a/turkanime_api/anime.py b/turkanime_api/anime.py index a5267a6..efaf300 100644 --- a/turkanime_api/anime.py +++ b/turkanime_api/anime.py @@ -3,6 +3,7 @@ from bs4 import BeautifulSoup as bs4 from .players import url_getir +from .compile import dosya,get_config class AnimeSorgula(): def __init__(self,driver=None): @@ -67,7 +68,7 @@ def __init__(self,driver,seri,bolumler): def indir(self): parser = ConfigParser() - parser.read(path.join(".","config.ini")) + parser.read(get_config()) dlfolder = parser.get("TurkAnime","indirilenler") if not path.isdir(path.join(dlfolder,self.seri)): @@ -79,7 +80,7 @@ def indir(self): print(" "*50+f"\r\n{self.driver.title} indiriliyor:") url = url_getir(self.driver) suffix="--referer https://video.sibnet.ru/" if "sibnet" in url else "" - system(f'youtube-dl --no-warnings -o "{path.join(dlfolder,self.seri,bolum)}.%(ext)s" "{url}" {suffix}') + system(f'{dosya("youtube-dl.exe")} --no-warnings -o "{path.join(dlfolder,self.seri,bolum)}.%(ext)s" "{url}" {suffix}') return True def oynat(self): @@ -87,11 +88,11 @@ def oynat(self): url = url_getir(self.driver) parser = ConfigParser() - parser.read(path.join(".","config.ini")) + parser.read(get_config()) suffix ="--referrer=https://video.sibnet.ru/ " if "sibnet" in url else "" suffix+= "--msg-level=display-tags=no " suffix+="--stream-record={}.mp4 ".format(path.join(".","Kayıtlar",self.bolumler)) if parser.getboolean("TurkAnime","izlerken kaydet") else "" - system(f'mpv "{url}" {suffix} ') + system(f'{dosya("mpv.exe")} "{url}" {suffix} ') return True diff --git a/turkanime_api/compile.py b/turkanime_api/compile.py new file mode 100644 index 0000000..5accb0d --- /dev/null +++ b/turkanime_api/compile.py @@ -0,0 +1,23 @@ +import os +import sys + +def dosya(relative_path): + """ PyInstaller için gömülü dosyaların dizinini getir """ + try: + base_path = sys._MEIPASS + except Exception: + base_path = os.path.abspath(".") + + return os.path.join(base_path, relative_path) + +def get_config(): + """ Kullanıcı klasöründe eğer yoksa TurkAnimu.ini dosyasın oluştur """ + confdir = os.path.join( os.path.expanduser("~"), "TurkAnimu.ini" ) + if not os.path.isfile( confdir ): + with open(confdir,"w") as f: + f.write( + "[TurkAnime]\n"+ + "izlerken kaydet = False\n"+ + "indirilenler = .\n" + ) + return confdir diff --git a/turkanime_api/players.py b/turkanime_api/players.py index e6cb133..3ce3411 100644 --- a/turkanime_api/players.py +++ b/turkanime_api/players.py @@ -5,6 +5,8 @@ from selenium.common.exceptions import NoSuchElementException from bs4 import BeautifulSoup as bs4 +from .compile import dosya + desteklenen_players = [ "SIBNET", "MAIL", @@ -38,7 +40,7 @@ def elementi_bekle(selector,_driver): def check_video(url): """ Video yaşıyor mu kontrol eder """ print(" "*50+"\rVideo yaşıyor mu kontrol ediliyor..",end="\r") - test = sp.Popen(f'youtube-dl --no-warnings -F "{url}"',stdout=sp.PIPE,shell=True) + test = sp.Popen(f'{dosya("youtube-dl.exe")} --no-warnings -F "{url}"',stdout=sp.PIPE,shell=True) stdout = test.communicate()[0].decode() stdexit = test.returncode if stdexit == 0 and "php" not in stdout: