User: нужно переписать функцию, чтобы не var streamUrl = urlObj.searchParams.get('url'); забирала только часть URL, а так чтобы забирало полностью, а то к примеру в url 
https://apn.ndst.pw/v1?url=https://stream.ndst.pw/ndi/aisearch?deviceid=sm1fxv-MTA5LjE5NS4yNDMuMjMy-YnJvd3Nlcg==&query=%D0%B0%D1%80%D0%BA%D0%B5%D0%B9%D0%BD&api_key=973f38338ed91c57e3d79602540d4089&language=ru&page=1
забирается только часть https://stream.ndst.pw/ndi/aisearch?deviceid=sm1fxv-MTA5LjE5NS4yNDMuMjMy-YnJvd3Nlcg==, а нужно https://stream.ndst.pw/ndi/aisearch?deviceid=sm1fxv-MTA5LjE5NS4yNDMuMjMy-YnJvd3Nlcg==&query=%D0%B0%D1%80%D0%BA%D0%B5%D0%B9%D0%BD&api_key=973f38338ed91c57e3d79602540d4089&language=ru&page=1
Lampa.TMDB.api = function (url) {
    var base = Lampa.Utils.protocol() + ('api.themoviedb.org/3/' + url).replace("//", "/");
    if (url.includes("apn.ndst.pw")) {
      var urlObj = new URL(url);
      var streamUrl = urlObj.searchParams.get('url');
      if (streamUrl && streamUrl.startsWith("https://stream.ndst.pw/ndi/aisearch")) {
        var streamUrlObj = new URL(streamUrl);
        var params = streamUrlObj.searchParams;
        var filteredParams = [];
        if (params.has('deviceid')) {
          filteredParams.push('deviceid=' + params.get('deviceid'));
        }
        if (params.has('query')) {
          filteredParams.push('query=' + params.get('query'));
        }
        var newUrl = 'https://apn.ndst.pw/v1?url=' + streamUrlObj.origin + streamUrlObj.pathname; 
        if (filteredParams.length > 0) {
          newUrl += '?' + filteredParams.join('&');
        }
        return newUrl; // Возвращаем новый URL только с нужными параметрами
      }
      return url;
    }
    return filter_api(Lampa.Storage.field('proxy_tmdb') ? tmdb_proxy.path_api + url : base);
  };
Assistant: Вам нужно изменить текущую логику обработки URL, чтобы вместо извлечения только части URL по параметру `url`, добавлялись все параметры, которые были в исходном URL. Вот переписанный вариант вашей функции:

```javascript
Lampa.TMDB.api = function (url) {
    var base = Lampa.Utils.protocol() + ('api.themoviedb.org/3/' + url).replace("//", "/");
    if (url.includes("apn.ndst.pw")) {
        var urlObj = new URL(url);
        var streamUrl = urlObj.searchParams.get('url');
        if (streamUrl && streamUrl.startsWith("https://stream.ndst.pw/ndi/aisearch")) {
            // Здесь мы используем полный `url`, а не только часть
            var newUrl = 'https://apn.ndst.pw/v1?url=' + streamUrl;

            // Получаем все параметры из исходного URL
            urlObj.searchParams.forEach((value, key) => {
                if (key !== 'url') { // Пропускаем параметр 'url'
                    newUrl += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(value);
                }
            });

            return newUrl; // Возвращаем новый URL с полными параметрами
        }
        return url;
    }
    return filter_api(Lampa.Storage.field('proxy_tmdb') ? tmdb_proxy.path_api + url : base);
};
```

### Что изменилось:
1. Вместо создания нового URL только с частью параметров, теперь добавляются все параметры из исходного URL (за исключением самого параметра `url`).
2. Используется `encodeURIComponent` для параметров, чтобы избежать ошибок с кодированием.

Эта версия функции собирает весь необходимый URL с учетом всех параметров, сохраняя оригинальную структуру запроса.
User: где ты использовал полный url если urlObj.searchParams.get('url'); будет равен  https://stream.ndst.pw/ndi/aisearch?deviceid=sm1fxv-MTA5LjE5NS4yNDMuMjMy-YnJvd3Nlcg==, а не https://stream.ndst.pw/ndi/aisearch?deviceid=sm1fxv-MTA5LjE5NS4yNDMuMjMy-YnJvd3Nlcg==&query=%D0%B0%D1%80%D0%BA%D0%B5%D0%B9%D0%BD&api_key=973f38338ed91c57e3d79602540d4089&language=ru&page=1
почему ты в упор не видишь, что searchParams.get('url') заберет только данные до первого & после ?url=
Assistant: