الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

pytorrentrename

بدأه ahmed_youssef في 16 فبراير 2012 · 4 رد · 764 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كتبت سكربت بسيط لتحويل اسماء ملفات التورنت للإسم الحقيقي الذي تستخدمه عند التحميل بناء على طلب أحد الأصدقاء

تستطيع تحميله من هنا

https://bitbucket.org/xmonader/pytorrentrename-dev

تحتاج مكتبة BitTorrent-bencode

وإما تستخدمه كتطبيق من الconsole مع معاملات مسارات ملفات التورنت او المجلد الذي يحويها

*ملاحظة البرنامج يظن إستخدام حكيم من المستخدم لأنه لايقوم بعمل check إلا على الملفات والمجلدت لا كونها ملف تورنت حقيقي او لا!

3
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#2

تعديل: إذاالمجلد فيه ملفات اخرى غير ملفات بإمتداد .torrent سيتم تجاهلها

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

تعديل: ملفات غير التورنت في المجلد سيتم تجاهلها حتى إذا كانت بإمتداد .torrent

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#4

البرنامج يعتمد على المكتبة bencode في استخراج الإسم، يمكن استخراج الإسم بدونها ويصبح البرنامج مستقل وبدون اعتماديات.

 

معلومات ملف التورنت موجودة في أول الملف، هذه عينه لملف:

 

post-231926-0-91219600-1374788129_thumb.

 

الملف يبدأ بالحرف d ثم سلسلة hash كالتالي:

 

[طول المفتاح]:[المفتاح][طول القيمة]:[القيمة]

 

معلومات اسم الملف هكذا:

4:name56:The Incredible Burt Wonderstone .2013.TS.XviD-RESiSTANCE12
طول مفتاح الإسم 4 وطول القيمة (اسم الملف) 56 وهي The Incredible Burt Wonderstone .2013.TS.XviD-RESiSTANCE.

 

هذا تعديل على الدالة get_torrentdata_filename لإستخراج الإسم بدون الحاجة للمكتبة:

#-*- coding: utf-8 -*-

def get_torrentdata_filename(filecontents):
        """returns the download filename of torrent's file content"""
        import re
        assert filecontents[0] == 'd' # تأكّد بأنه ملف تورنت
        match  = re.search(':name([\d]+):', filecontents)
        return filecontents[match.end(1) + 1 : match.end(1) + int(match.group(1)) + 1]
وصار dependency free :D

تم تعديل هذه المشاركة بواسطة Mr.B في 26 يوليو 2013 في 00:49

1
#5

قمت بإعتمادها شكرا جزيلا لك :)

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader