Pure Python implementation of the Windows API method IDvdInfo2::GetDiscID.

Overview

pydvdid-m

downloads license wheel versions

Pure Python implementation of the Windows API method IDvdInfo2::GetDiscID.
This is a modification of sjwood's pydvdid.

The Windows API method IDvdInfo2::GetDiscID is used by Windows Media Center to compute a 'practically unique' 64-bit CRC for metadata retrieval. It's metadata retrieval API has sadly since shutdown around October 2019 and all it's information is presumably lost.

Changes compared to sjwood's repo

  1. License changed from Apache-2.0 to GPL-3.0.
  2. Moved build tools and dependency management from setuptools and requirements.txt to poetry.
  3. Support for Python 2.x and Python <3.6 has been dropped.
  4. All tests were removed entirely simply because a lot of the tests would need to be refactored for general code changes, and some tests might not be needed anymore.
  5. All custom exceptions were removed entirely and replaced with built-in ones.
  6. CRC-64 related code were refactored and merged as one CRC64 class in one file.
  7. The merged CRC64 class contains various improvements over the original code, including improvements with doc-strings, formatting, and such.
  8. Various BASH shell scripts and config files were removed entirely as they are deemed unnecessary.
  9. Uses pycdlib to read from ISO and direct disc drives, instead of assuming that it's a folder.

Other than that, the rest of the changes are general code improvements in various ways. There may be more differences as the repo gets commits, but these are the primary differences from sjwood's commit to the beginnings of this repository.

Installation

$ pip install pydvdid-m

Usage

You can run DvdId on all types of DVD video file structures:

  • Direct from Disc, e.g., /dev/sr0, \\.\E:, or such.
  • An ISO file, e.g., /mnt/cdrom, C:/Users/John/Videos/FAMILY_GUY_VOLUME_11_DISC_1.ISO.
  • A VIDEO_TS folder*, C:/Users/John/Videos/THE_IT_CROWD_D1/.

Note: Generating a DVD ID from a VIDEO_TS folder has a high chance of providing an invalid DVD ID. The algorithm uses file creation timestamps, and extracting VIDEO_TS folders direct from Disc or from an ISO will most likely change them, especially when transferred or moved.

CLI

FAMILY_GUY_VOLUME_11_DISC_1 db3804e3|1645f594 ">
[email protected]@~$ dvdid "FAMILY_GUY_VOLUME_11_DISC_1.ISO"
<Disc>
<Name>FAMILY_GUY_VOLUME_11_DISC_1</Name>
<ID>db3804e3|1645f594</ID>
</Disc>

You can provide a path to an ISO file, or a mounted device, e.g.:

BBCDVD3508 3f041dfc|27ffd3a8 ">
[email protected]@~$ dvdid "/dev/sr0"
<Disc>
<Name>BBCDVD3508</Name>
<ID>3f041dfc|27ffd3a8</ID>
</Disc>

or on Windows via Raw Mounted Device:

BBCDVD3508 3f041dfc|27ffd3a8 ">
PS> dvdid "\\.\E:"
<Disc>
<Name>BBCDVD3508</Name>
<ID>3f041dfc|27ffd3a8</ID>
</Disc>

Package

You can also use pydvdid-m in your own Python code by importing it.
Here's a couple of things you can do, and remember, you can use both ISO paths and mounted device targets.

>> dvd_id.disc_label 'BBCDVD3508' >>> repr(dvd_id.checksum) ' ' >>> dvd_id.checksum '3f041dfc|27ffd3a8' >>> dvd_id.checksum.as_bytes b"?\x04\x1d\xfc'\xff\xd3\xa8" >>> dvd_id.dumps() ' \n BBCDVD3508 \n 3f041dfc|27ffd3a8 \n '">
>>> from pydvdid_m import DvdId
>>> dvd_id = DvdId(r"C:\Users\John\Videos\FAMILY_GUY_VOLUME_11_DISC_1.ISO")
>>> dvd_id.disc_label
'BBCDVD3508'
>>> repr(dvd_id.checksum)
'
    
     '
    
>>> dvd_id.checksum
'3f041dfc|27ffd3a8'
>>> dvd_id.checksum.as_bytes
b"?\x04\x1d\xfc'\xff\xd3\xa8"
>>> dvd_id.dumps()
'
    
     \n
     
      BBCDVD3508
     
     \n
     
      3f041dfc|27ffd3a8
     
     \n
    '

License

GNU General Public License, Version 3

You might also like...
A SageMaker Projects template to deploy a model from Model Registry, choosing your preferred method of deployment among async (Asynchronous Inference), batch (Batch Transform), realtime (Real-time Inference Endpoint). More to be added soon!
A method to check whether a Discord user is using the client or not.

Discord Captcha Method This is an example, of a verification trough a check, if the user loads the picture send with the verification-message. This ma

Growtopia server_data.php reader with bypass method, using discord bot

Server_data.php-reader Growtopia server_data.php reader with bypass method, using discord bot How to use 1 install python 2 change your bot token

A.I and game for gomoku, working only on windows
A.I and game for gomoku, working only on windows

Gomoku (A.I of gomoku) The goal of the project is to create an artificial intelligence of gomoku. Goals Beat the opponent. Requirements Python 3.7+ Wo

🖥️ Windows Batch and powershell Discord Token grabber. Made for Troll (lmao)
🖥️ Windows Batch and powershell Discord Token grabber. Made for Troll (lmao)

Batched-Grabber Windows Batch and powershell Discord Token grabber. Made for Troll ! Setup. 1. pip(3) install numpy colored 2. python(3) Batched.py 3.

A taskbar clock for secondary taskbars on Windows 11
A taskbar clock for secondary taskbars on Windows 11

ElevenClock A taskbar clock for secondary taskbars on Windows 11. When microsoft's engineers were creating Windows 11, they forgot to add a clock on t

=|= the MsgRoom bot for Windows 96

=|= bot A MsgRoom bot in Python 3 for Windows96.net. The bot joins as =|=, if parameter name_lasts is not true and default_name is =|=. The full

A discord.py code generator program. Compatible with both linux and windows.

Astro-Cord A discord.py code generator program. Compatible with both linux and windows. About This is a program made to make discord.py bot developmen

Price checker windows application

Price-Checker price checker windows application This application monitors the prices of selected products and displays a notification if the price has

Comments
  • Inaccurate DVD IDs on ISO with RCE protection removed

    Inaccurate DVD IDs on ISO with RCE protection removed

    AnyDVD and possibly others may modify or remove a couple of bytes in the VIDEO_TS.IFO and VTS_01_0.IFO files when removing RCE protection. This results in alternate DVD IDs compared to before, and after modifications.

    Detection of an RCE-removed ISO might be possible, or at the very least forcing a reversal of the process by modifying some headers back might be possible. But even if that is possible, knowing if it originally had RCE-protection or not, or to which region, may not be possible to automatically infer.

    I have attached an example VIDEO_TS and VTS_01_0 IFO files before and after RCE protection removal.

    R1-USA-NTSC-RCE-Kept.tar.gz R1-USA-NTSC-RCE-Removed.tar.gz

    help wanted 
    opened by rlaphoenix 0
Releases(v1.1.1)
  • v1.1.1(Jan 20, 2022)

    Added

    • Added important information on DVD ID accuracy to the README.
    • Added a "Saved DVD ID to" print statement in the primary script to show it got auto-saved, and to where.

    Changed

    • Ensured that filenames are uppercase. ISO-9660 isn't strict about file-casing, but the DVD spec is.
    • Changed DvdId.dump's return value from the Path.write_text int return value to the Path which was written to.

    Fixed

    • Fixed raw Windows Device target checks, e.g. \\.\E: from being detected as a VIDEO_TS folder.
    Source code(tar.gz)
    Source code(zip)
    pydvdid_m-1.1.1-py3-none-any.whl(20.51 KB)
  • v1.1.0(Jan 15, 2022)

    Added

    • This CHANGELOG file.
    • Support for VIDEO_TS folders. However, they may not provide an accurate DvdId, see README.
    • Added support for Path targets in disc_label. It returns the folder/file name as the disc label.
    • Added file extension restrictions for files that get processed in DvdId (BUP, IFO, VOB).
    • Added function DvdId._get_file to get a direct path (as the correct object type) to a specific file.

    Changed

    • Refactored DvdId's class variable disc_label as a function property.
    • Ensured that VIDEO_TS.IFO would be processed before VTS_01_0.IFO, and that they would both be processed.

    Fixed

    • Fixed mistake in DvdId._get_first_64k_content which had the variables of the expected/read bytes mixed up.
    • Fixed possible invalid creation time seconds value if it was somehow in floating-point accuracy. DVD IDs made from ISO files or straight from disc shouldn't have had any issues.
    • Corrected the Type-hint of UDFFileEntry to DirectoryRecord.
    • Added Error Handling to DvdId._get_files, which could cause an exception if the path isn't found.
    • Fixed the /VIDEO_TS directory exists check in DvdId.
    Source code(tar.gz)
    Source code(zip)
    pydvdid_m-1.1.0-py3-none-any.whl(19.99 KB)
  • v1.0.0(Jan 15, 2022)

Uma API pública contendo informações sobre o unvierso de Roberto Gomez Bolaños.

Chespirito API Objetivo Esta API tem como objetivo ser um ponto de referência para a procura sobre todo o universo do grande Roberto Gomez Bolaños, ta

Pery Lemke 6 Feb 02, 2022
A Telegram Most Powerful Media Info Bot.

Media Info Bot Support 🚑 Demo For The Bot -Test Our Bot By Clicking The Button Below Deploy To Heroku 🗳 Press the Deploy Button to Get Your Own Bot.

Anonymous 5 May 16, 2022
TwitchAccountMaker - Twitch Account Maker with python

Twitch Account Creator A Twitch Account Creator, Requires Capmonster.cloud Verif

vanis / 1800 0 Jan 20, 2022
An advanced Filter Bot with nearly unlimitted filters!

Unlimited Filter Bot ㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤ An advanced Filter Bot with nearly unlimitted filters! Features Nearly unlimited filters Supports all type of fil

1 Nov 20, 2021
Ice-Userbot adalah userbot Telegram modular yang berjalan di Python3 dengan database sqlalchemy

Ice-Userbot Telegram Ice-Userbot adalah userbot Telegram modular yang berjalan di Python3 dengan database sqlalchemy. Berbasis Paperplane dan ProjectB

6 Apr 29, 2022
Notion4ever - Python tool for export all your content of Notion page using official Notion API

NOTION4EVER Notion4ever is a small python tool that allows you to free your cont

50 Dec 30, 2022
This repository is used to provide data to zzhack,

This repository is used to provide data to zzhack, but you don't have to care about anything, just write your thinking down, and you can see your thinking is rendered in zzhack perfectly

5 Apr 29, 2022
Trading through Binance's API using Python & sqlite

pycrypt Automate trading crypto using Python to pull data from Binance's API and analyse trends. May or may not consistently lose money but oh well it

Maxim 4 Sep 02, 2022
A twitter multi-tool for OSINT on twitter accounts.

TwitterCheckr A twitter multi-tool for OSINT on twitter accounts. Infomation TwitterCheckr also known as TCheckr is multi-tool for OSINT on twitter a

IRIS 16 Dec 23, 2022
Python API client library for phpIPAM installations

phpypam: Python API client library for phpIPAM installation As we started to develop phpipam-ansible-modules we used an existing python library for ph

codeaffen 3 Aug 03, 2022
Home Assistant Hilo Integration via HACS

BETA This is a beta release. There will be some bugs, issues, etc. Please bear with us and open issues in the repo. Hilo Hilo integration for Home Ass

66 Dec 23, 2022
Бот - Гуль для твоего телеграм аккаунта

Я - Гуль (бот), теперь работает в чатах Отблагодарить автора за проделанную работу можно здесь Помощь с установкой тут Установка на Андроид После уста

57 Nov 06, 2022
一个基于Python3的Bot。目前支持以Docker的方式部署在vps上。支持Aria2、本子下载、网易云音乐下载、Pixiv榜单下载、Youtue-dl支持、搜图。

介绍 一个基于Python3的Bot。目前支持以Docker的方式部署在vps上。 主要功能: 文件管理 修改主界面为 filebrowser,账号为admin,密码为admin,主界面路径:http://ip:port,请自行修改密码 FolderMagic自带的webdav:路径:http://

Ben 650 Jan 08, 2023
Build better AWS infrastructure

Sceptre About Sceptre is a tool to drive AWS CloudFormation. It automates the mundane, repetitive and error-prone tasks, enabling you to concentrate o

sceptre 1.4k Jan 04, 2023
A simple python script to send files into your telegram Bot form your PC, Server etc.

telegramSend A simple python script to send files into your telegram Bot form your PC, Server etc. How to Use Install requirements.txt pip3 install -r

Ajay Kumar Tekam 1 Jul 19, 2022
Monetize your apps with KivAds using Google AdMob api.

KivAds(WIP) Monetize your apps with KivAds using Google AdMob api. KivAds uses the latest version of Google AdMob sdk(version 20.0.0). KivAds exposes

Guhan Sensam 16 Nov 05, 2022
Boilerplate template for the discord-py-interactions library

discord-py-interactions_boilerplate Boilerplate template for the discord-py-interactions library Currently, this boilerplate supports discord-py-inter

Ventus 7 Dec 03, 2022
Name says it all/Instructions are in README file.

Discord-Webhook-Spammer Name says it all/Instructions are in README file. Setup 1. pip install discord-webhook ( In console, terminal or whatever you

Catto 1 Mar 21, 2022
A simple anti-ghostping python bot made using diskord.

Anti Ghostping A simple Anti-Ghostping python bot made with ❤ using Diskord Requirements No one will use this but, all you need for this bot is: Pytho

RyZe 2 Sep 12, 2022
EzilaX Music ❤ is the best and only Telegram VC player with playlists, Multi Playback, Channel play and more POWERD By SDBOTs

EzilaX-Music 🎵 A bot that can play music on Telegram Group and Channel Voice Chats Available on telegram as @EzilaXMBot Features 🔥 Thumbnail Support

Sadew Jayasekara 9 Oct 24, 2021