Merge pull request #1 from TeamNewPipe/master

0.8.9 update
This commit is contained in:
ksyko 2017-02-11 23:21:58 +05:30 committed by GitHub
commit c2fcae7c43
18 changed files with 521 additions and 64 deletions

View File

@ -37,8 +37,7 @@ NewPipe does not use any Google framework libraries, or the YouTube API. It only
* Listen to YouTube videos (experimental)
* Select the streaming player to watch the video with
* Download videos
* Download audio only
* Open a video in Kodi
* Download audio only * Open a video in Kodi
* Show Next/Related videos
* Search YouTube in a specific language
* Watch age restricted material

View File

@ -8,8 +8,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 15
targetSdkVersion 25
versionCode 22
versionName "0.8.8"
versionCode 23
versionName "0.8.9"
}
buildTypes {
release {
@ -32,10 +32,10 @@ android {
dependencies {
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:support-v4:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:recyclerview-v7:25.1.0'
compile 'com.android.support:appcompat-v7:25.1.1'
compile 'com.android.support:support-v4:25.1.1'
compile 'com.android.support:design:25.1.1'
compile 'com.android.support:recyclerview-v7:25.1.1'
compile 'org.jsoup:jsoup:1.8.3'
compile 'org.mozilla:rhino:1.7.7'
compile 'info.guardianproject.netcipher:netcipher:1.2'

View File

@ -125,10 +125,13 @@ public class StreamInfoWorker {
e.printStackTrace();
} catch (YoutubeStreamExtractor.DecryptException de) {
// custom service related exceptions
ErrorActivity.reportError(h, a, de, VideoItemDetailFragment.class, null,
ErrorActivity.ErrorInfo.make(ErrorActivity.REQUESTED_STREAM,
service.getServiceInfo().name, videoUrl, R.string.youtube_signature_decryption_error));
h.post(new Runnable() {
@Override
public void run() {
onStreamInfoReceivedListener.onError(R.string.youtube_signature_decryption_error);
a.finish();
}
});
de.printStackTrace();

View File

@ -144,6 +144,7 @@ public class VideoItemDetailFragment extends Fragment {
TextView similarTitle = (TextView) activity.findViewById(R.id.detail_similar_title);
Button backgroundButton = (Button)
activity.findViewById(R.id.detail_stream_thumbnail_window_background_button);
View thumbnailView = activity.findViewById(R.id.detail_thumbnail_view);
View topView = activity.findViewById(R.id.detailTopView);
Button channelButton = (Button) activity.findViewById(R.id.channel_button);
@ -275,6 +276,14 @@ public class VideoItemDetailFragment extends Fragment {
}
});
//todo: make backgroundButton handle this
thumbnailView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
playVideo(info);
}
});
if (info.channel_url != null && info.channel_url != "") {
channelButton.setOnClickListener(new View.OnClickListener() {
@Override

View File

@ -42,15 +42,23 @@ public class Parser {
}
public static String matchGroup1(String pattern, String input) throws RegexException {
return matchGroup(pattern, input, 1);
}
public static String matchGroup(String pattern, String input, int group) throws RegexException {
Pattern pat = Pattern.compile(pattern);
Matcher mat = pat.matcher(input);
boolean foundMatch = mat.find();
if (foundMatch) {
return mat.group(1);
return mat.group(group);
}
else {
//Log.e(TAG, "failed to find pattern \""+pattern+"\" inside of \""+input+"\"");
throw new RegexException("failed to find pattern \""+pattern+" inside of "+input+"\"");
if(input.length() > 1024) {
throw new RegexException("failed to find pattern \""+pattern);
} else {
throw new RegexException("failed to find pattern \"" + pattern + " inside of " + input + "\"");
}
}
}

View File

@ -791,10 +791,15 @@ public class YoutubeStreamExtractor extends StreamExtractor {
try {
Downloader downloader = NewPipe.getDownloader();
if(!playerUrl.contains("https://youtube.com")) {
//sometimes the https://youtube.com part does not get send with
//than we have to add it by hand
playerUrl = "https://youtube.com" + playerUrl;
}
String playerCode = downloader.download(playerUrl);
decryptionFuncName =
Parser.matchGroup1("\\.sig\\|\\|([a-zA-Z0-9$]+)\\(", playerCode);
Parser.matchGroup("([\"\\'])signature\\1\\s*,\\s*([a-zA-Z0-9$]+)\\(", playerCode, 2);
String functionPattern = "("
+ decryptionFuncName.replace("$", "\\$")

View File

@ -84,9 +84,23 @@ public abstract class MissionsFragment extends Fragment
return v;
}
@Override
/** Added in API level 23. */
@Override
public void onAttach(Context activity) {
super.onAttach(activity);
// Bug: in api< 23 this is never called
// so mActivity=null
// so app crashes with nullpointer exception
mActivity = activity;
}
/** deprecated in API level 23,
* but must remain to allow compatibility with api<23 */
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="upload_date_text">Publikováno %1$s</string>
<string name="no_player_found">Žádný přehrávač nenalezen. Nainstalovat VLC?</string>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"><string name="upload_date_text">Publikováno %1$s</string>
<string name="no_player_found">Nenalezen žádný přehrávač. Nainstalovat VLC?</string>
<string name="install">Instalovat</string>
<string name="cancel">Zrušit</string>
<string name="open_in_browser">Otevřít v prohlížeči</string>
@ -18,45 +18,45 @@
<string name="use_external_video_player_title">Použít externí video přehrávač</string>
<string name="use_external_audio_player_title">Použít externí audio přehrávač</string>
<string name="download_path_audio_summary">Cesta, kde se uloží audio po stažení.</string>
<string name="download_path_audio_dialog_title">Zadejte umístění pro uložení audio souborů.</string>
<string name="download_path_audio_summary">Cesta, kam se uloží stažené audio</string>
<string name="download_path_audio_dialog_title">Zadejte umístění pro stažené audio soubory.</string>
<string name="download_path_audio_title">Umístění pro stažené audio</string>
<string name="autoplay_through_intent_title">Automatické přehrávání skrze Intent</string>
<string name="autoplay_through_intent_summary">Automaticky přehrávat video, jestliže je volané z jiné aplikace.</string>
<string name="default_resolution_title">Výchozí rozlišení</string>
<string name="play_with_kodi_title">Přehrát s Kodi</string>
<string name="play_with_kodi_title">Přehrát pomocí Kodi</string>
<string name="kore_not_found">Aplikace Kore nenalezena. Nainstalovat Kore?</string>
<string name="view_count_text">%1$s zhlédnutí</string>
<string name="background_player_name">NewPipe Přehrávač na pozadí</string>
<string name="download_path_title">Umístění pro stažené video</string>
<string name="download_path_summary">Cesta, kde se uloží video po stažení.</string>
<string name="download_path_dialog_title">Zadejte umístění pro uložená videa</string>
<string name="download_path_summary">Cesta, kam se uloží stažené video.</string>
<string name="download_path_dialog_title">Zadejte umístění pro stažená videa</string>
<string name="show_play_with_kodi_title">Zobrazit možnost \"Přehrát s Kodi\"</string>
<string name="show_play_with_kodi_summary">Zobrazit možnost přehrát video s multimediálním centrem Kodi.</string>
<string name="show_play_with_kodi_title">Zobrazit možnost \"Přehrát pomocí Kodi\"</string>
<string name="show_play_with_kodi_summary">Zobrazit možnost přehrání videa pomocí multimediálního centra Kodi.</string>
<string name="play_audio">Audio</string>
<string name="default_audio_format_title">Výchozí audio formát</string>
<string name="webm_description">WebM — svobodný formát</string>
<string name="m4a_description">m4a — lepší kvalita</string>
<string name="theme_title">Téma</string>
<string name="dark_theme_title">Tmavý</string>
<string name="light_theme_title">Světlý</string>
<string name="dark_theme_title">Tmavé</string>
<string name="light_theme_title">Světlé</string>
<string name="download_dialog_title">Stažení</string>
<string name="download_dialog_title">Stáhnout</string>
<string name="next_video_title">Následující video</string>
<string name="show_next_and_similar_title">Zobrazit následující a související videa</string>
<string name="show_next_and_similar_title">Zobrazit následující a podobná videa</string>
<string name="url_not_supported_toast">URL není podporováno</string>
<string name="similar_videos_btn_text">Související videa</string>
<string name="similar_videos_btn_text">Podobná videa</string>
<string name="search_language_title">Preferovaný jazyk obsahu</string>
<string name="settings_category_video_audio_title">Video &amp; audio</string>
<string name="settings_category_video_audio_title">Video a audio</string>
<string name="settings_category_appearance_title">Vzhled</string>
<string name="settings_category_other_title">Ostatní</string>
<string name="background_player_playing_toast">Přehrávám na pozadí</string>
<string name="play_btn_text">Přehrát</string>
<string name="general_error">Chyba</string>
<string name="network_error">Chyba sítě</string>
<string name="could_not_load_thumbnails">Nebylo možné stáhnout všechny náhledy</string>
<string name="could_not_load_thumbnails">Nebylo možné nahrát všechny náhledy</string>
<string name="youtube_signature_decryption_error">Nebylo možné dekódovat URL videa.</string>
<string name="parsing_error">Nebylo možné analyzovat webovou stránku.</string>
<string name="content_not_available">Obsah není k dispozici.</string>
@ -64,11 +64,11 @@
<string name="list_thumbnail_view_description">Náhled videa</string>
<string name="detail_thumbnail_view_description">Náhled videa</string>
<string name="detail_uploader_thumbnail_view_description">Náhled uploadera</string>
<string name="detail_uploader_thumbnail_view_description">Náhled obrázku uploadera</string>
<string name="detail_likes_img_view_description">To se mi líbí</string>
<string name="detail_dislikes_img_view_description">To se mi nelíbí</string>
<string name="use_tor_title">Použít Tor</string>
<string name="use_tor_summary">Vynutit stahování skrz Tor pro zvýšené soukromí (streaming není zatím podporován)</string>
<string name="use_tor_summary">(Experimentální) Vynutit stahování skrz Tor pro zvýšené soukromí (streaming zatím není podporován).</string>
<string name="err_dir_create">Nebylo možné vytvořit složku pro stažené soubory \'%1$s\'</string>
<string name="info_dir_created">Vytvořena složka pro stažené soubory \'%1$s\'</string>
@ -76,8 +76,229 @@
<string name="autoplay_by_calling_app_summary">Automaticky přehrát video, když je NewPipe otevřen z jiné aplikace.</string>
<string name="content">Obsah</string>
<string name="show_age_restricted_content_title">Zobrazovat věkově omezený obsah</string>
<string name="video_is_age_restricted">Toto video je věkově omezeno. Povolte věkově omezená video v nastavení.</string>
<string name="video_is_age_restricted">Toto video je věkově omezeno. Povolte věkově omezená videa v nastavení.</string>
<string name="duration_live">živě</string>
<string name="light_parsing_error">Nemůžu kompletně parsovat web.</string>
<string name="light_parsing_error">Nebylo možné kompletně analyzovat stránku.</string>
<string name="main_bg_subtitle">Pro začátek stiskni hledat</string>
<string name="msg_copied">Zkopírováno do schránky.</string>
<string name="msg_wait">Počkejte prosím…</string>
<string name="msg_running">NewPipe se stahuje</string>
<string name="msg_running_detail">Stiskněte pro detaily</string>
<string name="msg_server_unsupported">Server není podporován</string>
<string name="msg_exists">Soubor již existuje</string>
<string name="msg_url_malform">Špatné URL nebo připojení k Internetu není k disposici</string>
<string name="msg_error">Chyba</string>
<string name="msg_url">Stáhnout URL</string>
<string name="msg_name">Jméno souboru</string>
<string name="msg_threads">Vlákna</string>
<string name="pause">Zastavit</string>
<string name="delete">Smazat</string>
<string name="use_exoplayer_title">Použít ExoPlayer</string>
<string name="use_exoplayer_summary">Experimentální</string>
<string name="start">Začít</string>
<string name="error_drm_unknown">Neznámá chyba DRM</string>
<string name="retry">Zkusit znovu</string>
<string name="text">Text</string>
<string name="enable_background_audio">Hrát na pozadí</string>
<string name="video">Video</string>
<string name="audio">Audio</string>
<string name="report_error">Nahlásit chybu</string>
<string name="info_searched_lbl">Hledáno:</string>
<string name="error_details_headline">Detaily:</string>
<string name="info_requested_stream_lbl">Vyžádaný stream:</string>
<string name="what_happened_headline">Co se stalo:</string>
<string name="error_snackbar_action">NAHLÁSIT</string>
<string name="sorry_string">Omlouváme se, tohle se nemělo stát.</string>
<string name="error_report_button_text">Nahlásit chybu přes e-mail</string>
<string name="error_snackbar_message">Omlouváme se, staly se nějaké chyby.</string>
<string name="could_not_load_image">Nepodařilo se nahrát obrázek</string>
<string name="app_ui_crash">Aplikace/UI spadlo</string>
<string name="live_streams_not_supported">Tento stream je vysílán živě, funkce ještě není podporována.</string>
<string name="could_not_get_stream">Nepodařilo se dostat žádný stream.</string>
<string name="could_not_setup_download_menu">Nepodařilo se nastavit menu stahování.</string>
<string name="settings_title">Nastavení</string>
<string name="error_report_title">Nahlásit chybu</string>
<string name="downloads">Stažené soubory</string>
<string name="downloads_title">Stažené soubory</string>
<string name="what_device_headline">Info:</string>
<string name="your_comment">Vaše poznámky (Anglicky):</string>
<string name="logging">Logování</string>
<string name="logging_normal">Normální</string>
<string name="error_drm_not_supported">Chráněný obsah není podporován na API úrovni menší než 18</string>
<string name="error_drm_unsupported_scheme">Toto zařízení nepodporuje potřebné DRM schéma</string>
<string name="error_no_decoder">Toto zařízení nedodává dekodér pro <xliff:g id="mime_type">
%1$s</xliff:g></string>
<string name="error_no_secure_decoder">Toto zařízení nedodává bezpečný dekodér pro
<xliff:g id="mime_type">
%1$s</xliff:g></string>
<string name="storage_permission_denied">Oprávnění přístupu do Úložiště bylo zamítnuto</string>
<string name="view">Shlédnout</string>
<string name="add">Nová mise</string>
<string name="finish">Hotovo</string>
<string name="switch_mode">Přepnout mezi listem a mřížkou</string>
<string name="msg_fetch_filename">Získej jméno souboru</string>
<string name="action_settings">Nastavení</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Výzva reCAPTCHA</string>
<string name="recaptcha_request_toast">Požadována výzva reCAPTCHA</string>
<string name="black_theme_title">Černé</string>
<string name="off">[vypnuto]</string>
<string name="checksum">Checksum</string>
<string name="no_available_dir">Prosím vyberte dostupnou složku pro stažení souborů.</string>
<string name="title_activity_channel">Aktivita kanálu</string>
<string name="user_report">Hlášení uživatele</string>
<string name="large_text">"
Material is the metaphor.
A material metaphor is the unifying theory of a rationalized space and a system of motion.
The material is grounded in tactile reality, inspired by the study of paper and ink, yet
technologically advanced and open to imagination and magic.
Surfaces and edges of the material provide visual cues that are grounded in reality. The
use of familiar tactile attributes helps users quickly understand affordances. Yet the
flexibility of the material creates new affordances that supercede those in the physical
world, without breaking the rules of physics.
The fundamentals of light, surface, and movement are key to conveying how objects move,
interact, and exist in space and in relation to each other. Realistic lighting shows
seams, divides space, and indicates moving parts.
Bold, graphic, intentional.
The foundational elements of print based design typography, grids, space, scale, color,
and use of imagery guide visual treatments. These elements do far more than please the
eye. They create hierarchy, meaning, and focus. Deliberate color choices, edge to edge
imagery, large scale typography, and intentional white space create a bold and graphic
interface that immerse the user in the experience.
An emphasis on user actions makes core functionality immediately apparent and provides
waypoints for the user.
Motion provides meaning.
Motion respects and reinforces the user as the prime mover. Primary user actions are
inflection points that initiate motion, transforming the whole design.
All action takes place in a single environment. Objects are presented to the user without
breaking the continuity of experience even as they transform and reorganize.
Motion is meaningful and appropriate, serving to focus attention and maintain continuity.
Feedback is subtle yet clear. Transitions are efficient yet coherent.
3D world.
The material environment is a 3D space, which means all objects have x, y, and z
dimensions. The z-axis is perpendicularly aligned to the plane of the display, with the
positive z-axis extending towards the viewer. Every sheet of material occupies a single
position along the z-axis and has a standard 1dp thickness.
On the web, the z-axis is used for layering and not for perspective. The 3D world is
emulated by manipulating the y-axis.
Light and shadow.
Within the material environment, virtual lights illuminate the scene. Key lights create
directional shadows, while ambient light creates soft shadows from all angles.
Shadows in the material environment are cast by these two light sources. In Android
development, shadows occur when light sources are blocked by sheets of material at
various positions along the z-axis. On the web, shadows are depicted by manipulating the
y-axis only. The following example shows the card with a height of 6dp.
Resting elevation.
All material objects, regardless of size, have a resting elevation, or default elevation
that does not change. If an object changes elevation, it should return to its resting
elevation as soon as possible.
Component elevations.
The resting elevation for a component type is consistent across apps (e.g., FAB elevation
does not vary from 6dp in one app to 16dp in another app).
Components may have different resting elevations across platforms, depending on the depth
of the environment (e.g., TV has a greater depth than mobile or desktop).
Responsive elevation and dynamic elevation offsets.
Some component types have responsive elevation, meaning they change elevation in response
to user input (e.g., normal, focused, and pressed) or system events. These elevation
changes are consistently implemented using dynamic elevation offsets.
Dynamic elevation offsets are the goal elevation that a component moves towards, relative
to the components resting state. They ensure that elevation changes are consistent
across actions and component types. For example, all components that lift on press have
the same elevation change relative to their resting elevation.
Once the input event is completed or cancelled, the component will return to its resting
elevation.
Avoiding elevation interference.
Components with responsive elevations may encounter other components as they move between
their resting elevations and dynamic elevation offsets. Because material cannot pass
through other material, components avoid interfering with one another any number of ways,
whether on a per component basis or using the entire app layout.
On a component level, components can move or be removed before they cause interference.
For example, a floating action button (FAB) can disappear or move off screen before a
user picks up a card, or it can move if a snackbar appears.
On the layout level, design your app layout to minimize opportunities for interference.
For example, position the FAB to one side of stream of a cards so the FAB wont interfere
when a user tries to pick up one of cards.
"</string>
<string name="logging_verbose">Podrobné</string>
<string name="error_querying_decoders">Nelze zjistit dekodéry zařízení</string>
<string name="error_instantiating_decoder">Nelze doložit dekodér <xliff:g id="decoder_name">
%1$s</xliff:g></string>
<string name="info_labels">Co:\\nŽádost:\\nJazyk obsahu:\\nSlužba:\\nČas GMT:\\nBalíček:\\nVerze:\\nVerze OS:\\nGlobální rozsah IP:</string>
</resources>

View File

@ -301,4 +301,9 @@
"</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="black_theme_title">Schwarz</string>
<string name="reCaptcha_title">reCAPTCHA Herausforderung</string>
<string name="recaptcha_request_toast">reCAPTCHA Herausforderung angefordert</string>
</resources>

View File

@ -54,9 +54,9 @@
<string name="use_tor_title">Tor を使用する</string>
<string name="use_tor_summary">(実験的) 強制的に Tor を経由したトラフィックでダウンロードして、プライバシーを高めます (ビデオのストリーミングはまだサポートされていません)。</string>
<string name="theme_title">外見</string>
<string name="dark_theme_title"></string>
<string name="light_theme_title"></string>
<string name="theme_title">テーマ</string>
<string name="dark_theme_title">ダーク</string>
<string name="light_theme_title">ライト</string>
<string name="settings_category_appearance_title">外観</string>
<string name="settings_category_other_title">その他</string>
@ -304,4 +304,6 @@
<string name="recaptcha_request_toast">reCAPTCHA を要求しました</string>
<string name="black_theme_title">ブラック</string>
</resources>

View File

@ -150,7 +150,7 @@
<string name="msg_url_malform">Verkeerde URL of internet niet beschikbaar</string>
<string name="msg_running">NewPipe is aan het downloaden</string>
<string name="msg_running_detail">Tik voor meer informatie</string>
<string name="msg_wait">Even geduld...</string>
<string name="msg_wait">Even geduld</string>
<string name="msg_copied">Gekopieerd naar klembord.</string>
<string name="no_available_dir">Kies een beschikbare downloadmap.</string>
@ -294,4 +294,10 @@
"</string>
<string name="black_theme_title">Zwart</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA-uitdaging</string>
<string name="recaptcha_request_toast">reCAPTCHA-uitdaging gevraagd</string>
</resources>

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="main_bg_subtitle">Wciśnij wyszukaj, aby rozpocząć</string>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"><string name="main_bg_subtitle">Wciśnij wyszukaj, aby rozpocząć</string>
<string name="install">Instaluj</string>
<string name="cancel">Anuluj</string>
<string name="open_in_browser">Otwórz w przeglądarce</string>
@ -81,7 +81,7 @@
<string name="error_snackbar_action">RAPORT</string>
<string name="what_device_headline">Info:</string>
<string name="what_happened_headline">Co się stało:</string>
<string name="info_labels">Co:\\nŻądanie:\\nJęzyk zawartości:\\nUsługa:\\nCzas GMT:\\nVersion:\\nWersja systemu:\\nGlobalny zakres IP:</string>
<string name="info_labels">Co:\\nŻądanie:\\nJęzyk zawartości:\\nUsługa:\\nCzas GMT:\\nPakiet:\\nWersja systemu:\\nGlobalny zakres IP:</string>
<string name="info_searched_lbl">Szukane dla:</string>
<string name="info_requested_stream_lbl">Żądany strumień:</string>
<string name="your_comment">Twój komentarz (po angielsku):</string>
@ -136,8 +136,29 @@
<string name="msg_url_malform">Zniekształcony URL lub brak internetu</string>
<string name="msg_running">Pobieranie NewPipe</string>
<string name="msg_running_detail">Dotknij dla szczegółów</string>
<string name="msg_wait">Proszę czekać...</string>
<string name="msg_wait">Proszę czekać</string>
<string name="msg_copied">Skopiowano do schowka.</string>
<string name="no_available_dir">Proszę wybrać dostępny katalog pobierania.</string>
<string name="could_not_load_image">Nie można załadować obrazu</string>
<string name="app_ui_crash">Aplikacja/Interfejs uległ awarii</string>
<string name="use_tor_summary">(Eksperymentalne) Wymuś pobieranie przez Tor dla zwiększonej prywatności
(streaming video nie jest jeszcze wspierany).</string>
<string name="error_no_decoder">To urządzenie nie dostarcza dekodera dla
<xliff:g id="mime_type">
%1$s</xliff:g></string>
<string name="error_no_secure_decoder">To urządzenie nie zapewnia bezpiecznego dekodera dla
<xliff:g id="mime_type">
%1$s</xliff:g></string>
<string name="error_instantiating_decoder">Nie można zainicjować dekodera
<xliff:g id="decoder_name">
%1$s</xliff:g></string>
<string name="start">Start</string>
<string name="title_activity_channel">AktywnośćKanału</string>
<string name="action_settings">Ustawienia</string>
<string name="reCaptchaActivity">CAPTCHA</string>
<string name="reCaptcha_title">Rozwiąż ReCAPTCHA</string>
<string name="recaptcha_request_toast">Prośba o rozwiązanie ReCAPTCHA</string>
<string name="error_querying_decoders">Nie można utworzyć zapytania o dekodery urządzenia</string>
</resources>

View File

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="action_settings">Configurações</string>
<string name="audio">Áudio</string>
<string name="youtube_signature_decryption_error">Não foi possível decriptar a assinatura de URL do vídeo.</string>
<string name="your_comment">Seu comentário (em inglês):</string>
<string name="what_happened_headline">O que aconteceu:</string>
<string name="what_device_headline">Informações:</string>
<string name="webm_description">WebM — formato aberto</string>
<string name="view_count_text">%1$s visualizações</string>
<string name="view">Ver</string>
<string name="video_is_age_restricted">Vídeo com restrição de idade. Ative os vídeos com restrição de idade nas configurações.</string>
<string name="video">Vídeo</string>
<string name="autoplay_by_calling_app_summary">Reproduz o vídeo automaticamente quando o NewPipe for aberto a partir de outro app.</string>
<string name="autoplay_by_calling_app_title">Reproduzir automaticamente</string>
<string name="black_theme_title">Preto</string>
<string name="blocked_by_gema">Bloqueado pelo GEMA.</string>
<string name="cancel">Cancelar</string>
<string name="checksum">Checksum</string>
<string name="choose_browser">Escolher navegador</string>
<string name="content">Conteúdo</string>
<string name="content_not_available">Conteúdo não disponível.</string>
<string name="could_not_get_stream">Não foi possível carregar nenhum stream.</string>
<string name="could_not_load_image">Não foi possível carregar a imagem.</string>
<string name="could_not_load_thumbnails">Não foi possível carregar os thumbnails.</string>
<string name="dark_theme_title">Escuro</string>
<string name="default_audio_format_title">Formato de áudio padrão</string>
<string name="default_resolution_title">Resolução padrão</string>
<string name="delete">Excluir</string>
<string name="detail_dislikes_img_view_description">Não curtidas</string>
<string name="detail_likes_img_view_description">Curtidas</string>
<string name="download">Baixar</string>
<string name="download_dialog_title">Baixar</string>
<string name="error_details_headline">Detalhes:</string>
<string name="err_dir_create">Não foi possível criar pasta de download \'%1$s\'</string>
<string name="error_report_button_text">Reportar erro por e-mail</string>
<string name="error_report_title">Relatório de erro</string>
<string name="error_snackbar_action">RELATÓRIO</string>
<string name="error_snackbar_message">Desculpe, ocorreram alguns erros.</string>
<string name="finish">OK</string>
<string name="general_error">Erro</string>
<string name="info_dir_created">Pasta de download criada \'%1$s\'</string>
<string name="install">Instalar</string>
<string name="light_theme_title">Claro</string>
<string name="msg_error">Erro</string>
<string name="msg_copied">Copiado para a área de transferência.</string>
<string name="msg_name">Nome do arquivo</string>
<string name="msg_running_detail">Toque para detalhes</string>
<string name="msg_running">NewPipe baixando</string>
<string name="msg_server_unsupported">Servidor não suportado</string>
<string name="msg_wait">Aguarde…</string>
<string name="network_error">Erro de rede</string>
<string name="next_video_title">Próximo vídeo</string>
<string name="open_in_browser">Abrir no navegador</string>
<string name="pause">Pausar</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Desafio reCAPTCHA</string>
<string name="recaptcha_request_toast">Desafio reCAPTCHA solicitado</string>
<string name="report_error">Reportar um erro</string>
<string name="retry">Tentar de novo</string>
<string name="screen_rotation">Rotação</string>
<string name="search_language_title">Idioma preferido de conteúdo</string>
<string name="settings">Configurações</string>
<string name="settings_activity_title">Configurações</string>
<string name="settings_category_appearance_title">Aparência</string>
<string name="settings_category_other_title">Outros</string>
<string name="settings_category_video_audio_title">Vídeo &amp; Áudio</string>
<string name="settings_title">Configurações</string>
<string name="share">Compartilhar</string>
<string name="share_dialog_title">Compartilhar com</string>
<string name="show_age_restricted_content_title">Exibir conteúdo com restrição de idade</string>
<string name="show_next_and_similar_title">Exibir próximo vídeo e relacionados</string>
<string name="similar_videos_btn_text">Vídeos relacionados</string>
<string name="sorry_string">Desculpe, isto não deveria acontecer.</string>
<string name="start">Iniciar</string>
<string name="storage_permission_denied">Permissão para acessar o armazenamento negada</string>
<string name="switch_mode">Alternar entre lista e grade</string>
<string name="text">Texto</string>
<string name="theme_title">Tema</string>
<string name="upload_date_text">Publicado em %1$s</string>
<string name="url_not_supported_toast">URL não suportada</string>
<string name="default_language_value">pt</string>
<string name="duration_live">ao vivo</string>
<string name="downloads">Downloads</string>
<string name="downloads_title">Downloads</string>
<string name="did_you_mean">Você quis dizer: %1$s ?</string>
<string name="m4a_description">m4a — melhor qualidade</string>
<string name="add">Nova missão</string>
<string name="app_ui_crash">App/interface parou</string>
<string name="background_player_name">Player NewPipe em segundo plano</string>
<string name="background_player_playing_toast">Reproduzindo em segundo plano</string>
<string name="could_not_setup_download_menu">Não foi possível preparar o menu de download.</string>
<string name="detail_thumbnail_view_description">Thumbnail do vídeo</string>
<string name="detail_uploader_thumbnail_view_description">Thumbnail do usuário que enviou o vídeo</string>
<string name="download_path_audio_dialog_title">Informe o local para download de áudios.</string>
<string name="download_path_audio_summary">Local para salvar áudios baixados</string>
<string name="download_path_audio_title">Local de download de áudio</string>
<string name="download_path_dialog_title">Informe o local para download de vídeos</string>
<string name="download_path_summary">Local para salvar vídeos baixados</string>
<string name="download_path_title">Local de download de vídeo</string>
<string name="enable_background_audio">Reproduzir em segundo plano</string>
<string name="error_drm_not_supported">Conteúdo protegido não é suportado em versões de API anterior a 18</string>
<string name="error_drm_unknown">Ocorreu um erro DRM desconhecido</string>
<string name="error_drm_unsupported_scheme">Este dispositivo não suporta o método DRM necessário</string>
<string name="error_instantiating_decoder">Não foi possível inicializar o decodificador %1$s</string>
<string name="error_no_decoder">Este dispositivo não possui um decodificador para %1$s</string>
<string name="error_no_secure_decoder">Este dispositivo não possui um decodificador seguro para %1$s</string>
<string name="error_querying_decoders">Não foi possível consultar os decodificadores do dispositivo</string>
<string name="info_requested_stream_lbl">Stream requisitado:</string>
<string name="info_searched_lbl">Busca por:</string>
<string name="kore_not_found">App Kore não instalado. Instalar?</string>
<string name="light_parsing_error">Não foi possível interpretar completamente o site.</string>
<string name="list_thumbnail_view_description">Thumbnail do vídeo</string>
<string name="live_streams_not_supported">Transmissões ao vivo ainda não são suportadas.</string>
<string name="loading">Carregando</string>
<string name="logging">Nível de log</string>
<string name="logging_normal">Normal</string>
<string name="logging_verbose">Detalhado</string>
<string name="main_bg_subtitle">Toque em busca para começar</string>
<string name="msg_exists">Arquivo já existe</string>
<string name="msg_threads">Threads</string>
<string name="msg_url">URL de download</string>
<string name="msg_url_malform">URL inválida ou internet indisponível</string>
<string name="no_available_dir">Selecione um diretório de download.</string>
<string name="no_player_found">Nenhum player de stream encontrado. Instalar VLC?</string>
<string name="parsing_error">Não foi possível interpretar o site.</string>
<string name="play_audio">Áudio</string>
<string name="play_btn_text">Reproduzir</string>
<string name="play_with_kodi_title">Reproduzir com Kodi</string>
<string name="search">Buscar</string>
<string name="search_page">Buscar página:</string>
<string name="show_play_with_kodi_summary">Exibir opção para reprodizir víedeo pela central de mídia Kodi.</string>
<string name="use_exoplayer_summary">Experimental</string>
<string name="use_exoplayer_title">Usar ExoPlayer</string>
<string name="use_external_audio_player_title">Usar reprodutor de áudio externo</string>
<string name="use_external_video_player_title">Usar reprodutor de vídeo externo</string>
<string name="use_tor_summary">(Experimental) Forçar o download de conteúdo através do Tor para maior privacidade (streaming de vídeos ainda não suportado).</string>
<string name="use_tor_title">Usar Tor</string>
<string name="user_report">Relatório do usuário</string>
<string name="show_play_with_kodi_title">Exibir opção \"Reproduzir com Kodi\"</string>
<string name="title_activity_channel">Atividade do canal</string>
<string name="msg_fetch_filename">Buscar nome do arquivo</string>
<string name="info_labels">O que:\nRequisição:\nIdioma do conteúdo:\nServiço:\nHora GMT:\nPacote:\nVersão:\nVersão SO:\nFaixa de IP:</string>
<string name="off">[off]</string>
</resources>

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="view_count_text">%1$s просмотров</string>
<string name="upload_date_text">Опубликовано %1$s</string>
<string name="no_player_found">Ни одного потокового проигрывателя не было найдено. Установить?</string>
@ -69,7 +69,7 @@
<string name="download_path_audio_dialog_title">Введите путь к папке для загрузки аудио</string>
<string name="main_bg_subtitle">Нажмите поиск чтобы начать</string>
<string name="msg_wait">Пожалуйста подождите...</string>
<string name="msg_wait">Пожалуйста подождите</string>
<string name="msg_exists">Файл уже существует</string>
<string name="msg_threads">Потоки</string>
<string name="finish">Окей</string>
@ -143,4 +143,18 @@
<string name="storage_permission_denied">В доступе к хранилищу было отказано</string>
<string name="use_exoplayer_title">Использовать ExoPlayer</string>
<string name="msg_fetch_filename">Получить название файла</string>
<string name="could_not_load_thumbnails">Невозможно загрузить все миниатюры</string>
<string name="youtube_signature_decryption_error">Невозможно расшифровать url у видео</string>
<string name="could_not_get_stream">Потоковое видео недоступно.</string>
<string name="off">[отключен]</string>
<string name="error_no_decoder">Это устройство не поддерживает декодер для <xliff:g id="mime_type">%1$s</xliff:g></string>
<string name="error_no_secure_decoder">Это устройство не поддерживает безопасный декодер для <xliff:g id="mime_type">%1$s</xliff:g></string>
<string name="error_querying_decoders">На этом устройстве недоступен декодер.</string>
<string name="error_instantiating_decoder">Невозможно инициировать декодер <xliff:g id="decoder_name"> 1%1$s</xliff:g> 2</string>
<string name="use_exoplayer_summary">Эксперементально</string>
<string name="view">Воспроизвести</string>
<string name="switch_mode">Переключатель между списком и сеткой</string>
</resources>

View File

@ -165,4 +165,6 @@
<string name="recaptcha_request_toast">Zahteva izziva reCAPTCHA</string>
<string name="info_labels">Predmet:\\nZahteva:\\nJezik vsebine:\\nStoritev:\\nČas v GMT:\\nPaket:\\nRazličica:\\nRazličica OS:\\nObseg IP:</string>
<string name="black_theme_title">Črna</string>
</resources>

View File

@ -306,4 +306,6 @@
<string name="recaptcha_request_toast">Решите reCAPTCHA стопку</string>
<string name="black_theme_title">Црна</string>
</resources>

View File

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources translatable="false">
<!-- Categories -->
<string name="settings_category_video_audio">settings_category_video_audio</string>
<string name="settings_category_appearance">settings_category_appearance</string>
<string name="settings_content_options">settings_content_options</string>
<string name="settings_category_other">settings_category_other</string>
<string name="settings_category_video_audio" translatable="false">settings_category_video_audio</string>
<string name="settings_category_appearance" translatable="false">settings_category_appearance</string>
<string name="settings_content_options" translatable="false">settings_content_options</string>
<string name="settings_category_other" translatable="false">settings_category_other</string>
<!-- Key values -->
<string name="download_path_key">download_path</string>
<string name="download_path_audio_key">download_path_audio</string>
<string name="use_external_video_player_key">use_external_video_player</string>
<string name="use_external_audio_player_key">use_external_audio_player</string>
<string name="autoplay_through_intent_key">autoplay_through_intent</string>
<string name="use_exoplayer_key">use_exoplayer</string>
<string name="download_path_key" translatable="false">download_path</string>
<string name="download_path_audio_key" translatable="false">download_path_audio</string>
<string name="use_external_video_player_key" translatable="false">use_external_video_player</string>
<string name="use_external_audio_player_key" translatable="false">use_external_audio_player</string>
<string name="autoplay_through_intent_key" translatable="false">autoplay_through_intent</string>
<string name="use_exoplayer_key" translatable="false">use_exoplayer</string>
<string name="default_resolution_key">default_resolution_preference</string>
<string name="default_resolution_value">360p</string>
<string name="default_resolution_key" translatable="false">default_resolution_preference</string>
<string name="default_resolution_value" translatable="false">360p</string>
<string-array name="resolution_list">
<item>720p</item>
<item>360p</item>
@ -22,10 +22,10 @@
<item>144p</item>
</string-array>
<string name="show_play_with_kodi_key">show_play_with_kodi</string>
<string name="show_play_with_kodi_key" translatable="false">show_play_with_kodi</string>
<string name="theme_key">theme</string>
<string name="default_theme_value">@string/light_theme_title</string>
<string name="theme_key" translatable="false">theme</string>
<string name="default_theme_value" translatable="false">@string/light_theme_title</string>
<string-array name="theme_description_list">
<item>@string/light_theme_title</item>
<item>@string/dark_theme_title</item>
@ -35,8 +35,8 @@
<item>@string/dark_theme_title</item>
</string-array>
<string name="default_audio_format_key">default_audio_format</string>
<string name="default_audio_format_value">m4a</string>
<string name="default_audio_format_key" translatable="false">default_audio_format</string>
<string name="default_audio_format_value" translatable="false">m4a</string>
<string-array name="audio_format_description_list">
<item>@string/webm_description</item>
<item>@string/m4a_description</item>
@ -46,9 +46,9 @@
<item>m4a</item>
</string-array>
<string name="show_next_video_key">show_next_video</string>
<string name="show_next_video_key" translatable="false">show_next_video</string>
<string name="default_language_value">en</string>
<string name="search_language_key">search_language</string>
<string name="search_language_key" translatable="false">search_language</string>
<!-- TODO: scrape these programmatically, then store in a local cache -->
<!-- alternatively, load these from some local android data store -->
<string-array name="language_codes">
@ -209,6 +209,6 @@
<item>日本語</item>
<item>한국어</item>
</string-array>
<string name="show_age_restricted_content">show_age_restricted_content</string>
<string name="use_tor_key">use_tor</string>
<string name="show_age_restricted_content" translatable="false">show_age_restricted_content</string>
<string name="use_tor_key" translatable="false">use_tor</string>
</resources>

View File

@ -180,7 +180,7 @@
<string name="md5" translatable="false">MD5</string>
<string name="sha1" translatable="false">SHA1</string>
<string name="title_activity_channel">ChannelActivity</string>
<string name="large_text">
<string name="large_text" translatable="false">
"Material is the metaphor.\n\n"
"A material metaphor is the unifying theory of a rationalized space and a system of motion."