XBMC Eden + XBMC Subtitles + Subscenter/Sratim כבר לא מוריד כתוביות

תוכנות ניהול מדיה: KODI, תוספים, XBMC, Media Portal, PLEX וכו'
ssip96 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 442
הצטרף: מאי 2007
נתן תודות: 4 פעמים
קיבל תודות: 2 פעמים

שליחה #1 

הכתוביות מוצגות, בוחרים בכתובית, הוא כותב שהוא מוריד בהצלחה אבל בפועל לא מוריד...
התופעה החלה מאז ששדרתי לEDEN (11.0), ומתרחשת רק באתרים הנ"ל. דרך opensubitles לדוגמה הוא מוריד בהצלחה, גם כתוביות בעברית כמובן.

עוד מישהו נתקל בזה?

Rio
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 100
הצטרף: פברואר 2012
נתן תודות: 6 פעמים
קיבל תודות: 1 פעם

שליחה #2 

הבנתי שסרטים שינו עכשיו את האתר שלהם מבחינת הורדת כתוביות. לגבי סאבסנטר אין לי מושג...

moshelib
חבר שרק התחיל
חבר שרק התחיל
תגובות: 20
הצטרף: אפריל 2006
נתן תודות: 4 פעמים
קיבל תודות: 0

שליחה #3 

בזמן האחרון הרבה מהפוסטים בsubscenter מפנים לאתר הורדה ישירה על מנת להוריד כתוביות.
זו הסיבה למה לא יורדות כתוביות.
בסרטים יש בעיה בחלק מהחיפושים. הם שינו את האתר ומתקבלת שגיאה. לפעמים חיפוש מחדש עוזר לזה.

ssip96 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 442
הצטרף: מאי 2007
נתן תודות: 4 פעמים
קיבל תודות: 2 פעמים

שליחה #4 

moshelib כתב:בזמן האחרון הרבה מהפוסטים בsubscenter מפנים לאתר הורדה ישירה על מנת להוריד כתוביות.
זו הסיבה למה לא יורדות כתוביות.
בסרטים יש בעיה בחלק מהחיפושים. הם שינו את האתר ומתקבלת שגיאה. לפעמים חיפוש מחדש עוזר לזה.
...
לא לא חושב שזו לא הבעיה הזו... מדובר בסדרות ישנות שהתרגום שלהן מתאים אם מורידים ידנית מהאתר

ssip96 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 442
הצטרף: מאי 2007
נתן תודות: 4 פעמים
קיבל תודות: 2 פעמים

שליחה #5 

אז רק אצלי זה ככה? מישהו יכול לאשר שהוא מצליח להוריד מהאתרים הנ"ל בקונפיגורציה הנ"ל?

pinkman1
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 260
הצטרף: פברואר 2012
נתן תודות: 0
קיבל תודות: 0

שליחה #6 

גם אצלי, כולל כתוביות ישנות וסדרות ישנות

pacooka
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 129
הצטרף: מרץ 2008
מיקום: גדרה
נתן תודות: 39 פעמים
קיבל תודות: 5 פעמים

שליחה #7 

זה לא עובד אצל אף אחד, לפחות עד שיתקנו את הסקריפט.

DBBD
חבר פעיל
חבר פעיל
תגובות: 83
הצטרף: אוגוסט 2006
נתן תודות: 6 פעמים
קיבל תודות: 2 פעמים

שליחה #8 

pacooka כתב:זה לא עובד אצל אף אחד, לפחות עד שיתקנו את הסקריפט.
...
נכון מאוד. מישהו יודע מי כתב את הSCRIPT?

voguemaster
חבר ותיק
חבר ותיק
תגובות: 1500
הצטרף: ינואר 2012
נתן תודות: 3 פעמים
קיבל תודות: 173 פעמים

שליחה #9 

התוסף של ה-SUBTITLES נכתב ע"י AMET ועוד איזה בחור אחד. אפשר למצוא את ה-THREAD הרשמי של התוסף הזה בפורומים של XBMC.

אני כבר ציינתי בפני שניהם את הבעיה הזו, ואפילו נתתי להם על מגש של כסף את הפיתרון. מצאתי את הבאג בסקריפט שלהם ועדיין שום עדכון לצערי. הם פשוט לא משרשרים את המפתח שצריך כדי להוריד את הכתובית (אגב, הוא קיים שם :-), הם מוצאים אותו בכל מקרה).
מדריך התקנת ArgusTV לצפיה בשידורי עידן+ ב-XBMC/קודי:
http://www.hometheater.co.il/vt207773.html

komarto
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 168
הצטרף: נובמבר 2008
נתן תודות: 2 פעמים
קיבל תודות: 9 פעמים

שליחה #10 

תיקנת את הבאג?

voguemaster
חבר ותיק
חבר ותיק
תגובות: 1500
הצטרף: ינואר 2012
נתן תודות: 3 פעמים
קיבל תודות: 173 פעמים

תיקנתי את הבאג בגרסא קודמת של הפלאגין

שליחה #11 

כרגע המצב הוא שיש גרסא חדשה לפלאגין וזה דרס את השינוי. לא יצא לי בכלל להתעסק עם זה מאז...

אני אבדוק את הנושא בהקדם (ילדים חולים עכשיו, זה מסובך :-))

יוני_א
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 848
הצטרף: מרץ 2008
שם מלא: יוני
נתן תודות: 34 פעמים
קיבל תודות: 24 פעמים

שליחה #12 

שיהיו בריאים!

DBBD
חבר פעיל
חבר פעיל
תגובות: 83
הצטרף: אוגוסט 2006
נתן תודות: 6 פעמים
קיבל תודות: 2 פעמים

Re: תיקנתי את הבאג בגרסא קודמת של הפלאגין

שליחה #13 

voguemaster כתב:כרגע המצב הוא שיש גרסא חדשה לפלאגין וזה דרס את השינוי. לא יצא לי בכלל להתעסק עם זה מאז...

אני אבדוק את הנושא בהקדם (ילדים חולים עכשיו, זה מסובך :-))
...
אם תמצא את התיקון של הגרסה הקודמת, אוכל לנסות ליישם לגרסה החדשה וגם לשלוח פאטש.

דן

ILRHAES
חבר שרק התחיל
חבר שרק התחיל
תגובות: 33
הצטרף: ספטמבר 2007
נתן תודות: 0
קיבל תודות: 2 פעמים

שליחה #14 

מצורף הפתרון למי שמעוניין , אין בעיה שמישהו ישלח את זה למפתח שיישם את העניין.
קובץ הservice.py

קוד: בחירת הכל

# -*- coding: UTF-8 -*-

#===============================================================================
# Subscenter.org subtitles service.
# Version: 1.3
#
# Change log:
# 1.1 - Fixed downloading of non-Hebrew subtitles.
# 1.2 - Added key field for download URL
# 1.3 - Fixed null values in website dictionary (changed to None)
#
# Created by: Ori Varon
#===============================================================================
import os, re, xbmc, xbmcgui, string, time, urllib2
from utilities import languageTranslate, log

BASE_URL = "http://www.subscenter.org"
debug_pretext = ""

#===============================================================================
# Regular expression patterns
#===============================================================================

MULTI_RESULTS_PAGE_PATTERN = u"עמוד &#40;?P<curr_page>\d*&#41; \&#40; סך הכל&#58; &#40;?P<total_pages>\d*&#41; \&#41;"
SEARCH_RESULTS_PATTERN = "<div class=\"generalWindowRight\">.*?<a href=\"&#40;?P<sid>.*?&#41;\">"

#===============================================================================
# Private utility functions
#===============================================================================

# Returns the content of the given URL. Used for both html and subtitle files.
# Based on Titlovi's service.py
def getURL&#40;url&#41;&#58;
    # Fix URLs with spaces in them
    url = url.rep&#108;ace&#40;" ","%20"&#41;
    content = None
    log&#40; __name__ ,"Getting url&#58; %s" % &#40;url&#41;&#41;
    try&#58;
        response = urllib2.urlopen&#40;url&#41;
        content = response.read&#40;&#41;
    except&#58;
        log&#40; __name__ ,"Failed to get url&#58; %s" % &#40;url&#41;&#41;
    # Second parameter is the filename
    return content

def getURLfilename&#40;url&#41;&#58;
    # Fix URLs with spaces in them
    url = url.rep&#108;ace&#40;" ","%20"&#41;
    filename = None
    log&#40; __name__ ,"Getting url&#58; %s" % &#40;url&#41;&#41;
    try&#58;
        response = urllib2.urlopen&#40;url&#41;
        filename = response.headers&#91;'Content-Disposition'&#93;
        filename = filename&#91;filename.index&#40;"filename="&#41;&#58;&#93;
    except&#58;
        log&#40; __name__ ,"Failed to get url&#58; %s" % &#40;url&#41;&#41;
    # Second parameter is the filename
    return filename

# The function receives a subtitles page id number, a list of user selected
# languages and the current subtitles list and adds all found subtitles matching
# the language selection to the subtitles list.
def getAllSubtitles&#40;subtitlePageID,languageList,subtitlesList&#41;&#58;
    # Retrieve the subtitles page &#40;html&#41;
    try&#58;
        subtitlePage = getURL&#40;BASE_URL + subtitlePageID&#41;
    except&#58;
        # Didn't find the page - no such episode?
        return
    # Didn't find the page - no such episode?
    if &#40;not subtitlePage&#41;&#58;
        return
    # Find subtitles dictionary declaration on page
    tempStart = subtitlePage.index&#40;"subtitles_groups = "&#41;
    # Look for the following line break
    tempEnd = subtitlePage.index&#40;"\n",subtitlePage.index&#40;"subtitles_groups = "&#41;&#41;
    toExec = "foundSubtitles = "+subtitlePage&#91;tempStart+len&#40;"subtitles_groups = "&#41;&#58;tempEnd&#93;
    # Remove junk at the end of the line
    toExec = toExec&#91;&#58;toExec.rfind&#40;"&#125;"&#41;+1&#93;
    # rep&#108;ace "null" with "None"
    toExec = toExec.rep&#108;ace&#40;"null","None"&#41;
    exec&#40;toExec&#41;
    log&#40; __name__ ,"Built webpage dictionary"&#41;
    for language in foundSubtitles.keys&#40;&#41;&#58;
        if &#40;languageTranslate&#40;language, 2, 0&#41; in languageList&#41;&#58; 
            for translator in foundSubtitles&#91;language&#93;&#58;
                for quality in foundSubtitles&#91;language&#93;&#91;translator&#93;&#58;
                    for rating in foundSubtitles&#91;language&#93;&#91;translator&#93;&#91;quality&#93;&#58;
                        subtitlesList.append&#40;&#123;'rating'&#58; rating, 'sync'&#58; False,
                            'filename'&#58; foundSubtitles&#91;language&#93;&#91;translator&#93;&#91;quality&#93;&#91;rating&#93;&#91;"subtitle_version"&#93;,
                            'subtitle_id'&#58; foundSubtitles&#91;language&#93;&#91;translator&#93;&#91;quality&#93;&#91;rating&#93;&#91;"id"&#93;,
                            'language_flag'&#58; 'flags/' + language + '.gif',
                            'language_name'&#58; languageTranslate&#40;language, 2, 0&#41;,
                            'key'&#58; foundSubtitles&#91;language&#93;&#91;translator&#93;&#91;quality&#93;&#91;rating&#93;&#91;"key"&#93;&#125;&#41;

# Extracts the downloaded file and find a new sub/srt file to return.
# Note that Sratim.co.il currently isn't hosting subtitles in .txt format but
# is adding txt info files in their zips, hence not looking for txt.
# Based on Titlovi's service.py
def extractAndFindSub&#40;tempSubDir,tempZipFile&#41;&#58;
    # Remember the files currently in the folder and their number
    files = os.listdir&#40;tempSubDir&#41;
    init_filecount = len&#40;files&#41;
    filecount = init_filecount
    max_mtime = 0
    # Determine which is the newest subtitles file in tempSubDir
    for file in files&#58;
        if &#40;string.split&#40;file,'.'&#41;&#91;-1&#93; in &#91;'srt','sub'&#93;&#41;&#58;
            mtime = os.stat&#40;os.path.join&#40;tempSubDir, file&#41;&#41;.st_mtime
            if mtime > max_mtime&#58;
                max_mtime =  mtime
    init_max_mtime = max_mtime
    # Wait 2 seconds so that the unpacked files are at least 1 second newer
    time.sleep&#40;2&#41;
    # Use XBMC's built-in extractor
    xbmc.executebuiltin&#40;"XBMC.Extract&#40;" + tempZipFile + "," + tempSubDir +"&#41;"&#41;
    waittime  = 0
    while &#40;&#40;filecount == init_filecount&#41; and &#40;waittime < 20&#41; and
           &#40;init_max_mtime == max_mtime&#41;&#41;&#58; # Nothing extracted yet
        # Wait 1 second to let the builtin function 'XBMC.extract' unpack
        time.sleep&#40;1&#41;  
        files = os.listdir&#40;tempSubDir&#41;
        filecount = len&#40;files&#41;
        # Determine if there is a newer file created in tempSubDir
        # &#40;indicates that the extraction had completed&#41;
        for file in files&#58;
            if &#40;string.split&#40;file,'.'&#41;&#91;-1&#93; in &#91;'srt','sub'&#93;&#41;&#58;
                mtime = os.stat&#40;os.path.join&#40;tempSubDir, file&#41;&#41;.st_mtime
                if &#40;mtime > max_mtime&#41;&#58;
                    max_mtime =  mtime
        waittime  = waittime + 1
    if waittime == 20&#58;
        log&#40; __name__ ,"Failed to unpack subtitles in '%s'" % &#40;tempSubDir&#41;&#41;
        return ""
    else&#58;
        log&#40; __name__ ,"Unpacked files in '%s'" % &#40;tempSubDir&#41;&#41;        
        for file in files&#58;
            # There could be more subtitle files in tempSubDir, so make sure we
            # get the newest subtitle file
            if &#40;&#40;string.split&#40;file, '.'&#41;&#91;-1&#93; in &#91;'srt', 'sub'&#93;&#41; and
                &#40;os.stat&#40;os.path.join&#40;tempSubDir, file&#41;&#41;.st_mtime >
                 init_max_mtime&#41;&#41;&#58;
                log&#40; __name__ ,"Unpacked subtitles file '%s'" % &#40;file&#41;&#41;        
                return os.path.join&#40;tempSubDir, file&#41;

#===============================================================================
# Public interface functions
#===============================================================================

# This function is called when the service is selected through the subtitles
# addon OSD.
# file_original_path -> Original system path of the file playing
# title -> Title of the movie or episode name
# tvshow -> Name of a tv show. Empty if video isn't a tv show &#40;as are season and
#           episode&#41;
# year -> Year
# season -> Season number
# episode -> Episode number
# set_temp -> True iff video is http&#58;// stream
# rar -> True iff video is inside a rar archive
# lang1, lang2, lang3 -> Languages selected by the user
def search_subtitles&#40; file_original_path, title, tvshow, year, season, episode, set_temp, rar, lang1, lang2, lang3, stack &#41;&#58; #standard input
    subtitlesList = &#91;&#93;
    # List of user languages - easier to manipulate
    languageList = &#91;lang1, lang2, lang3&#93;
    msg = ""
    # Check if tvshow and rep&#108;ace spaces with + in either case
    if tvshow&#58;
        searchString = tvshow.rep&#108;ace&#40;" ","+"&#41;
    else&#58;
        searchString = title.rep&#108;ace&#40;" ","+"&#41;
    log&#40; __name__ ,"%s Search string = %s" % &#40;debug_pretext, searchString.lower&#40;&#41;&#41;&#41;

    # Retrieve the search results &#40;html&#41;
    searchResults = getURL&#40;BASE_URL + "/he/subtitle/search/?q=" + searchString.lower&#40;&#41;&#41;
    # Search most likely timed out, no results
    if &#40;not searchResults&#41;&#58;
        return subtitlesList, "", "Search timed out, please try again later."

    # Look for subtitles page links
    subtitleIDs = re.findall&#40;SEARCH_RESULTS_PATTERN,searchResults,re.DOTALL&#41;
    # Look for more subtitle pages
    pages = re.search&#40;MULTI_RESULTS_PAGE_PATTERN,unicode&#40;searchResults,"utf-8"&#41;&#41;
    # If we found them look inside for subtitles page links
    if &#40;pages&#41;&#58;
        while &#40;not &#40;int&#40;pages.group&#40;"curr_page"&#41;&#41;&#41; == int&#40;pages.group&#40;"total_pages"&#41;&#41;&#41;&#58;
            searchResults = getURL&#40;BASE_URL + "/he/subtitle/search/?q="+searchString.lower&#40;&#41;+"&page="+str&#40;int&#40;pages.group&#40;"curr_page"&#41;&#41;+1&#41;&#41;
            tempSIDs = re.findall&#40;SEARCH_RESULTS_PATTERN,searchResults,re.DOTALL&#41;
            for sid in tempSIDs&#58;
                subtitleIDs.append&#40;sid&#41;
            pages = re.search&#40;MULTI_RESULTS_PAGE_PATTERN,unicode&#40;searchResults,"utf-8"&#41;&#41;
    # Uniqify the list
    subtitleIDs=list&#40;set&#40;subtitleIDs&#41;&#41;
    # If looking for tvshos try to append season and episode to url
    if tvshow&#58;
        for i in range&#40;len&#40;subtitleIDs&#41;&#41;&#58;
            subtitleIDs&#91;i&#93; += "/"+season+"/"+episode+"/"
    for sid in subtitleIDs&#58;
        getAllSubtitles&#40;sid,languageList,subtitlesList&#41;
    
    
    # Standard output -
    # subtitles list &#40;list of tuples built in getAllSubtitles&#41;,
    # session id &#40;e.g a cookie string, passed on to download_subtitles&#41;,
    # message to print back to the user
    return subtitlesList, "", msg

# This function is called when a specific subtitle from the list generated by
# search_subtitles&#40;&#41; is selected in the subtitles addon OSD.
# subtitles_list -> Same list returned in search function
# pos -> The selected item's number in subtitles_list
# zip_subs -> Full path of zipsubs.zip located in tmp location, if automatic
# extraction is used &#40;see return va&#108;ues for details&#41;
# tmp_sub_dir -> Temp folder used for both automatic and manual extraction
# sub_folder -> Folder where the sub will be saved
# session_id -> Same session_id returned in search function
def download_subtitles &#40;subtitles_list, pos, zip_subs, tmp_sub_dir, sub_folder, session_id&#41;&#58; #standard input
    subtitle_id = subtitles_list&#91;pos&#93;&#91; "subtitle_id" &#93;
    filename = subtitles_list&#91;pos&#93;&#91; "filename" &#93;
    key = subtitles_list&#91;pos&#93;&#91; "key" &#93;
    url = BASE_URL + "/subtitle/download/"+languageTranslate&#40;subtitles_list&#91;pos&#93;&#91; "language_name" &#93;, 0, 2&#41;+"/"+str&#40;subtitle_id&#41;+"/?v="+filename+"&key="+key
    
    log&#40; __name__ ,"%s Fetching subtitles using url %s" % &#40;debug_pretext, url&#41;&#41;
    # Get the intended filename &#40;don't know if it's zip or rar&#41;
    archive_name = getURLfilename&#40;url&#41;
    # Get the file content using geturl&#40;&#41;
    content = getURL&#40;url&#41;
    subs_file = ""
    if content&#58;
        local_tmp_file = os.path.join&#40;tmp_sub_dir, archive_name&#41;
        log&#40; __name__ ,"%s Saving subtitles to '%s'" % &#40;debug_pretext, local_tmp_file&#41;&#41;
        try&#58;
            local_file_handle = open&#40;local_tmp_file, "wb"&#41;
            local_file_handle.write&#40;content&#41;
            local_file_handle.close&#40;&#41;
        except&#58;
            log&#40; __name__ ,"%s Failed to save subtitles to '%s'" % &#40;debug_pretext, local_tmp_file&#41;&#41;

        # Extract the zip file and find the new sub/srt file
        subs_file = extractAndFindSub&#40;tmp_sub_dir,local_tmp_file&#41;
            
    # Standard output -
    # True iff the file is packed as zip&#58; addon will automatically unpack it.
    # language of subtitles,
    # Name of subtitles file if not packed &#40;or if we unpacked it ourselves&#41;
    return False, subtitles_list&#91;pos&#93;&#91; "language_name" &#93;, subs_file

אם יש בעיה מבחינה חוקית לפרסם , אפשר למחוק ולחכות לתיקון מהמפתח.

בהצלחה!

pacooka
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 129
הצטרף: מרץ 2008
מיקום: גדרה
נתן תודות: 39 פעמים
קיבל תודות: 5 פעמים

שליחה #15 

האם הסקריפט הנ"ל זה הפתרון לגרסה הנוכחית שאפשר ליישם אותו ב XBMC כבר עכשיו ?או שזה בעצם פתרון ישן שמצריך תיקון?!?

ILRHAES
חבר שרק התחיל
חבר שרק התחיל
תגובות: 33
הצטרף: ספטמבר 2007
נתן תודות: 0
קיבל תודות: 2 פעמים

שליחה #16 

לא פתרון ישן, מעודכן ועובד.
להעתיק את המלל לתוך service.py והכול עובד.

amber
חבר פעיל
חבר פעיל
תגובות: 58
הצטרף: מאי 2005
נתן תודות: 6 פעמים
קיבל תודות: 2 פעמים

שליחה #17 

שלום
החלפתי את ה- service.py הישן בסקריפט החדש למעלה. כלומר מחקתי את הישן ויצרתי קובץ חדש באותו השם שאליו העתקתי את הסקריפט מלמעלה.
כעת אני לא מוצא בכלל כתוביות באתר סרטים ואילו באתר סאבסנטר הוא מתחיל לחפש ומיד יוצא.

מה הבעיה?

אמיר

Spook
סמל אישי של משתמש
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 990
הצטרף: יולי 2007
נתן תודות: 58 פעמים
קיבל תודות: 27 פעמים

שליחה #18 

איפה הקובץ אמור להמצא?
אני לא מצליח למצוא אותו.

ILRHAES
חבר שרק התחיל
חבר שרק התחיל
תגובות: 33
הצטרף: ספטמבר 2007
נתן תודות: 0
קיבל תודות: 2 פעמים

שליחה #19 

היי,

ראשית , הקובץ נמצא ב :

C:\Users\YOURUSER\AppData\Roaming\XBMC\addons\script.xbmc.subtitles\resources\lib\services\Subscenter

מי שעם לינוקס + מאק , אני בטוח שימצא לבד.

בנוגע לבעיה השניה,
כנראה שהקובץ שיצרת אינו טוב כי יצרת קובץ חדש.
תסיר את התוסף בXBMC , תתקין מחדש ואז תחליף את המלל של הקובץ ולא יצירת קובץ חדש, תעדכן אז.

בהצלחה!

pacooka
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 129
הצטרף: מרץ 2008
מיקום: גדרה
נתן תודות: 39 פעמים
קיבל תודות: 5 פעמים

שליחה #20 

אכן עובד!!!

עבודה טובה!

שלח תגובה

חזור אל “תוכנה - KODI”