
Recherche avancée
Autres articles (105)
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
XMP PHP
13 mai 2011, parDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)
Sur d’autres sites (11219)
-
Celery task execution never stops
2 janvier 2015, par Dmitry MikhaylovI don’t know why but my task never stops executing, it just starts from the beginning.
Here’s the code :
@task
def create_screenshots(video_id):
from videos.models import Video
video = Video.objects.get(id=video_id)
filename = os.path.join(settings.MEDIA_ROOT, video.file.name)
cmd = ["ffprobe", "-of", "json", "-show_format", "-show_streams", filename]
info = json.loads(check_output(cmd))
streams = info['streams']
frames = 0
for stream in streams:
if stream['codec_type'] == 'video':
frames = stream['nb_frames']
break
rate = int(frames) / (settings.FRAMES_NUMBER + 1)
output_filename = os.path.join('/tmp', '%s_tile.jpg' % os.path.basename(video.file.name))
# create thumbnails tile
cmd = ["ffmpeg", "-i", filename, "-vf",
"select=not(mod(n\\, %d)),scale=231:160,tile=1x10" % int(rate), "-y",
output_filename]
call(cmd)
video.screenshots_sprite.save("%d.jpg" % video.id, File(open(output_filename)), save=False)
# create cover
output_filename = os.path.join('/tmp', '%s_cover.jpg' % os.path.basename(video.file.name))
cmd = ["ffmpeg", "-i", filename, "-vf", "select=gte(n\,%d)" % (int(frames) / 2,),
"-vframes", "1", "-y", output_filename]
call(cmd)
video.cover.save("%d.jpg" % video.id, File(open(output_filename)), save=False)
video.save()What I do here is just run ffmpeg to get video thumbnails and cover file. I don’t see any loop here.
-
Anomalie #3636 : cohérence de l’ergonomie de la fonction de changement de statut
7 janvier 2016, par Maïeul RouquetteEffectivement. Mais comme c’est uniquement pour le premier l’utilisateur a le temps d’oublier cela ;-)
En outre je continue de penser que cette manie spipienne de faire des boutons de validation qui n’apparaissent pas au premier regard est une mauvaise approche. Surtout lorsqu’on a un menu deroulant, ce qui peut laisser penser qu’il n’y a plus rien à faire.
Donc suggestion :
- ou bien afficher systématiquement le bouton de validation
- ou bien lors du changement dans le menu déroulant, faire une popup (comme pour les puces de statut) demandant de valider, et enregistrer ensuite ce résultat (ou bien revenir à l’ancienne méthode qui consistait à avoir une liste de statut à cliquer…) -
Révision 17173 : articles_page en php est remplacee par mes_articles, qui dit bien ce qu’elle veu...
12 février 2011, par cedric -et pas d’articles, pas d’acces a la page dans le menu !