Suivez et participez au développement du nouvel OpenCellar : PLOC.co
> Open Cellar pour Windows
> Centre d'aide et de support
> Questions fréquentes
> Centre de téléchargement
> Accéder à la communauté
> Historique des versions
> Ressources pour les développeurs
> Open Cellar pour Windows Mobile
> Open Cellar pour iPhone
> Centre d'aide et de support
> Questions fréquentes
> Centre de téléchargement
> Accéder à la communauté
> Historique des versions
> Open Cellar pour Mac/Linux
> Centre d'aide et de support
> Questions fréquentes
> Centre de téléchargement
> Accéder à la communauté
> Historique des versions
> Ressources pour les développeurs
> Mon compte
> Mes services live
> Mes pages
> Ma bibliothèque
> Mes vins publiés
> Mes étiquettes
> Mes messages sur la communauté
> Ecrire une page
> Accéder à la liste des forums
> Communauté Windows
> Communauté Mac/Linux
> Communauté Mobile
> Rechercher et importer des vins
> Rechercher des étiquettes
> Comparer les prix (Sniffer)
Rechercher :
> Rechercher dans tous les moteurs
> Rechercher dans la communauté
> Rechercher dans les pages persos
> Rechercher sur le site open-cellar.com
> Rechercher dans les fiches vins
> Rechercher dans les étiquettes
> Rechercher sur le comparateur de prix (Sniffer)
Bienvenue (
se connecter
-
créer un compte
)
Accueil
»
La communauté
»
Open Cellar Home Edition (Windows)
Facebook
Nuage de tags
Open Cellar
Scripts
Etiquette
PPP
iPhone
Livre de cave
Mac
Vista
Synchronisation
Export Excel
vinoXml
usb
sniffer
sauvegarde
importation
impression
chardonnet
palm
statistiques
Linux
Récupérer l'illustration du vin
12/01/2010
Répondre
Récupérer l'illustration du vin
Phil35
3 posts
Bonjour,
J'aimerais récupérer par un script les images d'illustration des vins (soit les images elles-mêmes, soit plus simplement leur chemin si elles sont accessibles) : je ne trouve pas mon bonheur dans http://www.open-cellar.com/Shared/Common/2/oc2010-10-12.PNG (je ne sais pas si c'est à jour, et surtout il n'y a que l'héritage et pas les relations entre objets). Pourriez-vous m'aider ?
Merci !
16/01/2010
Répondre
Re : Récupérer l'illustration du vin
Administrateur
3099 posts
Bonjour,
Voici le script :
// Janvier 2008 if(App.ActiveCellar == null) { MessageBox.Show("Aucune cave ouverte"); return; } App.Animate(AnimationType.Work, true); App.SetCursor(true); // Récupération des fiches vins ouvertes ObjectCollection wines = App.ActiveCellar.GetCollection((ushort)ObjectType.Wine); for (int i = 0; i < wines.Count; i++) { Wine wine = (Wine)wines[i]; if(!wine.HasImage()) { continue; } // Enregistrement de l'image try { System.Drawing.Image img = wine.Image.GetImage(); img.Save(@"c:\vins\" + Utility.GetValidFileName(wine.Name.Trim() + ".jpg")); img.Dispose(); } catch { // ZzzZz } } App.SetCursor(false); App.StopAnimate(); MessageBox.Show("Toutes les taches terminées");
Le schéma sur mon blog est celui de la future version.
Matthieu
17/01/2010
Répondre
Re : Récupérer l'illustration du vin
Phil35
3 posts
Bonjour et merci pour le script : ça marche bien (j'ai juste changé les noms des images car tous les vins n'ont pas de nom). Pour info, je réalise une extraction des infos de Open Cellar pour afficher les producteurs (avec les vins et leurs images) dans une page HTML à base de l'API GoogleMaps.
Cordialement,
Phil 35
18/01/2010
Répondre
Re : Récupérer l'illustration du vin
Administrateur
3099 posts
Voila une idée trés intéressante !
Pensez vous qu'il soit possible de l'automatiser via un script et d'en faire profiter les autres utilisateurs ?
Matthieu
18/01/2010
Répondre
Re : Récupérer l'illustration du vin
Phil35
3 posts
Bonjour, je n'en suis qu'au début mais vous trouverez sur
http://philhome4.ifrance.com/
une idée de ce que ça peut donner.
Limitations :
1) la fenêtre popup pour zoomer sur une étiquette de vin fonctionne sur Firefox mais pas sur IE (je suis preneur d'une popup javascript plus sympa, avis aux amateurs)
2) j'ai viré tous les accents car je ne m'en sortais pas avec google API (je prends les idées de ceux qui en ont !)
Voici le fonctionnement :
1) j'ai détourné les champs "tel" et "fax" de la fiche producteurs : j'y mets respectivement la latitude et la longitude, en attendant qu'Open Cellar propose ces champs ! :-D
2) le script ci-dessous génère un fichier "producteurs.xml" contenant les infos intéressantes des producteurs (nom, web, latitude, longitude...) et des vins de ce producteur (dont l'image, merci pour le bout de code que vous m'avez filé).
3) la page index.htm que vous voyez exploite ce fichier XML pour alimenter une carte Google.
C'est encore très perfectible bien sûr. J'imagine plus tard également générer automatiquement des "POI" de GPS pour exploiter ces coordonnées.
Cdlt.
SCRIPT :
============================
if(App.ActiveCellar == null)
{
MessageBox.Show("Aucune cave n'est ouverte");
return;
}
App.Animate(AnimationType.Work, true);
App.SetCursor(true);
ObjectCollection owners = App.ActiveCellar.GetCollection((ushort)ObjectType.Owner);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.Append(Environment.NewLine);
sb.Append( "<markers>");
sb.Append(Environment.NewLine);
int num_image = 0;
for (int i = 0; i < owners.Count; i++)
{
Owner owner = (Owner)owners[i];
ObjectCollection wines = App.ActiveCellar.GetCollection((ushort)ObjectType.Wine);
sb.Append( "<marker ");
sb.Append( "lat=\"" + owner.Phone.Trim() + "\" ");
sb.Append( "lng=\"" + owner.Fax.Trim() + "\" ");
sb.Append( "name=\"" + System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(owner.Name)).Trim() + "\" ");
sb.Append( "address=\"" + System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(owner.Address1)).Trim() + " " + System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(owner.Address2)).Trim() + "\" ");
sb.Append( "zipcode=\"" + owner.ZipCode.Trim() + "\" ");
sb.Append( "city=\"" + System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(owner.City)).Trim() + "\" ");
sb.Append( "web=\"" + owner.Web.Trim() + "\" ");
sb.Append(">" );
sb.Append(Environment.NewLine);
for (int w = 0;w < wines.Count; w++)
{
Wine wine = (Wine)wines[w];
if (wine.Owner == owner) {
sb.Append("<wine ");
int nb;
if(wine.ManualManagement)
{
nb = wine.Bottles;
}
else
{
nb = wine.RackItems.Count;
}
sb.Append("bottles = \""+nb+"\" ");
sb.Append("name = \""+System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(wine.Name.Replace("\"",""))).Trim() +"\" ");
sb.Append("classification = \""+System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(wine.Classification.ToString().Replace("\"",""))).Trim() +"\" ");
sb.Append("appellation = \""+System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(wine.Appellation.ToString().Replace("\"",""))).Trim() +"\" ");
string color = "Champagne";
if(wine.WineColor == ColorType.Red)
{
color = "Rouge";
}
else if(wine.WineColor == ColorType.White)
{
color = "Blanc";
}
else if(wine.WineColor == ColorType.Rosy)
{
color = "Rosé";
}
else if(wine.WineColor == ColorType.Yellow)
{
color = "Champagne";
}
else if(wine.WineColor == ColorType.LiqueurLike)
{
color = "Liquoreux";
}
else if(wine.WineColor == ColorType.Misc)
{
color = "Autre";
}
sb.Append("color = \""+System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(color)) +"\" ");
if(wine.Year != 0)
{
sb.Append("year = \""+ wine.Year.ToString() +"\" ");
}
if(wine.HasImage())
{
System.Drawing.Image img = wine.Image.GetImage();
String debutChemin = "c:\\Nous\\Vin";
String finChemin= "picsHtml\\" + Utility.GetValidFileName(num_image + ".jpg");
finChemin = System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(finChemin));
num_image +=1;
try
{
img.Save(debutChemin+"\\"+finChemin);
img.Dispose();
sb.Append("image = \""+finChemin+"\" ");
}
catch
{
MessageBox.Show("Errer génération image "+debutChemin+"\\"+finChemin);
}
}
sb.Append("/>" );
sb.Append(Environment.NewLine);
}
}
sb.Append("</marker>" );
sb.Append(Environment.NewLine);
}
sb.Append("</markers>");
sb.Append(Environment.NewLine);
string destFileName = "c:\\Nous\\Vin\\producteurs.xml";
if(System.IO.File.Exists(destFileName))
{
System.IO.File.Delete(destFileName);
}
// Envoi vers le fichier de sortie.
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(destFileName, false, System.Text.Encoding.Default))
{
sw.Write(sb.ToString());
}
//
// Affichage du report
//
IShellWindow shellWindow = (IShellWindow)App.GetWindow(WindowType.Shell, null);
if(shellWindow != null)
{
shellWindow.Start(destFileName);
}
App.SetCursor(false);
App.StopAnimate();
19/01/2010
Répondre
Re : Récupérer l'illustration du vin
Administrateur
3099 posts
Bonsoir,
Le résultat est chouette, bravo !
Pour le détournement de champ il vous sera possible d'en ajouter autant que besoin dans la prochaine version.
Matthieu
© 2006-2014
Matthieu DUCROCQ
- Tous droits réservés - Dernière mise à jour : janvier 2014 |
|
|
Soutenir Open Cellar
|
Contact
|
Crédits