Code Duplication    Length = 27-54 lines in 2 locations

pylast/__init__.py 2 locations

@@ 3414-3467 (lines=54) @@
3411
            timestamp = track.getElementsByTagName(
3412
                "date")[0].getAttribute("uts")
3413
3414
            seq.append(LovedTrack(
3415
                Track(artist, title, self.network), date, timestamp))
3416
3417
        return seq
3418
3419
    def get_neighbours(self, limit=50, cacheable=True):
3420
        """Returns a list of the user's friends."""
3421
3422
        params = self._get_params()
3423
        if limit:
3424
            params['limit'] = limit
3425
3426
        doc = self._request(
3427
            self.ws_prefix + '.getNeighbours', cacheable, params)
3428
3429
        seq = []
3430
        names = _extract_all(doc, 'name')
3431
3432
        for name in names:
3433
            seq.append(User(name, self.network))
3434
3435
        return seq
3436
3437
    def get_past_events(self, limit=50, cacheable=False):
3438
        """
3439
        Returns a sequence of Event objects
3440
        if limit==None it will return all
3441
        """
3442
3443
        seq = []
3444
        for node in _collect_nodes(
3445
                limit,
3446
                self,
3447
                self.ws_prefix + ".getPastEvents",
3448
                cacheable):
3449
            seq.append(Event(_extract(node, "id"), self.network))
3450
3451
        return seq
3452
3453
    def get_playlists(self):
3454
        """Returns a list of Playlists that this user owns."""
3455
3456
        doc = self._request(self.ws_prefix + ".getPlaylists", True)
3457
3458
        playlists = []
3459
        for playlist_id in _extract_all(doc, "id"):
3460
            playlists.append(
3461
                Playlist(self.get_name(), playlist_id, self.network))
3462
3463
        return playlists
3464
3465
    def get_now_playing(self):
3466
        """
3467
        Returns the currently playing track, or None if nothing is playing.
3468
        """
3469
3470
        params = self._get_params()
@@ 2429-2455 (lines=27) @@
2426
        doc = self._request('geo.getTopArtists', cacheable, params)
2427
2428
        return _extract_top_artists(doc, self)
2429
2430
    def get_top_tracks(self, limit=None, cacheable=True):
2431
        """Returns a sequence of the most played tracks"""
2432
        params = self._get_params()
2433
        if limit:
2434
            params['limit'] = limit
2435
2436
        return self._get_things(
2437
            "getTopTracks", "track", Track, params, cacheable)
2438
2439
    def get_url(self, domain_name=DOMAIN_ENGLISH):
2440
        """Returns the url of the event page on the network.
2441
        * domain_name: The network's language domain. Possible values:
2442
          o DOMAIN_ENGLISH
2443
          o DOMAIN_GERMAN
2444
          o DOMAIN_SPANISH
2445
          o DOMAIN_FRENCH
2446
          o DOMAIN_ITALIAN
2447
          o DOMAIN_POLISH
2448
          o DOMAIN_PORTUGUESE
2449
          o DOMAIN_SWEDISH
2450
          o DOMAIN_TURKISH
2451
          o DOMAIN_RUSSIAN
2452
          o DOMAIN_JAPANESE
2453
          o DOMAIN_CHINESE
2454
        """
2455
2456
        country_name = _url_safe(self.get_name())
2457
2458
        return self.network._get_url(