#1 Make libray work with reading from disc

Merged
necklace merged 1 commits from randomstuff/disc_size into necklace/master 4 years ago
2 changed files with 14 additions and 4 deletions
  1. 10 3
      README.md
  2. 4 1
      libray/core.py

+ 10 - 3
README.md

@@ -56,10 +56,17 @@ required arguments:
   -i ISO, --iso ISO     Path to .iso file
 ```
 
-Rip a PS3 to .ISO with an appropriate blu-ray drive: https://rpcs3.net/quickstart (see "Compatible Blu-ray disc drives section"). 
-Then just feed the .ISO to libray which will try to download an IRD decryption file for your iso. 
+You need to use an appropriate blu-ray drive: https://rpcs3.net/quickstart (see "Compatible Blu-ray disc drives section").
 
-Example:
+On some systems (eg. Linux), you can decrypt directly from the disc.
+
+```
+libray -i /dev/sr0 -o ps3_game_decrypted.iso
+```
+
+Libray will try to download an IRD decryption file for your iso:
+
+Alternatively, you can first rip the disc to an ISO file and then decrypt from the ISO file:
 
 ```
 libray -i ps3_game.iso -o ps3_game_decrypted.iso

+ 4 - 1
libray/core.py

@@ -58,7 +58,10 @@ ISO_IV = to_bytes("69474772af6fdab342743aefaa186287")
 
 def filesize(filename):
   """Get size of a file in bytes from os.stat"""
-  return os.stat(filename).st_size
+  try:
+    return open(filename, "rb").seek(0, 2)
+  except:
+    return os.stat(filename).st_size
 
 
 def read_seven_bit_encoded_int(fileobj, order):