Коди Фен Форум България
Разархивиране на RAR архиви в python - Версия за принтиране

+- Коди Фен Форум България (https://kodibg.org/forum)
+-- Форум: Разработка (https://kodibg.org/forum/forum-7.html)
+--- Форум: Програмиране (https://kodibg.org/forum/forum-8.html)
+--- Тема: Разархивиране на RAR архиви в python (/thread-360.html)



Разархивиране на RAR архиви в python - Majide - 05-02-2017

Ако сте се опитвали да разархивирате RAR архиви в python сигурно знаете каква мъка е да се направи, още повече - работещо платформено независимо решение.

Алтернативен вариант е да се използва официалния unrar на Alexander Roshal, но трябва той да се разпространява заедно с конкретния Kodi addon и оттам следват множество други проблеми, като лиценз за употреба и разпространение, стартиране на отделен файл според операционната система и т.н. Нещо подобно, би свършило работа:

Код:
import subprocess
subprocess.Popen(['/usr/bin/unrar', 'x', /path/to/archivename, /path/to/destinationdirectory])
При мен обаче не работи Sad

Щом локално не става, може да го направим online тогава. Използвайки например някоя онлайн услуга за разархивиране на файлове и изтегляйки разархивираното съдържание:
Код:
curl 'http://funzip.net/Home/Upload' -H 'Host: funzip.net' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0' -H 'Accept: */*' -H 'Accept-Language: bg,en;q=0.5' --compressed -H 'Referer: http://funzip.net/' -H 'X-Requested-With: XMLHttpRequest' -H 'Content-Type: multipart/form-data; boundary=---------------------------12931226381816525941197219339' -H 'DNT: 1' -H 'Connection: keep-alive' --data-binary $'-----------------------------12931226381816525941197219339\r\n\r\nContent-Disposition: form-data; name="file"; filename="subtitle.rar"\r\nContent-Type: application/vnd.rar\r\n\r\n-----------------------------12931226381816525941197219339--\r\n'

[{"downloadUrl":"/Home/DownloadFile?file=FmUuJdrZTRPVp%2BNIr%2FGpVw%3D%3D\u0026index=0","index":0,"filename":"CarlSagans-COSMOS-part-01-TheShoresOfTheCosmicOcean.kolibka.com.srt","filesize":58610,"isDirectory":false}]

http://funzip.net/Home/DownloadFile?file=FmUuJdrZTRPVp%2BNIr%2FGpVw%3D%3D&index=0
...и тук идва следващия проблем - този сайт изисква ъплоудване на архива, който искаме да бъде разархивиран. Според вас заслужава ли си усилията първо архива да се свали локално, след това да се ъплоудне в сайта, а накрая да се изтегли резултата?



RE: Разархивиране на RAR архиви в python - xbmcbg - 05-02-2017

Не е нужно, така си е добре добавката  Cool


RE: Разархивиране на RAR архиви в python - Majide - 05-02-2017

(05-02-2017, 16:36)xbmcbg написа: Не е нужно, така си е добре добавката  Cool
Без субтитри е добре казваш? Ами хората, които не знаят чужди езици какво да правят? Ако измислим някакво работещо решение от него могат да се възползват всички наши добавки, разчитащи на изтегляне на компресирани субтитри. В момента има поддръжка само на ZIP архиви, ама по българските сайтове тачат повече RAR формат.



RE: Разархивиране на RAR архиви в python - xbmcbg - 05-02-2017

Ако е възможно когато го правиш предвиди и възможност те да се изключват, не смятам че съм единственият който не използва субтитри за основните световни езици. Можеш да им добавиш и машинен аудио четец за да заприлича на Нова ТВ, където всички филми се озвучават от една шепа хора и гласът на Гибс примерно в последствие озвучава престъпник. Голям фън  Cool


RE: Разархивиране на RAR архиви в python - Topper - 05-02-2017

Никога не съм го обичал този RAR, затворен, платен, всеки път нова версия, старите не отварят новите ... шитня.
А любимото ми е държавни учреждения да ми пращат текстов файл 20К при допустим размер 20-30-40МБ на електронна поща.... архивирани с пиратстван WinRAR.


RE: Разархивиране на RAR архиви в python - mrland456 - 16-02-2017

Благодаря за информацията


RE: Разархивиране на RAR архиви в python - Majide - 19-02-2017

В крайна сметка, идеята ми за онлайн разархиватора се оказа прекалено нестабилна - един път работи, друг път не. Затова се спрях на стандартното за python решение, все пак добавките за Коди се пишат именно на този език. Трябва в операционната система да се инсталира питонската библиотека rarfile, както и unrar. След това е лесно:
Код:
import rarfile
archive = rarfile.RarFile("archive.rar")
archive.extract("/home/itsme/")



RE: Разархивиране на RAR архиви в python - Majide - 20-06-2017

Информация за поддръжката на RAR в Kodi:

В момента, инсталационните файлове/пакети за актуалните версии на Коди се компилират без флаг "nonfree". Включването на флага "nonfree" разрешава rar поддръжката на системно ниво в Коди (и всъщност, това е единственото което прави). С издаването на Коди v18 Лея, флагът вече няма да е наличен, а ще бъде осъществен преход към нова категория бинарни плъгини: VFS (между които и VFS.rar)

? Ще може ли както преди да се плейват компресирани в RAR видео файлове ?
-Да

? А ще има ли поддръжка на multipart архиви (на части) ?
-Да

? Ще могат ли да се зареждат компресирани в RAR субтитри ?
-Може би/TBD. Също така поддръжка на на-новия RAR5 няма да има, поне не и в началото!

? След като излезе Kodi v18 Лея, ще може ли да махнете зависимостта от rarfile.py и unrar от plugin.video.kolibka и service.subtitles.bukvibg ?
-За Kodi v18 Лея и следващи версии ще може, но всички междинни версии между Kodi v15 и v17 ще останат "на сухо" т.е. за тях като единствен вариант остава да използвате варианта с тези външни библиотеки, описан като настройки в съответните форумни теми. Вижте и отговора на предходния въпрос!