-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoggtag.py
More file actions
executable file
·87 lines (71 loc) · 2.48 KB
/
oggtag.py
File metadata and controls
executable file
·87 lines (71 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python2.7
import mutagen.oggvorbis
import argparse
import re
# from mutagen.mp3 import EasyMP3 as MP3
parser = argparse.ArgumentParser(description='Simple command-line OGG Vorbis tagger')
parser.add_argument('-5', action="store_true", dest="fiveStars", default=False,help="set rating to 5 star")
parser.add_argument('-4', action="store_true", dest="fourStars", default=False,help="set rating to 4 star")
parser.add_argument('-3', action="store_true", dest="threeStars", default=False,help="set rating to 3 star")
parser.add_argument('-0', action="store_true", dest="removeStars", default=False,help="remove rating")
parser.add_argument('-T', action="store", dest="newTitle", default=False,help="change title")
parser.add_argument('-D', action="store", dest="album", default=False,help="change album")
parser.add_argument('-A', action="store", dest="artist", default=False,help="change Artist")
parser.add_argument('-g', action="store", dest="genre", default=False,help="change genre")
parser.add_argument('-t', action="store", dest="newTags", default=False,help="change tags (one letter for each)")
parser.add_argument('-a', action="store_true", dest="printAll", default=False,help="show all tags")
parser.add_argument('file')
params = parser.parse_args()
rating=""
# easyMP3 = MP3(params.file)
# easyMP3.pprint()
# exit(0)
song = mutagen.oggvorbis.Open(params.file)
update= False
updateRating = True
if params.fiveStars:
rating="5"
elif params.fourStars:
rating="4"
elif params.threeStars:
rating="3"
elif params.removeStars:
rating=""
else:
updateRating = False
if params.newTitle:
newTitle = params.newTitle
update = True
else:
try:
newTitle = song.tags['title'][0]
except:
newTitle= ""
if params.newTags:
tags = "@%s@" %(params.newTags)
# !!! put old tags in a set so as to not destroy them
newTitle = re.sub("@.*@","", newTitle)
newTitle = newTitle + tags
update = True
if updateRating:
if rating != "":
rating = " !!%s" %(rating)
newTitle = re.sub(" !!\d", "", newTitle)
newTitle = newTitle + rating
update = True
if update:
song["title"] = newTitle
if params.genre != False:
song["genre"]= params.genre
update = True
if params.artist != False:
song["artist"]= params.artist
update = True
if params.album != False:
song["album"]= params.album
update = True
if update:
song.save()
elif params.printAll:
for k,v in song.tags.items():
print "'%s' %s" % (k,v)