The branch, eden-pre has been updated
via fb86fb2ca2253c036c1d22710b4617be4b5b2430 (commit)
via f9c112a2d14780561f01acf9411feba67745ce03 (commit)
from 51bc1d88e41e6087ece32602577e9cec228fdce9 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=fb86fb2ca2253c036c1d22710b4617be4b5b2430
commit fb86fb2ca2253c036c1d22710b4617be4b5b2430
Author: spiff <[email protected]>
Date: Fri Jan 13 20:34:41 2012 +0100
[plugin.video.dr.dk.live] updated to version 2.1.0
diff --git a/plugin.video.dr.dk.live/addon.py b/plugin.video.dr.dk.live/addon.py
index f316fea..0a3dc47 100644
--- a/plugin.video.dr.dk.live/addon.py
+++ b/plugin.video.dr.dk.live/addon.py
@@ -1,12 +1,33 @@
+#
+# Copyright (C) 2012 Tommy Winther
+# http://tommy.winther.nu
+#
+# This Program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This Program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Program; see the file LICENSE.txt. If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+# http://www.gnu.org/copyleft/gpl.html
+#
import sys
import os
-import cgi as urlparse
+import urlparse
+import urllib2
-import xbmc
import xbmcaddon
import xbmcgui
import xbmcplugin
+import buggalo
+
from channels import CHANNELS, CATEGORIES, QUALITIES
TITLE_OFFSET = 31000
@@ -29,7 +50,11 @@ class DanishLiveTV(object):
if not os.path.exists(icon):
icon = ICON
- url = channel.get_url(quality)
+ idx = None
+ if channel.get_config_key():
+ idx = int(ADDON.getSetting(channel.get_config_key()))
+
+ url = channel.get_url(quality, idx)
if url:
title = ADDON.getLocalizedString(TITLE_OFFSET +
channel.get_id())
description = ADDON.getLocalizedString(DESCRIPTION_OFFSET +
channel.get_id())
@@ -55,24 +80,48 @@ class DanishLiveTV(object):
xbmcplugin.endOfDirectory(HANDLE)
-
- def playChannel(self, name):
+ def playChannel(self, id):
try:
quality = QUALITIES[int(ADDON.getSetting('quality'))]
except ValueError:
quality = QUALITIES[0] # fallback for old settings value
for channel in CHANNELS:
- if channel.get_name() == name:
+ if str(channel.get_id()) == id:
url = channel.get_url(quality)
if url:
- icon = os.path.join(ADDON.getAddonInfo('path'),
'resources', 'logos', channel.get_logo())
- item = xbmcgui.ListItem(channel.get_name(),
iconImage=icon, thumbnailImage=icon)
+ icon = os.path.join(ADDON.getAddonInfo('path'),
'resources', 'logos', '%d.png' % channel.get_id())
+ if not os.path.exists(icon):
+ icon = ICON
+
+ title = ADDON.getLocalizedString(TITLE_OFFSET +
channel.get_id())
+ item = xbmcgui.ListItem(title, iconImage=icon,
thumbnailImage=icon, path=url)
item.setProperty('Fanart_Image', FANART)
item.setProperty('IsLive', 'true')
- p = xbmc.Player()
- p.play(url, item)
+ xbmcplugin.setResolvedUrl(HANDLE, True, item)
+ break
+
+ def imInDenmark(self):
+ try:
+ u =
urllib2.urlopen('http://www.dr.dk/nu/api/estoyendinamarca.json')
+ response = u.read()
+ u.close()
+
+ imInDenmark = 'true' == response
+ except urllib2.URLError:
+ # If an error occurred assume we are not in Denmark
+ imInDenmark = False
+
+ if not imInDenmark and ADDON.getSetting('warn.if.not.in.denmark') ==
'true':
+ heading = ADDON.getLocalizedString(99970)
+ line1 = ADDON.getLocalizedString(99971)
+ line2 = ADDON.getLocalizedString(99972)
+ line3 = ADDON.getLocalizedString(99973)
+ nolabel = ADDON.getLocalizedString(99974)
+ yeslabel = ADDON.getLocalizedString(99975)
+ if xbmcgui.Dialog().yesno(heading, line1, line2, line3, nolabel,
yeslabel):
+ ADDON.setSetting('warn.if.not.in.denmark', 'false')
if __name__ == '__main__':
@@ -84,14 +133,18 @@ if __name__ == '__main__':
FANART = os.path.join(ADDON.getAddonInfo('path'), 'fanart.jpg')
ICON = os.path.join(ADDON.getAddonInfo('path'), 'icon.png')
- danishTV = DanishLiveTV()
- if PARAMS.has_key('playChannel'):
- danishTV.playChannel(PARAMS['playChannel'][0])
- elif PARAMS.has_key('category'):
- danishTV.showChannels(int(PARAMS['category'][0]))
- elif ADDON.getSetting('group.by.category') == 'true':
- danishTV.showCategories()
- else:
- danishTV.showChannels()
-
+ try:
+ danishTV = DanishLiveTV()
+ if PARAMS.has_key('playChannel'):
+ danishTV.playChannel(PARAMS['playChannel'][0])
+ elif PARAMS.has_key('category'):
+ danishTV.showChannels(int(PARAMS['category'][0]))
+ elif ADDON.getSetting('group.by.category') == 'true':
+ danishTV.imInDenmark()
+ danishTV.showCategories()
+ else:
+ danishTV.imInDenmark()
+ danishTV.showChannels()
+ except Exception:
+ buggalo.onExceptionRaised()
diff --git a/plugin.video.dr.dk.live/addon.xml
b/plugin.video.dr.dk.live/addon.xml
index 9acca15..a58e7f4 100644
--- a/plugin.video.dr.dk.live/addon.xml
+++ b/plugin.video.dr.dk.live/addon.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
- id="plugin.video.dr.dk.live" version="2.0.4" name="Danish Live TV"
provider-name="twinther [[email protected]]">
+ id="plugin.video.dr.dk.live" version="2.1.0" name="Danish Live TV"
provider-name="twinther [[email protected]]">
<requires>
<import addon="xbmc.python" version="2.0"/>
</requires>
diff --git a/plugin.video.dr.dk.live/changelog.txt
b/plugin.video.dr.dk.live/changelog.txt
index 3b8b3e8..c328763 100644
--- a/plugin.video.dr.dk.live/changelog.txt
+++ b/plugin.video.dr.dk.live/changelog.txt
@@ -1,3 +1,9 @@
+[B]Version 2.1.0 - 2012-01-13[/B]
+- Updated TV2/Regionerne with the changes after January, 11th
+- Added danskespil.dk Lotto
+- Added secondary streams for DRs channel
+- Show warning if not in Denmark
+
[B]Version 2.0.4 - 2011-12-04[/B]
- Added more of the TV2/Regions channels and Folketinget TV
- Added setting to group channels
diff --git a/plugin.video.dr.dk.live/channels.py
b/plugin.video.dr.dk.live/channels.py
index 5aaae66..d9f1ea6 100644
--- a/plugin.video.dr.dk.live/channels.py
+++ b/plugin.video.dr.dk.live/channels.py
@@ -1,4 +1,22 @@
-__author__ = 'tommy'
+#
+# Copyright (C) 2012 Tommy Winther
+# http://tommy.winther.nu
+#
+# This Program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This Program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Program; see the file LICENSE.txt. If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+# http://www.gnu.org/copyleft/gpl.html
+#
Q_BEST = 0 # 1700 kb/s
Q_HIGH = 1 # 1000 kb/s
@@ -15,9 +33,10 @@ CATEGORY_MISC = 30203
CATEGORIES = {CATEGORY_DR : list(), CATEGORY_TV2_REG : list(), CATEGORY_MISC :
list()}
class Channel(object):
- def __init__(self, id, category):
+ def __init__(self, id, category, config_key = None):
self.id = id
self.category = category
+ self.config_key = config_key
self.urls = dict()
CHANNELS.append(self)
@@ -29,14 +48,22 @@ class Channel(object):
if medium: self.urls[Q_MEDIUM] = medium
if low: self.urls[Q_LOW] = low
- def get_url(self, quality):
+ def get_url(self, quality, idx = 0):
if self.urls.has_key(quality):
- return self.urls[quality]
+ urls = self.urls[quality]
elif quality == Q_BEST and self.urls.has_key(Q_HIGH):
- return self.urls[Q_HIGH]
+ urls = self.urls[Q_HIGH]
else:
return None
+ if type(urls) == list:
+ if len(urls) > idx:
+ return urls[idx]
+ else:
+ return urls[0]
+ else:
+ return urls
+
def get_id(self):
return self.id
@@ -46,75 +73,80 @@ class Channel(object):
def get_description(self):
return ''
+ def get_config_key(self):
+ return self.config_key
+
# http://dr.dk/nu/embed/live?height=467&width=830
# DR1
-Channel(1, CATEGORY_DR).add_urls(
- high = 'rtmp://rtmplive.dr.dk/live/livedr01astream3 live=1',
- medium = 'rtmp://rtmplive.dr.dk/live/livedr01astream2 live=1',
- low = 'rtmp://rtmplive.dr.dk/live/livedr01astream1 live=1')
+Channel(1, CATEGORY_DR, "dr1.stream").add_urls(
+ high = ['rtmp://rtmplive.dr.dk/live/livedr01astream3 live=1',
'rtmp://rtmplive.dr.dk/live/livedr01bstream3 live=1'],
+ medium = ['rtmp://rtmplive.dr.dk/live/livedr01astream2 live=1',
'rtmp://rtmplive.dr.dk/live/livedr01bstream2 live=1'],
+ low = ['rtmp://rtmplive.dr.dk/live/livedr01astream1 live=1',
'rtmp://rtmplive.dr.dk/live/livedr01bstream1 live=1'])
# DR2
-Channel(2, CATEGORY_DR).add_urls(
- high = 'rtmp://rtmplive.dr.dk/live/livedr02astream3 live=1',
- medium = 'rtmp://rtmplive.dr.dk/live/livedr02astream2 live=1',
- low = 'rtmp://rtmplive.dr.dk/live/livedr02astream1 live=1')
+Channel(2, CATEGORY_DR, "dr2.stream").add_urls(
+ high = ['rtmp://rtmplive.dr.dk/live/livedr02astream3 live=1',
'rtmp://rtmplive.dr.dk/live/livedr02bstream3 live=1'],
+ medium = ['rtmp://rtmplive.dr.dk/live/livedr02astream2 live=1',
'rtmp://rtmplive.dr.dk/live/livedr02bstream2 live=1'],
+ low = ['rtmp://rtmplive.dr.dk/live/livedr02astream1 live=1',
'rtmp://rtmplive.dr.dk/live/livedr02bstream1 live=1'])
# DR Update
-Channel(3, CATEGORY_DR).add_urls(
- high = 'rtmp://rtmplive.dr.dk/live/livedr03astream3 live=1',
- medium = 'rtmp://rtmplive.dr.dk/live/livedr03astream2 live=1',
- low = 'rtmp://rtmplive.dr.dk/live/livedr03astream1 live=1')
+Channel(3, CATEGORY_DR, "drupdate.stream").add_urls(
+ high = ['rtmp://rtmplive.dr.dk/live/livedr03astream3 live=1',
'rtmp://rtmplive.dr.dk/live/livedr03bstream3 live=1'],
+ medium = ['rtmp://rtmplive.dr.dk/live/livedr03astream2 live=1',
'rtmp://rtmplive.dr.dk/live/livedr03bstream2 live=1'],
+ low = ['rtmp://rtmplive.dr.dk/live/livedr03astream1 live=1',
'rtmp://rtmplive.dr.dk/live/livedr03bstream1 live=1'])
# DR K
-Channel(4, CATEGORY_DR).add_urls(
- high = 'rtmp://rtmplive.dr.dk/live/livedr04astream3 live=1',
- medium = 'rtmp://rtmplive.dr.dk/live/livedr04astream2 live=1',
- low = 'rtmp://rtmplive.dr.dk/live/livedr04astream1 live=1')
+Channel(4, CATEGORY_DR, "drk.stream").add_urls(
+ high = ['rtmp://rtmplive.dr.dk/live/livedr04astream3 live=1',
'rtmp://rtmplive.dr.dk/live/livedr04bstream3 live=1'],
+ medium = ['rtmp://rtmplive.dr.dk/live/livedr04astream2 live=1',
'rtmp://rtmplive.dr.dk/live/livedr04bstream2 live=1'],
+ low = ['rtmp://rtmplive.dr.dk/live/livedr04astream1 live=1',
'rtmp://rtmplive.dr.dk/live/livedr04bstream1 live=1'])
# DR Ramasjang
-Channel(5, CATEGORY_DR).add_urls(
- high = 'rtmp://rtmplive.dr.dk/live/livedr05astream3 live=1',
- medium = 'rtmp://rtmplive.dr.dk/live/livedr05astream2 live=1',
- low = 'rtmp://rtmplive.dr.dk/live/livedr05astream1 live=1')
+Channel(5, CATEGORY_DR, "drramasjang.stream").add_urls(
+ high = ['rtmp://rtmplive.dr.dk/live/livedr05astream3 live=1',
'rtmp://rtmplive.dr.dk/live/livedr05bstream3 live=1'],
+ medium = ['rtmp://rtmplive.dr.dk/live/livedr05astream2 live=1',
'rtmp://rtmplive.dr.dk/live/livedr05bstream2 live=1'],
+ low = ['rtmp://rtmplive.dr.dk/live/livedr05astream1 live=1',
'rtmp://rtmplive.dr.dk/live/livedr05bstream1 live=1'])
# DR HD
-Channel(6, CATEGORY_DR).add_urls(
- best = 'rtmp://livetv.gss.dr.dk/live/livedr06astream3 live=1',
- medium = 'rtmp://livetv.gss.dr.dk/live/livedr06astream2 live=1',
- low = 'rtmp://livetv.gss.dr.dk/live/livedr06astream1 live=1')
+Channel(6, CATEGORY_DR, "drhd.stream").add_urls(
+ best = ['rtmp://livetv.gss.dr.dk/live/livedr06astream3 live=1',
'rtmp://livetv.gss.dr.dk/live/livedr06bstream3 live=1'],
+ medium = ['rtmp://livetv.gss.dr.dk/live/livedr06astream2 live=1',
'rtmp://livetv.gss.dr.dk/live/livedr06bstream2 live=1'],
+ low = ['rtmp://livetv.gss.dr.dk/live/livedr06astream1 live=1',
'rtmp://livetv.gss.dr.dk/live/livedr06bstream1 live=1'])
# TV2 Fyn
Channel(100, CATEGORY_TV2_REG).add_urls(
- high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2fyn_1000 live=1')
+ high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2fyn_1000 live=1'
+)
# TV2 Lorry
Channel(101, CATEGORY_TV2_REG).add_urls(
best = 'rtmp://80.63.11.91:1935/live/_definst_/tv2lorry_2000 live=1',
high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2lorry_1000 live=1',
- medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2lorry_300 live=1')
-# Lorry+
+ medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2lorry_300 live=1'
+)
+# TV2 Syd
Channel(102, CATEGORY_TV2_REG).add_urls(
- best = 'rtmp://80.63.11.91:1935/live/_definst_/tv2lorry-plus_2000
live=1',
- high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2lorry-plus_1000
live=1',
- medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2lorry-plus_300 live=1')
+ best = 'rtmp://80.63.11.91:1935/live/_definst_/tvsyd_2000 live=1',
+ high = 'rtmp://80.63.11.91:1935/live/_definst_/tvsyd_1000 live=1',
+ medium = 'rtmp://80.63.11.91:1935/live/_definst_/tvsyd_300 live=1'
+)
# TV2 Midtvest
-Channel(103, CATEGORY_TV2_REG).add_urls(
- high = 'http://ms1.tvmidtvest.dk/frokosttv')
+#Channel(103, CATEGORY_TV2_REG).add_urls(
+# high = 'http://ms1.tvmidtvest.dk/frokosttv')
# TV2 Nord
-Channel(104, CATEGORY_TV2_REG).add_urls(
- best = 'rtmp://80.63.11.91:1935/live/_definst_/tv2nord_2000 live=1',
- high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2nord_1000 live=1',
- medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2nord_300 live=1')
-# TV2 NordPlus
Channel(105, CATEGORY_TV2_REG).add_urls(
best = 'rtmp://80.63.11.91:1935/live/_definst_/tv2nord-plus_2000 live=1',
high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2nord-plus_1000 live=1',
- medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2nord-plus_300 live=1')
+ medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2nord-plus_300 live=1'
+)
# TV2 East
Channel(106, CATEGORY_TV2_REG).add_urls(
- high = 'rtmp://tv2regup1.webhotel.net/videostreaming/ playpath=tv2east
live=1')
-# Kanal east
-Channel(107, CATEGORY_TV2_REG).add_urls(
- high = 'rtmp://tv2regup1.webhotel.net/videostreaming/ playpath=kanaleast
live=1')
+ best = 'rtmp://tv2regup1.webhotel.net/videostreaming/ playpath=tv2east
live=1'
+)
# TV2 OJ
-Channel(108, CATEGORY_TV2_REG).add_urls(
- best = 'rtmp://80.63.11.91:1935/live/_definst_/tv2oj_2000 live=1',
- high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2oj_1000 live=1',
- medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2oj_300 live=1')
+#Channel(108, CATEGORY_TV2_REG).add_urls(
+# best = 'rtmp://80.63.11.91:1935/live/_definst_/tv2oj_2000 live=1',
+# high = 'rtmp://80.63.11.91:1935/live/_definst_/tv2oj_1000 live=1',
+# medium = 'rtmp://80.63.11.91:1935/live/_definst_/tv2oj_300 live=1'
+# )
+# TV2 Bornholm
+#Channel(109, CATEGORY_TV2_REG).add_urls(
+# best = 'mms://itv02.digizuite.dk/tv2b'
+#)
# http://www.24nordjyske.dk/webtv_high.asp
# 24 Nordjyske
@@ -126,3 +158,7 @@ Channel(200, CATEGORY_MISC).add_urls(
# Folketinget
Channel(201, CATEGORY_MISC).add_urls(
best = 'rtmp://ftflash.arkena.dk/webtvftlivefl/ playpath=mp4:live.mp4
pageUrl=http://www.ft.dk/webTV/TV_kanalen_folketinget.aspx live=1')
+# danskespil lotto
+Channel(202, CATEGORY_MISC).add_urls(
+ best = 'rtmp://lvs.wowza.jay.net/webstream/lotto live=1'
+)
\ No newline at end of file
diff --git a/plugin.video.dr.dk.live/resources/language/Danish/strings.xml
b/plugin.video.dr.dk.live/resources/language/Danish/strings.xml
index aa8210a..56f137a 100644
--- a/plugin.video.dr.dk.live/resources/language/Danish/strings.xml
+++ b/plugin.video.dr.dk.live/resources/language/Danish/strings.xml
@@ -3,6 +3,13 @@
<string id="30100">Generelt</string>
<string id="30101">Kvalitet</string>
<string id="30102">Grupper kanalerne</string>
+ <string id="30103">DRs kanaler</string>
+ <string id="30104">Har du problemer med at afspille en af DRs
kanaler,</string>
+ <string id="30105">så prøv at skifte til den sekundære stream eller
omvendt.</string>
+ <string id="30106">Primær stream</string>
+ <string id="30107">Sekundær stream</string>
+ <string id="30108">Advarsler</string>
+ <string id="30109">Advar hvis ikke i Danmark</string>
<string id="30110">Bedste (op til 2 mbit/s)</string>
<string id="30111">Høj (1 mbit/s)</string>
@@ -21,17 +28,16 @@
<string id="31006">DR HD</string>
<string id="31100">TV 2/FYN</string>
- <string id="31101">TV2/Lorry</string>
- <string id="31102">Lorry+</string>
+ <string id="31101">Lorry</string>
+ <string id="31102">TV SYD</string>
<string id="31103">TV/MIDT-VEST</string>
- <string id="31104">TV2 Nord</string>
- <string id="31105">TV2 NordPlus</string>
+ <string id="31105">TV2/Nord</string>
<string id="31106">TV2 ÃST</string>
- <string id="31107">Kanal ÃST</string>
<string id="31108">TV 2 | ÃSTJYLLAND</string>
<string id="31200">24 Nordjyske</string>
<string id="31201">Folketinget TV</string>
+ <string id="31202">danskespil.dk Lotto</string>
<string id="32001">DR1 er den første tv-kanal i Danmark. Oprindelig hed
kanalen Danmarks Radio eller DR efter mediehuset, der producerede den (går
også under navnet 1'eren i daglig tale, efter TV 2 begyndte i 1988). Navnet
blev ændret til DR1 efter lanceringen af DRs anden tv-kanal, DR2, i
1996.</string>
<string id="32002">DR2 er DR's anden licensfinansierede tv-kanal og
søsterkanal til den bredere og mere folkelige DR1.</string>
@@ -49,4 +55,25 @@
<string id="32108">Se alle TV 2 | ÃSTJYLLANDs nyhedsudsendelser kl.
16.05, 18.10, 19.30 og 22.22</string>
<string id="32200">24NORDJYSKE giver dig væsentlige og gode historier fra
Nordjylland. Du kan tænde, når det passer dig og få vigtige nyheder, gode
oplevelser og serviceinformationer.[CR][CR]Hvert kvarter i morgen- og dagtimer
og hvert tyvende minut begynder nyhedssløjfen -og kører dermed i ring.
Nyhedssløjfen opdateres hver gang der sker noget nyt i Nordjylland.</string>
+
+ <string id="99970">Advarsel!</string>
+ <string id="99971">Det ser ud til du ikke befinder dig i Danmark.</string>
+ <string id="99972">En eller flere kanaler vil måske ikke kunne
afspilles</string>
+ <string id="99973">eller der kan opstå andre uventede fejl.</string>
+ <string id="99974">OK</string>
+ <string id="99975">Vis ikke igen</string>
+
+ <string id="99980">Game over, man! [I]Game over![/I]</string>
+ <string id="99981">You can't handle the truth!</string>
+ <string id="99982">Danger Will Robinson</string>
+ <string id="99983">Why does it cry, Sméagol?</string>
+ <string id="99984">Houston, we have a problem...</string>
+ <string id="99985">E.T. phone home</string>
+
+ <string id="99990">Der er desværre opstået en fejl i addon'en.</string>
+ <string id="99991">Du kan hjælpe med at løse fejlen ved at indsende
en</string>
+ <string id="99992">fejlrapport. Der sendes ikke personlige
oplysninger.</string>
+ <string id="99993">Indsend fejlrapport</string>
+ <string id="99994">Indsend ikke</string>
+ <string id="99995">Tak!</string>
</strings>
diff --git id="99995">Tak!</string>