Hello community,

here is the log from the commit of package lollypop for openSUSE:Factory 
checked in at 2018-10-26 11:10:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lollypop (Old)
 and      /work/SRC/openSUSE:Factory/.lollypop.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lollypop"

Fri Oct 26 11:10:53 2018 rev:53 rq:644711 version:0.9.609

Changes:
--------
--- /work/SRC/openSUSE:Factory/lollypop/lollypop.changes        2018-10-25 
09:09:04.854406830 +0200
+++ /work/SRC/openSUSE:Factory/.lollypop.new/lollypop.changes   2018-10-26 
11:10:59.741661169 +0200
@@ -1,0 +2,12 @@
+Thu Oct 25 17:29:32 UTC 2018 - [email protected]
+
+- Update to version 0.9.609:
+  * Fix a "sqlite db locked" introduced in 0.9.608.
+- Changes from version 0.9.608:
+  * Fix an issue with multiple disc albums
+    (glgo#World/lollypop#1528).
+  * Fix hang while updating collection (glgo#World/lollypop#1517).
+  * Stop playback if writing to tags on current album
+    (glgo#World/lollypop#1527).
+
+-------------------------------------------------------------------

Old:
----
  lollypop-0.9.607.tar.xz

New:
----
  lollypop-0.9.609.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ lollypop.spec ++++++
--- /var/tmp/diff_new_pack.7ijW5y/_old  2018-10-26 11:11:01.385658992 +0200
+++ /var/tmp/diff_new_pack.7ijW5y/_new  2018-10-26 11:11:01.389658987 +0200
@@ -18,7 +18,7 @@
 
 %global gobject_introspection_version 1.35.9
 Name:           lollypop
-Version:        0.9.607
+Version:        0.9.609
 Release:        0
 Summary:        GNOME music playing application
 License:        GPL-3.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.7ijW5y/_old  2018-10-26 11:11:01.413658955 +0200
+++ /var/tmp/diff_new_pack.7ijW5y/_new  2018-10-26 11:11:01.413658955 +0200
@@ -1,7 +1,7 @@
 <services>
   <service mode="disabled" name="tar_scm">
     <param name="changesgenerate">enable</param>
-    <param name="revision">0.9.607</param>
+    <param name="revision">0.9.609</param>
     <param name="scm">git</param>
     <param name="url">https://gitlab.gnome.org/World/lollypop.git</param>
     <param name="versionformat">@PARENT_TAG@</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.7ijW5y/_old  2018-10-26 11:11:01.425658939 +0200
+++ /var/tmp/diff_new_pack.7ijW5y/_new  2018-10-26 11:11:01.429658934 +0200
@@ -1,4 +1,4 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://gitlab.gnome.org/World/lollypop.git</param>
-              <param 
name="changesrevision">4bfcd1f0e7da754750096381b9c255ae8af19cd2</param></service></servicedata>
\ No newline at end of file
+              <param 
name="changesrevision">eee4683f8a1e94bd5ac330855f3372c3f10b7fc1</param></service></servicedata>
\ No newline at end of file

++++++ lollypop-0.9.607.tar.xz -> lollypop-0.9.609.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lollypop-0.9.607/data/org.gnome.Lollypop.appdata.xml.in 
new/lollypop-0.9.609/data/org.gnome.Lollypop.appdata.xml.in
--- old/lollypop-0.9.607/data/org.gnome.Lollypop.appdata.xml.in 2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/data/org.gnome.Lollypop.appdata.xml.in 2018-10-25 
14:37:37.000000000 +0200
@@ -27,14 +27,11 @@
     </ul>
   </description>
   <releases>
-    <release version="0.9.605" date="2018-10-19">
+    <release version="0.9.608" date="2018-10-24">
       <description>
         <ul>
-          <li>Sort albums with full date</li>
-          <li>Faster album loading</li>
-         <li>Add a button to go from search to artist</li>
-         <li>Better wikipedia search</li>
-         <li>Allow importing loved tracks</li>
+         <li>Fix hang while updating collection</li>
+         <li>Fix an issue with multiple disc albums</li>
         </ul>
       </description>
     </release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/art_album.py 
new/lollypop-0.9.609/lollypop/art_album.py
--- old/lollypop-0.9.607/lollypop/art_album.py  2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/lollypop/art_album.py  2018-10-25 14:37:37.000000000 
+0200
@@ -424,6 +424,8 @@
             @param album_id as int
         """
         if self.kid3_available:
+            if App().player.current_track.album.id == album_id:
+                App().player.stop()
             for uri in App().albums.get_track_uris(album_id, [], []):
                 try:
                     path = GLib.filename_from_uri(uri)[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/collectionscanner.py 
new/lollypop-0.9.609/lollypop/collectionscanner.py
--- old/lollypop-0.9.607/lollypop/collectionscanner.py  2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/collectionscanner.py  2018-10-25 
14:37:37.000000000 +0200
@@ -132,9 +132,8 @@
                 else:
                     files.append(f)
             except Exception as e:
-                Logger.error("""CollectionScanner::
-                             __get_objects_for_uris(): %s""" % e)
-                return ([], [])
+                Logger.error("CollectionScanner::__get_objects_for_uris(): %s"
+                             % e)
         for f in files:
             try:
                 if is_pls(f):
@@ -142,11 +141,11 @@
                 elif is_audio(f):
                     tracks.append(f.get_uri())
                 else:
-                    Logger.debug("""%s not detected
-                                 as a music file""" % f.get_uri())
+                    Logger.debug("%s not detected as a music file" %
+                                 f.get_uri())
             except Exception as e:
-                Logger.error("""CollectionScanner::
-                             __get_objects_for_uris(): %s""" % e)
+                Logger.error("CollectionScanner::__get_objects_for_uris(): %s"
+                             % e)
         return (tracks, track_dirs)
 
     def __update_progress(self, current, total):
@@ -192,12 +191,13 @@
                     self.__inotify.add_monitor(d)
 
         i = 0
-        # Look for new files/modified files
+        # Look for new files/modified file
+        SqlCursor.add(App().db)
         try:
             to_add = []
-            SqlCursor.add(App().db)
             for uri in new_tracks:
                 if self.__thread is None:
+                    SqlCursor.remove(App().db)
                     return
                 try:
                     GLib.idle_add(self.__update_progress, i, count)
@@ -247,6 +247,7 @@
                     i += 1
                     GLib.idle_add(self.__update_progress, i, count)
                     self.__del_from_db(uri)
+                    SqlCursor.allow_thread_execution(App().db)
             # Add files to db
             for (uri, mtime) in to_add:
                 try:
@@ -258,9 +259,10 @@
                 except Exception as e:
                     Logger.error("CollectionScanner::__scan(add): %s, %s" %
                                  (e, uri))
-            SqlCursor.remove(App().db)
         except Exception as e:
             Logger.error("CollectionScanner::__scan(): %s" % e)
+        SqlCursor.commit(App().db)
+        SqlCursor.remove(App().db)
         GLib.idle_add(self.__finish, modifications and saved)
         if not saved:
             self.__play_new_tracks(new_tracks)
@@ -329,8 +331,7 @@
 
         Logger.debug("CollectionScanner::add2db(): "
                      "Add album artists %s" % album_artists)
-        (album_artist_ids,
-         new_artist_ids) = self.add_album_artists(album_artists, aa_sortnames)
+        album_artist_ids = self.add_album_artists(album_artists, aa_sortnames)
 
         # User does not want compilations
         if self.__disable_compilations and not album_artist_ids:
@@ -345,13 +346,12 @@
 
         Logger.debug("CollectionScanner::add2db(): Add album: "
                      "%s, %s" % (album_name, album_artist_ids))
-        (album_id, new_album) = self.add_album(album_name, mb_album_id,
-                                               album_artist_ids,
-                                               uri, loved, album_pop,
-                                               album_rate, mtime)
+        album_id = self.add_album(album_name, mb_album_id,
+                                  album_artist_ids,
+                                  uri, loved, album_pop,
+                                  album_rate, mtime)
 
-        (genre_ids,
-         new_genre_ids) = self.add_genres(genres)
+        genre_ids = self.add_genres(genres)
 
         # Add track to db
         Logger.debug("CollectionScanner::add2db(): Add track")
@@ -360,18 +360,14 @@
                                     album_id, year, timestamp, track_pop,
                                     track_rate, track_ltime, mtime,
                                     mb_track_id)
-
+        SqlCursor.commit(App().db)
         Logger.debug("CollectionScanner::add2db(): Update track")
         self.__update_track(track_id, artist_ids, genre_ids)
         Logger.debug("CollectionScanner::add2db(): Update album")
         self.__update_album(album_id, album_artist_ids,
                             genre_ids, year, timestamp)
-        if new_album:
-            SqlCursor.commit(App().db)
-        for genre_id in new_genre_ids:
+        for genre_id in genre_ids:
             GLib.idle_add(self.emit, "genre-updated", genre_id, True)
-        for artist_id in new_artist_ids:
-            GLib.idle_add(self.emit, "artist-updated", artist_id, True)
         return track_id
 
     def __del_from_db(self, uri):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/database.py 
new/lollypop-0.9.609/lollypop/database.py
--- old/lollypop-0.9.607/lollypop/database.py   2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/lollypop/database.py   2018-10-25 14:37:37.000000000 
+0200
@@ -24,6 +24,27 @@
 from lollypop.utils import noaccents
 
 
+class MyLock:
+    """
+        Lock with count
+    """
+    def __init__(self):
+        self.__lock = Lock()
+        self.__count = 0
+
+    def acquire(self):
+        self.__count += 1
+        self.__lock.acquire()
+
+    def release(self):
+        self.__count -= 1
+        self.__lock.release()
+
+    @property
+    def count(self):
+        return self.__count
+
+
 class Database:
     """
         Base database object
@@ -94,7 +115,7 @@
         """
             Create database tables or manage update if needed
         """
-        self.thread_lock = Lock()
+        self.thread_lock = MyLock()
         f = Gio.File.new_for_path(self.DB_PATH)
         upgrade = DatabaseAlbumsUpgrade()
         if not f.query_exists():
@@ -103,7 +124,7 @@
                 if not d.query_exists():
                     d.make_directory_with_parents()
                 # Create db schema
-                with SqlCursor(self) as sql:
+                with SqlCursor(self, True) as sql:
                     sql.execute(self.__create_albums)
                     sql.execute(self.__create_artists)
                     sql.execute(self.__create_genres)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/database_albums.py 
new/lollypop-0.9.609/lollypop/database_albums.py
--- old/lollypop-0.9.607/lollypop/database_albums.py    2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/database_albums.py    2018-10-25 
14:37:37.000000000 +0200
@@ -46,7 +46,7 @@
             @return inserted rowid as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             result = sql.execute("INSERT INTO albums\
                                   (name, mb_album_id, no_album_artist,\
                                   uri, loved, popularity, rate, mtime, synced)\
@@ -67,7 +67,7 @@
             @param artist id as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             artist_ids = self.get_artist_ids(album_id)
             if artist_id not in artist_ids:
                 sql.execute("INSERT INTO "
@@ -81,7 +81,7 @@
             @param genre id as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             genres = self.get_genre_ids(album_id)
             if genre_id not in genres:
                 sql.execute("INSERT INTO\
@@ -96,7 +96,7 @@
             @param artist_ids as [int]
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             currents = self.get_artist_ids(album_id)
             if not currents or set(currents) - set(artist_ids):
                 sql.execute("DELETE FROM album_artists\
@@ -113,7 +113,7 @@
             @param synced as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE albums SET synced=? WHERE rowid=?",
                         (synced, album_id))
 
@@ -124,7 +124,7 @@
             @param loved as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE albums SET loved=? WHERE rowid=?",
                         (loved, album_id))
 
@@ -133,7 +133,7 @@
             Set album rate
             @param rate as int
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE albums SET rate=? WHERE rowid=?",
                         (rate, album_id))
 
@@ -144,7 +144,7 @@
             @param year as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE albums SET year=? WHERE rowid=?",
                         (year, album_id))
 
@@ -155,7 +155,7 @@
             @param timestamp as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE albums SET timestamp=? WHERE rowid=?",
                         (timestamp, album_id))
 
@@ -165,7 +165,7 @@
             @param Album id as int, uri as string
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE albums SET uri=? WHERE rowid=?",
                         (uri, album_id))
 
@@ -175,7 +175,7 @@
             @param album_id as int
             @param popularity as int
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             try:
                 sql.execute("UPDATE albums set popularity=? WHERE rowid=?",
                             (popularity, album_id))
@@ -282,7 +282,7 @@
             @param pop as int
             @raise sqlite3.OperationalError on db update
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             result = sql.execute("SELECT popularity from albums WHERE rowid=?",
                                  (album_id,))
             pop = result.fetchone()
@@ -1056,7 +1056,7 @@
             @param return True if album deleted or genre modified
             @warning commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             ret = False
             # Check album really have tracks from its genres
             for genre_id in self.get_genre_ids(album_id):
@@ -1107,7 +1107,7 @@
                                   ON albums.rowid=t.album_id\
                                   GROUP BY albums.rowid)")
             v = result.fetchone()
-            if v:
+            if v and v[0] is not None:
                 self.__max_count = v[0]
 
 #######################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/database_artists.py 
new/lollypop-0.9.609/lollypop/database_artists.py
--- old/lollypop-0.9.607/lollypop/database_artists.py   2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/database_artists.py   2018-10-25 
14:37:37.000000000 +0200
@@ -39,7 +39,7 @@
         """
         if sortname == "":
             sortname = format_artist_name(name)
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             result = sql.execute("INSERT INTO artists (name, sortname)\
                                   VALUES (?, ?)",
                                  (name, sortname))
@@ -52,7 +52,7 @@
             @param sort name a str
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE artists\
                          SET sortname=?\
                          WHERE rowid=?",
@@ -257,7 +257,7 @@
             @return cleaned as bool
             @warning commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             cleaned = False
             result = sql.execute("SELECT album_id from album_artists\
                                   WHERE artist_id=?\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/database_genres.py 
new/lollypop-0.9.609/lollypop/database_genres.py
--- old/lollypop-0.9.607/lollypop/database_genres.py    2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/database_genres.py    2018-10-25 
14:37:37.000000000 +0200
@@ -36,7 +36,7 @@
             @return inserted rowid as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             result = sql.execute("INSERT INTO genres (name) VALUES (?)",
                                  (name,))
             return result.lastrowid
@@ -128,7 +128,7 @@
             @return cleaned as bool
             @warning commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             cleaned = False
             result = sql.execute("SELECT track_id from track_genres\
                                  WHERE genre_id=?\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/database_history.py 
new/lollypop-0.9.609/lollypop/database_history.py
--- old/lollypop-0.9.607/lollypop/database_history.py   2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/database_history.py   2018-10-25 
14:37:37.000000000 +0200
@@ -45,11 +45,11 @@
         self.thread_lock = Lock()
         # Create db schema
         try:
-            with SqlCursor(self) as sql:
+            with SqlCursor(self, True) as sql:
                 sql.execute(self.__create_history)
         except:
             pass
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             result = sql.execute("SELECT COUNT(*)\
                                   FROM history")
             v = result.fetchone()
@@ -75,7 +75,7 @@
             @param album_rate as int
             @thread safe
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             if self.exists(name, duration):
                 sql.execute("UPDATE history\
                              SET popularity=?,rate=?,ltime=?,mtime=?,\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/database_tracks.py 
new/lollypop-0.9.609/lollypop/database_tracks.py
--- old/lollypop-0.9.607/lollypop/database_tracks.py    2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/database_tracks.py    2018-10-25 
14:37:37.000000000 +0200
@@ -54,7 +54,7 @@
             @return inserted rowid as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             result = sql.execute(
                 "INSERT INTO tracks (name, uri, duration, tracknumber,\
                 discnumber, discname, album_id,\
@@ -84,7 +84,7 @@
             @param artist id as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             artists = self.get_artist_ids(track_id)
             if artist_id not in artists:
                 sql.execute("INSERT INTO "
@@ -98,7 +98,7 @@
             @param genre id as int
             @warning: commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             genres = self.get_genre_ids(track_id)
             if genre_id not in genres:
                 sql.execute("INSERT INTO\
@@ -283,7 +283,7 @@
             @param Track id as int
             @param uri as string
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE tracks SET uri=?\
                          WHERE rowid=?",
                         (uri, track_id))
@@ -296,7 +296,7 @@
             @param Track id as int
             @param rate as int
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE tracks SET rate=?\
                          WHERE rowid=?",
                         (rate, track_id))
@@ -460,7 +460,7 @@
             @param Track id as int
             @param duration as int
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE tracks\
                          SET duration=?\
                          WHERE rowid=?", (duration, track_id,))
@@ -557,7 +557,7 @@
             @param track id as int
             @raise sqlite3.OperationalError on db update
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             result = sql.execute("SELECT popularity from tracks WHERE rowid=?",
                                  (track_id,))
             pop = result.fetchone()
@@ -575,7 +575,7 @@
             @param track id as int
             @param time as int
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("UPDATE tracks set ltime=? WHERE rowid=?",
                         (time, track_id))
 
@@ -603,31 +603,6 @@
                                   ORDER BY ltime DESC LIMIT 100")
             return list(itertools.chain(*result))
 
-    def get_persistent(self, track_id):
-        """
-            Return track persistent
-            @param track id as int
-            @return int
-        """
-        with SqlCursor(App().db) as sql:
-            result = sql.execute("SELECT rowid FROM tracks\
-                                  WHERE persistent=?", (track_id,))
-            v = result.fetchone()
-            if v is not None:
-                return v[0]
-            return 0
-
-    def set_persistent(self, track_id, persistent):
-        """
-            Set track persistent
-            @param track id as int
-            @param persistent as int
-        """
-        with SqlCursor(App().db) as sql:
-            sql.execute("UPDATE tracks\
-                         SET persistent=?\
-                         WHERE rowid=?", (persistent, track_id,))
-
     def get_randoms(self):
         """
             Return random tracks
@@ -645,7 +620,7 @@
             @param track id as int
             @param popularity as int
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             try:
                 sql.execute("UPDATE tracks set popularity=? WHERE rowid=?",
                             (popularity, track_id))
@@ -713,7 +688,7 @@
             @param track_id as int
             @warning commit needed
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("DELETE FROM track_artists\
                          WHERE track_id = ?", (track_id,))
             sql.execute("DELETE FROM track_genres\
@@ -758,7 +733,7 @@
             Remove track
             @param track id as int
         """
-        with SqlCursor(App().db) as sql:
+        with SqlCursor(App().db, True) as sql:
             sql.execute("DELETE FROM track_genres\
                          WHERE track_id=?", (track_id,))
             sql.execute("DELETE FROM track_artists\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/database_upgrade.py 
new/lollypop-0.9.609/lollypop/database_upgrade.py
--- old/lollypop-0.9.607/lollypop/database_upgrade.py   2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/database_upgrade.py   2018-10-25 
14:37:37.000000000 +0200
@@ -45,12 +45,12 @@
         # Migration from gsettings
         gsettings_version = App().settings.get_value("db-version").get_int32()
         if gsettings_version != -1:
-            with SqlCursor(db) as sql:
+            with SqlCursor(db, True) as sql:
                 sql.execute("PRAGMA user_version=%s" % gsettings_version)
                 App().settings.set_value("db-version",
                                          GLib.Variant("i", -1))
         version = 0
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             result = sql.execute("PRAGMA user_version")
             v = result.fetchone()
             if v is not None:
@@ -139,7 +139,7 @@
         """
             Add a sorted field to artists
         """
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("ALTER TABLE artists ADD sortname TEXT")
             result = sql.execute("SELECT DISTINCT artists.rowid,\
                                   artists.name\
@@ -155,7 +155,7 @@
         """
             Add album artists table
         """
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("CREATE TABLE album_artists (\
                                                 album_id INT NOT NULL,\
                                                 artist_id INT NOT NULL)")
@@ -209,7 +209,7 @@
         """
             Convert tracks filepath column to uri
         """
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("ALTER TABLE tracks RENAME TO tmp_tracks")
             sql.execute("""CREATE TABLE tracks (id INTEGER PRIMARY KEY,
                                               name TEXT NOT NULL,
@@ -265,7 +265,7 @@
         """
         if App().notify:
             App().notify.send("Please wait while upgrading db...")
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             result = sql.execute("SELECT tracks.rowid FROM tracks\
                                   WHERE NOT EXISTS (\
                                                  SELECT track_id\
@@ -282,7 +282,7 @@
         for path in paths:
             uris.append(GLib.filename_to_uri(path))
         App().settings.set_value("music-uris", GLib.Variant("as", uris))
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("ALTER TABLE albums RENAME TO tmp_albums")
             sql.execute("""CREATE TABLE albums (
                                               id INTEGER PRIMARY KEY,
@@ -327,7 +327,7 @@
                             INT NOT NULL DEFAULT -1")
             except:
                 pass  # May fails if History was non existent
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("ALTER TABLE tracks ADD rate\
                         INT NOT NULL DEFAULT -1")
             sql.execute("ALTER TABLE albums ADD rate\
@@ -338,7 +338,7 @@
             Add mtimes tables
         """
         mtime = int(time())
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("ALTER TABLE album_genres\
                          ADD mtime INT NOT NULL DEFAULT %s" % mtime)
             sql.execute("ALTER TABLE track_genres\
@@ -458,7 +458,7 @@
         """
             Remove Charts/Web entries
         """
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             result = sql.execute("SELECT rowid FROM tracks\
                                   WHERE persistent=0 OR\
                                   persistent=2 OR\
@@ -525,7 +525,7 @@
         """
             Restore back mtime in tracks
         """
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("ALTER TABLE tracks ADD mtime INT")
             sql.execute("ALTER TABLE albums ADD mtime INT")
 
@@ -560,7 +560,7 @@
         """
             Rename album_id to mb_album_id in albums
         """
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             sql.execute("ALTER TABLE albums RENAME TO tmp_albums")
             sql.execute("""CREATE TABLE albums (
                                id INTEGER PRIMARY KEY,
@@ -587,7 +587,7 @@
             Upgrade setting based on db
             https://gitlab.gnome.org/gnumdk/lollypop/issues/1368
         """
-        with SqlCursor(db) as sql:
+        with SqlCursor(db, True) as sql:
             result = sql.execute("SELECT albums.rowid\
                                   FROM albums, album_artists\
                                   WHERE album_artists.artist_id=?\
@@ -605,7 +605,7 @@
         from time import strptime, mktime
         from datetime import datetime
         for item in ["albums", "tracks"]:
-            with SqlCursor(db) as sql:
+            with SqlCursor(db, True) as sql:
                 sql.execute("ALTER TABLE %s ADD timestamp INT" % item)
                 result = sql.execute("SELECT rowid, year FROM %s" % item)
                 for (rowid, year) in result:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/player_bin.py 
new/lollypop-0.9.609/lollypop/player_bin.py
--- old/lollypop-0.9.607/lollypop/player_bin.py 2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/lollypop/player_bin.py 2018-10-25 14:37:37.000000000 
+0200
@@ -295,13 +295,7 @@
         for scrobbler in App().scrobblers:
             if scrobbler.available:
                 scrobbler.playing_now(self._current_track)
-        try:
-            # Should not raise anything since SqlCursor handles locks
-            if not App().scanner.is_locked():
-                App().tracks.set_listened_at(self._current_track.id,
-                                             int(time()))
-        except Exception as e:
-            Logger.error("BinPlayer::_on_stream_start(): %s", e)
+        App().tracks.set_listened_at(self._current_track.id, int(time()))
 
     def _on_bus_message_tag(self, bus, message):
         """
@@ -384,7 +378,7 @@
             return
         self._scrobble(self._current_track, self._start_time)
         # Increment popularity
-        if not App().scanner.is_locked() and self._current_track.id >= 0:
+        if self._current_track.id >= 0:
             App().tracks.set_more_popular(self._current_track.id)
             # In party mode, linear popularity
             if self.is_party:
@@ -487,22 +481,21 @@
         if track is None:
             self._scrobble(self._current_track, self._start_time)
             # Increment popularity
-            if not App().scanner.is_locked():
-                App().tracks.set_more_popular(self._current_track.id)
-                # In party mode, linear popularity
-                if self.is_party:
-                    pop_to_add = 1
-                # In normal mode, based on tracks count
+            App().tracks.set_more_popular(self._current_track.id)
+            # In party mode, linear popularity
+            if self.is_party:
+                pop_to_add = 1
+            # In normal mode, based on tracks count
+            else:
+                count = App().albums.get_tracks_count(
+                    self._current_track.album_id)
+                if count:
+                    pop_to_add = int(App().albums.max_count / count)
                 else:
-                    count = App().albums.get_tracks_count(
-                        self._current_track.album_id)
-                    if count:
-                        pop_to_add = int(App().albums.max_count / count)
-                    else:
-                        pop_to_add = 0
-                if pop_to_add > 0:
-                    App().albums.set_more_popular(self._current_track.album_id,
-                                                  pop_to_add)
+                    pop_to_add = 0
+            if pop_to_add > 0:
+                App().albums.set_more_popular(self._current_track.album_id,
+                                              pop_to_add)
 
         GLib.idle_add(self.__volume_down, self._playbin,
                       self._plugins, duration)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/playlists.py 
new/lollypop-0.9.609/lollypop/playlists.py
--- old/lollypop-0.9.607/lollypop/playlists.py  2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/lollypop/playlists.py  2018-10-25 14:37:37.000000000 
+0200
@@ -63,7 +63,7 @@
         f = Gio.File.new_for_path(self._DB_PATH)
         if not f.query_exists():
             try:
-                with SqlCursor(self) as sql:
+                with SqlCursor(self, True) as sql:
                     sql.execute(self.__create_playlists)
                     sql.execute(self.__create_tracks)
                     sql.execute("PRAGMA user_version=%s" % upgrade.version)
@@ -81,7 +81,7 @@
         """
         if name == self.LOVED:
             return Type.LOVED
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             result = sql.execute("INSERT INTO playlists (name, mtime)"
                                  " VALUES (?, ?)",
                                  (name, datetime.now().strftime("%s")))
@@ -111,7 +111,7 @@
             @param old_name as str
             @param new_name as str
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             playlist_id = self.get_id(old_name)
             sql.execute("UPDATE playlists\
                         SET name=?\
@@ -124,7 +124,7 @@
             delete playlist
             @param playlist name as str
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             playlist_id = self.get_id(name)
             sql.execute("DELETE FROM playlists\
                         WHERE name=?",
@@ -139,7 +139,7 @@
             Remove track from playlists
             @param uri as str
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             sql.execute("DELETE FROM tracks\
                         WHERE uri=?",
                         (uri,))
@@ -359,7 +359,7 @@
             @param playlist_id as int
             @param synced as bool
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             sql.execute("UPDATE playlists\
                         SET synced=?\
                         WHERE rowid=?",
@@ -371,7 +371,7 @@
             @param playlist id as int
             @param notify as bool
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             sql.execute("DELETE FROM tracks\
                          WHERE playlist_id=?", (playlist_id,))
             if notify:
@@ -384,7 +384,7 @@
             @param tracks as [Track]
             @param notify as bool
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             changed = False
             for track in tracks:
                 if not self.exists_track(playlist_id, track):
@@ -406,7 +406,7 @@
             @param playlist id as int
             @param uris as [str]
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             for uri in uris:
                 sql.execute("INSERT INTO tracks"
                             " VALUES (?, ?)",
@@ -421,7 +421,7 @@
             @param playlist id as int
             @param tracks as [Track]
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             for track in tracks:
                 sql.execute("DELETE FROM tracks\
                              WHERE uri=?\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/radios.py 
new/lollypop-0.9.609/lollypop/radios.py
--- old/lollypop-0.9.607/lollypop/radios.py     2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/lollypop/radios.py     2018-10-25 14:37:37.000000000 
+0200
@@ -45,7 +45,7 @@
         self.thread_lock = Lock()
         # Create db schema
         try:
-            with SqlCursor(self) as sql:
+            with SqlCursor(self, True) as sql:
                 sql.execute(self.create_radios)
         except:
             pass
@@ -57,7 +57,7 @@
             @param url as str
             @thread safe
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             if self.exists(name):
                 sql.execute("UPDATE radios\
                              SET url=?\
@@ -91,7 +91,7 @@
             @param old playlist name as str
             @param new playlist name as str
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             sql.execute("UPDATE radios\
                         SET name=?\
                         WHERE name=?",
@@ -103,7 +103,7 @@
             delete radio
             @param radio name as str
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             sql.execute("DELETE FROM radios\
                         WHERE name=?",
                         (name,))
@@ -167,7 +167,7 @@
             Set radio more popular
             @param name as str
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             result = sql.execute("SELECT popularity from radios WHERE name=?",
                                  (name,))
             pop = result.fetchone()
@@ -214,7 +214,7 @@
             @param name as str
             @param popularity as int
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             try:
                 sql.execute("UPDATE radios SET\
                             popularity=? WHERE name=?",
@@ -228,7 +228,7 @@
             @param name as str
             @param rate as int
         """
-        with SqlCursor(self) as sql:
+        with SqlCursor(self, True) as sql:
             try:
                 sql.execute("UPDATE radios SET\
                             rate=? WHERE name=?",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/sqlcursor.py 
new/lollypop-0.9.609/lollypop/sqlcursor.py
--- old/lollypop-0.9.607/lollypop/sqlcursor.py  2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/lollypop/sqlcursor.py  2018-10-25 14:37:37.000000000 
+0200
@@ -45,24 +45,30 @@
             Commit current obj
         """
         name = current_thread().getName() + obj.__class__.__name__
-        App().cursors[name].commit()
+        if name in App().cursors.keys():
+            App().cursors[name].commit()
 
     def allow_thread_execution(obj):
         """
             Release thread lock allowing others threads execution
         """
         name = current_thread().getName() + obj.__class__.__name__
-        if name in App().cursors.keys() and len(App().cursors.keys()) > 1:
+        if name in App().cursors.keys() and obj.thread_lock.count > 1:
+            App().cursors[name].commit()
             obj.thread_lock.release()
             sleep(0.01)
             obj.thread_lock.acquire()
 
-    def __init__(self, obj):
+    def __init__(self, obj, commit=False):
         """
-            Init object
+            Init object, if using multiple SqlCursor, parent commit param will
+            be used
+            @param obj as Database/Playlists/Radios
+            @param commit as bool
         """
         self.__obj = obj
         self.__creator = False
+        self.__commit = commit
 
     def __enter__(self):
         """
@@ -70,19 +76,20 @@
         """
         name = current_thread().getName() + self.__obj.__class__.__name__
         if name not in App().cursors.keys():
-            self.__creator = True
             App().cursors[name] = self.__obj.get_cursor()
-            self.__obj.thread_lock.acquire()
+            self.__creator = True
+            if self.__commit:
+                self.__obj.thread_lock.acquire()
         return App().cursors[name]
 
     def __exit__(self, type, value, traceback):
         """
             If creator, close cursor and remove it
         """
-        if self.__creator:
-            name = current_thread().getName() + self.__obj.__class__.__name__
-            if name in App().cursors.keys():
+        name = current_thread().getName() + self.__obj.__class__.__name__
+        if name in App().cursors.keys() and self.__creator:
+            if self.__commit:
                 App().cursors[name].commit()
-                App().cursors[name].close()
-                del App().cursors[name]
-            self.__obj.thread_lock.release()
+                self.__obj.thread_lock.release()
+            App().cursors[name].close()
+            del App().cursors[name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/tagreader.py 
new/lollypop-0.9.609/lollypop/tagreader.py
--- old/lollypop-0.9.607/lollypop/tagreader.py  2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/lollypop/tagreader.py  2018-10-25 14:37:37.000000000 
+0200
@@ -487,11 +487,10 @@
             @param artists as [string]
             @param sortnames as [string]
             @param artist ids as int
-            @return ([int], [int])
+            @return [int]
             @commit needed
         """
         artist_ids = []
-        new_artist_ids = []
         sortsplit = sortnames.split(";")
         sortlen = len(sortsplit)
         i = 0
@@ -508,12 +507,11 @@
                     if sortname is None:
                         sortname = format_artist_name(artist)
                     artist_id = App().artists.add(artist, sortname)
-                    new_artist_ids.append(artist_id)
                 elif sortname is not None:
                     App().artists.set_sortname(artist_id, sortname)
                 i += 1
                 artist_ids.append(artist_id)
-        return (artist_ids, new_artist_ids)
+        return artist_ids
 
     def add_genres(self, genres):
         """
@@ -524,7 +522,6 @@
         """
         # Get all genre ids
         genre_ids = []
-        new_genre_ids = []
         for genre in genres.split(";"):
             genre = genre.strip()
             if genre != "":
@@ -532,9 +529,8 @@
                 genre_id = App().genres.get_id(genre)
                 if genre_id is None:
                     genre_id = App().genres.add(genre)
-                    new_genre_ids.append(genre_id)
                 genre_ids.append(genre_id)
-        return (genre_ids, new_genre_ids)
+        return genre_ids
 
     def add_album(self, album_name, mb_album_id, artist_ids,
                   uri, loved, popularity, rate, mtime):
@@ -548,20 +544,18 @@
             @param popularity as int
             @param rate as int
             @param mtime as int
-            @return (album id as int, new as bool)
+            @return album_id as int
             @commit needed
         """
         f = Gio.File.new_for_uri(uri)
         d = f.get_parent()
         parent_uri = "/" if d is None else d.get_uri()
-        new = False
         album_id = App().albums.get_id(album_name, mb_album_id, artist_ids)
         if album_id is None:
-            new = True
             album_id = App().albums.add(album_name, mb_album_id, artist_ids,
                                         parent_uri, loved, popularity,
                                         rate, mtime)
         # Now we have our album id, check if path doesn"t change
         if App().albums.get_uri(album_id) != parent_uri:
             App().albums.set_uri(album_id, parent_uri)
-        return (album_id, new)
+        return album_id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/widgets_album.py 
new/lollypop-0.9.609/lollypop/widgets_album.py
--- old/lollypop-0.9.607/lollypop/widgets_album.py      2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/widgets_album.py      2018-10-25 
14:37:37.000000000 +0200
@@ -63,13 +63,6 @@
         self._show_overlay_func(set)
 
     @property
-    def is_populated(self):
-        """
-            True if album populated
-        """
-        return True
-
-    @property
     def filter(self):
         return ""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/widgets_album_simple.py 
new/lollypop-0.9.609/lollypop/widgets_album_simple.py
--- old/lollypop-0.9.607/lollypop/widgets_album_simple.py       2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/widgets_album_simple.py       2018-10-25 
14:37:37.000000000 +0200
@@ -99,6 +99,13 @@
         width = Gtk.FlowBoxChild.do_get_preferred_width(self)[0]
         return (width, width)
 
+    @property
+    def is_populated(self):
+        """
+            True if album populated
+        """
+        return True
+
 #######################
 # PROTECTED           #
 #######################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/widgets_radio.py 
new/lollypop-0.9.609/lollypop/widgets_radio.py
--- old/lollypop-0.9.607/lollypop/widgets_radio.py      2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/widgets_radio.py      2018-10-25 
14:37:37.000000000 +0200
@@ -135,6 +135,13 @@
             self._artwork.set_state(Gtk.StateType.NORMAL)
 
     @property
+    def is_populated(self):
+        """
+            True if album populated
+        """
+        return True
+
+    @property
     def id(self):
         """
             Return widget id (same value for all radio widgets)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/lollypop/widgets_rating.py 
new/lollypop-0.9.609/lollypop/widgets_rating.py
--- old/lollypop-0.9.607/lollypop/widgets_rating.py     2018-10-21 
22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/lollypop/widgets_rating.py     2018-10-25 
14:37:37.000000000 +0200
@@ -111,8 +111,6 @@
             @param widget as Gtk.EventBox
             @param event as Gdk.Event
         """
-        if App().scanner.is_locked():
-            return
         user_rating = True
         rate = self.__object.get_rate()
         # -1 for compatiblity with previous release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/meson.build 
new/lollypop-0.9.609/meson.build
--- old/lollypop-0.9.607/meson.build    2018-10-21 22:19:13.000000000 +0200
+++ new/lollypop-0.9.609/meson.build    2018-10-25 14:37:37.000000000 +0200
@@ -1,5 +1,5 @@
 project('lollypop',
-  version: '0.9.607',
+  version: '0.9.609',
   meson_version: '>= 0.40.0'
 )
 i18n = import('i18n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/subprojects/po/ar.po 
new/lollypop-0.9.609/subprojects/po/ar.po
--- old/lollypop-0.9.607/subprojects/po/ar.po   2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/subprojects/po/ar.po   2018-10-25 14:37:37.000000000 
+0200
@@ -8,7 +8,7 @@
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-10-09 18:44+0200\n"
-"PO-Revision-Date: 2018-10-02 21:21+0000\n"
+"PO-Revision-Date: 2018-10-23 16:22+0000\n"
 "Last-Translator: AbouZakaria <[email protected]>\n"
 "Language-Team: Arabic <https://hosted.weblate.org/projects/gnumdk/lollypop/";
 "ar/>\n"
@@ -18,7 +18,7 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
 "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Weblate 3.3-dev\n"
 
 #: ../data/org.gnome.Lollypop.gschema.xml:28
 msgid "Window size"
@@ -194,7 +194,7 @@
 
 #: ../data/org.gnome.Lollypop.gschema.xml:188
 msgid "Disable scrobbling usage"
-msgstr ""
+msgstr "تعطيل استخدام scrobbler"
 
 #: ../data/org.gnome.Lollypop.gschema.xml:193
 msgid "Handle compilations"
@@ -389,11 +389,11 @@
 
 #: ../data/org.gnome.Lollypop.appdata.xml.in:33
 msgid "Fix a crash in artist view"
-msgstr ""
+msgstr "إصلاح العطل في عرض الفنان"
 
 #: ../data/org.gnome.Lollypop.appdata.xml.in:40
 msgid "Fix a freeze in playlists"
-msgstr ""
+msgstr "إصلاح التجميد في قوائم التشغيل"
 
 #: ../data/org.gnome.Lollypop.desktop.in:4
 msgid "Music Player"
@@ -892,7 +892,7 @@
 #: ../data/Shortcuts.ui:170
 msgctxt "shortcut window"
 msgid "Enable/disable scrobbling"
-msgstr ""
+msgstr "تمكين / تعطيل scrobbler"
 
 #: ../data/ToolbarEnd.ui:7
 msgid "Party mode"
@@ -936,11 +936,11 @@
 
 #: ../data/ToolbarEnd.ui:53
 msgid "Scrobbling"
-msgstr ""
+msgstr "Scrobbler"
 
 #: ../data/ToolbarEnd.ui:55
 msgid "Enable scrobbling"
-msgstr ""
+msgstr "تمكبن Scrobbler"
 
 #: ../data/ToolbarEnd.ui:99
 msgid "Playback type"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lollypop-0.9.607/subprojects/po/de.po 
new/lollypop-0.9.609/subprojects/po/de.po
--- old/lollypop-0.9.607/subprojects/po/de.po   2018-10-21 22:19:13.000000000 
+0200
+++ new/lollypop-0.9.609/subprojects/po/de.po   2018-10-25 14:37:37.000000000 
+0200
@@ -20,7 +20,7 @@
 "Project-Id-Version: lollypop\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-10-09 18:44+0200\n"
-"PO-Revision-Date: 2018-09-28 20:27+0000\n"
+"PO-Revision-Date: 2018-10-23 12:29+0000\n"
 "Last-Translator: Vincent Bermel <[email protected]>\n"
 "Language-Team: German <https://hosted.weblate.org/projects/gnumdk/lollypop/";
 "de/>\n"
@@ -29,7 +29,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Weblate 3.3-dev\n"
 
 #: ../data/org.gnome.Lollypop.gschema.xml:28
 msgid "Window size"
@@ -205,7 +205,7 @@
 
 #: ../data/org.gnome.Lollypop.gschema.xml:188
 msgid "Disable scrobbling usage"
-msgstr ""
+msgstr "Scrobbling deaktivieren"
 
 #: ../data/org.gnome.Lollypop.gschema.xml:193
 msgid "Handle compilations"
@@ -410,11 +410,11 @@
 
 #: ../data/org.gnome.Lollypop.appdata.xml.in:33
 msgid "Fix a crash in artist view"
-msgstr ""
+msgstr "Fehler in Künstlerübersicht behoben"
 
 #: ../data/org.gnome.Lollypop.appdata.xml.in:40
 msgid "Fix a freeze in playlists"
-msgstr ""
+msgstr "Wiedergabelisten-Absturz behoben"
 
 #: ../data/org.gnome.Lollypop.desktop.in:4
 msgid "Music Player"
@@ -916,7 +916,7 @@
 #: ../data/Shortcuts.ui:170
 msgctxt "shortcut window"
 msgid "Enable/disable scrobbling"
-msgstr ""
+msgstr "Scrobbling (de)aktivieren"
 
 #: ../data/ToolbarEnd.ui:7
 msgid "Party mode"
@@ -960,11 +960,11 @@
 
 #: ../data/ToolbarEnd.ui:53
 msgid "Scrobbling"
-msgstr ""
+msgstr "Scrobbling"
 
 #: ../data/ToolbarEnd.ui:55
 msgid "Enable scrobbling"
-msgstr ""
+msgstr "Scrobbling aktivieren"
 
 #: ../data/ToolbarEnd.ui:99
 msgid "Playback type"
@@ -1160,11 +1160,11 @@
 
 #: ../lollypop/pop_search.py:112
 msgid "<big>No results for this search</big>"
-msgstr ""
+msgstr "<big>Keine Ergebnisse für diesen Suchbegriff</big>"
 
 #: ../lollypop/pop_search.py:119
 msgid "<big>Search for artists, albums and tracks</big>"
-msgstr ""
+msgstr "<big>Nach Künstlern, Album und Titeln suchen</big>"
 
 #: ../lollypop/pop_tunein.py:92 ../lollypop/pop_tunein.py:401
 msgid "Can't connect to TuneIn…"


Reply via email to