מציאת קבצים ללא תרגום

מחשבים, חומרה, KODI, NUC, Raspberry pi
שלח תגובה
ChenGanir פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 223
הצטרף: אפריל 2005
מיקום: השרון
נתן תודות: 0
קיבל תודות: 10 פעמים

שליחה #1 

שלום

לכל חובבי PERL - הנה סקריפט קטן וחביב למציאת כל קבצי הסרטים שאין להם תרגום SRT וגם לא SUB.

רעיונות והצעות יתקבלו בברכה.

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

use strict;
use warnings;
use Cwd;

use File::Find;

my $find_path  =$ARGV[0];

find(\&d, $find_path);

sub d {

  my $file = $File::Find::name;
  my $srt_file;
  my $sub_file;
  
  return unless $file =~ /mkv$/ || $file =~ /avi$/ || $file =~ /mpeg$/ || $file =~ /mpg$/ || $file =~ /ts$/;
  $file =~ s,/,\\,g;
  $srt_file = $file;
  $srt_file =~ s/\.\w+$/\.srt/;
  $sub_file = $file;  
  $sub_file =~ s/\.\w+$/\.sub/;
  
  unless (-e $srt_file || -e $sub_file) {
			print "$file has no subtitles\n";
  } 

}
להרצה :

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

perl findfiles.pl <path_to_search>
נבדק ועובד גם על מיקומי רשת.

חן

ChenGanir פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 223
הצטרף: אפריל 2005
מיקום: השרון
נתן תודות: 0
קיבל תודות: 10 פעמים

שליחה #2 

עדכון לסקריפט

findfiles.pl

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

#!/bin/perl

#default libraries
use strict;
use warnings;
use Cwd;
use File&#58;&#58;Find;

# Get the command line argument for search path &#40;supports network paths in the format of \\HOST\folder&#41;
my $find_path  =$ARGV&#91;0&#93;;

# Call the find function and provide a search path with a callback function.
find&#40;\&find_files, $find_path&#41;;

#############################################
# Search for  a given subtitle file. 
# This function is called with the original movie file name, and a specific 
# subtitle extension.
#############################################
sub find_subs &#123;
	# First function parameter is the video file name
	my $video_file = shift;
	
	# Second function parameter is the subtitle file extension
	my $subs_extension = shift;
	
	# Build the subtitle file name &#40;set video file name, and replace the extension&#41;.
	my $sub_file = $video_file;
	$sub_file =~ s/\.\w+$/\.$subs_extension/i;
	
	# Check if the file exists. Return 1 if exists, 0 if not.
	if &#40;-e $sub_file&#41; &#123;
		return 1;
	&#125;
	return 0;
	
&#125;
#############################################
# find callback. This callback is called for each file found.
#############################################
sub find_files &#123;
  # Extract the file which this function was called for using the file&#58;&#58;find library.
  my $file = $File&#58;&#58;Find&#58;&#58;name;
  
  # Modify this line if you need more movie file formats. Currently supporting the following files &#58;
  return unless $file =~ /mkv$/ || $file =~ /avi$/ || $file =~ /mpeg$/ || $file =~ /mpg$/ || $file =~ /ts$/;
  
  #replace unix style slashes with windows style backslashes
  $file =~ s,/,\\,g;
  
  #modify the followig for more subtitle types.
  unless &#40;find_subs&#40;$file,"srt"&#41; || find_subs&#40;$file,"sub"&#41;&#41; &#123;
			print "$file has no subtitles\n";
  &#125; 
&#125;
syntax :

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

perl findfiles.pl <search_path>

Nzep1
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 210
הצטרף: נובמבר 2005
נתן תודות: 44 פעמים
קיבל תודות: 10 פעמים

הנה עוד משהו שימושי לסדרות

שליחה #3 

זה סקריפט perl שמתאם את הכתוביות לשמות הפרקים בסידרה ומבצע בשבילנו את ה rename וכך יש התאמה בין שמות הקבצים.

שמות הפרקים והכתוביות חיבים להכיל מחרוזת דומה לדוגמאות הבאות:
01e01
או
02x03
בכדי שההתאמה תתבצע.

כל סידרה צריכה להיות בסיפריה נפרדת.

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

#!/usr/bin/perl -w

print "enter directory\n";
chomp&#40;$dir = <STDIN>&#41;;
opendir&#40;DIR, $dir&#41; or die;

my @files = readdir&#40;DIR&#41;;

my $episode;
foreach $file &#40;@files&#41; &#123;
	if  &#40;&#40;$file =~ /^&#40;.*&#40;&#91;\d&#93;+&#41;&#91;Eex&#93;&#40;&#91;\d&#93;&#91;\d&#93;&#41;.*&#41;\.mkv$/ &#41; ||
	   &#40;$file =~ /^&#40;.*&#40;&#91;\d&#93;+&#41;&#91;Eex&#93;&#40;&#91;\d&#93;&#91;\d&#93;&#41;.*&#41;\.avi$/ &#41;&#41;
	&#123;
	  print "$1". " $2". " $3". " $file" . "\n";
	  $mkvfilename =$1;
	  $season = $2;
	  $episode = $3;
	  opendir &#40;DIR2,$dir&#41; or die; 
	  my @files2 = readdir&#40;DIR2&#41;;
	  $match=0;
	  foreach $file2 &#40;@files2&#41; &#123;
		  
		  if &#40;&#40;$file2 =~ /^&#40;.*$season&#91;Eex&#93;$episode.*&#41;\.&#40;srt&#41;$/ &#41; ||
		      &#40;$file2 =~ /^&#40;.*$season&#91;Eex&#93;$episode.*&#41;\.&#40;sub&#41;$/ &#41;&#41;
		  &#123;
		    $srtfilename=$1;
		    $filetype=$2;
		    $match=1;
		    if &#40; $srtfilename eq $mkvfilename &#41;
		    &#123;
			    print "Sub exists to $mkvfilename \n";
	            &#125;
		    else
		    &#123;
			 
			$oldsrtname =   "$dir\\$file2";   
			$newsrtname =  "$dir\\$mkvfilename.$filetype";  
			print "rnameing $srtfilename to match with $mkvfilename \n"; 
			rename&#40;"$oldsrtname","$newsrtname"&#41; or die "$! \n";   
			print "Sub matched to $mkvfilename \n";
			
		    &#125;
		    $match=1;
		    last;
		   &#125;
	  &#125;
	  if &#40;$match eq 0&#41; 
	  &#123;
		print  "No sub for $mkvfilename \n";
	  &#125;
	&#125;
&#125;
מריצים את הקובץ
perl fixsub.pl
והוא מבקש שם הסיפריה בה נמצאת הסידרה.
עובד על קבצי avi mkv sub srt

מי שרוצה מוזמן לשפר - ולשתף...

duder
סמל אישי של משתמש
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 735
הצטרף: ספטמבר 2007
נתן תודות: 17 פעמים
קיבל תודות: 12 פעמים

שליחה #4 

אהבתי,
עטפתי בקובץ bat שרץ על כל ספריות הסדרות ובקליק אחד הכל מסונכרן (Y)

אפילו יותר מהיר מהשיטה של sendto->Submatch למי שמכיר.


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

(ב YAMJ יש יכולת כזאת, אך היא רצה פעם אחת לכל קובץ)

ChenGanir פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 223
הצטרף: אפריל 2005
מיקום: השרון
נתן תודות: 0
קיבל תודות: 10 פעמים

שליחה #5 

duder כתב:אהבתי,
עטפתי בקובץ bat שרץ על כל ספריות הסדרות ובקליק אחד הכל מסונכרן (Y)

אפילו יותר מהיר מהשיטה של sendto->Submatch למי שמכיר.


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

(ב YAMJ יש יכולת כזאת, אך היא רצה פעם אחת לכל קובץ)
...
אם אתה מכיר JAVA, אז לא תהיה לך בעיה להוריד את קוד המקור הפתוח של YAMJ, להסתכל ב SRATIMPLUGIN ולשלוף משם את הקוד שעושה את זה. זה אפילו מרוכז בפונקציה אחת שעושה PARSING לדף ה HTML שיורד מאתר סרטים עבור הסרט שנבחר.

חן

duder
סמל אישי של משתמש
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 735
הצטרף: ספטמבר 2007
נתן תודות: 17 פעמים
קיבל תודות: 12 פעמים

שליחה #6 

טוב, JAWA אני לא מכיר
ועדיין לא נמאס לי מספיק כדי ללמוד רק בשביל זה.

אולי משהו ירים את הכפפה ?

jpost
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 4861
הצטרף: אפריל 2005
שם מלא: (~)
נתן תודות: 125 פעמים
קיבל תודות: 202 פעמים

שליחה #7 

אפשר להוסיף ל YAMJ אפשרות לסריקה חוזרת של סרטים/פרקים ללא תרגום.
בכל סריקה הוא יתייחס לסרטים ללא תרגום כלא מאונדקסים וינסה להוריד להם תרגום שוב.

ea_rambo
חבר פעיל
חבר פעיל
תגובות: 55
הצטרף: פברואר 2006
שם מלא: ea_rambo
נתן תודות: 19 פעמים
קיבל תודות: 1 פעם

שליחה #8 

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

תודה,
ערן

jpost
סמל אישי של משתמש
חבר מביא חבר
חבר מביא חבר
תגובות: 4861
הצטרף: אפריל 2005
שם מלא: (~)
נתן תודות: 125 פעמים
קיבל תודות: 202 פעמים

שליחה #9 

ea_rambo כתב:נשמע מאד מוצלח,
רק שלא ממש הבנתי איך אני מפעיל את זה.
אשמח להסבר יותר פשטני.

תודה,
ערן
...
לא מפעילים את זה. זה עוד לא כתוב...

צריך להיכנס לכאן:
http://code.google.com/p/moviejukebox/issues/list
ולבקש מהמפתחים לפתח את התכונה הזו.

Nzep1
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 210
הצטרף: נובמבר 2005
נתן תודות: 44 פעמים
קיבל תודות: 10 פעמים

שליחה #10 

ea_rambo כתב:נשמע מאד מוצלח,
רק שלא ממש הבנתי איך אני מפעיל את זה.
אשמח להסבר יותר פשטני.

תודה,
ערן
...

יש הרבה "זה" בפוסט ה "זה" על איזה "זה" מדובר?

שלח תגובה

חזור אל “חומרה PC + סטרימרים”