Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
827cc19b
Commit
827cc19b
authored
Jul 19, 1993
by
Jack Jansen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Interface to vcr index files (as created by vcrindex program)
parent
ed18fdc9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
328 additions
and
0 deletions
+328
-0
Demo/sgi/video/VcrIndex.py
Demo/sgi/video/VcrIndex.py
+328
-0
No files found.
Demo/sgi/video/VcrIndex.py
0 → 100755
View file @
827cc19b
#
# A VCR index.
#
import
os
import
string
error
=
'VcrIndex.error'
VERSION_STRING
=
'#!VcrIndex 1.1
\
n
'
PREV_VERSION_STRING
=
'#!VcrIndex 1.0
\
n
'
class
VcrIndex
:
def
init
(
self
,
name
):
self
.
curmovie
=
None
self
.
curscene
=
None
self
.
modified
=
0
self
.
filename
=
name
self
.
basename
=
os
.
path
.
basename
(
name
)
self
.
editable
=
[]
if
not
name
:
self
.
movies
=
{}
return
self
try
:
fp
=
open
(
name
,
'r'
)
except
IOError
:
self
.
movies
=
{}
return
self
header
=
fp
.
readline
()
if
header
==
PREV_VERSION_STRING
:
print
'Converting old-format database...'
data
=
fp
.
read
(
100000
)
self
.
movies
=
eval
(
data
)
for
m
in
self
.
movies
.
keys
():
d
=
self
.
movies
[
m
]
newd
=
{}
for
s
in
d
.
keys
():
newsd
=
{}
newsd
[
'START'
]
=
d
[
s
]
if
s
==
'START'
:
s
=
'-ALL-'
newd
[
s
]
=
newsd
self
.
movies
[
m
]
=
newd
print
'Done.'
return
self
if
header
<>
VERSION_STRING
:
print
'VcrIndex: incorrect version string:'
,
header
self
.
movies
=
{}
return
self
data
=
fp
.
read
(
100000
)
self
.
movies
=
eval
(
data
)
return
self
#
# Save database to given file (or same file as read from if no
# filename given).
#
def
save
(
self
,
name
):
if
not
name
:
name
=
self
.
filename
if
not
name
:
raise
error
,
'No filename given'
self
.
filename
=
name
bupname
=
name
+
'~'
try
:
os
.
unlink
(
bupname
)
except
os
.
error
:
pass
try
:
os
.
rename
(
name
,
bupname
)
except
os
.
error
:
pass
fp
=
open
(
name
,
'w'
)
data
=
str
(
self
.
movies
)
fp
.
write
(
VERSION_STRING
)
fp
.
write
(
data
)
fp
.
write
(
'
\
n
'
)
fp
.
close
()
self
.
modified
=
0
#
# Get a list of movie names in tape order
#
def
get_movienames
(
self
):
names
=
self
.
movies
.
keys
()
sorted
=
[]
for
name
in
names
:
sorted
.
append
(
self
.
movies
[
name
][
'-ALL-'
][
'START'
],
name
)
sorted
.
sort
()
rv
=
[]
for
pos
,
name
in
sorted
:
rv
.
append
(
name
)
return
rv
#
# Get a list of scene names in tape order
#
def
get_scenenames
(
self
):
if
not
self
.
curmovie
:
return
[]
scenedict
=
self
.
movies
[
self
.
curmovie
]
names
=
scenedict
.
keys
()
sorted
=
[]
for
name
in
names
:
sorted
.
append
(
scenedict
[
name
],
name
)
sorted
.
sort
()
rv
=
[]
for
pos
,
name
in
sorted
:
rv
.
append
(
name
)
return
rv
#
# Get a list of scene ids (format '00:02:32:12 name') in tape order
#
def
get_sceneids
(
self
):
if
not
self
.
curmovie
:
return
[]
scenedict
=
self
.
movies
[
self
.
curmovie
]
names
=
scenedict
.
keys
()
sorted
=
[]
for
name
in
names
:
sorted
.
append
(
scenedict
[
name
][
'START'
],
name
)
sorted
.
sort
()
rv
=
[]
for
pos
,
name
in
sorted
:
str
=
'%02d:%02d:%02d:%02d '
%
pos
rv
.
append
(
str
+
name
)
return
rv
#
# Does a movie exist?
#
def
movie_exists
(
self
,
name
):
return
self
.
movies
.
has_key
(
name
)
#
# Select a movie.
#
def
movie_select
(
self
,
name
):
if
not
self
.
movies
.
has_key
(
name
):
raise
error
,
'No such movie: '
+
name
self
.
curmovie
=
name
self
.
curscene
=
None
#
# Get movie dictionary, or raise an error if no current movie.
#
def
_getmoviedict
(
self
):
if
not
self
.
curmovie
:
raise
error
,
'No current movie'
return
self
.
movies
[
self
.
curmovie
]
#
# Rename a movie.
#
def
movie_rename
(
self
,
newname
):
scenedict
=
self
.
_getmoviedict
()
if
self
.
movie_exists
(
newname
):
raise
error
,
'Movie already exists: '
+
newname
del
self
.
movies
[
self
.
curmovie
]
self
.
movies
[
newname
]
=
scenedict
self
.
curmovie
=
newname
self
.
modified
=
1
#
# Copy a movie.
#
def
movie_copy
(
self
,
newname
):
scenedict
=
self
.
_getmoviedict
()
if
self
.
movie_exists
(
newname
):
raise
error
,
'Movie already exists: '
+
newname
newdict
=
{}
for
k
in
scenedict
.
keys
():
olddata
=
scenedict
[
k
]
newdata
=
{}
for
i
in
olddata
.
keys
():
newdata
[
i
]
=
olddata
[
i
]
newdict
[
k
]
=
newdata
self
.
movies
[
newname
]
=
newdict
self
.
curmovie
=
newname
self
.
modified
=
1
#
# Delete a movie.
#
def
movie_delete
(
self
):
if
not
self
.
curmovie
:
raise
error
,
'No current movie'
del
self
.
movies
[
self
.
curmovie
]
self
.
curmovie
=
None
self
.
curscene
=
None
self
.
modified
=
1
#
# Create a new movie.
#
def
movie_new
(
self
,
name
,
pos
):
if
self
.
movie_exists
(
name
):
raise
error
,
'Movie already exists: '
+
name
newdict
=
{}
newsdict
=
{}
newsdict
[
'START'
]
=
pos
newdict
[
'-ALL-'
]
=
newsdict
self
.
movies
[
name
]
=
newdict
self
.
curmovie
=
name
self
.
curscene
=
None
self
.
modified
=
1
#
# Does a scene exist?
#
def
scene_exists
(
self
,
name
):
scenedict
=
self
.
_getmoviedict
()
return
scenedict
.
has_key
(
name
)
#
# Select a current scene.
#
def
scene_select
(
self
,
name
):
scenedict
=
self
.
_getmoviedict
()
if
not
scenedict
.
has_key
(
name
):
raise
error
,
'No such scene: '
+
name
self
.
curscene
=
name
#
# Rename a scene.
#
def
scene_rename
(
self
,
newname
):
scenedict
=
self
.
_getmoviedict
()
if
not
self
.
curscene
:
raise
error
,
'No current scene'
if
scenedict
.
has_key
(
newname
):
raise
error
,
'Scene already exists: '
+
newname
if
self
.
curscene
==
'-ALL-'
:
raise
error
,
'Cannot rename -ALL-'
scenedict
[
newname
]
=
scenedict
[
self
.
curscene
]
del
scenedict
[
self
.
curscene
]
self
.
curscene
=
newname
self
.
modified
=
1
#
# Copy a scene.
#
def
scene_copy
(
self
,
newname
):
scenedict
=
self
.
_getmoviedict
()
if
not
self
.
curscene
:
raise
error
,
'No current scene'
if
scenedict
.
has_key
(
newname
):
raise
error
,
'Scene already exists: '
+
newname
scenedict
[
newname
]
=
scenedict
[
self
.
curscene
]
self
.
curscene
=
newname
self
.
modified
=
1
#
# Delete a scene.
#
def
scene_delete
(
self
):
scenedict
=
self
.
_getmoviedict
()
if
not
self
.
curscene
:
raise
error
,
'No current scene'
if
self
.
curscene
==
'-ALL-'
:
raise
error
,
'Cannot delete -ALL-'
del
scenedict
[
self
.
curscene
]
self
.
curscene
=
None
self
.
modified
=
1
#
# Add a new scene.
#
def
scene_new
(
self
,
newname
,
pos
):
scenedict
=
self
.
_getmoviedict
()
if
scenedict
.
has_key
(
newname
):
raise
error
,
'Scene already exists: '
+
newname
newdict
=
{}
newdict
[
'START'
]
=
pos
scenedict
[
newname
]
=
newdict
self
.
curscene
=
newname
self
.
modified
=
1
#
# Get scene data.
#
def
_getscenedata
(
self
):
scenedict
=
self
.
_getmoviedict
()
if
not
self
.
curscene
:
raise
error
,
'No current scene'
return
scenedict
[
self
.
curscene
]
#
# Data manipulation routines.
#
def
pos_get
(
self
):
return
self
.
_getscenedata
()[
'START'
]
#
def
pos_set
(
self
,
pos
):
data
=
self
.
_getscenedata
()
data
[
'START'
]
=
pos
self
.
modified
=
1
#
def
comment_get
(
self
):
data
=
self
.
_getscenedata
()
if
data
.
has_key
(
'COMMENT'
):
return
data
[
'COMMENT'
]
else
:
return
''
#
def
comment_set
(
self
,
comment
):
data
=
self
.
_getscenedata
()
data
[
'COMMENT'
]
=
comment
self
.
modified
=
1
#
# Get the scene id of the current scene.
#
def
get_cursceneid
(
self
):
pos
=
self
.
_getscenedata
()[
'START'
]
str
=
'%02d:%02d:%02d:%02d '
%
pos
return
str
+
self
.
curscene
#
# Convert a scene id to a scene name.
#
def
scene_id2name
(
self
,
id
):
pos
=
string
.
find
(
id
,
' '
)
if
pos
<=
0
:
raise
error
,
'Not a scene id: '
+
id
return
id
[
pos
+
1
:]
#
# Select a scene given a position.
#
def
pos_select
(
self
,
pos
):
prevmovie
=
None
movies
=
self
.
get_movienames
()
for
movie
in
movies
:
mpos
=
self
.
movies
[
movie
][
'-ALL-'
][
'START'
]
if
mpos
>
pos
:
break
prevmovie
=
movie
if
not
prevmovie
:
raise
error
,
'Scene before BOT'
self
.
movie_select
(
prevmovie
)
scenes
=
self
.
get_scenenames
()
scenedict
=
self
.
_getmoviedict
()
prevscene
=
'START'
for
scene
in
scenes
:
if
scenedict
[
scene
][
'START'
]
>
pos
:
break
prevscene
=
scene
self
.
scene_select
(
prevscene
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment