/*! psdle 3.1.5 (c) RePod, MIT https://github.com/RePod/psdle/blob/master/LICENSE - base - compiled 2017-11-29 */ var repod = {}; repod.psdle = { version : "Testing", autocomplete_cache : [], gamelist : [], gamelist_cur : [], e_inject_cache : [], id_cache : {}, lang : {}, pid_cache : {}, sys_cache : {}, type_cache : {}, prop_cache : [], lang_cache : {"ar":{"def":"ae","ae":{"author":"Oakkom","rtl":true,"local":"العربية","startup":{"apis":"أختار الميزات التي تود استخدامها حرك المؤشر فوقها للمزيد من المعاومات
بعض الميزات لا يمكن ابطالها","wait":"...جار التحميل","start":"ابدأ"},"columns":{"icon":"الأيقونة","name":"الأسم","platform":"نوع الجهاز","size":"الحجم","date":"التاريخ"},"labels":{"exportView":"أحفظ الائحة","page":"الصفحة"},"categories":{"downloadable_game":"الألعاب","demo":"الإصدارات التجريبية","add_on":"العناصر الأضافية","unlock":"Unlocks","unlock_key":"Unlock Keys","avatar":"صٌور رمزية","theme":"السمات","other":"اخرى","other_game_related":"other_game_related","game_content":"محتويات اللعبة","tumbler_index":"tumbler_index","home":"المنزل","ungrouped_game":"ungrouped_game","promo_content":"محتويات ترويجية","beta":"اصدار تجريبي","application":"التطبيقات","extras":"إضافات","unknown":"مجهول"},"strings":{"delimiter":":أدخل الفواصل","yes":"نعم","no":"لا","search":"أبحث","dlQueue":"لائحة التنزيل","dlList":"لائحة الألعاب","plus":"ضبط ظاهرية العاب PlayStation Plus","queueAll":"الكل","queueTo":"حَمل الى $SYS$","noTarget":"لا يوجد جهاز للتحميل اليه","exportColumnName":"أسم العمود","exportProperty":"الخصائص"},"apis":[{"internalID":"api_entitle","name":"تاريخ الشراء","desc":"لا يمكن عدم التفعيل تستعمل بيانات شىرائك ليتم تشكيل الائحة و تحديد وضع PlayStation Plus"},{"internalID":"api_game","name":"الفهرس","desc":".فعل للحصول على معاومات اضافية عن الألعاب, منها الأنواع. تزيد الوقت اللازم لتحميل اللائحة"},{"internalID":"api_queue","name":"لائحة التنزيل","desc":".تسمح بزيادة أو حذف العناصر من لائحة التنزيل, تحصل على معلومات لائحة التنزيل و عدد الأجهزة المفعلة على الحساب"},{"internalID":"api_pstv","name":"PS TV","desc":"الكشف عن الألعاب لجهاز PS TV متوافر فقط لمتجر en-us","disabled":true}]}},"de":{"def":"de","de":{"author":"/u/_MrBubbles","local":"Deutsch","startup":{"wait":"Seite wird geladen, bitte warten."},"columns":{"icon":"Symbol","name":"Name","platform":"Plattform","size":"Größe","date":"Datum"},"labels":{"exportView":"Exportiere Ansicht","page":"Seite"},"categories":{"downloadable_game":"Spiele","demo":"Demos","add_on":"Erweiterungen","unlock":"Freischaltbares","avatar":"Spielerbilder","theme":"Themen","application":"Anwendungen","unknown":"Unbekannt"},"strings":{"delimiter":"Geben sie ein Trennzeichen ein","yes":"Ja","no":"Nein","search":"Suche"}}},"en":{"def":"us","us":{"local":"English","startup":{"apis":"Select which store features you would like to use, hover for more details.
Certain store features may not be disabled.","wait":"Please wait.","start":"Start"},"columns":{"icon":"Icon","name":"Name","platform":"Platform","size":"Size","date":"Date"},"labels":{"exportView":"Export View","page":"Page"},"categories":{"downloadable_game":"Games","demo":"Demos","add_on":"Add-ons","unlock":"Unlocks","unlock_key":"Unlock Keys","avatar":"Avatars","theme":"Themes","other":"other","other_game_related":"other_game_related","game_content":"game_content","tumbler_index":"tumbler_index","home":"home","ungrouped_game":"ungrouped_game","promo_content":"promo_content","beta":"Betas","application":"Applications","extras":"Extras","unknown":"Unknown"},"strings":{"delimiter":"Enter separator:","yes":"Yes","no":"No","search":"Search","dlQueue":"Queue","dlList":"List","plus":"Toggle visibility of PS+ titles.","queueAll":"All","queueTo":"Download to $SYS$","noTarget":"There is no available target console to send to.","exportColumnName":"Column Name","exportProperty":"Property"},"apis":[{"internalID":"api_entitle","name":"Purchase History","desc":"Cannot be disabled. Uses your purchase history to create the download list and determine PlayStation Plus status."},{"internalID":"api_game","name":"Catalog","desc":"Enable for additional game information, including categories. Increases time needed to create the download list."},{"internalID":"api_queue","name":"Download Queue","desc":"Allows adding and removing items from the download queue. Reads download queue information and console activation status."},{"internalID":"api_pstv","name":"PS TV","desc":"Detect PS TV compatible titles. Only supported on \"en-us\" web store (not PSDLE language).","disabled":true}]}},"es":{"def":"es","es":{"author":"Positronic-Brain (#18)","local":"Español","startup":{"apis":"Elija APIs a utilizar. Coloque el puntero sobre el API para visualizar detalles.
Algunos APIs no pueden ser deshabilitados.","wait":"Por favor espere...","start":"Inicio"},"columns":{"icon":"Ícono","name":"Nombre","platform":"Plataforma","size":"Tamaño","date":"Fecha"},"labels":{"exportView":"Exportar vista","page":"Página"},"categories":{"downloadable_game":"Juegos","demo":"Demos","add_on":"Complementos","unlock":"Desbloqueables","unlock_key":"Llaves","avatar":"Avatares","theme":"Temas","other":"Otros","other_game_related":"Otros","game_content":"Contenidos","tumbler_index":"tumbler_index","home":"Home","ungrouped_game":"No Clasificados","promo_content":"Promociones","beta":"Betas","application":"Aplicaciones","extras":"Extras","unknown":"Desconocido"},"strings":{"delimiter":"Ingrese delimitador:","yes":"Sí","no":"No","search":"Búsqueda","dlQueue":"Cola de Descargas","dlList":"Lista de Descargas","plus":"Alterna la visibilidad de los títulos de PS Plus.","queueAll":"Todos","queueTo":"Descargar a $SYS$"},"apis":[{"internalID":"api_entitle","name":"Licencias","desc":"No puede ser deshabilitado. Accede a la información de las compras y se utiliza para construir la lista de descargas, determinar el estado de PS Plus y otras cosas."},{"internalID":"api_game","name":"Catálogo","desc":"Accede a información adicional para determinar la consola adecuada, reparar imágenes rotas, y más."},{"internalID":"api_queue","name":"Cola de Descargas","desc":"Permite añadir y remover entradas a la cola de descargas. Lee la información de la cola de descargas y el número de consolas activadas en la cuenta."},{"internalID":"api_pstv","name":"PS TV","desc":"Detecta títulos compatibles con PS TV. Sólo soportado en la tienda de la región \"en-us\" (región, no idioma de PSDLE).","disabled":true}]}},"fr":{"def":"fr","fr":{"author":"cramoisan (#9)","local":"Français","startup":{"apis":"Sélectionner l'API à utiliser; Survoler pour plus de détails.
Certaines APIs ne peuvent pas être désactivées.","wait":"Merci de patienter.","start":"Commencer"},"columns":{"icon":"Icône","name":"Nom","platform":"Plate-forme","size":"Taille","date":"Date"},"labels":{"exportView":"Exporter la vue","page":"Page"},"categories":{"downloadable_game":"Jeux","demo":"Démos","add_on":"DLCs","unlock":"Codes de déverouillage","avatar":"Avatars","theme":"Thèmes","application":"Applications","unknown":"Inconnu"},"strings":{"delimiter":"Entrer le délimiteur:","yes":"Oui","no":"Non","search":"Rechercher","dlQueue":"Queue","dlList":"Liste","plus":"Afficher/cacher les titres PS+.","queueAll":"Tous","queueTo":"Télécharger sur $SYS$"},"apis":[{"internalID":"api_entitle","name":"Droits","desc":"Ne peut pas être désactivée. Accède aux informations d'achat afin de créer la liste de téléchargement, et déterminer le statut PS+, ainsi que d'autres choses."},{"internalID":"api_game","name":"Catalogue","desc":"Accède aux informations supplémentaires des jeux pour déterminer la plate-forme, corriger les liens d'images cassés, et plus."},{"internalID":"api_queue","name":"Liste de téléchargement","desc":"Permet d'ajouter ou de retirer des articles de la liste de téléchargement. Lit les informations de la liste de téléchargement et le nombre de consoles activées sur le compte."},{"internalID":"api_pstv","name":"PS TV","desc":"Détecte les titres compatibles PS TV. Ne marche que sur le store \"en-us\" (différent de la langue choisie pour PSDLE).","disabled":true}]}},"ja":{"def":"jp","jp":{"author":"k0ta0uchi (#36)","local":"日本語","startup":{"apis":"使用したいAPIを選択してください。ホバーすることによって詳細を確認することができます。
特定のAPIは無効化することが出来ない可能性があります。","wait":"お待ちください。","start":"開始"},"columns":{"icon":"アイコン","name":"ゲーム名","platform":"プラットフォーム","size":"サイズ","date":"日付"},"labels":{"exportView":"ビューをエクスポート","page":"ページ"},"categories":{"downloadable_game":"ゲーム","demo":"デモ","add_on":"アドオン","unlock":"アンロック","unlock_key":"アンロックキー","avatar":"アバター","theme":"テーマ","other":"その他","other_game_related":"その他ゲーム関連","game_content":"ゲームコンテンツ","tumbler_index":"タンブラーインデックス","home":"ホーム","ungrouped_game":"未分類のゲーム","promo_content":"プロモコンテンツ","beta":"ベータ","application":"アプリケーション","extras":"エキストラ","unknown":"不明"},"strings":{"delimiter":"区切り文字を入力してください:","yes":"はい","no":"いいえ","search":"検索","dlQueue":"待機リスト","dlList":"リスト","plus":"PS+タイトルの表示を切り替える。","queueAll":"全て","queueTo":"$SYS$にダウンロード","noTarget":"送信可能なコンソールが存在しません。","exportColumnName":"カラム名","exportProperty":"プロパティ"},"apis":[{"internalID":"api_entitle","name":"エンタイトルメント","desc":"無効化することは出来ません。購入情報にアクセスし、ダウンロードリストを作成、PS+の状態を確認、その他を行います。"},{"internalID":"api_game","name":"カタログ","desc":"ゲームの追加情報にアクセスし、正確なコンソールの把握、壊れたイメージの修正、その他を行います。"},{"internalID":"api_queue","name":"ダウンロード待機リスト","desc":"ダウンロード待機リストからアイテムの追加や削除の許可します。ダウンロード待機リスト情報とアカウントで有効化されたコンソールの数を読み込みます。"},{"internalID":"api_pstv","name":"PS TV","desc":"PS TV互換タイトルを検知します。\"en-us\"ウェブストアでのみサポートされます。(PSDLEの言語設定ではありません)","disabled":true}]}},"nl":{"def":"nl","nl":{"author":"Tricksy","local":"Nederlands","startup":{"apis":"Selecteer welke APIs je wilt gebruiken, hover voor meer details.
Sommige APIs kunnen niet gedeselecteerd worden.","wait":"Even geduld alstublieft.","start":"Start"},"columns":{"icon":"Icoon","name":"Naam","platform":"Platform","size":"Grootte","date":"Datum"},"labels":{"exportView":"Exporteer View","page":"Pagina"},"categories":{"downloadable_game":"Spellen","demo":"Demos","add_on":"Add-ons","unlock":"Ontgrendelingen","unlock_key":"Ontgrendelings Sleutels","avatar":"Avatars","theme":"Themas","other":"anders","other_game_related":"ander_spel_gerelateerd","game_content":"spel_inhoud","tumbler_index":"tumbler_index","home":"begin","ungrouped_game":"ongegroepeerd_spel","promo_content":"promo_inhoud","beta":"Betas","application":"Applicaties","extras":"Extras","unknown":"Onbekend"},"strings":{"delimiter":"Voer delimiter in:","yes":"Ja","no":"Nee","search":"Zoeken","dlQueue":"Wachtrij","dlList":"Lijst","plus":"Laat PS+ titels zien.","queueAll":"Alles","queueTo":"Download naar $SYS$","noTarget":"Er is geen beschikbare console om naar toe te sturen","exportColumnName":"Kolom Naam","exportProperty":"Inhoud"},"apis":[{"internalID":"api_recht","name":"Rechten","desc":"Kan niet uitgeschakeld worden. Geeft toegang tot betalings informatie om te gebruiken voor de download lijst, bepaald PS+ status, en meer."},{"internalID":"api_spel","name":"Catalogus","desc":"Geeft toegang tot extra spel informatie om de goede console te bepalen, kapotte images te fixen, en meer."},{"internalID":"api_wachtrij","name":"Download Wachtrij","desc":"Geeft toegang tot het toevoegen en verwijderen van spellen op de download wachtrij. Leest de download wachtrij informatie en het aantal geactiveerde consoles op het account."},{"internalID":"api_pstv","name":"PS TV","desc":"Detecteert titels die met PS TV werken. Werkt alleen op de \"en-us\" web store (niet PSDLE taal).","disabled":true}]}},"pt":{"def":"br","br":{"author":"msvalle (#33)","local":"Português (Brasil)","startup":{"apis":"Selecione quais APIs você gostaria de usar, passe o mouse por cima para mais detalhes.
Algumas APIs não podem ser desabilitadas.","wait":"Por favor aguarde.","start":"Iniciar"},"columns":{"icon":"Ícone","name":"Nome","platform":"Platforma","size":"Tamanho","date":"Data"},"labels":{"exportView":"Exportar Visualização","page":"Página"},"categories":{"downloadable_game":"Jogos","demo":"Demos","add_on":"Expansões","unlock":"Desbloqueáveis","unlock_key":"Chaves","avatar":"Avatarws","theme":"Temas","other":"Outros","other_game_related":"Outros","game_content":"Conteúdo","tumbler_index":"tumbler_index","home":"Home","ungrouped_game":"Não classificado","promo_content":"Promoções","beta":"Betas","application":"Aplicações","extras":"Extras","unknown":"Desconhecido"},"strings":{"delimiter":"Entre delimitador:","stringify_error":"Erro: Navegador não possui JSON.stringify.","yes":"Sim","no":"Não","search":"Buscar por título do jogo","dlQueue":"Fila de downlaod","dlList":"Lista de download","plus":"Alterna ver títulos PS+.","queueAll":"Todos","queueTo":"Download para $SYS$"},"apis":[{"internalID":"api_entitle","name":"Licenças","desc":"Não pode ser desabilitado. Acessa informção de compra usada para criar a lista de download, determinar o status da PS+, e outras coisas."},{"internalID":"api_game","name":"Catálogo","desc":"Acessa informação adicional do jogo para determinar o console certo, corrigir imagens quebradas, e mais."},{"internalID":"api_queue","name":"Fila de download","desc":"Permite adicionar e remover itens da lista de download. Lê informação da lista de download e quantidade de consoles ativos na conta."},{"internalID":"api_pstv","name":"PS TV","desc":"Detecta títulos compatíveis com a PS TV. Somente suportado na web store \"en-us\" (não o idioma do PSDLE).","disabled":true}]}},"ru":{"def":"ru","ru":{"author":"GenosseArroganz","local":"Русский","startup":{"apis":"Выберите необходимые компоненты (для описания наведите на них указатель мыши).
Некоторые компоненты обязательны и не могут быть отключены.","wait":"Подождите…","start":"Начать!"},"columns":{"icon":"Иконка","name":"Название","platform":"Платформа","size":"Размер","date":"Дата"},"labels":{"exportView":"Экспорт списка","page":"Страница"},"categories":{"downloadable_game":"Игры","demo":"Демо","add_on":"Дополнения","unlock":"Разблокировки","unlock_key":"Ключи разблокировки","avatar":"Аватары","theme":"Темы","other":"Другое","other_game_related":"Другой связанный контент","game_content":"Игровой контент","tumbler_index":"tumbler_index","home":"PlayStation Home","ungrouped_game":"Без категории","promo_content":"Промо-материалы","beta":"Бета","application":"Приложения","extras":"Дополнительно","unknown":"Неизвестно"},"strings":{"delimiter":"Введите разделитель:","yes":"Да","no":"Нет","search":"Поиск","dlQueue":"Очередь загрузок","dlList":"Список загрузок","plus":"Скрыть/показать игры PS+","queueAll":"Все","queueTo":"Загрузить на $SYS$","noTarget":"Не обнаружено подходящего устройства","exportColumnName":"Название столбца","exportProperty":"Свойство"},"apis":[{"internalID":"api_entitle","name":"История покупок","desc":"Нельзя отключить. История ваших покупок используется для создания списка загрузок и определения статуса PlayStation Plus."},{"internalID":"api_game","name":"Каталог","desc":"Больше опций отображения списка, включая категории. Увеличивает время, необходимое для подготовки списка загрузок."},{"internalID":"api_queue","name":"Очередь загрузок","desc":"Возможность формировать очередь загрузок. Доступ к информации об очереди загрузок и активированных консолях на аккаунте."},{"internalID":"api_pstv","name":"PS TV","desc":"Определяет совместимые с PS TV игры и приложения. Только для американского магазина.","disabled":true}]}},"zh":{"def":"tw","tw":{"author":"Alexsh","local":"中文 (繁體)","startup":{"apis":"請選擇要使用的PS Store功能,滑鼠游標停留以取得項目的詳細資訊
部份功能可能無法關閉","wait":"請稍候...","start":"開始"},"columns":{"icon":"圖示","name":"名稱","platform":"平台","size":"容量","date":"購買日期"},"labels":{"exportView":"匯出","page":"Page"},"categories":{"downloadable_game":"遊戲","demo":"體驗版","add_on":"追加內容","unlock":"關卡","unlock_key":"解鎖","avatar":"個人造型","theme":"主題","other":"other","other_game_related":"other_game_related","game_content":"game_content","tumbler_index":"tumbler_index","home":"home","ungrouped_game":"ungrouped_game","promo_content":"promo_content","beta":"Betas","application":"應用程式","extras":"Extras","unknown":"Unknown"},"strings":{"delimiter":"分隔字元:","yes":"是","no":"否","search":"搜尋","dlQueue":"佇列","dlList":"清單","plus":"選擇顯示PS+遊戲","queueAll":"全部","queueTo":"下載到$SYS$","noTarget":"沒有可傳送的主機。","exportColumnName":"欄位名稱","exportProperty":"屬性"},"apis":[{"internalID":"api_entitle","name":"購買記錄","desc":"此項不可關閉,將使用購買記錄來建立下載清單及確認PlayStation Plus狀態。"},{"internalID":"api_game","name":"類別","desc":"開啟以取得更多遊戲資訊,包括類別及購買時間來建立下載清單。"},{"internalID":"api_queue","name":"下載佇列","desc":"允許從下載佇列增加/移除項目。"},{"internalID":"api_pstv","name":"PS TV","desc":"偵測Playstation Vita TV相容遊戲。目前只支援en-us區域","disabled":true}]},"cn":{"author":"Alexsh","local":"中文 (简体)","startup":{"apis":"请选择要使用的PS Store功能,鼠标光标停留以取得项目的详细信息
部份功能可能无法关闭","wait":"请稍候...","start":"开始"},"columns":{"icon":"图示","name":"名称","platform":"平台","size":"容量","date":"购买日期"},"labels":{"exportView":"汇出","page":"Page"},"categories":{"downloadable_game":"游戏","demo":"体验版","add_on":"追加内容","unlock":"关卡","unlock_key":"解锁","avatar":"个人造型","theme":"主题","other":"other","other_game_related":"other_game_related","game_content":"game_content","tumbler_index":"tumbler_index","home":"home","ungrouped_game":"ungrouped_game","promo_content":"promo_content","beta":"Betas","application":"应用程序","extras":"Extras","unknown":"Unknown"},"strings":{"delimiter":"分隔字符:","yes":"是","no":"否","search":"搜寻","dlQueue":"队列","dlList":"清单","plus":"选择显示PS+游戏","queueAll":"全部","queueTo":"下载到$SYS$","noTarget":"没有可传送的主机。","exportColumnName":"域名","exportProperty":"属性"},"apis":[{"internalID":"api_entitle","name":"购买记录","desc":"此项不可关闭,将使用购买记录来建立下载列表及确认PlayStation Plus状态。"},{"internalID":"api_game","name":"类别","desc":"开启以取得更多游戏信息,包括类别及购买时间来建立下载清单。"},{"internalID":"api_queue","name":"下载队列","desc":"允许从下载队列增加/移除项目。"},{"internalID":"api_pstv","name":"PS TV","desc":"侦测Playstation Vita TV兼容游戏。目前只支持en-us区域","disabled":true}]}}}, determineLanguage: function(e,f) { e = (e) ? e.split("-") : this.config.language.split("-"); if (f === true) { this.lang = {}; this.lang = $.extend(true,{},this.lang_cache.en.us); } if (e[0] in this.lang_cache) { if (e.slice(-1) in this.lang_cache[e[0]]) { if (f === true) { $.extend(true,this.lang,this.lang_cache[e[0]][e.slice(-1)]); this.sanitizeLanguage(); } e = e[0]+"-"+e.slice(-1); } else { if (f === true) { $.extend(true,this.lang,this.lang_cache[e[0]][this.lang_cache[e[0]].def]); this.sanitizeLanguage(); } e = e[0]+"-"+this.lang_cache[e[0]].def; } } else { e = "en-us"; } if (!!this.lang.rtl && this.lang.rtl == true) { $("#muh_games_container").addClass("rtl"); } else { $("#muh_games_container").removeClass("rtl"); } return e; }, sanitizeLanguage: function() { //Send help. var a = JSON.stringify(this.lang, function(key, value) { if(typeof value === "string") { return value.replace(/'/g, "'"); } return value; }); this.lang = JSON.parse(a); }, generateLangBox: function(e) { var temp = ""; return temp; }, config: {"timerID": 0}, init: function() { console.log("PSDLE | Init."); var that = this, match = window.location.pathname.match(/^\/([a-z\-]+)\//i), l = (match !== null && match.length > 1 ? match.pop() : "en-us").toLowerCase(), l2 = l.split("-"), valkAPI = (typeof window.valkyrie == "object"); this.config = { valkyrie : valkAPI, valkyrieInstance: Ember.Application.NAMESPACES_BY_ID["valkyrie-storefront"].__container__ } //valkAPI && alert("PSDLE detected the new Valkyrie store API.\nSupport for this is currently experimental!\nAny issues should be reported here, along with region:\nhttps://github.com/RePod/psdle/issues/40") this.config = $.extend(this.config,{ game_page : window.location.origin + "/" +(valkAPI ? l+"/product/" : "#!/" + l + "/cid="), game_api : "https://store.playstation.com/store/api/chihiro/00_09_000/container/"+l2.slice(-1)+"/"+l2[0]+"/999/", lastsort : "", lastsort_r : false, language : l, deep_search : false, deep_waiting : 0, deep_current : 0, last_search : "", dlQueue : { base: "/kamaji/api/chihiro/00_09_000/user/notification/download", ps4: "/kamaji/api/chihiro/00_09_000/gateway/store/v1/users/me/notification/download", status: "/kamaji/api/chihiro/00_09_000/user/notification/download/status", status2: "/kamaji/api/chihiro/00_09_000/gateway/store/v1/users/me/notification/download/status" }, use_queue : false, active_consoles : {}, tag_line : "
Night Mode
Support PSDLE | Submit Bug/Translation
", has_plus : false, check_tv : false, tv_url : { "en-us": atob("L2NoaWhpcm8tYXBpL3ZpZXdmaW5kZXIvVVMvZW4vMTkvU1RPUkUtTVNGNzcwMDgtUFNUVlZJVEFHQU1FUz9zaXplPTMwJnN0YXJ0PTA=") }, iconSize : 42, mobile : false }); console.log("PSDLE | Config set."); if (this.config.tv_url[this.config.language]) { this.config.tv_url = this.config.tv_url[this.config.language]; } this.determineLanguage(this.config.language,true); this.injectCSS(); //to-do re-implement this if (!this.config.valkyrie) { SonyChi_SessionManagerSingleton.getUserDevices() } this.genStartup(); //this.genDisplay("progress",false); }, genStartup: function() { if ($("#psdle_start").length == 0) { var that = this; if (window.psdleSkip && window.psdleSkip == true) { that.genDisplay(); } else { //startup.append("
Please leave a review
for the Chrome extension!
It's very much appreciated.
"); $("
",{class:"psdle_logo startup"}).click(function() { $(this).remove(); that.genDisplay(); }).appendTo("body"); } } }, genDisplay: function(mode,fake_list) { var that = this; $(document).one("change", "#sub_container > select#lang_select", function() { that.config.language = $(this).val(); that.determineLanguage($(this).val(),true); that.genDisplay("nobind"); }); if (!$("#muh_games_container").length) { $("body").append($("
",{id:"muh_games_container",class:(this.config.valkyrie?"valkyrie":"")})); } $("#muh_games_container").slideUp("slow", function() { var a = "

v"+repod.psdle.version+""; if (mode == "progress") { if (that.config.use_queue) { that.dlQueue.batch.init(); } a += "
 

"+that.lang.startup.wait+""; } else { a += "

"+that.lang.startup.apis+"

"; $.each(that.lang.apis, function(key,con) { if (con.internalID == "api_pstv" && that.config.language !== "en-us") { return 0; } var off = (con.internalID == "api_game" || con.disabled) ? "toggled_off" : ""; a += ""+con.name.replace(/'/g, "'")+""; }); a += "

"+that.lang.startup.start+"
"+that.generateLangBox()+"

"; //Great use of appends! Not sarcasm! a += $(that.config.tag_line) .append(" | ") .append($("", {id: "inject_lang", text: "Inject Language"})) [0].outerHTML; a +="
"; if (mode !== "nobind") { $(document).on("click","#psdle_night",function() { that.darkCSS(); }); $(document).on("click","[id^=api_]",function() { if ($(this).attr("id") !== "api_entitle") { $(this).toggleClass("toggled_off"); } }); $(document).on("click","#inject_lang",function() { that.debug.inject_lang(); }); $(document).on("click","#psdle_go, #gen_fake", function() { that.config.deep_search = !$("#api_game").hasClass("toggled_off"); that.config.use_queue = !$("#api_queue").hasClass("toggled_off"); that.config.check_tv = ($("#api_pstv").length) ? !$("#api_pstv").hasClass("toggled_off") : false; that.genDisplay("progress",($(this).attr("id") == "gen_fake")?true:false); }); } } $("#muh_games_container").html(a).slideDown("slow",function() { if (mode == "progress") { if (fake_list) { that.debug.fake_list() } else { that.generateList(); } } else { $("[id^=api_]").promise().done(function() { if (!that.config.valkyrie) $("[id^=api_]").tooltip({position: {my: "center top", at: "center bottom"}}) }); } }); }); }, generateList: function(entitlements) { var that = this; if (!entitlements) { this.config.valkyrieInstance.lookup("service:macross-brain").macrossBrainInstance.getEntitlementStore().getAllEntitlements() .then(function(entitlements) { that.generateList(entitlements); }) return; } console.log("PSDLE | Generating download list."); this.gamelist = []; var i18n = this.config.valkyrieInstance.lookup('service:i18n'); var entitlements = (entitlements || this.config.valkyrieInstance.lookup("service:macross-brain").macrossBrainInstance._entitlementStore._storage._entitlementMapCache); //.concat(this.e_inject_cache); $.each(entitlements, function(index,obj) { if (that.isValidContent(obj)) { //Determine if game content. var temp = {}; //Constants/pre-determined. if (that.config.deep_search) { temp.category = "unknown"; } temp.productID = obj.product_id; temp.id = obj.id; if (!that.pid_cache[temp.productID]) { that.pid_cache[temp.productID] = 1; } else { that.pid_cache[temp.productID]++; } if (obj.entitlement_attributes) { //PS4 if (obj.game_meta) { temp.name = obj.game_meta.name; temp.api_icon = obj.game_meta.icon_url; } temp.size = obj.entitlement_attributes[0].package_file_size; temp.platform = ["PS4"]; temp.pkg = obj.entitlement_attributes[0].reference_package_url } else if (obj.drm_def) { //PS3, PSP, or Vita temp.name = (obj.drm_def.contentName) ? obj.drm_def.contentName : (obj.drm_def.drmContents[0].titleName) ? obj.drm_def.drmContents[0].titleName : "Unknown! - Submit a bug report!"; temp.api_icon = obj.drm_def.image_url; temp.size = obj.drm_def.drmContents[0].contentSize; temp.platform = []; temp.baseGame = obj.drm_def.drmContents[0].titleName; //Apparently PS4 entitlements don't have this. temp.publisher = obj.drm_def.drmContents[0].spName; //Or this. temp.pkg = obj.drm_def.drmContents[0].contentUrl temp.platform = that.determineSystem(obj.drm_def.drmContents[0].platformIds); } //Post-processing. temp.icons = [ that.config.game_api+temp.id+"/image", that.config.game_api+temp.productID+"/image", temp.api_icon ]; temp.date = obj.active_date; var tempDate = new Date(temp.date); var toPrettyDate = {mm:tempDate.getMonth()+1, dd:tempDate.getDate(), yyyy:tempDate.getFullYear()}; temp.prettyDate = i18n.t("c.format.numericDateSlashes",toPrettyDate).string var tempSize = require("valkyrie-storefront/utils/download").default.getFormattedFileSize(temp.size); temp.prettySize = (temp.size === 0) ? "N/A" : i18n.t("c.page.details.drmDetails."+tempSize.unit,{val: tempSize.value}).string; temp.url = repod.psdle.config.game_page + temp.productID; temp.platformUsable = temp.platform.slice(0); //Get Plus status if (!obj.drm_def && !!obj.inactive_date) { temp.plus = true; } //PS4, Vita, PSP if (obj.license && obj.license.expiration) { temp.plus = true; } //PS3 if (temp.plus) { that.config.has_plus = true; } that.gamelist.push(temp); } }); this.gamelist.sort(function(a,b) { return (a.date > b.date)?-1:(a.date < b.date)?1:0 }); $.each(this.pid_cache, function (i,v) { if (v > 1) { //that.game_api.queue("pid_cache",i) } else { delete that.pid_cache[i] } }) $.each(this.gamelist,function(a,b) { that.gamelist[a].index = a+1; if (that.config.deep_search) { that.game_api.queue(a+1,((that.pid_cache[b.productID] > 1)?b.id:b.productID)); } }); console.log("PSDLE | Finished generating download list. End result is "+this.gamelist.length+" of "+entitlements.length+" item(s).",this.stats); this.postList(); }, determineSystem: function(HASH) { var that = this, sys = [], K = require("valkyrie-storefront/utils/const").default.KamajiPlatformFlags, K2 = require("valkyrie-storefront/utils/const").default.KamajiPlatforms, _K = K $.each(_K, function (t,u) { var target = K2[t]; 0 !== ((t == "1") ? (HASH >>> 1 & u >>> 1) : (HASH & u)) && sys.push(target); }); return sys; }, postList: function() { var safe = !0; if (repod.psdle.config.check_tv) { safe = !1; repod.psdle.tv.init(); } if (repod.psdle.config.deep_search) { safe = !1; this.game_api.run(); } if (safe) { this.table.gen(); } }, stats: { fine: 0, generic: 0, expired: 0, service: 0, video: 0 }, isValidContent: function(obj) { var exp = (obj.license) ? obj.license.expiration : obj.inactive_date, inf = (obj.license) ? obj.license.infinite_duration : false; if (!this.config.includeVideo && (obj.VUData || (obj.drm_def && obj.drm_def.contentType == "TV"))) { this.stats.video++; return 0; } else if (obj.entitlement_type == 1 || obj.entitlement_type == 4) { this.stats.service++; return 0; } //Services = Ignored else if (!this.config.includeExpired && new Date(exp) < new Date() && !inf) { this.stats.expired++; return 0; } else if (obj.drm_def || obj.entitlement_attributes) { this.stats.fine++; return 1; } else { this.stats.generic++; return 0; } }, genSysCache: function() { var that = this; $.each(this.gamelist,function (i,v) { var name = that.safeGuessSystem(v.platform), key = name.toLowerCase().replace("ps ",""); that.sys_cache[key] = name; }); }, genPropCache: function() { //Cache the properties to prop_cache to use for exporting. Move later. //Also potentially just continuously extend a cache object then iterate over that. var that = this, bad = ["metadata"]; //Stuff we don't handle yet or want being exported. this.prop_cache = []; $.each(this.gamelist, function(i,c) { $.each(c, function(key) { if ($.inArray(key,bad) == -1 && $.inArray(key,that.prop_cache) == -1) { that.prop_cache.push(key); } }); }); //Custom properties (since they're not actually stored in an entry), sloppy. this.prop_cache.push("vitaCompat"); if (this.config.check_tv) { this.prop_cache.push("vitatvCompat"); } this.prop_cache.sort(); }, table: { bindSearch: function() { //Unbind for safety. $(document).off("click",".psdle_table tbody > tr, span[id^=system_], span[id^=filter_], span[id^=dl_], th[id^=sort_], #export_view, #export_csv").off("blur","#psdle_search_text"); //Bind. $(document).keypress(function(e) { if (e.which == 13 && $("#psdle_search_text").is(":focus")) { repod.psdle.table.regen(true); } }); $("#psdle_search_select").off("change").change(function() { repod.psdle.table.regen(true); }); $("span[id^=system_], span[id^=filter_]").off("click").on("click", function() { $(this).toggleClass("toggled_off"); repod.psdle.table.regen(true); }); $("th[id^=sort_]").off("click").on("click", function() { repod.psdle.sortGamelist($(this)); }); $("#export_view").off("click").on("click", function() { repod.psdle.exportList.configure(); }); $("#psdle_search_text").off("blur").on("blur", function() { repod.psdle.table.regen(true); }); $("#dl_queue").one("click", function() { repod.psdle.dlQueue.generate.display(); }); $(document).off("click", "[id^=psdle_index_]").on("click", "[id^=psdle_index_]", function(e) { e.preventDefault(); if (e.shiftKey) { repod.psdle.dlQueue.batch.add.auto(this); } else { repod.psdle.dlQueue.batch.add.ask(this); } }); }, gen: function() { var that = this; repod.psdle.genSysCache(); repod.psdle.genPropCache(); repod.psdle.config.lastsort = ""; repod.psdle.config.lastsort_r = false; $("#muh_games_container").css({"position":"absolute"}); $("#sub_container").html("") .append(this.header.gen()) .append("
"+repod.psdle.lang.columns.icon+""+repod.psdle.lang.columns.name+""+repod.psdle.lang.columns.platform+""+repod.psdle.lang.columns.size+""+repod.psdle.lang.columns.date+"

"+repod.psdle.config.tag_line); this.regen(true); this.bindSearch(); console.log("PSDLE | Table generated."); $("#muh_games_container").slideDown("slow").promise().done(function() { that.margin(); }); }, header: { gen: function(dlQueue) { return $("
", {class: "search main container"}) .append(this.searchOptions(dlQueue)) .append(this.stats(dlQueue)) }, searchOptions: function(dlQueue) { var r = $("
", {class: "search options container"}), lang = repod.psdle.lang; if (!dlQueue) { r.append($("", {class: "psdle_fancy_bar"}) .append($("", {id: "export_view", text: lang.labels.exportView})) ) } var systems = $("", {class: "psdle_fancy_bar search options system"}), order = ["ps1","ps2","ps3","ps4","psp","vita"]; $.each(order, function (i,v) { if (repod.psdle.sys_cache.hasOwnProperty(v)) { $("", {id: "system_"+v, text: repod.psdle.sys_cache[v]}).appendTo(systems); } }); systems.appendTo(r); if (repod.psdle.config.use_queue) { var nid = (dlQueue) ? "dl_list" : "dl_queue", tr = lang.strings[(dlQueue) ? "dlList" : "dlQueue"]; $("", {class: "psdle_fancy_but", id: nid, text: tr}).appendTo(r); } if (!dlQueue && repod.psdle.config.deep_search) { var categories = $("
", {class: "psdle_fancy_bar search options categories"}), order = ["downloadable_game","demo","add_on","avatar","application","theme","unknown"]; //TO-DO: sort by order $.each(repod.psdle.type_cache, function (key) { var i = $("", {id: "filter_"+key, text: (lang.categories[key] || key)}) if (order.indexOf(key) >= 0) { order[order.indexOf(key)] = i; } else { order.push(i); } }); $.each(order, function (i,v) { v.appendTo(categories); }); categories.appendTo(r); } if (!dlQueue) { var textSearch = $("
"); var sel = $("", { id: "psdle_search_text", class: "search input text", type: "text", list: "searchAutocomplete", placeholder: lang.strings.search }).appendTo(textSearch); $("", {id: "searchAutocomplete"}).appendTo(textSearch); textSearch.appendTo(r); } return r; }, stats: function(dlQueue) { if (dlQueue) { return; } var current = $("", {class: "search stats all current"}), total = $("", {class: 'search stats all total'}); var psswitch = $("", { type: "checkbox", class: "search input plus", readonly: true }) .prop({"indeterminate": true}) .click(function() { if (this.readOnly) this.checked=this.readOnly=false; else if (!this.checked) this.readOnly=this.indeterminate=true; repod.psdle.table.regen(true); }); var switchContainer = $("", { class: "search stats plus", "data-tooltip": repod.psdle.lang.strings.plus }) .append("(") .append(psswitch) .append(" ") .append($("", {class: "search stats plus total"})) .append(")"); var out = $("
", {class: "psdleSearchStats"}) .append(current) .append(" ") .append(switchContainer) .append(" / ") .append(total); return out; } }, regen: function(a) { if (a == true) { repod.psdle.determineGames(); } else { var that = this, temp = "", plus = 0; repod.psdle.exportList.delimited.destroy(); $.each(repod.psdle.gamelist_cur,function (a,val) { if (val.plus) { plus++; } temp += repod.psdle.table_utils.gen.row(val); }); temp += repod.psdle.table_utils.gen.totals(); $(".search.stats.all.current").text(repod.psdle.gamelist_cur.length) $(".search.stats.all.total").text(repod.psdle.gamelist.length) $(".search.stats.plus.total").text(plus) //Generate autocomplete datalist $("datalist#searchAutocomplete").empty() $.each(repod.psdle.autocomplete_cache, function (i,v) { $("