كيفية إعادة تسمية ملفات العرض التلفزيونية برمجيا برمجيا في مكتبة iTunes، لتوافق XBMC؟

StackOverflow https://stackoverflow.com/questions/397723

  •  29-08-2019
  •  | 
  •  

سؤال

لدي مجموعة من الأفلام والبرامج التلفزيونية في iTunes، وأود إعادة تسميتها إلى اتفاقية تسمية XBMC متوافقة دون كسر الروابط في iTunes.

يبدو أن جميع البيانات الوصفية الضرورية (رقم الموسم، الاسم، رقم الحلقة، إلخ) في ملف XML الذي يدير iTunes، واسم الحلقة هو اسم الملف الحالي. حتى إعادة تسمية الملفات برمجيا تبدو واضحة إلى حد ما ولكن كيف يمكنني الاحتفاظ بمكتبة iTunes مباشرة في نفس الوقت؟ هل يكفي لإعادة كتابة ملف XML للإشارة إلى أسماء الملفات الجديدة؟

أفضل عدم الدخول في AppleScript إذا كان بإمكاني تجنب ذلك (الحياة قصيرة جدا)، ولكن إذا كان الأمر أسهل في القيام بذلك بهذه الطريقة، فقد أنظر إليها. وإلا فإنني أرغب في القيام بذلك بشكل مثالي في Ruby.

هل كانت مفيدة؟

المحلول

على ويندوز آبل يوفر اي تيونز كوم لنظام التشغيل Windows SDK هذا يعمل بشكل جيد للغاية. يتم إنشاؤه باستخدام واجهة COM بحيث يعمل مع كل لغة متاحة تقريبا للنوافذ. يوفر أساليب لإعادة تسمية المسارات وقوائم التشغيل. لقد استخدمت هذا للقيام بكل أنواع الأشياء مع مكتبتي.

لا أعرف ما هو متاح على جهاز Mac، لكنني أعتقد أن AppleScript هي أفضل طريقة أصلية للوصول إلى ما هو متاح. هناك مشروع يسمى "الإيقاعات العين" التي توفر إطار الكاكاو. يوجد موقع مخلص ل AppleScript ("applescrips دوغ ل iTunes"). هنا موقع يوضح كيفية الوصول iTunes من بيرل.

إذا كنت ترغب في إعادة تسمية الملف من كل من الملف واسم iTunes، فمن المحتمل أن تقوم بتغيير اسم المسار، وإزالة الملف من المكتبة، وإعادة تسمية الملف، ثم أعد إضافة المسار. سوف تحتاج إلى الحفاظ على معلومات مثل آخر لعبت، playcount، إلخ.

نصائح أخرى

لست متأكدا إذا كنت على مربع Windows ولكن بصراحة إذا كنت تستطيع الكتابة حتى جافا سكريبت قليلا iTunes com api. سهل الاستخدام للغاية.

أدناه هي عينة من ما يبدو عليه. (لم يتم اختبار هذا، لذلك فقط استخدامه كمرجع.)

var    ITTrackKindFile  = 1;
var iTunesApp = WScript.CreateObject("iTunes.Application");
var deletedTracks = 0;
var mainLibrary = iTunesApp.LibraryPlaylist;
var tracks = mainLibrary.Tracks;
var numTracks = tracks.Count;
var i;
var    RenameTarget;

while (i > 0)
{
    var currTrack = tracks.Item(numTracks);

    // is this a file track?
    if (currTrack.Kind == ITTrackKindFile)
    {
            RenameTarget = "Stuff from other properties"
        currTrack.Name = RenameTarget; //
    }
    numTracks++;
}

حظ سعيد.

في وقت متأخر لكنني احتاجت بالضبط نفس الشيء عن الإقرار على نظام التشغيل X.

كان الحل الخاص بي هو كتابة نص بيثون الذي يستعلم اي تيونز برامجه التلفزيونية عبر جسر AppleScript، يحصل على مسار الملف من سمة موقع كل المسار، ثم يقوم بإنشاء Symlink إلى الملف الأصلي، باستخدام بيانات تعريف iTunes لإعطاء الرابط اسم مناسب ل plex / xbmc الخ

ميزة هل يمكنك إنشاء مجموعات متعددة غير مؤلمة من الروابط مع مخططات تسمية مختلفة، على سبيل المثال اسمي إيرل S01E10.M4V أو اسمي إيرل 01x10 أبيض كذبة Christmas.M4V

جوهر البرنامج النصي (حيث track هل المرجع الذي يوفره جسر Appscript):

def trackInfo(track):
"""returns tuple (filename, filepath, show)

track is iTunes playlist track from appscript bridge,

filename is of format "Showname 01x02 Episode Name.avi" where 
01 is the season number, 02 the episode number and the extension
will match that of filepath.

filepath is the UNIX path to the original file.
"""
try:
    path = track.location().path
except CommandError:
    return None, None, None
ext = os.path.splitext(path)[1]
name = "%s %02dx%02d %s%s" % (track.show(), track.season_number(), 
                                track.episode_number(), track.name(), ext)
return name, path, track.show()

يمكنني استخدام تحديد 2 لنظام التشغيل Mac لإعادة تسمية عروضي - يعمل بشكل رائع!

تحقق من epnamer في http://www.epnamer.com/. وبعد يتطلب .NET ولكن هو بالضبط ما تبحث عنه و XBMC هو بالضبط ما أستخدمه أيضا.

قد تنظر أيضا في استخدام رفيق الوسائط لأنك على الأرجح تستخدم وظيفة مكتبة XBMC، والتي يمكنك قراءتها هنا:

http://xbmc.org/forum/showthread.php؟p=217769.

سوف يجعل ملفات .nfo و. TBN لكل فيلم وتلفويف تظهر أنك حصلت على XBMC SCRAPE قبل الخروج إلى الإنترنت للحصول على معلومات.

استمتع!

هناك طريقة أخرى للعب مع ملف iTunes XML هو استخدام برز وحدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top