For me this is very useful. It eliminates the need to create a playlist or
open EasyTag to edit the genre.

Using this option I just transfer to my player (Sansa c240) and select
genre/podcast.

-Bill
From dfaa76e5250850e84280291668d0e0236cc0102f Mon Sep 17 00:00:00 2001
From: Bill Peters <[EMAIL PROTECTED](none)>
Date: Mon, 6 Oct 2008 22:48:34 -0400
Subject: [PATCH] This patch adds the option and functionality
 to force the ID3 Genre tag to "Podcast"

Using this option users who just want to
listen to their podcasts in no particular
order can just listen to genre/Podcast.
---
 data/gpodder.glade          |   24 ++++++++++++++++++++++++
 src/gpodder/config.py       |    1 +
 src/gpodder/gui.py          |    4 ++++
 src/gpodder/libpodcasts.py  |    5 ++++-
 src/gpodder/libtagupdate.py |    2 ++
 5 files changed, 35 insertions(+), 1 deletions(-)

diff --git a/data/gpodder.glade b/data/gpodder.glade
index dfd68af..03159a1 100644
--- a/data/gpodder.glade
+++ b/data/gpodder.glade
@@ -2834,6 +2834,7 @@
 		  <property name="top_attach">12</property>
 		  <property name="bottom_attach">13</property>
 		  <property name="x_options">fill</property>
+		  <property name="y_options">fill</property>
 		</packing>
 	      </child>
 
@@ -2859,6 +2860,29 @@
 		  <property name="y_options"></property>
 		</packing>
 	      </child>
+	      
+	       <child>
++        <widget class="GtkCheckButton" id="forcegenre">
++          <property name="visible">True</property>
++          <property name="tooltip" translatable="yes">Forces ID3 Genre tag to "Podcast"</property>
++          <property name="can_focus">True</property>
++          <property name="label" translatable="yes">Force genre tag to "Podcast"</property>
++          <property name="use_underline">True</property>
++          <property name="relief">GTK_RELIEF_NORMAL</property>
++          <property name="focus_on_click">True</property>
++          <property name="active">False</property>
++          <property name="inconsistent">False</property>
++          <property name="draw_indicator">True</property>
++        </widget>
++        <packing>
++          <property name="left_attach">1</property>
++          <property name="right_attach">3</property>
++          <property name="top_attach">13</property>
++          <property name="bottom_attach">14</property>
++          <property name="x_options">fill</property>
++          <property name="y_options"></property>
++        </packing>
++          </child>
 
 	      <child>
 		<widget class="GtkLabel" id="label115">
diff --git a/src/gpodder/config.py b/src/gpodder/config.py
index b9db0f8..48e8861 100644
--- a/src/gpodder/config.py
+++ b/src/gpodder/config.py
@@ -67,6 +67,7 @@ gPodderSettings = {
     'only_sync_not_played': ( bool, False ),
     'proxy_use_environment': ( bool, True ),
     'update_tags': ( bool, False ),
+    'force_genre': ( bool, False ),
     'fssync_channel_subfolders': ( bool, True ),
     'on_sync_mark_played': ( bool, False ),
     'on_sync_delete': ( bool, False ),
diff --git a/src/gpodder/gui.py b/src/gpodder/gui.py
index 9dc3ccc..58638bc 100644
--- a/src/gpodder/gui.py
+++ b/src/gpodder/gui.py
@@ -2611,10 +2611,14 @@ class gPodderProperties(GladeWidget):
         
         if tagging_supported():
             gl.config.connect_gtk_togglebutton( 'update_tags', self.updatetags)
+            gl.config.connect_gtk_togglebutton( 'force_genre', self.forcegenre)
         else:
             self.updatetags.set_sensitive( False)
             new_label = '%s (%s)' % ( self.updatetags.get_label(), _('needs python-eyed3') )
             self.updatetags.set_label( new_label)
+            self.forcegenre.set_sensitive( False)
+            new_label = '%s (%s)' % ( self.forcegenre.get_label(), _('needs python-eyed3') )
+            self.forcegenre.set_label( new_label)
 
         # device type
         self.comboboxDeviceType.set_active( 0)
diff --git a/src/gpodder/libpodcasts.py b/src/gpodder/libpodcasts.py
index 88cba5d..9e684b3 100644
--- a/src/gpodder/libpodcasts.py
+++ b/src/gpodder/libpodcasts.py
@@ -294,7 +294,10 @@ class podcastChannel(object):
             if gl.config.update_tags and libtagupdate.tagging_supported():
                 filename = item.local_filename()
                 try:
-                    libtagupdate.update_metadata_on_file(filename, title=item.title, artist=self.title)
+                    if gl.config.force_genre:
+                        libtagupdate.update_metadata_on_file(filename, title=item.title, artist=self.title, genre="Podcast")
+                    else:
+                        libtagupdate.update_metadata_on_file(filename, title=item.title, artist=self.title)
                 except Exception, e:
                     log('Error while calling update_metadata_on_file(): %s', e)
 
diff --git a/src/gpodder/libtagupdate.py b/src/gpodder/libtagupdate.py
index 3204bc5..6979e64 100644
--- a/src/gpodder/libtagupdate.py
+++ b/src/gpodder/libtagupdate.py
@@ -94,6 +94,8 @@ def update_tag_mp3( filename, **metadata):
             tag.setTitle( metadata[key])
         elif key.lower() == 'album':
             tag.setAlbum( metadata[key])
+        elif key.lower() == 'genre':
+            tag.setGenre( metadata[key])
 
     return tag.update( eyeD3.tag.ID3_V2) == 1 and tag.update( eyeD3.tag.ID3_V1) == 1
 
-- 
1.5.4.3

_______________________________________________
gpodder-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/gpodder-devel

Reply via email to