0

サイズが大きいため、5 つの rar ファイルに分割されたムービーをダウンロードしました。元のサイトの 5 番目のファイルへのリンクが壊れているため、ファイルの最初の 4 つの部分は 1 つのサイトからダウンロードされますが、5 番目のファイルは別のサイトからダウンロードされます。問題は、5 番目のファイルがサブ フォルダーにあり、最初の 4 つのファイルがルート フォルダーにあるため、ファイルをマージして avi ファイルを取得できないことです。5 番目のファイルを操作してルート フォルダーに移動する方法はありますか? Part1.avi Part2.avi Part3.avi Part4.avi サブフォルダ\part5.avi

私の最後の手段は、2 番目のサイトからファイルの最初の 4 つの部分を再ダウンロードすることですが、可能であればそれは避けたいと思います。

ティア

4

1 に答える 1

0

最も簡単な方法は、他の 4 つのパーツもダウンロードすることです。複雑になる可能性のある問題がありますが、可能です。

最初に自問することは、利用可能な各 RAR ファイルにいくつのデータがあるかということです。これは両方の RAR セットで同じですか? おそらくそうではありません。セット 2 にはパスが格納されているため、パスが大きくなります。両方のセットのどちらが最も多くのデータを含んでいますか? 最初のセットの場合は、2 番目のセットからもパート 4 をダウンロードする必要があります。

2 番目の問題: アーカイブは圧縮されているかどうか。最初のセットがそうであればそれほど問題ではありませんが、圧縮が使用されている場合、2 番目のセットを解凍する可能性はありません。あなたは映画について話しているので、ばかが映画を詰め込まない限り、圧縮は使用されないと思います。

フォルダーとセットに nfo ファイルが保存されている可能性がありますが、ポジティブなことは、パート 5 に必要以上のデータが含まれることですが、いずれにせよ、これは当てはまると思います。

これが最良のシナリオの実験です。アーカイブ内のデータは同じサイズで、圧縮は使用されません。これを解決するにはpart5の名前を16進エディタで編集するのが私の考えなのですが、いいえ、私が作成したアーカイブには同等のデータがありませんので、あなたの設定と一致するケースになります。

テストファイルを作成しました。最初のセットに一致するように part5 の名前を変更しました: 抽出中に CRC エラーが発生しました。これは、パート 5 のデータが多すぎるためです。名前の変更を取り消します。最初のセットからムービーの一部を抽出する: WinRAR で抽出する際に、[その他] セクションの [壊れたファイルを保持する] チェックボックスをオンにします。

最後の RAR ファイルからデータを取得するには、次のツールを使用します: hach​​oir-wx

file[0]/ ブロックを開き、compressed_data を右クリックします。[Dump To Disk...] を選択します。これで、まだマージする必要がある 2 つの部分に分かれたムービーができましたが、部分 2 には少しデータが多すぎます。

次に行う必要があるのは、正しいバイトを新しいファイルにコピーすることです。これは、ファイル 2 から切り取る必要があるものを計算する式です。

(size part 1) + (size part 2 - X) = total size movie file

ファイルの合計サイズは、WinRAR から読み取ることができます。あなたが持っている他のサイズと X を計算できます。

小さなスクリプトを記述して両方のファイルを結合するか、16 進エディターを使用してこれを行うことができます。Python スクリプトは次のようになります。

folder = "C:\movie"
name_part_1 = os.path.join(folder, "movie_part1.avi")
name_part_2 = os.path.join(folder, "movie_part2.avi")
out = os.path.join(folder, "good_name.avi")
x = 1337

with open(out, "wb") as good:
    with open(name_part_1, "rb") as one:
        good.write(one.read())
    with open(name_part_2, "rb") as two:
        two.seek(x)
        good.write(two.read())
于 2013-02-28T13:02:16.163 に答える